homebridge-enphase-envoy 10.2.7-beta.5 → 10.2.7-beta.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/index.js +1 -1
- package/package.json +1 -1
- package/src/constants.js +8 -0
- package/src/envoydevice.js +48 -33
package/index.js
CHANGED
|
@@ -77,7 +77,7 @@ class EnvoyPlatform {
|
|
|
77
77
|
const postFix = host.split('.').join('');
|
|
78
78
|
const envoyIdFile = join(prefDir, `envoyId_${postFix}`);
|
|
79
79
|
const envoyTokenFile = join(prefDir, `envoyToken_${postFix}`);
|
|
80
|
-
const energyMeterHistoryFileName = `energyMeterHistory_${postFix}
|
|
80
|
+
const energyMeterHistoryFileName = `energyMeterHistory_${postFix}`;
|
|
81
81
|
|
|
82
82
|
try {
|
|
83
83
|
[envoyIdFile, envoyTokenFile].forEach(file => {
|
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.7-beta.
|
|
5
|
+
"version": "10.2.7-beta.6",
|
|
6
6
|
"description": "Homebridge p7ugin for Photovoltaic Energy System manufactured by Enphase.",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": "grzegorz914",
|
package/src/constants.js
CHANGED
|
@@ -399,6 +399,14 @@ export const MetersKeyMap = {
|
|
|
399
399
|
"pv3p": "pv3p"
|
|
400
400
|
};
|
|
401
401
|
|
|
402
|
+
export const MetersKeyMap1 = {
|
|
403
|
+
"Production": "production",
|
|
404
|
+
"Consumption Net": "consumptionNet",
|
|
405
|
+
"Consumption Total": "consumptionTotal",
|
|
406
|
+
"Storage": "storage",
|
|
407
|
+
"Generator": "generator",
|
|
408
|
+
};
|
|
409
|
+
|
|
402
410
|
export const DeviceTypeMap = {
|
|
403
411
|
1: "Microinverter",
|
|
404
412
|
12: "Q-Relay",
|
package/src/envoydevice.js
CHANGED
|
@@ -4,7 +4,7 @@ import RestFul from './restful.js';
|
|
|
4
4
|
import Mqtt from './mqtt.js';
|
|
5
5
|
import Functions from './functions.js';
|
|
6
6
|
import fakegato from 'fakegato-history';
|
|
7
|
-
import { PartNumbers, ApiCodes, MetersKeyMap, DeviceTypeMap, LedStatus } from './constants.js';
|
|
7
|
+
import { PartNumbers, ApiCodes, MetersKeyMap, MetersKeyMap1, DeviceTypeMap, LedStatus } from './constants.js';
|
|
8
8
|
let Accessory, Characteristic, Service, Categories, AccessoryUUID;
|
|
9
9
|
|
|
10
10
|
class EnvoyDevice extends EventEmitter {
|
|
@@ -785,27 +785,24 @@ class EnvoyDevice extends EventEmitter {
|
|
|
785
785
|
const accessories = [];
|
|
786
786
|
const devices = this.energyMeter ? 2 : 1;
|
|
787
787
|
for (let i = 0; i < devices; i++) {
|
|
788
|
-
|
|
789
|
-
const envoySerialNumber = i === 0 ? this.pv.info.serialNumber : this.pv.info.serialNumber + 'Energy Meter';
|
|
790
|
-
const displayType = i === 0 ? this.displayType : 4;
|
|
791
|
-
const accessoryName = i === 0 ? this.name : `${this.name} ${this.pv.powerAndEnergyData.data[0].measurementType}`;
|
|
792
|
-
|
|
793
|
-
//accessory
|
|
794
|
-
if (this.logDebug) this.emit('debug', `Prepare ${accessoryName} accessory`);
|
|
795
|
-
const accessoryUUID = AccessoryUUID.generate(envoySerialNumber);
|
|
796
|
-
const accessoryCategory = [Categories.OTHER, Categories.LIGHTBULB, Categories.FAN, Categories.SENSOR, Categories.SENSOR][displayType];
|
|
797
|
-
const accessory = new Accessory(accessoryName, accessoryUUID, accessoryCategory);
|
|
798
|
-
|
|
799
|
-
//information service
|
|
800
|
-
if (this.logDebug) this.emit('debug', `Prepare Information Service`);
|
|
801
|
-
accessory.getService(Service.AccessoryInformation)
|
|
802
|
-
.setCharacteristic(Characteristic.Manufacturer, 'Enphase')
|
|
803
|
-
.setCharacteristic(Characteristic.Model, this.pv.info.modelName ?? 'Model Name')
|
|
804
|
-
.setCharacteristic(Characteristic.SerialNumber, envoySerialNumber ?? 'Serial Number')
|
|
805
|
-
.setCharacteristic(Characteristic.FirmwareRevision, this.pv.info.software.replace(/[a-zA-Z]/g, '') ?? '0');
|
|
806
|
-
|
|
807
788
|
switch (i) {
|
|
808
789
|
case 0://PV
|
|
790
|
+
const envoySerialNumber = this.pv.info.serialNumber;
|
|
791
|
+
const accessoryName = this.name;
|
|
792
|
+
|
|
793
|
+
//accessory
|
|
794
|
+
if (this.logDebug) this.emit('debug', `Prepare ${accessoryName} accessory`);
|
|
795
|
+
const accessoryUUID = AccessoryUUID.generate(envoySerialNumber);
|
|
796
|
+
const accessoryCategory = [Categories.OTHER, Categories.LIGHTBULB, Categories.FAN, Categories.SENSOR, Categories.SENSOR][this.displayType];
|
|
797
|
+
const accessory = new Accessory(accessoryName, accessoryUUID, accessoryCategory);
|
|
798
|
+
|
|
799
|
+
//information service
|
|
800
|
+
if (this.logDebug) this.emit('debug', `Prepare Information Service`);
|
|
801
|
+
accessory.getService(Service.AccessoryInformation)
|
|
802
|
+
.setCharacteristic(Characteristic.Manufacturer, 'Enphase')
|
|
803
|
+
.setCharacteristic(Characteristic.Model, this.pv.info.modelName ?? 'Model Name')
|
|
804
|
+
.setCharacteristic(Characteristic.SerialNumber, envoySerialNumber ?? 'Serial Number')
|
|
805
|
+
.setCharacteristic(Characteristic.FirmwareRevision, this.pv.info.software.replace(/[a-zA-Z]/g, '') ?? '0');
|
|
809
806
|
//system
|
|
810
807
|
if (this.systemAccessory) {
|
|
811
808
|
if (this.logDebug) this.emit('debug', `Prepare System Service`);
|
|
@@ -2998,22 +2995,39 @@ class EnvoyDevice extends EventEmitter {
|
|
|
2998
2995
|
|
|
2999
2996
|
accessories.push(accessory);
|
|
3000
2997
|
break;
|
|
3001
|
-
case 1: //Energy Meter
|
|
3002
|
-
|
|
3003
|
-
this.fakegatoHistoryService = new this.fakegatoHistory(`energy`, accessory, {
|
|
3004
|
-
storage: 'fs',
|
|
3005
|
-
disableRepeatLastData: true,
|
|
3006
|
-
disableTimer: false,
|
|
3007
|
-
path: this.prefDir,
|
|
3008
|
-
filename: this.energyMeterHistoryFileName
|
|
3009
|
-
})
|
|
3010
|
-
|
|
3011
|
-
// Energy Meter Service
|
|
2998
|
+
case 1: //Energy Meter Production
|
|
2999
|
+
this.fakegatoHistoryServices = [];
|
|
3012
3000
|
this.energyMeterServices = [];
|
|
3013
3001
|
for (const source of this.pv.powerAndEnergyData.data) {
|
|
3014
3002
|
const measurementType = source.measurementType;
|
|
3003
|
+
const envoySerialNumber = `${this.pv.info.serialNumber}${measurementType}`;
|
|
3004
|
+
const accessoryName = `${this.name} Energy Meter ${measurementType}`;
|
|
3015
3005
|
const power = source.power > 0 ? source.power : 0;
|
|
3016
3006
|
|
|
3007
|
+
//accessory
|
|
3008
|
+
if (this.logDebug) this.emit('debug', `Prepare ${accessoryName} accessory`);
|
|
3009
|
+
const accessoryUUID = AccessoryUUID.generate(envoySerialNumber);
|
|
3010
|
+
const accessoryCategory = Categories.SENSOR;
|
|
3011
|
+
const accessory = new Accessory(accessoryName, accessoryUUID, accessoryCategory);
|
|
3012
|
+
|
|
3013
|
+
//information service
|
|
3014
|
+
if (this.logDebug) this.emit('debug', `Prepare Information Service`);
|
|
3015
|
+
accessory.getService(Service.AccessoryInformation)
|
|
3016
|
+
.setCharacteristic(Characteristic.Manufacturer, 'Enphase')
|
|
3017
|
+
.setCharacteristic(Characteristic.Model, this.pv.info.modelName ?? 'Model Name')
|
|
3018
|
+
.setCharacteristic(Characteristic.SerialNumber, envoySerialNumber ?? 'Serial Number')
|
|
3019
|
+
.setCharacteristic(Characteristic.FirmwareRevision, this.pv.info.software.replace(/[a-zA-Z]/g, '') ?? '0');
|
|
3020
|
+
|
|
3021
|
+
if (this.logDebug) this.emit('debug', `Prepare Fakegato ${measurementType} Service`);
|
|
3022
|
+
const fakegatoHistoryService = new this.fakegatoHistory(`energy`, accessory, {
|
|
3023
|
+
storage: 'fs',
|
|
3024
|
+
disableRepeatLastData: true,
|
|
3025
|
+
disableTimer: false,
|
|
3026
|
+
path: this.prefDir,
|
|
3027
|
+
filename: `${this.energyMeterHistoryFileName}_${MetersKeyMap1[measurementType]}.json`
|
|
3028
|
+
})
|
|
3029
|
+
|
|
3030
|
+
// Energy Meter Service
|
|
3017
3031
|
if (this.logDebug) this.emit('debug', `Prepare Energy Meter ${measurementType} Service`);
|
|
3018
3032
|
const energyMeterService = accessory.addService(Service.EvePowerMeter, `Energy Meter ${measurementType}`, `energyMeterService${measurementType}`);
|
|
3019
3033
|
energyMeterService.setCharacteristic(Characteristic.ConfiguredName, `Energy Meter ${measurementType}`);
|
|
@@ -3056,6 +3070,7 @@ class EnvoyDevice extends EventEmitter {
|
|
|
3056
3070
|
}
|
|
3057
3071
|
});
|
|
3058
3072
|
|
|
3073
|
+
this.fakegatoHistoryServices.push(fakegatoHistoryService);
|
|
3059
3074
|
this.energyMeterServices.push(energyMeterService);
|
|
3060
3075
|
}
|
|
3061
3076
|
|
|
@@ -4103,10 +4118,10 @@ class EnvoyDevice extends EventEmitter {
|
|
|
4103
4118
|
}
|
|
4104
4119
|
|
|
4105
4120
|
// Energy meter
|
|
4106
|
-
if (
|
|
4121
|
+
if (this.energyMeter) {
|
|
4107
4122
|
const power = obj.power > 0 ? obj.power : 0;
|
|
4108
4123
|
// Add to fakegato history
|
|
4109
|
-
this.
|
|
4124
|
+
this.fakegatoHistoryServices?.[index]?.addEntry({
|
|
4110
4125
|
time: Math.floor(Date.now() / 1000),
|
|
4111
4126
|
power: power ?? 0
|
|
4112
4127
|
});
|