예제 #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 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);
        }