homebridge-enphase-envoy 10.2.6-beta.8 → 10.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -16,7 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
16
  - fix [#216](https://github.com/grzegorz914/homebridge-enphase-envoy/issues/216)
17
17
  - fix [#217](https://github.com/grzegorz914/homebridge-enphase-envoy/issues/217)
18
18
  - fix wireless connections kit publish
19
- - added network interface services
19
+ - added network interface service and characteristics
20
20
  - cleanup
21
21
 
22
22
  ## [10.2.5] - (17.10.2025)
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "displayName": "Enphase Envoy",
4
4
  "name": "homebridge-enphase-envoy",
5
- "version": "10.2.6-beta.8",
5
+ "version": "10.2.6",
6
6
  "description": "Homebridge p7ugin for Photovoltaic Energy System manufactured by Enphase.",
7
7
  "license": "MIT",
8
8
  "author": "grzegorz914",
@@ -1892,69 +1892,7 @@ export default (api) => {
1892
1892
  }
1893
1893
  Service.EnvoyService = EnvoyService;
1894
1894
 
1895
- //Wireless connection kit service
1896
- class NetworkInterfaceService extends Service {
1897
- constructor(displayName, subtype) {
1898
- super(displayName, '00000010-000A-1000-8000-0026BB765291', subtype);
1899
- // Mandatory Characteristics
1900
- this.addCharacteristic(Characteristic.Type);
1901
- // Optional Characteristics
1902
- this.addOptionalCharacteristic(Characteristic.SignalStrength);
1903
- this.addOptionalCharacteristic(Characteristic.AddressIp);
1904
- this.addOptionalCharacteristic(Characteristic.ConfiguredName);
1905
- }
1906
- }
1907
- Service.NetworkInterfaceService = NetworkInterfaceService;
1908
-
1909
- //Wireless connection kit service
1910
- class WirelessConnectionKitService extends Service {
1911
- constructor(displayName, subtype) {
1912
- super(displayName, '00000010-000A-1000-8000-0026BB765291', subtype);
1913
- // Mandatory Characteristics
1914
- this.addCharacteristic(Characteristic.Type);
1915
- // Optional Characteristics
1916
- this.addOptionalCharacteristic(Characteristic.SignalStrength);
1917
- this.addOptionalCharacteristic(Characteristic.Connected);
1918
- this.addOptionalCharacteristic(Characteristic.ConfiguredName);
1919
- }
1920
- }
1921
- Service.WirelessConnectionKitService = WirelessConnectionKitService;
1922
-
1923
- //Microinverter service
1924
- class MicroinverterService extends Service {
1925
- constructor(displayName, subtype) {
1926
- super(displayName, '00000007-000A-1000-8000-0026BB765291', subtype);
1927
- // Mandatory Characteristics
1928
- this.addCharacteristic(Characteristic.Status);
1929
- // Optional Characteristics
1930
- this.addOptionalCharacteristic(Characteristic.Producing);
1931
- this.addOptionalCharacteristic(Characteristic.Communicating);
1932
- this.addOptionalCharacteristic(Characteristic.Provisioned);
1933
- this.addOptionalCharacteristic(Characteristic.Operating);
1934
- this.addOptionalCharacteristic(Characteristic.GfiClear);
1935
- this.addOptionalCharacteristic(Characteristic.Phase);
1936
- this.addOptionalCharacteristic(Characteristic.Firmware);
1937
- this.addOptionalCharacteristic(Characteristic.PowerW);
1938
- this.addOptionalCharacteristic(Characteristic.PowerPeakW);
1939
- this.addOptionalCharacteristic(Characteristic.EnergyTodayWh);
1940
- this.addOptionalCharacteristic(Characteristic.EnergyYesterdayWh);
1941
- this.addOptionalCharacteristic(Characteristic.EnergyLastSevenDays);
1942
- this.addOptionalCharacteristic(Characteristic.EnergyLifetime);
1943
- this.addOptionalCharacteristic(Characteristic.Current);
1944
- this.addOptionalCharacteristic(Characteristic.Voltage);
1945
- this.addOptionalCharacteristic(Characteristic.Frequency);
1946
- this.addOptionalCharacteristic(Characteristic.CurrentDc);
1947
- this.addOptionalCharacteristic(Characteristic.VoltageDc);
1948
- this.addOptionalCharacteristic(Characteristic.Temperature);
1949
- this.addOptionalCharacteristic(Characteristic.PlcLevel);
1950
- this.addOptionalCharacteristic(Characteristic.GridProfile);
1951
- this.addOptionalCharacteristic(Characteristic.ReadingTime);
1952
- this.addOptionalCharacteristic(Characteristic.ConfiguredName);
1953
- }
1954
- }
1955
- Service.MicroinverterService = MicroinverterService;
1956
-
1957
- //qrelay service
1895
+ //Qrelay service
1958
1896
  class QrelayService extends Service {
1959
1897
  constructor(displayName, subtype) {
1960
1898
  super(displayName, '00000002-000A-1000-8000-0026BB765291', subtype);
@@ -1985,50 +1923,6 @@ export default (api) => {
1985
1923
  }
1986
1924
  Service.QrelayService = QrelayService;
1987
1925
 
1988
- //AC Batterie service
1989
- class AcBatterieService extends Service {
1990
- constructor(displayName, subtype) {
1991
- super(displayName, '00000006-000A-1000-8000-0026BB765291', subtype);
1992
- // Mandatory Characteristics
1993
- this.addCharacteristic(Characteristic.ChargeState);
1994
- // Optional Characteristics
1995
- this.addOptionalCharacteristic(Characteristic.Status);
1996
- this.addOptionalCharacteristic(Characteristic.Producing);
1997
- this.addOptionalCharacteristic(Characteristic.Communicating);
1998
- this.addOptionalCharacteristic(Characteristic.Provisioned);
1999
- this.addOptionalCharacteristic(Characteristic.Operating);
2000
- this.addOptionalCharacteristic(Characteristic.GfiClear);
2001
- this.addOptionalCharacteristic(Characteristic.SleepEnabled);
2002
- this.addOptionalCharacteristic(Characteristic.PercentFull);
2003
- this.addOptionalCharacteristic(Characteristic.MaxCellTemp);
2004
- this.addOptionalCharacteristic(Characteristic.SleepMinSoc);
2005
- this.addOptionalCharacteristic(Characteristic.SleepMaxSoc);
2006
- this.addOptionalCharacteristic(Characteristic.Firmware);
2007
- this.addOptionalCharacteristic(Characteristic.PlcLevel);
2008
- this.addOptionalCharacteristic(Characteristic.GridProfile);
2009
- this.addOptionalCharacteristic(Characteristic.ReadingTime);
2010
- this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2011
- }
2012
- }
2013
- Service.AcBatterieService = AcBatterieService;
2014
-
2015
- //AC Batterie summary service
2016
- class AcBatterieSummaryService extends Service {
2017
- constructor(displayName, subtype) {
2018
- super(displayName, '00000005-000A-1000-8000-0026BB765291', subtype);
2019
- // Mandatory Characteristics
2020
- this.addCharacteristic(Characteristic.ChargeState);
2021
- // Optional Characteristics
2022
- this.addOptionalCharacteristic(Characteristic.Power);
2023
- this.addOptionalCharacteristic(Characteristic.Energy);
2024
- this.addOptionalCharacteristic(Characteristic.PercentFull);
2025
- this.addOptionalCharacteristic(Characteristic.ActiveCount);
2026
- this.addOptionalCharacteristic(Characteristic.GridProfile);
2027
- this.addOptionalCharacteristic(Characteristic.ReadingTime);
2028
- this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2029
- }
2030
- }
2031
- Service.AcBatterieSummaryService = AcBatterieSummaryService;
2032
1926
 
2033
1927
  //Meters service
2034
1928
  class MeterService extends Service {
@@ -2083,24 +1977,109 @@ export default (api) => {
2083
1977
  }
2084
1978
  Service.PowerAndEnergyService = PowerAndEnergyService;
2085
1979
 
2086
- //Ensemble inventory service
2087
- class EnsembleService extends Service {
1980
+ //AC Batterie summary service
1981
+ class AcBatterieSummaryService extends Service {
2088
1982
  constructor(displayName, subtype) {
2089
- super(displayName, '00000011-000B-1000-8000-0026BB765291', subtype);
1983
+ super(displayName, '00000005-000A-1000-8000-0026BB765291', subtype);
1984
+ // Mandatory Characteristics
1985
+ this.addCharacteristic(Characteristic.ChargeState);
1986
+ // Optional Characteristics
1987
+ this.addOptionalCharacteristic(Characteristic.Power);
1988
+ this.addOptionalCharacteristic(Characteristic.Energy);
1989
+ this.addOptionalCharacteristic(Characteristic.PercentFull);
1990
+ this.addOptionalCharacteristic(Characteristic.ActiveCount);
1991
+ this.addOptionalCharacteristic(Characteristic.GridProfile);
1992
+ this.addOptionalCharacteristic(Characteristic.ReadingTime);
1993
+ this.addOptionalCharacteristic(Characteristic.ConfiguredName);
1994
+ }
1995
+ }
1996
+ Service.AcBatterieSummaryService = AcBatterieSummaryService;
1997
+
1998
+ //AC Batterie service
1999
+ class AcBatterieService extends Service {
2000
+ constructor(displayName, subtype) {
2001
+ super(displayName, '00000006-000A-1000-8000-0026BB765291', subtype);
2002
+ // Mandatory Characteristics
2003
+ this.addCharacteristic(Characteristic.ChargeState);
2004
+ // Optional Characteristics
2005
+ this.addOptionalCharacteristic(Characteristic.Status);
2006
+ this.addOptionalCharacteristic(Characteristic.Producing);
2007
+ this.addOptionalCharacteristic(Characteristic.Communicating);
2008
+ this.addOptionalCharacteristic(Characteristic.Provisioned);
2009
+ this.addOptionalCharacteristic(Characteristic.Operating);
2010
+ this.addOptionalCharacteristic(Characteristic.GfiClear);
2011
+ this.addOptionalCharacteristic(Characteristic.SleepEnabled);
2012
+ this.addOptionalCharacteristic(Characteristic.PercentFull);
2013
+ this.addOptionalCharacteristic(Characteristic.MaxCellTemp);
2014
+ this.addOptionalCharacteristic(Characteristic.SleepMinSoc);
2015
+ this.addOptionalCharacteristic(Characteristic.SleepMaxSoc);
2016
+ this.addOptionalCharacteristic(Characteristic.Firmware);
2017
+ this.addOptionalCharacteristic(Characteristic.PlcLevel);
2018
+ this.addOptionalCharacteristic(Characteristic.GridProfile);
2019
+ this.addOptionalCharacteristic(Characteristic.ReadingTime);
2020
+ this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2021
+ }
2022
+ }
2023
+ Service.AcBatterieService = AcBatterieService;
2024
+
2025
+
2026
+ //Microinverter service
2027
+ class MicroinverterService extends Service {
2028
+ constructor(displayName, subtype) {
2029
+ super(displayName, '00000007-000A-1000-8000-0026BB765291', subtype);
2090
2030
  // Mandatory Characteristics
2091
2031
  this.addCharacteristic(Characteristic.Status);
2092
2032
  // Optional Characteristics
2033
+ this.addOptionalCharacteristic(Characteristic.Producing);
2093
2034
  this.addOptionalCharacteristic(Characteristic.Communicating);
2035
+ this.addOptionalCharacteristic(Characteristic.Provisioned);
2094
2036
  this.addOptionalCharacteristic(Characteristic.Operating);
2095
2037
  this.addOptionalCharacteristic(Characteristic.GfiClear);
2038
+ this.addOptionalCharacteristic(Characteristic.Phase);
2096
2039
  this.addOptionalCharacteristic(Characteristic.Firmware);
2040
+ this.addOptionalCharacteristic(Characteristic.PowerW);
2041
+ this.addOptionalCharacteristic(Characteristic.PowerPeakW);
2042
+ this.addOptionalCharacteristic(Characteristic.EnergyTodayWh);
2043
+ this.addOptionalCharacteristic(Characteristic.EnergyYesterdayWh);
2044
+ this.addOptionalCharacteristic(Characteristic.EnergyLastSevenDays);
2045
+ this.addOptionalCharacteristic(Characteristic.EnergyLifetime);
2046
+ this.addOptionalCharacteristic(Characteristic.Current);
2047
+ this.addOptionalCharacteristic(Characteristic.Voltage);
2048
+ this.addOptionalCharacteristic(Characteristic.Frequency);
2049
+ this.addOptionalCharacteristic(Characteristic.CurrentDc);
2050
+ this.addOptionalCharacteristic(Characteristic.VoltageDc);
2051
+ this.addOptionalCharacteristic(Characteristic.Temperature);
2052
+ this.addOptionalCharacteristic(Characteristic.PlcLevel);
2053
+ this.addOptionalCharacteristic(Characteristic.GridProfile);
2054
+ this.addOptionalCharacteristic(Characteristic.ReadingTime);
2055
+ this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2056
+ }
2057
+ }
2058
+ Service.MicroinverterService = MicroinverterService;
2059
+
2060
+ // Enpower service
2061
+ class EnpowerService extends Service {
2062
+ constructor(displayName, subtype) {
2063
+ super(displayName, '00000008-000A-1000-8000-0026BB765291', subtype);
2064
+ // Mandatory Characteristics
2065
+ this.addCharacteristic(Characteristic.AdminState);
2066
+ // Optional Characteristics
2067
+ this.addOptionalCharacteristic(Characteristic.Communicating);
2068
+ this.addOptionalCharacteristic(Characteristic.CommLevelSubGhz);
2069
+ this.addOptionalCharacteristic(Characteristic.CommLevel24Ghz);
2070
+ this.addOptionalCharacteristic(Characteristic.Temperature);
2071
+ this.addOptionalCharacteristic(Characteristic.OperatingState);
2072
+ this.addOptionalCharacteristic(Characteristic.GridMode);
2073
+ this.addOptionalCharacteristic(Characteristic.EnchgGridMode);
2074
+ this.addOptionalCharacteristic(Characteristic.Status);
2097
2075
  this.addOptionalCharacteristic(Characteristic.ReadingTime);
2098
2076
  this.addOptionalCharacteristic(Characteristic.CommInterface);
2099
- this.addOptionalCharacteristic(Characteristic.AdminState);
2077
+ this.addOptionalCharacteristic(Characteristic.PlcLevel);
2078
+ this.addOptionalCharacteristic(Characteristic.GridProfile);
2100
2079
  this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2101
2080
  }
2102
2081
  }
2103
- Service.EnsembleService = EnsembleService;
2082
+ Service.EnpowerService = EnpowerService;
2104
2083
 
2105
2084
  //Ennsemble service
2106
2085
  class EnsembleSummaryService extends Service {
@@ -2135,6 +2114,81 @@ export default (api) => {
2135
2114
  }
2136
2115
  Service.EnsembleSummaryService = EnsembleSummaryService;
2137
2116
 
2117
+ //Wireless connection kit service
2118
+ class WirelessConnectionKitService extends Service {
2119
+ constructor(displayName, subtype) {
2120
+ super(displayName, '00000010-000A-1000-8000-0026BB765291', subtype);
2121
+ // Mandatory Characteristics
2122
+ this.addCharacteristic(Characteristic.Type);
2123
+ // Optional Characteristics
2124
+ this.addOptionalCharacteristic(Characteristic.SignalStrength);
2125
+ this.addOptionalCharacteristic(Characteristic.Connected);
2126
+ this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2127
+ }
2128
+ }
2129
+ Service.WirelessConnectionKitService = WirelessConnectionKitService;
2130
+
2131
+ //Ensemble inventory service
2132
+ class EnsembleService extends Service {
2133
+ constructor(displayName, subtype) {
2134
+ super(displayName, '00000011-000B-1000-8000-0026BB765291', subtype);
2135
+ // Mandatory Characteristics
2136
+ this.addCharacteristic(Characteristic.Status);
2137
+ // Optional Characteristics
2138
+ this.addOptionalCharacteristic(Characteristic.Communicating);
2139
+ this.addOptionalCharacteristic(Characteristic.Operating);
2140
+ this.addOptionalCharacteristic(Characteristic.GfiClear);
2141
+ this.addOptionalCharacteristic(Characteristic.Firmware);
2142
+ this.addOptionalCharacteristic(Characteristic.ReadingTime);
2143
+ this.addOptionalCharacteristic(Characteristic.CommInterface);
2144
+ this.addOptionalCharacteristic(Characteristic.AdminState);
2145
+ this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2146
+ }
2147
+ }
2148
+ Service.EnsembleService = EnsembleService;
2149
+
2150
+ //Live data service
2151
+ class LiveDataService extends Service {
2152
+ constructor(displayName, subtype) {
2153
+ super(displayName, '00000012-000A-1000-8000-0026BB765291', subtype);
2154
+ // Mandatory Characteristics
2155
+ this.addCharacteristic(Characteristic.Power);
2156
+ // Optional Characteristics
2157
+ this.addOptionalCharacteristic(Characteristic.PowerL1);
2158
+ this.addOptionalCharacteristic(Characteristic.PowerL2);
2159
+ this.addOptionalCharacteristic(Characteristic.PowerL3);
2160
+ this.addOptionalCharacteristic(Characteristic.ApparentPower);
2161
+ this.addOptionalCharacteristic(Characteristic.ApparentPowerL1);
2162
+ this.addOptionalCharacteristic(Characteristic.ApparentPowerL2);
2163
+ this.addOptionalCharacteristic(Characteristic.ApparentPowerL3);
2164
+ this.addOptionalCharacteristic(Characteristic.ReadingTime);
2165
+ this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2166
+ }
2167
+ }
2168
+ Service.LiveDataService = LiveDataService;
2169
+
2170
+ //Generator service
2171
+ class GerneratorService extends Service {
2172
+ constructor(displayName, subtype) {
2173
+ super(displayName, '00000013-000A-1000-8000-0026BB765291', subtype);
2174
+ // Mandatory Characteristics
2175
+ this.addCharacteristic(Characteristic.AdminMode);
2176
+ // Optional Characteristics
2177
+ this.addOptionalCharacteristic(Characteristic.Type);
2178
+ this.addOptionalCharacteristic(Characteristic.AdminState);
2179
+ this.addOptionalCharacteristic(Characteristic.OperatingState);
2180
+ this.addOptionalCharacteristic(Characteristic.StartSoc);
2181
+ this.addOptionalCharacteristic(Characteristic.StopSoc);
2182
+ this.addOptionalCharacteristic(Characteristic.ExexOn);
2183
+ this.addOptionalCharacteristic(Characteristic.Shedule);
2184
+ this.addOptionalCharacteristic(Characteristic.Present);
2185
+ this.addOptionalCharacteristic(Characteristic.ReadingTime);
2186
+ this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2187
+ }
2188
+ }
2189
+ Service.GerneratorService = GerneratorService;
2190
+
2191
+
2138
2192
  //Encharge service
2139
2193
  class EnchargeService extends Service {
2140
2194
  constructor(displayName, subtype) {
@@ -2165,34 +2219,10 @@ export default (api) => {
2165
2219
  }
2166
2220
  Service.EnchargeService = EnchargeService;
2167
2221
 
2168
- // Enpower service
2169
- class EnpowerService extends Service {
2170
- constructor(displayName, subtype) {
2171
- super(displayName, '00000008-000A-1000-8000-0026BB765291', subtype);
2172
- // Mandatory Characteristics
2173
- this.addCharacteristic(Characteristic.AdminState);
2174
- // Optional Characteristics
2175
- this.addOptionalCharacteristic(Characteristic.Communicating);
2176
- this.addOptionalCharacteristic(Characteristic.CommLevelSubGhz);
2177
- this.addOptionalCharacteristic(Characteristic.CommLevel24Ghz);
2178
- this.addOptionalCharacteristic(Characteristic.Temperature);
2179
- this.addOptionalCharacteristic(Characteristic.OperatingState);
2180
- this.addOptionalCharacteristic(Characteristic.GridMode);
2181
- this.addOptionalCharacteristic(Characteristic.EnchgGridMode);
2182
- this.addOptionalCharacteristic(Characteristic.Status);
2183
- this.addOptionalCharacteristic(Characteristic.ReadingTime);
2184
- this.addOptionalCharacteristic(Characteristic.CommInterface);
2185
- this.addOptionalCharacteristic(Characteristic.PlcLevel);
2186
- this.addOptionalCharacteristic(Characteristic.GridProfile);
2187
- this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2188
- }
2189
- }
2190
- Service.EnpowerService = EnpowerService;
2191
-
2192
2222
  //Collar service
2193
2223
  class CollarService extends Service {
2194
2224
  constructor(displayName, subtype) {
2195
- super(displayName, '00000014-000A-1000-8000-0026BB765291', subtype);
2225
+ super(displayName, '00000015-000A-1000-8000-0026BB765291', subtype);
2196
2226
  // Mandatory Characteristics
2197
2227
  this.addCharacteristic(Characteristic.AdminState);
2198
2228
  // Optional Characteristics
@@ -2211,7 +2241,7 @@ export default (api) => {
2211
2241
  //C6 combiner controler service
2212
2242
  class C6CombinerControlerService extends Service {
2213
2243
  constructor(displayName, subtype) {
2214
- super(displayName, '00000015-000A-1000-8000-0026BB765291', subtype);
2244
+ super(displayName, '00000016-000A-1000-8000-0026BB765291', subtype);
2215
2245
  // Mandatory Characteristics
2216
2246
  this.addCharacteristic(Characteristic.AdminState);
2217
2247
  // Optional Characteristics
@@ -2227,7 +2257,7 @@ export default (api) => {
2227
2257
  //C6 rgm servicee
2228
2258
  class C6RgmService extends Service {
2229
2259
  constructor(displayName, subtype) {
2230
- super(displayName, '00000016-000A-1000-8000-0026BB765291', subtype);
2260
+ super(displayName, '00000017-000A-1000-8000-0026BB765291', subtype);
2231
2261
  // Mandatory Characteristics
2232
2262
  this.addCharacteristic(Characteristic.Status);
2233
2263
  // Optional Characteristics
@@ -2239,46 +2269,19 @@ export default (api) => {
2239
2269
  }
2240
2270
  Service.C6RgmService = C6RgmService;
2241
2271
 
2242
- //Generator service
2243
- class GerneratorService extends Service {
2244
- constructor(displayName, subtype) {
2245
- super(displayName, '00000013-000A-1000-8000-0026BB765291', subtype);
2246
- // Mandatory Characteristics
2247
- this.addCharacteristic(Characteristic.AdminMode);
2248
- // Optional Characteristics
2249
- this.addOptionalCharacteristic(Characteristic.Type);
2250
- this.addOptionalCharacteristic(Characteristic.AdminState);
2251
- this.addOptionalCharacteristic(Characteristic.OperatingState);
2252
- this.addOptionalCharacteristic(Characteristic.StartSoc);
2253
- this.addOptionalCharacteristic(Characteristic.StopSoc);
2254
- this.addOptionalCharacteristic(Characteristic.ExexOn);
2255
- this.addOptionalCharacteristic(Characteristic.Shedule);
2256
- this.addOptionalCharacteristic(Characteristic.Present);
2257
- this.addOptionalCharacteristic(Characteristic.ReadingTime);
2258
- this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2259
- }
2260
- }
2261
- Service.GerneratorService = GerneratorService;
2262
-
2263
- //Live data service
2264
- class LiveDataService extends Service {
2272
+ //Network interafe service
2273
+ class NetworkInterfaceService extends Service {
2265
2274
  constructor(displayName, subtype) {
2266
- super(displayName, '00000012-000A-1000-8000-0026BB765291', subtype);
2275
+ super(displayName, '00000018-000A-1000-8000-0026BB765291', subtype);
2267
2276
  // Mandatory Characteristics
2268
- this.addCharacteristic(Characteristic.Power);
2277
+ this.addCharacteristic(Characteristic.Type);
2269
2278
  // Optional Characteristics
2270
- this.addOptionalCharacteristic(Characteristic.PowerL1);
2271
- this.addOptionalCharacteristic(Characteristic.PowerL2);
2272
- this.addOptionalCharacteristic(Characteristic.PowerL3);
2273
- this.addOptionalCharacteristic(Characteristic.ApparentPower);
2274
- this.addOptionalCharacteristic(Characteristic.ApparentPowerL1);
2275
- this.addOptionalCharacteristic(Characteristic.ApparentPowerL2);
2276
- this.addOptionalCharacteristic(Characteristic.ApparentPowerL3);
2277
- this.addOptionalCharacteristic(Characteristic.ReadingTime);
2279
+ this.addOptionalCharacteristic(Characteristic.SignalStrength);
2280
+ this.addOptionalCharacteristic(Characteristic.AddressIp);
2278
2281
  this.addOptionalCharacteristic(Characteristic.ConfiguredName);
2279
2282
  }
2280
2283
  }
2281
- Service.LiveDataService = LiveDataService;
2284
+ Service.NetworkInterfaceService = NetworkInterfaceService;
2282
2285
 
2283
2286
  // EVE electric meter
2284
2287
  class EvePower extends Characteristic {
@@ -960,8 +960,8 @@ class EnergyMeter extends EventEmitter {
960
960
  const key = MetersKeyMap[meterType];
961
961
  const measurementType = ApiCodes[meterType];
962
962
 
963
- let sourceMeter, sourceEnergy, energyLifetimeWithOffset;
964
- let power, energyLifetime;
963
+ let sourceMeter, sourceEnergy;
964
+ let power, energyLifetime, energyLifetimeWithOffset;
965
965
  switch (key) {
966
966
  case 'production': {
967
967
  const sourcePcu = this.pv.powerAndEnergy[key].pcu;
@@ -970,7 +970,7 @@ class EnergyMeter extends EventEmitter {
970
970
  sourceEnergy = meterEnabled ? sourceEim : sourcePcu;
971
971
  power = this.functions.isValidValue(sourceMeter.power) ? sourceMeter.power : null;
972
972
  energyLifetime = this.functions.isValidValue(sourceMeter.energyLifetime) ? sourceMeter.energyLifetime / 1000 : null;
973
- energyLifetimeWithOffset = this.functions.isValidValue(sourceMeter.energyLifetime) ? energyLifetime + this.energyProductionLifetimeOffset : null;
973
+ energyLifetimeWithOffset = this.functions.isValidValue(energyLifetime) ? energyLifetime + this.energyProductionLifetimeOffset : null;
974
974
  break;
975
975
  }
976
976
  case 'consumptionNet': {
@@ -978,7 +978,7 @@ class EnergyMeter extends EventEmitter {
978
978
  sourceEnergy = this.pv.powerAndEnergy.consumptionNet;
979
979
  power = this.functions.isValidValue(sourceMeter.power) ? sourceMeter.power : null;
980
980
  energyLifetime = this.functions.isValidValue(sourceMeter.energyLifetime) ? sourceMeter.energyLifetime / 1000 : null;
981
- energyLifetimeWithOffset = this.functions.isValidValue(sourceMeter.energyLifetime) ? energyLifetime + this.energyConsumptionNetLifetimeOffset : null;
981
+ energyLifetimeWithOffset = this.functions.isValidValue(energyLifetime) ? energyLifetime + this.energyConsumptionNetLifetimeOffset : null;
982
982
  break;
983
983
  }
984
984
  case 'consumptionTotal': {
@@ -986,7 +986,7 @@ class EnergyMeter extends EventEmitter {
986
986
  sourceEnergy = this.pv.powerAndEnergy.consumptionTotal;
987
987
  power = this.functions.isValidValue(sourceMeter.power) ? sourceMeter.power : null;
988
988
  energyLifetime = this.functions.isValidValue(sourceMeter.energyLifetime) ? sourceMeter.energyLifetime / 1000 : null;
989
- energyLifetimeWithOffset = this.functions.isValidValue(sourceMeter.energyLifetime) ? energyLifetime + this.energyConsumptionTotalLifetimeOffset : null;
989
+ energyLifetimeWithOffset = this.functions.isValidValue(energyLifetime) ? energyLifetime + this.energyConsumptionTotalLifetimeOffset : null;
990
990
  break;
991
991
  }
992
992
  }
@@ -1015,8 +1015,8 @@ class EnergyMeter extends EventEmitter {
1015
1015
 
1016
1016
  // Create characteristics energy meter
1017
1017
  const characteristics = [
1018
- { type: Characteristic.EvePower, value: obj.power },
1019
- { type: Characteristic.EveEnergyLifetime, value: obj.energyLifetimeWithOffset },
1018
+ { type: Characteristic.EvePower, value: power },
1019
+ { type: Characteristic.EveEnergyLifetime, value: energyLifetimeWithOffset },
1020
1020
  ];
1021
1021
 
1022
1022
  // Create characteristics energy meter
@@ -2083,10 +2083,10 @@ class EnvoyDevice extends EventEmitter {
2083
2083
  if (this.logDebug) this.emit('debug', `Prepare ${enchargeName} Backup Level Summary Service`);
2084
2084
 
2085
2085
  const control = this.enchargeBackupLevelSummaryAccessory;
2086
- const { namePrefix, name, serviceType, characteristicType, characteristicType1 } = control;
2086
+ const { namePrefix, serviceType, characteristicType, characteristicType1 } = control;
2087
2087
  const serviceName = namePrefix ? `${accessoryName} ${enchargeName}` : enchargeName;
2088
2088
 
2089
- const controlService = accessory.addService(serviceType, serviceName, `enchargeSummaryLevelAndStateService`);
2089
+ const controlService = accessory.addService(serviceType, serviceName, `enchargeBackupLevelSummaryAccessoryService`);
2090
2090
  controlService.addOptionalCharacteristic(Characteristic.ConfiguredName);
2091
2091
  controlService.setCharacteristic(Characteristic.ConfiguredName, serviceName);
2092
2092
  controlService.getCharacteristic(characteristicType)
@@ -2128,14 +2128,14 @@ class EnvoyDevice extends EventEmitter {
2128
2128
  }
2129
2129
  });
2130
2130
 
2131
- this.enchargeSummaryLevelAndStateService = controlService;
2131
+ this.enchargeBackupLevelSummaryAccessoryService = controlService;
2132
2132
  }
2133
2133
 
2134
2134
  //backup level summary sensors
2135
2135
  if (this.enchargeBackupLevelSummarySensors.length > 0) {
2136
2136
  if (this.logDebug) this.emit('debug', `Prepare ${enchargeName} Backup Level Sensor Services`);
2137
2137
 
2138
- this.enchargeBackupLevelSensorServices = [];
2138
+ this.enchargeBackupLevelSummarySensorServices = [];
2139
2139
  for (let i = 0; i < this.enchargeBackupLevelSummarySensors.length; i++) {
2140
2140
  const sensor = this.enchargeBackupLevelSummarySensors[i];
2141
2141
  const { namePrefix, name, serviceType, characteristicType } = sensor;
@@ -2151,13 +2151,13 @@ class EnvoyDevice extends EventEmitter {
2151
2151
  return currentState;
2152
2152
  });
2153
2153
 
2154
- this.enchargeBackupLevelSensorServices.push(sensorService);
2154
+ this.enchargeBackupLevelSummarySensorServices.push(sensorService);
2155
2155
  }
2156
2156
  }
2157
2157
 
2158
2158
  //devices
2159
2159
  this.enchargeServices = [];
2160
- this.enchargeLevelAndStateServices = [];
2160
+ this.enchargeBackupLevelAndStatServices = [];
2161
2161
 
2162
2162
  for (const encharge of this.pv.inventoryData.esubs.encharges.devices) {
2163
2163
  const serialNumber = encharge.serialNumber;
@@ -2208,7 +2208,7 @@ class EnvoyDevice extends EventEmitter {
2208
2208
  return currentChargeState;
2209
2209
  });
2210
2210
 
2211
- this.enchargeLevelAndStateServices.push(controlService);
2211
+ this.enchargeBackupLevelAndStatServices.push(controlService);
2212
2212
  }
2213
2213
 
2214
2214
  if (this.logDebug) this.emit('debug', `Prepare ${enchargeName} ${serialNumber} Service`);
@@ -3272,6 +3272,15 @@ class EnvoyDevice extends EventEmitter {
3272
3272
  powerFactorDivide: meter.powerFactorDivide,
3273
3273
  };
3274
3274
 
3275
+ // Emit info logs if enabled
3276
+ if (this.logInfo) {
3277
+ this.emit('info', `Meter: ${measurementType}, state: ${meterData.state ? 'Enabled' : 'Disabled'}`);
3278
+ this.emit('info', `Meter: ${measurementType}, phase mode: ${meterData.phaseMode}`);
3279
+ this.emit('info', `Meter: ${measurementType}, phase count: ${meterData.phaseCount}`);
3280
+ this.emit('info', `Meter: ${measurementType}, metering status: ${meterData.meteringStatus}`);
3281
+ this.emit('info', `Meter: ${measurementType}, status: ${meterData.deviceStatus}`);
3282
+ }
3283
+
3275
3284
  // Create characteristics
3276
3285
  const characteristics = [
3277
3286
  { type: Characteristic.State, value: meterData.state },
@@ -3303,6 +3312,16 @@ class EnvoyDevice extends EventEmitter {
3303
3312
  channels: meter.channels,
3304
3313
  });
3305
3314
 
3315
+ // Emit info logs if enabled
3316
+ if (this.logInfo) {
3317
+ this.emit('info', `Meter: ${measurementType}, power: ${meterData.powerKw} kW`);
3318
+ this.emit('info', `Meter: ${measurementType}, energy lifetime: ${meterData.energyLifetimeKw} kWh`);
3319
+ this.emit('info', `Meter: ${measurementType}, current: ${meterData.current} A`);
3320
+ this.emit('info', `Meter: ${measurementType}, voltage: ${meterData.voltage} V`);
3321
+ this.emit('info', `Meter: ${measurementType}, power factor: ${meterData.pwrFactor} cos φ`);
3322
+ this.emit('info', `Meter: ${measurementType}, frequency: ${meterData.frequency} Hz`);
3323
+ }
3324
+
3306
3325
  // Add characteristics
3307
3326
  characteristics.push(
3308
3327
  { type: Characteristic.Power, value: meterData.powerKw },
@@ -3318,24 +3337,6 @@ class EnvoyDevice extends EventEmitter {
3318
3337
  if (measurementType !== 'Consumption Total') characteristics.push({ type: Characteristic.EnergyLifetimeUpload, value: meterData.energyLifetimeUploadKw });
3319
3338
  }
3320
3339
 
3321
- // Emit info logs if enabled
3322
- if (this.logInfo) {
3323
- this.emit('info', `Meter: ${measurementType}, state: ${meterData.state ? 'Enabled' : 'Disabled'}`);
3324
- this.emit('info', `Meter: ${measurementType}, phase mode: ${meterData.phaseMode}`);
3325
- this.emit('info', `Meter: ${measurementType}, phase count: ${meterData.phaseCount}`);
3326
- this.emit('info', `Meter: ${measurementType}, metering status: ${meterData.meteringStatus}`);
3327
- this.emit('info', `Meter: ${measurementType}, status: ${meterData.deviceStatus}`);
3328
-
3329
- if (meter.state) {
3330
- this.emit('info', `Meter: ${measurementType}, power: ${meterData.powerKw} kW`);
3331
- this.emit('info', `Meter: ${measurementType}, energy lifetime: ${meterData.energyLifetimeKw} kWh`);
3332
- this.emit('info', `Meter: ${measurementType}, current: ${meterData.current} A`);
3333
- this.emit('info', `Meter: ${measurementType}, voltage: ${meterData.voltage} V`);
3334
- this.emit('info', `Meter: ${measurementType}, power factor: ${meterData.pwrFactor} cos φ`);
3335
- this.emit('info', `Meter: ${measurementType}, frequency: ${meterData.frequency} Hz`);
3336
- }
3337
- }
3338
-
3339
3340
  // Update meters services
3340
3341
  for (const { type, value } of characteristics) {
3341
3342
  if (!this.functions.isValidValue(value)) continue;
@@ -3819,7 +3820,7 @@ class EnvoyDevice extends EventEmitter {
3819
3820
  energyLastSevenDays = this.functions.isValidValue(sourceEnergy.energyLastSevenDays) ? sourceEnergy.energyLastSevenDays : null;
3820
3821
  energyLifetime = this.functions.isValidValue(sourceMeter.energyLifetime) ? sourceMeter.energyLifetime : null;
3821
3822
  energyLifetimeUpload = this.functions.isValidValue(sourceMeter.energyLifetimeUpload) ? sourceMeter.energyLifetimeUpload : null;
3822
- energyLifetimeWithOffset = this.functions.isValidValue(sourceMeter.energyLifetime) ? energyLifetime + this.energyProductionLifetimeOffset : null;
3823
+ energyLifetimeWithOffset = this.functions.isValidValue(energyLifetime) ? energyLifetime + this.energyProductionLifetimeOffset : null;
3823
3824
  break;
3824
3825
  }
3825
3826
  case 'consumptionNet': {
@@ -3832,7 +3833,7 @@ class EnvoyDevice extends EventEmitter {
3832
3833
  energyLastSevenDays = this.functions.isValidValue(sourceEnergy.energyLastSevenDays) ? sourceEnergy.energyLastSevenDays : null;
3833
3834
  energyLifetime = this.functions.isValidValue(sourceMeter.energyLifetime) ? sourceMeter.energyLifetime : null;
3834
3835
  energyLifetimeUpload = this.functions.isValidValue(sourceMeter.energyLifetimeUpload) ? sourceMeter.energyLifetimeUpload : null;
3835
- energyLifetimeWithOffset = this.functions.isValidValue(sourceMeter.energyLifetime) ? energyLifetime + this.energyConsumptionNetLifetimeOffset : null;
3836
+ energyLifetimeWithOffset = this.functions.isValidValue(energyLifetime) ? energyLifetime + this.energyConsumptionNetLifetimeOffset : null;
3836
3837
  break;
3837
3838
  }
3838
3839
  case 'consumptionTotal': {
@@ -3844,7 +3845,7 @@ class EnvoyDevice extends EventEmitter {
3844
3845
  energyToday = this.functions.isValidValue(sourceEnergy.energyToday) ? sourceEnergy.energyToday : null;
3845
3846
  energyLastSevenDays = this.functions.isValidValue(sourceEnergy.energyLastSevenDays) ? sourceEnergy.energyLastSevenDays : null;
3846
3847
  energyLifetime = this.functions.isValidValue(sourceMeter.energyLifetime) ? sourceMeter.energyLifetime : null;
3847
- energyLifetimeWithOffset = this.functions.isValidValue(sourceMeter.energyLifetime) ? energyLifetime + this.energyConsumptionTotalLifetimeOffset : null;
3848
+ energyLifetimeWithOffset = this.functions.isValidValue(energyLifetime) ? energyLifetime + this.energyConsumptionTotalLifetimeOffset : null;
3848
3849
  break;
3849
3850
  }
3850
3851
  }
@@ -4272,7 +4273,7 @@ class EnvoyDevice extends EventEmitter {
4272
4273
 
4273
4274
  // Create characteristics
4274
4275
  const characteristics = [
4275
- { type: characteristicType, value: state, valueKey: 'stste' },
4276
+ { type: characteristicType, value: state, valueKey: 'state' },
4276
4277
  { type: characteristicType1, value: backupLevel, valueKey: 'backupLevel' },
4277
4278
  ];
4278
4279
 
@@ -4280,7 +4281,7 @@ class EnvoyDevice extends EventEmitter {
4280
4281
  for (const { type, value, valueKey } of characteristics) {
4281
4282
  if (!this.functions.isValidValue(value)) continue;
4282
4283
  accessory[valueKey] = value;
4283
- this.enchargeSummaryLevelAndStateService?.updateCharacteristic(type, value);
4284
+ this.enchargeBackupLevelSummaryAccessoryService?.updateCharacteristic(type, value);
4284
4285
  }
4285
4286
  }
4286
4287
 
@@ -4299,7 +4300,7 @@ class EnvoyDevice extends EventEmitter {
4299
4300
  for (const { type, value, valueKey } of characteristics) {
4300
4301
  if (!this.functions.isValidValue(value)) continue;
4301
4302
  sensor[valueKey] = value;
4302
- this.enchargeBackupLevelSensorServices?.[i]?.updateCharacteristic(type, value);
4303
+ this.enchargeBackupLevelSummarySensorServices?.[i]?.updateCharacteristic(type, value);
4303
4304
  };
4304
4305
  }
4305
4306
  }
@@ -4623,7 +4624,7 @@ class EnvoyDevice extends EventEmitter {
4623
4624
  for (const { type, value, valueKey } of characteristics) {
4624
4625
  if (!this.functions.isValidValue(value)) continue;
4625
4626
  accessory[valueKey] = value;
4626
- this.enchargeLevelAndStateServices?.[index]?.updateCharacteristic(type, value);
4627
+ this.enchargeBackupLevelAndStatServices?.[index]?.updateCharacteristic(type, value);
4627
4628
  }
4628
4629
  }
4629
4630
 
@@ -5551,7 +5552,7 @@ class EnvoyDevice extends EventEmitter {
5551
5552
 
5552
5553
  // Create characteristics
5553
5554
  const characteristics = [
5554
- { type: characteristicType, value: state, valueKey: 'stste' },
5555
+ { type: characteristicType, value: state, valueKey: 'state' },
5555
5556
  { type: characteristicType1, value: backupLevel, valueKey: 'backupLevel' },
5556
5557
  ];
5557
5558
 
@@ -5559,7 +5560,7 @@ class EnvoyDevice extends EventEmitter {
5559
5560
  for (const { type, value, valueKey } of characteristics) {
5560
5561
  if (!this.functions.isValidValue(value)) continue;
5561
5562
  accessory[valueKey] = value;
5562
- this.enchargeSummaryLevelAndStateService?.updateCharacteristic(type, value);
5563
+ this.enchargeBackupLevelSummaryAccessoryService?.updateCharacteristic(type, value);
5563
5564
  }
5564
5565
  }
5565
5566
 
@@ -5578,7 +5579,7 @@ class EnvoyDevice extends EventEmitter {
5578
5579
  for (const { type, value, valueKey } of characteristics) {
5579
5580
  if (!this.functions.isValidValue(value)) continue;
5580
5581
  sensor[valueKey] = value;
5581
- this.enchargeBackupLevelSensorServices?.[i]?.updateCharacteristic(type, value);
5582
+ this.enchargeBackupLevelSummarySensorServices?.[i]?.updateCharacteristic(type, value);
5582
5583
  };
5583
5584
  }
5584
5585
  }