public async Task PollChargerValues() { if (string.IsNullOrEmpty(_chargerId)) { var siteId = (await _sonnenClient.GetUserSites()).DefaultSiteId; _chargerId = (await _sonnenClient.GetSiteChargers(siteId)).FirstOrDefault().Id; if (string.IsNullOrEmpty(_chargerId)) { return; } } var chargerState = await _sonnenClient.GetChargerLiveState(_chargerId); var time = chargerState.MeasuredAt?.ToUniversalTime() ?? DateTime.UtcNow; var chargedEnergyTotal = chargerState.TotalChargedEnergy; var activePower = chargerState.ActivePower; var current = chargerState.Current; var connected = chargerState.Car.Equals("CONNECTED", StringComparison.InvariantCultureIgnoreCase); var charging = chargerState.Status.Equals("CHARGING", StringComparison.InvariantCultureIgnoreCase); var smartMode = chargerState.Smartmode; SaveChargerValues(_dbContext, time, chargedEnergyTotal, activePower, current, connected, charging, smartMode); }
public async Task TestGetSiteChargers() { var mockHttp = new MockHttpMessageHandler(); mockHttp.When($"{MockSonnenConnection.BaseUri}sites/{MockSonnenConnection.SiteId}/chargers") .Respond("application/json", @"{ ""data"": [ { ""id"": """ + MockSonnenConnection.ChargerId + @""", ""type"": ""chargers"", ""attributes"": { ""serial_number"": ""12345678"", ""vendor"": ""Etrel"", ""model"": ""G-HABCDEFGH-A00"", ""charge_point_id"": ""19998877"", ""default_charging_mode"": ""SMART"", ""default_departure_time"": ""06:00:00"", ""charging_authorization_type"": ""plug_and_charge"", ""charging_unit_type"": ""KW"", ""smartmode_paused"": true, ""max_current_model"": null, ""max_current_config"": null, ""last_seen_at"": null, ""websocket_token"": ""eyJh1234123412341234.eyJp1234123412341234123412341234123412341234.baPtf-eR1n6OyvXSpEbP8Q"" }, ""relationships"": { ""cars"": { ""links"": { ""related"": ""https://my-api.sonnen.de/v1/chargers/" + MockSonnenConnection.ChargerId + @"/cars"" } } }, ""links"": { ""self"": ""https://my-api.sonnen.de/v1/chargers/" + MockSonnenConnection.ChargerId + @""" } } ] }"); using var sonnenClient = new SonnenPortalClient(mockHttp.AddAuthMock().ToMockProvider()); var result = await sonnenClient.GetSiteChargers(MockSonnenConnection.SiteId); Assert.NotNull(result); Assert.Single(result); Assert.Equal(MockSonnenConnection.ChargerId, result[0].Id); Assert.Equal("12345678", result[0].SerialNumber); Assert.Equal("Etrel", result[0].Vendor); Assert.Equal("G-HABCDEFGH-A00", result[0].Model); Assert.Equal("19998877", result[0].ChargePointId); Assert.Equal("SMART", result[0].DefaultChargingMode); Assert.Equal("06:00:00", result[0].DefaultDepartureTime); Assert.Equal("plug_and_charge", result[0].ChargingAuthorizationType); Assert.Equal("KW", result[0].ChargingUnitType); Assert.True(result[0].SmartmodePaused); Assert.Null(result[0].LastSeenAt); Assert.Equal("eyJh1234123412341234.eyJp1234123412341234123412341234123412341234.baPtf-eR1n6OyvXSpEbP8Q", result[0].WebsocketToken); }