Exemple #1
0
        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 TestGetChargerLiveState()
        {
            var mockHttp = new MockHttpMessageHandler();

            mockHttp.When($"{MockSonnenConnection.BaseUri}chargers/{MockSonnenConnection.ChargerId}/live-state")
            .Respond("application/json",
                     @"{
                        ""data"": {
                            ""id"": """ + MockSonnenConnection.ChargerId + @""",
                            ""type"": ""charger-live-states"",
                            ""attributes"": {
                                ""measured_at"": ""2020-05-23T01:02:03.000Z"",
                                ""active_power"": 0.0,
                                ""current"": 0.032,
                                ""charge_speed_kmh"": 0.0,
                                ""car"": ""CONNECTED"",
                                ""status"": ""CHARGING"",
                                ""max_charge_current"": 7.2,
                                ""smartmode"": true,
                                ""departure_at"": ""2020-05-23T12:00:00.000Z"",
                                ""transaction_charged_km"": 17.1,
                                ""total_charged_km"": 82.2,
                                ""total_charged_energy"": 1234.56599999999,
                                ""charging_behaviour"": ""FIRST_SCHEDULE"",
                                ""charging_authorization_required"": false
                            }
                        }
                    }");

            using var sonnenClient = new SonnenPortalClient(mockHttp.AddAuthMock().ToMockProvider());

            var result = await sonnenClient.GetChargerLiveState(MockSonnenConnection.ChargerId);

            Assert.Equal(DateTime.Parse("2020-05-23T01:02:03.000Z", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal), result.MeasuredAt);
            Assert.Equal(0.0, result.ActivePower);
            Assert.Equal(0.032, result.Current);
            Assert.Equal(0.0, result.ChargeSpeedKmh);
            Assert.Equal("CONNECTED", result.Car);
            Assert.Equal("CHARGING", result.Status);
            Assert.Equal(7.2, result.MaxChargeCurrent);
            Assert.True(result.Smartmode);
            Assert.Equal(DateTime.Parse("2020-05-23T12:00:00.000Z", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal), result.DepartureAt);
            Assert.Equal(17.1, result.TransactionChargedKm);
            Assert.Equal(82.2, result.TotalChargedKm);
            Assert.Equal(1234.56599999999, result.TotalChargedEnergy);
            Assert.Equal("FIRST_SCHEDULE", result.ChargingBehaviour);
            Assert.False(result.ChargingAuthorizationRequired);
        }