UNPKG

homebridge-enphase-envoy

Version:

Homebridge plugin for Photovoltaic Energy System manufactured by Enphase.

1,278 lines (1,184 loc) 111 kB
export default (api) => { const { Service, Characteristic, Units, Formats, Perms } = api.hap; //Envoy class EnphaseEnvoyAlerts extends Characteristic { constructor() { super('Alerts', '00000001-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyAlerts = EnphaseEnvoyAlerts; class EnphaseEnvoyGridProfile extends Characteristic { constructor() { super('Grid profile', '00000002-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyGridProfile = EnphaseEnvoyGridProfile; class EnphaseEnvoyPrimaryInterface extends Characteristic { constructor() { super('Network interface', '00000011-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyPrimaryInterface = EnphaseEnvoyPrimaryInterface; class EnphaseEnvoyNetworkWebComm extends Characteristic { constructor() { super('Web communication', '00000012-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyNetworkWebComm = EnphaseEnvoyNetworkWebComm; class EnphaseEnvoyEverReportedToEnlighten extends Characteristic { constructor() { super('Report to Enlighten', '00000013-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyEverReportedToEnlighten = EnphaseEnvoyEverReportedToEnlighten; class EnphaseEnvoyCommNumAndLevel extends Characteristic { constructor() { super('Devices / Level', '00000014-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyCommNumAndLevel = EnphaseEnvoyCommNumAndLevel; class EnphaseEnvoyCommNumNsrbAndLevel extends Characteristic { constructor() { super('Q-Relays / Level', '00000015-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyCommNumNsrbAndLevel = EnphaseEnvoyCommNumNsrbAndLevel; class EnphaseEnvoyCommNumPcuAndLevel extends Characteristic { constructor() { super('Microinverters / Level', '00000016-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyCommNumPcuAndLevel = EnphaseEnvoyCommNumPcuAndLevel; class EnphaseEnvoyCommNumAcbAndLevel extends Characteristic { constructor() { super('AC Batteries / Level', '00000017-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyCommNumAcbAndLevel = EnphaseEnvoyCommNumAcbAndLevel; class EnphaseEnvoyCommNumEnchgAndLevel extends Characteristic { constructor() { super('Encharges / Level', '00000018-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyCommNumEnchgAndLevel = EnphaseEnvoyCommNumEnchgAndLevel; class EnphaseEnvoyDbSize extends Characteristic { constructor() { super('DB size', '00000019-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyDbSize = EnphaseEnvoyDbSize; class EnphaseEnvoyTariff extends Characteristic { constructor() { super('Tariff', '00000021-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyTariff = EnphaseEnvoyTariff; class EnphaseEnvoyFirmware extends Characteristic { constructor() { super('Firmware', '00000022-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyFirmware = EnphaseEnvoyFirmware; class EnphaseEnvoyUpdateStatus extends Characteristic { constructor() { super('Update status', '00000023-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyUpdateStatus = EnphaseEnvoyUpdateStatus; class EnphaseEnvoyTimeZone extends Characteristic { constructor() { super('Time Zone', '00000024-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyTimeZone = EnphaseEnvoyTimeZone; class EnphaseEnvoyCurrentDateTime extends Characteristic { constructor() { super('Local time', '00000025-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyCurrentDateTime = EnphaseEnvoyCurrentDateTime; class EnphaseEnvoyLastEnlightenReporDate extends Characteristic { constructor() { super('Last report to Enlighten', '00000026-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyLastEnlightenReporDate = EnphaseEnvoyLastEnlightenReporDate; class EnphaseEnvoyEnpowerGridState extends Characteristic { constructor() { super('Enpower grid state', '00000027-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.PAIRED_WRITE, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyEnpowerGridState = EnphaseEnvoyEnpowerGridState; class EnphaseEnvoyEnpowerGridMode extends Characteristic { constructor() { super('Enpower grid mode', '00000028-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyEnpowerGridMode = EnphaseEnvoyEnpowerGridMode; class EnphaseEnvoyGeneratorState extends Characteristic { constructor() { super('Generator state', '00000301-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.PAIRED_WRITE, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyGeneratorState = EnphaseEnvoyGeneratorState; class EnphaseEnvoyGeneratorMode extends Characteristic { constructor() { super('Generator mode', '00000302-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyGeneratorMode = EnphaseEnvoyGeneratorMode; class EnphaseEnvoyCheckCommLevel extends Characteristic { constructor() { super('Plc level check', '00000029-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.PAIRED_WRITE, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyCheckCommLevel = EnphaseEnvoyCheckCommLevel; class EnphaseEnvoyProductionPowerMode extends Characteristic { constructor() { super('Production state', '00000030-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.PAIRED_WRITE, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyProductionPowerMode = EnphaseEnvoyProductionPowerMode; class EnphaseEnvoyDataRefresh extends Characteristic { constructor() { super('Data sampling', '00000300-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.PAIRED_WRITE, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnvoyDataRefresh = EnphaseEnvoyDataRefresh; //power production service class EnphaseEnvoyService extends Service { constructor(displayName, subtype) { super(displayName, '00000001-000A-1000-8000-0026BB765291', subtype); // Mandatory Characteristics this.addCharacteristic(Characteristic.EnphaseEnvoyAlerts); // Optional Characteristics this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyGridProfile); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyPrimaryInterface); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyNetworkWebComm); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyEverReportedToEnlighten); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyCommNumAndLevel); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyCommNumNsrbAndLevel); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyCommNumPcuAndLevel); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyCommNumAcbAndLevel); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyCommNumEnchgAndLevel); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyDbSize); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyTariff); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyFirmware); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyUpdateStatus); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyTimeZone); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyCurrentDateTime); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyLastEnlightenReporDate); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyEnpowerGridState); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyEnpowerGridMode); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyGeneratorState); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyGeneratorMode); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyCheckCommLevel); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyProductionPowerMode); this.addOptionalCharacteristic(Characteristic.EnphaseEnvoyDataRefresh); this.addOptionalCharacteristic(Characteristic.ConfiguredName); } } Service.EnphaseEnvoyService = EnphaseEnvoyService; //Q-Relay class EnphaseQrelayState extends Characteristic { constructor() { super('Relay', '00000031-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayState = EnphaseQrelayState; class EnphaseQrelayLinesCount extends Characteristic { constructor() { super('Lines', '00000032-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayLinesCount = EnphaseQrelayLinesCount; class EnphaseQrelayLine1Connected extends Characteristic { constructor() { super('Line 1', '00000033-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayLine1Connected = EnphaseQrelayLine1Connected; class EnphaseQrelayLine2Connected extends Characteristic { constructor() { super('Line 2', '00000034-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayLine2Connected = EnphaseQrelayLine2Connected; class EnphaseQrelayLine3Connected extends Characteristic { constructor() { super('Line 3', '00000035-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayLine3Connected = EnphaseQrelayLine3Connected; class EnphaseQrelayProducing extends Characteristic { constructor() { super('Producing', '00000036-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayProducing = EnphaseQrelayProducing; class EnphaseQrelayCommunicating extends Characteristic { constructor() { super('Communicating', '00000037-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayCommunicating = EnphaseQrelayCommunicating; class EnphaseQrelayProvisioned extends Characteristic { constructor() { super('Provisioned', '00000038-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayProvisioned = EnphaseQrelayProvisioned; class EnphaseQrelayOperating extends Characteristic { constructor() { super('Operating', '00000039-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayOperating = EnphaseQrelayOperating; class EnphaseQrelayCommLevel extends Characteristic { constructor() { super('PLC level', '00000041-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, unit: Units.PERCENTAGE, maxValue: 100, minValue: 0, minStep: 1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayCommLevel = EnphaseQrelayCommLevel; class EnphaseQrelayStatus extends Characteristic { constructor() { super('Status', '00000042-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayStatus = EnphaseQrelayStatus; class EnphaseQrelayFirmware extends Characteristic { constructor() { super('Firmware', '00000043-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayFirmware = EnphaseQrelayFirmware; class EnphaseQrelayLastReportDate extends Characteristic { constructor() { super('Last report', '00000044-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayLastReportDate = EnphaseQrelayLastReportDate; class EnphaseQrelayGridProfile extends Characteristic { constructor() { super('Grid profile', '00000045-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseQrelayGridProfile = EnphaseQrelayGridProfile; //qrelay service class EnphaseQrelayService extends Service { constructor(displayName, subtype) { super(displayName, '00000002-000A-1000-8000-0026BB765291', subtype); // Mandatory Characteristics this.addCharacteristic(Characteristic.EnphaseQrelayState); // Optional Characteristics this.addOptionalCharacteristic(Characteristic.EnphaseQrelayLinesCount); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayLine1Connected); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayLine2Connected); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayLine3Connected); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayProducing); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayCommunicating); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayProvisioned); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayOperating); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayCommLevel); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayStatus); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayFirmware); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayLastReportDate); this.addOptionalCharacteristic(Characteristic.EnphaseQrelayGridProfile); this.addOptionalCharacteristic(Characteristic.ConfiguredName); } } Service.EnphaseQrelayService = EnphaseQrelayService; //Enphase current meters class EnphaseMeterState extends Characteristic { constructor() { super('State', '00000051-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterState = EnphaseMeterState; class EnphaseMeterMeasurementType extends Characteristic { constructor() { super('Meter type', '00000052-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterMeasurementType = EnphaseMeterMeasurementType; class EnphaseMeterPhaseCount extends Characteristic { constructor() { super('Phase count', '00000053-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterPhaseCount = EnphaseMeterPhaseCount; class EnphaseMeterPhaseMode extends Characteristic { constructor() { super('Phase mode', '00000054-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterPhaseMode = EnphaseMeterPhaseMode; class EnphaseMeterMeteringStatus extends Characteristic { constructor() { super('Metering status', '00000055-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterMeteringStatus = EnphaseMeterMeteringStatus; class EnphaseMeterStatusFlags extends Characteristic { constructor() { super('Status flag', '00000056-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterStatusFlags = EnphaseMeterStatusFlags; class EnphaseMeterActivePower extends Characteristic { constructor() { super('Active power', '00000057-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kW', maxValue: 1000, minValue: -1000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterActivePower = EnphaseMeterActivePower; class EnphaseMeterApparentPower extends Characteristic { constructor() { super('Apparent power', '00000058-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kVA', maxValue: 10000, minValue: -10000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterApparentPower = EnphaseMeterApparentPower; class EnphaseMeterReactivePower extends Characteristic { constructor() { super('Reactive power', '00000059-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kVAr', maxValue: 10000, minValue: -10000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterReactivePower = EnphaseMeterReactivePower; class EnphaseMeterPwrFactor extends Characteristic { constructor() { super('Power factor', '00000061-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'cos φ', maxValue: 1, minValue: -1, minStep: 0.01, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterPwrFactor = EnphaseMeterPwrFactor; class EnphaseMeterVoltage extends Characteristic { constructor() { super('Voltage', '00000062-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'V', maxValue: 1000, minValue: 0, minStep: 0.1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterVoltage = EnphaseMeterVoltage; class EnphaseMeterCurrent extends Characteristic { constructor() { super('Current', '00000063-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'A', maxValue: 1000, minValue: -1000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterCurrent = EnphaseMeterCurrent; class EnphaseMeterFreq extends Characteristic { constructor() { super('Frequency', '00000064-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'Hz', maxValue: 100, minValue: 0, minStep: 0.01, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterFreq = EnphaseMeterFreq; class EnphaseMeterReadingTime extends Characteristic { constructor() { super('Last report', '00000065-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseMeterReadingTime = EnphaseMeterReadingTime; //current meters service class EnphaseMeterService extends Service { constructor(displayName, subtype) { super(displayName, '00000003-000A-1000-8000-0026BB765291', subtype); // Mandatory Characteristics this.addCharacteristic(Characteristic.EnphaseMeterState); // Optional Characteristics this.addOptionalCharacteristic(Characteristic.EnphaseMeterPhaseMode); this.addOptionalCharacteristic(Characteristic.EnphaseMeterPhaseCount); this.addOptionalCharacteristic(Characteristic.EnphaseMeterMeasurementType); this.addOptionalCharacteristic(Characteristic.EnphaseMeterMeteringStatus); this.addOptionalCharacteristic(Characteristic.EnphaseMeterStatusFlags); this.addOptionalCharacteristic(Characteristic.EnphaseMeterActivePower); this.addOptionalCharacteristic(Characteristic.EnphaseMeterApparentPower); this.addOptionalCharacteristic(Characteristic.EnphaseMeterReactivePower); this.addOptionalCharacteristic(Characteristic.EnphaseMeterPwrFactor); this.addOptionalCharacteristic(Characteristic.EnphaseMeterVoltage); this.addOptionalCharacteristic(Characteristic.EnphaseMeterCurrent); this.addOptionalCharacteristic(Characteristic.EnphaseMeterFreq); this.addOptionalCharacteristic(Characteristic.EnphaseMeterReadingTime); this.addOptionalCharacteristic(Characteristic.ConfiguredName); } } Service.EnphaseMeterService = EnphaseMeterService; //Envoy production/consumption characteristics class EnphasePower extends Characteristic { constructor() { super('Power', '00000071-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kW', maxValue: 1000, minValue: -1000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphasePower = EnphasePower; class EnphasePowerMax extends Characteristic { constructor() { super('Power peak', '00000072-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kW', maxValue: 1000, minValue: -1000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphasePowerMax = EnphasePowerMax; class EnphasePowerMaxDetected extends Characteristic { constructor() { super('Power peak detected', '00000073-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphasePowerMaxDetected = EnphasePowerMaxDetected; class EnphaseEnergyToday extends Characteristic { constructor() { super('Energy today', '00000074-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kWh', maxValue: 100000000, minValue: -100000000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnergyToday = EnphaseEnergyToday; class EnphaseEnergyLastSevenDays extends Characteristic { constructor() { super('Energy last 7 days', '00000075-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kWh', maxValue: 100000000, minValue: -100000000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnergyLastSevenDays = EnphaseEnergyLastSevenDays; class EnphaseEnergyLifetime extends Characteristic { constructor() { super('Energy lifetime', '00000076-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kWh', maxValue: 100000000, minValue: -100000000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseEnergyLifetime = EnphaseEnergyLifetime; class EnphaseRmsCurrent extends Characteristic { constructor() { super('Current', '00000077-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'A', maxValue: 1000, minValue: -1000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseRmsCurrent = EnphaseRmsCurrent; class EnphaseRmsVoltage extends Characteristic { constructor() { super('Voltage', '00000078-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'V', maxValue: 1000, minValue: 0, minStep: 0.1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseRmsVoltage = EnphaseRmsVoltage; class EnphaseReactivePower extends Characteristic { constructor() { super('Reactive power', '00000079-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kVAr', maxValue: 1000, minValue: -1000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseReactivePower = EnphaseReactivePower; class EnphaseApparentPower extends Characteristic { constructor() { super('Apparent power', '00000081-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kVA', maxValue: 1000, minValue: -1000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseApparentPower = EnphaseApparentPower; class EnphasePwrFactor extends Characteristic { constructor() { super('Power factor', '00000082-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'cos φ', maxValue: 1, minValue: -1, minStep: 0.01, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphasePwrFactor = EnphasePwrFactor; class EnphaseReadingTime extends Characteristic { constructor() { super('Last report', '00000083-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseReadingTime = EnphaseReadingTime; class EnphasePowerMaxReset extends Characteristic { constructor() { super('Power peak reset', '00000084-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.PAIRED_WRITE, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphasePowerMaxReset = EnphasePowerMaxReset; //power production service class EnphasePowerAndEnergyService extends Service { constructor(displayName, subtype) { super(displayName, '00000004-000A-1000-8000-0026BB765291', subtype); // Mandatory Characteristics this.addCharacteristic(Characteristic.EnphasePower); // Optional Characteristics this.addOptionalCharacteristic(Characteristic.EnphasePowerMax); this.addOptionalCharacteristic(Characteristic.EnphasePowerMaxDetected); this.addOptionalCharacteristic(Characteristic.EnphaseEnergyToday); this.addOptionalCharacteristic(Characteristic.EnphaseEnergyLastSevenDays); this.addOptionalCharacteristic(Characteristic.EnphaseEnergyLifetime); this.addOptionalCharacteristic(Characteristic.EnphaseRmsCurrent); this.addOptionalCharacteristic(Characteristic.EnphaseRmsVoltage); this.addOptionalCharacteristic(Characteristic.EnphaseReactivePower); this.addOptionalCharacteristic(Characteristic.EnphaseApparentPower); this.addOptionalCharacteristic(Characteristic.EnphasePwrFactor); this.addOptionalCharacteristic(Characteristic.EnphaseReadingTime); this.addOptionalCharacteristic(Characteristic.EnphasePowerMaxReset); this.addOptionalCharacteristic(Characteristic.ConfiguredName); } } Service.EnphasePowerAndEnergyService = EnphasePowerAndEnergyService; //AC Batterie class EnphaseAcBatterieSummaryPower extends Characteristic { constructor() { super('Power', '00000091-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kW', maxValue: 1000, minValue: -1000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSummaryPower = EnphaseAcBatterieSummaryPower; class EnphaseAcBatterieSummaryEnergy extends Characteristic { constructor() { super('Energy', '00000092-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: 'kWh', maxValue: 100000000, minValue: -100000000, minStep: 0.001, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSummaryEnergy = EnphaseAcBatterieSummaryEnergy; class EnphaseAcBatterieSummaryPercentFull extends Characteristic { constructor() { super('Percent full', '00000093-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, unit: Units.PERCENTAGE, maxValue: 100, minValue: 0, minStep: 1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSummaryPercentFull = EnphaseAcBatterieSummaryPercentFull; class EnphaseAcBatterieSummaryActiveCount extends Characteristic { constructor() { super('Devices count', '00000094-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, unit: '', maxValue: 255, minValue: 0, minStep: 1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSummaryActiveCount = EnphaseAcBatterieSummaryActiveCount; class EnphaseAcBatterieSummaryState extends Characteristic { constructor() { super('State', '00000095-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSummaryState = EnphaseAcBatterieSummaryState; class EnphaseAcBatterieSummaryReadingTime extends Characteristic { constructor() { super('Last report', '00000096-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSummaryReadingTime = EnphaseAcBatterieSummaryReadingTime; //AC Batterie summary service class EnphaseAcBatterieSummaryService extends Service { constructor(displayName, subtype) { super(displayName, '00000005-000A-1000-8000-0026BB765291', subtype); // Mandatory Characteristics this.addCharacteristic(Characteristic.EnphaseAcBatterieSummaryPower); // Optional Characteristics this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieSummaryEnergy); this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieSummaryPercentFull); this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieSummaryActiveCount); this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieSummaryState); this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieSummaryReadingTime); this.addOptionalCharacteristic(Characteristic.ConfiguredName); } } Service.EnphaseAcBatterieSummaryService = EnphaseAcBatterieSummaryService; //AC Batterie class EnphaseAcBatterieChargeStatus extends Characteristic { constructor() { super('Charge status', '00000111-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieChargeStatus = EnphaseAcBatterieChargeStatus; class EnphaseAcBatterieProducing extends Characteristic { constructor() { super('Producing', '00000112-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieProducing = EnphaseAcBatterieProducing; class EnphaseAcBatterieCommunicating extends Characteristic { constructor() { super('Communicating', '00000113-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieCommunicating = EnphaseAcBatterieCommunicating; class EnphaseAcBatterieProvisioned extends Characteristic { constructor() { super('Provisioned', '00000114-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieProvisioned = EnphaseAcBatterieProvisioned; class EnphaseAcBatterieOperating extends Characteristic { constructor() { super('Operating', '00000115-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieOperating = EnphaseAcBatterieOperating; class EnphaseAcBatterieCommLevel extends Characteristic { constructor() { super('PLC level', '00000116-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, unit: Units.PERCENTAGE, maxValue: 100, minValue: 0, minStep: 1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieCommLevel = EnphaseAcBatterieCommLevel; class EnphaseAcBatterieSleepEnabled extends Characteristic { constructor() { super('Sleep enabled', '00000117-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.BOOL, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSleepEnabled = EnphaseAcBatterieSleepEnabled; class EnphaseAcBatteriePercentFull extends Characteristic { constructor() { super('Percent full', '00000118-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, unit: Units.PERCENTAGE, maxValue: 100, minValue: 0, minStep: 1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatteriePercentFull = EnphaseAcBatteriePercentFull; class EnphaseAcBatterieMaxCellTemp extends Characteristic { constructor() { super('Max cell temp', '00000119-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.FLOAT, unit: '°C', maxValue: 200, minValue: 0, minStep: 1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieMaxCellTemp = EnphaseAcBatterieMaxCellTemp; class EnphaseAcBatterieSleepMinSoc extends Characteristic { constructor() { super('Sleep min soc', '00000121-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, unit: 'min', maxValue: 255, minValue: 0, minStep: 1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSleepMinSoc = EnphaseAcBatterieSleepMinSoc; class EnphaseAcBatterieSleepMaxSoc extends Characteristic { constructor() { super('Sleep max soc', '00000122-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.UINT8, unit: 'min', maxValue: 255, minValue: 0, minStep: 1, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieSleepMaxSoc = EnphaseAcBatterieSleepMaxSoc; class EnphaseAcBatterieStatus extends Characteristic { constructor() { super('Status', '00000123-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieStatus = EnphaseAcBatterieStatus; class EnphaseAcBatterieFirmware extends Characteristic { constructor() { super('Firmware', '00000124-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieFirmware = EnphaseAcBatterieFirmware; class EnphaseAcBatterieLastReportDate extends Characteristic { constructor() { super('Last report', '00000125-000B-1000-8000-0026BB765291'); this.setProps({ format: Formats.STRING, perms: [Perms.PAIRED_READ, Perms.NOTIFY] }); this.value = this.getDefaultValue(); } } Characteristic.EnphaseAcBatterieLastReportDate = EnphaseAcBatterieLastReportDate; //AC Batterie service class EnphaseAcBatterieService extends Service { constructor(displayName, subtype) { super(displayName, '00000006-000A-1000-8000-0026BB765291', subtype); // Mandatory Characteristics this.addCharacteristic(Characteristic.EnphaseAcBatterieChargeStatus); // Optional Characteristics this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieProducing); this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieCommunicating); this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieProvisioned); this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieOperating); this.addOptionalCharacteristic(Characteristic.EnphaseAcBatterieCommLevel);