homebridge-enphase-envoy
Version:
Homebridge plugin for Photovoltaic Energy System manufactured by Enphase.
1,278 lines (1,184 loc) • 111 kB
JavaScript
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);