@homebridge-plugins/homebridge-tado
Version:
Homebridge plugin for controlling tado° devices.
376 lines (343 loc) • 15.2 kB
JavaScript
export default {
registerWith: function (hap) {
const { Characteristic, Service, Formats, Perms, Units } = hap;
/// /////////////////////////////////////////////////////////////////////////
// ResetTotal
/// /////////////////////////////////////////////////////////////////////////
class ResetTotal extends Characteristic {
constructor() {
super('Reset Total', 'E863F112-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.UINT32,
unit: Units.SECONDS,
perms: [Perms.PAIRED_READ, Perms.NOTIFY, Perms.PAIRED_WRITE],
});
this.value = this.getDefaultValue();
}
}
ResetTotal.UUID = 'E863F112-079E-48FF-8F27-9C2605A29F52';
Characteristic.ResetTotal = ResetTotal;
/// /////////////////////////////////////////////////////////////////////////
// HistoryStatus
/// /////////////////////////////////////////////////////////////////////////
class HistoryStatus extends Characteristic {
constructor() {
super('History Status', 'E863F116-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.DATA,
perms: [Perms.PAIRED_READ, Perms.NOTIFY, Perms.PAIRED_WRITE],
});
this.value = this.getDefaultValue();
}
}
HistoryStatus.UUID = 'E863F116-079E-48FF-8F27-9C2605A29F52';
Characteristic.HistoryStatus = HistoryStatus;
/// /////////////////////////////////////////////////////////////////////////
// HistoryEntries
/// /////////////////////////////////////////////////////////////////////////
class HistoryEntries extends Characteristic {
constructor() {
super('History Entries', 'E863F117-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.DATA,
perms: [Perms.PAIRED_READ, Perms.NOTIFY, Perms.PAIRED_WRITE],
});
this.value = this.getDefaultValue();
}
}
HistoryEntries.UUID = 'E863F117-079E-48FF-8F27-9C2605A29F52';
Characteristic.HistoryEntries = HistoryEntries;
/// /////////////////////////////////////////////////////////////////////////
// HistoryRequest
/// /////////////////////////////////////////////////////////////////////////
class HistoryRequest extends Characteristic {
constructor() {
super('History Request', 'E863F11C-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.DATA,
perms: [Perms.PAIRED_READ, Perms.NOTIFY, Perms.PAIRED_WRITE],
});
this.value = this.getDefaultValue();
}
}
HistoryRequest.UUID = 'E863F11C-079E-48FF-8F27-9C2605A29F52';
Characteristic.HistoryRequest = HistoryRequest;
/// /////////////////////////////////////////////////////////////////////////
// SetTime
/// /////////////////////////////////////////////////////////////////////////
class SetTime extends Characteristic {
constructor() {
super('Set Time', 'E863F121-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.DATA,
perms: [Perms.PAIRED_READ, Perms.NOTIFY, Perms.PAIRED_WRITE],
});
this.value = this.getDefaultValue();
}
}
SetTime.UUID = 'E863F121-079E-48FF-8F27-9C2605A29F52';
Characteristic.SetTime = SetTime;
/// /////////////////////////////////////////////////////////////////////////
// LastActivation
/// /////////////////////////////////////////////////////////////////////////
class LastActivation extends Characteristic {
constructor() {
super('Last Activation', 'E863F11A-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.UINT32,
unit: Units.SECONDS,
perms: [Perms.PAIRED_READ, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}
LastActivation.UUID = 'E863F11A-079E-48FF-8F27-9C2605A29F52';
Characteristic.LastActivation = LastActivation;
/// /////////////////////////////////////////////////////////////////////////
// TimesOpened
/// /////////////////////////////////////////////////////////////////////////
class TimesOpened extends Characteristic {
constructor() {
super('Times Opened', 'E863F129-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.UINT32,
perms: [Perms.PAIRED_READ, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}
TimesOpened.UUID = 'E863F129-079E-48FF-8F27-9C2605A29F52';
Characteristic.TimesOpened = TimesOpened;
/// /////////////////////////////////////////////////////////////////////////
// OpenDuration
/// /////////////////////////////////////////////////////////////////////////
class OpenDuration extends Characteristic {
constructor() {
super('Open Duration', 'E863F118-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.UINT32,
unit: Units.SECONDS,
perms: [Perms.PAIRED_READ, Perms.NOTIFY, Perms.PAIRED_WRITE],
});
this.value = this.getDefaultValue();
}
}
OpenDuration.UUID = 'E863F118-079E-48FF-8F27-9C2605A29F52';
Characteristic.OpenDuration = OpenDuration;
/// /////////////////////////////////////////////////////////////////////////
// ClosedDuration
/// /////////////////////////////////////////////////////////////////////////
class ClosedDuration extends Characteristic {
constructor() {
super('Closed Duration', 'E863F119-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.UINT32,
unit: Units.SECONDS,
perms: [Perms.PAIRED_READ, Perms.NOTIFY, Perms.PAIRED_WRITE],
});
this.value = this.getDefaultValue();
}
}
ClosedDuration.UUID = 'E863F119-079E-48FF-8F27-9C2605A29F52';
Characteristic.ClosedDuration = ClosedDuration;
/// /////////////////////////////////////////////////////////////////////////
// CurrentConsumption
/// /////////////////////////////////////////////////////////////////////////
class CurrentConsumption extends Characteristic {
constructor() {
super('Current Consumption', 'E863F10D-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.FLOAT,
unit: 'W',
perms: [Perms.PAIRED_READ, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}
CurrentConsumption.UUID = 'E863F10D-079E-48FF-8F27-9C2605A29F52';
Characteristic.CurrentConsumption = CurrentConsumption;
/// /////////////////////////////////////////////////////////////////////////
// TotalConsumption
/// /////////////////////////////////////////////////////////////////////////
class TotalConsumption extends Characteristic {
constructor() {
super('Total Consumption', 'E863F10C-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.FLOAT,
unit: 'kWh',
perms: [Perms.PAIRED_READ, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}
TotalConsumption.UUID = 'E863F10C-079E-48FF-8F27-9C2605A29F52';
Characteristic.TotalConsumption = TotalConsumption;
/// /////////////////////////////////////////////////////////////////////////
// Volts
/// /////////////////////////////////////////////////////////////////////////
class Volts extends Characteristic {
constructor() {
super('Volts', 'E863F10A-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.FLOAT,
unit: 'V',
perms: [Perms.PAIRED_READ, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}
Volts.UUID = 'E863F10A-079E-48FF-8F27-9C2605A29F52';
Characteristic.Volts = Volts;
/// /////////////////////////////////////////////////////////////////////////
// Amperes
/// /////////////////////////////////////////////////////////////////////////
class Amperes extends Characteristic {
constructor() {
super('Amperes', 'E863F126-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.FLOAT,
unit: 'A',
perms: [Perms.PAIRED_READ, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}
Amperes.UUID = 'E863F126-079E-48FF-8F27-9C2605A29F52';
Characteristic.Amperes = Amperes;
/// /////////////////////////////////////////////////////////////////////////
// ValvePosition
/// /////////////////////////////////////////////////////////////////////////
class ValvePosition extends Characteristic {
constructor() {
super('Valve Position', 'E863F12E-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.UINT8,
unit: Units.PERCENTAGE,
perms: [Perms.PAIRED_READ, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}
ValvePosition.UUID = 'E863F12E-079E-48FF-8F27-9C2605A29F52';
Characteristic.ValvePosition = ValvePosition;
/// /////////////////////////////////////////////////////////////////////////
// ProgramCommand
/// /////////////////////////////////////////////////////////////////////////
class ProgramCommand extends Characteristic {
constructor() {
super('Program Command', 'E863F12C-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.DATA,
perms: [Perms.PAIRED_WRITE],
});
this.value = this.getDefaultValue();
}
}
ProgramCommand.UUID = 'E863F12C-079E-48FF-8F27-9C2605A29F52';
Characteristic.ProgramCommand = ProgramCommand;
/// /////////////////////////////////////////////////////////////////////////
// ProgramData
/// /////////////////////////////////////////////////////////////////////////
class ProgramData extends Characteristic {
constructor() {
super('Program Data', 'E863F12F-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Formats.DATA,
perms: [Perms.PAIRED_READ, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}
ProgramData.UUID = 'E863F12F-079E-48FF-8F27-9C2605A29F52';
Characteristic.ProgramData = ProgramData;
/// /////////////////////////////////////////////////////////////////////////
// Outlet
/// /////////////////////////////////////////////////////////////////////////
class Outlet extends Service {
constructor(displayName, subtype) {
super(displayName, '00000047-0000-1000-8000-0026BB765291', subtype);
// Required Characteristics
this.addCharacteristic(Characteristic.On);
this.addCharacteristic(Characteristic.OutletInUse);
// Optional Characteristics EVE
this.addOptionalCharacteristic(Characteristic.CurrentConsumption);
this.addOptionalCharacteristic(Characteristic.TotalConsumption);
this.addOptionalCharacteristic(Characteristic.Volts);
this.addOptionalCharacteristic(Characteristic.Amperes);
// Optional Characteristics
this.addOptionalCharacteristic(Characteristic.Name);
}
}
Outlet.UUID = '00000047-0000-1000-8000-0026BB765291';
Service.Outlet = Outlet;
/// /////////////////////////////////////////////////////////////////////////
// Thermostat
/// /////////////////////////////////////////////////////////////////////////
class Thermostat extends Service {
constructor(displayName, subtype) {
super(displayName, '0000004A-0000-1000-8000-0026BB765291', subtype);
// Required Characteristics
this.addCharacteristic(Characteristic.CurrentHeatingCoolingState);
this.addCharacteristic(Characteristic.TargetHeatingCoolingState);
this.addCharacteristic(Characteristic.CurrentTemperature);
this.addCharacteristic(Characteristic.TargetTemperature);
this.addCharacteristic(Characteristic.TemperatureDisplayUnits);
// Optional Characteristics EVE
this.addOptionalCharacteristic(Characteristic.ValvePosition);
this.addOptionalCharacteristic(Characteristic.ProgramCommand);
this.addOptionalCharacteristic(Characteristic.ProgramData);
// Optional Characteristics
this.addOptionalCharacteristic(Characteristic.CurrentRelativeHumidity);
this.addOptionalCharacteristic(Characteristic.TargetRelativeHumidity);
this.addOptionalCharacteristic(Characteristic.CoolingThresholdTemperature);
this.addOptionalCharacteristic(Characteristic.HeatingThresholdTemperature);
this.addOptionalCharacteristic(Characteristic.Name);
}
}
Thermostat.UUID = '0000004A-0000-1000-8000-0026BB765291';
Service.Thermostat = Thermostat;
/// /////////////////////////////////////////////////////////////////////////
// ContactSensor
/// /////////////////////////////////////////////////////////////////////////
class ContactSensor extends Service {
constructor(displayName, subtype) {
super(displayName, '00000080-0000-1000-8000-0026BB765291', subtype);
// Required Characteristics
this.addCharacteristic(Characteristic.ContactSensorState);
// Optional Characteristics EVE
this.addOptionalCharacteristic(Characteristic.TimesOpened);
this.addOptionalCharacteristic(Characteristic.OpenDuration);
this.addOptionalCharacteristic(Characteristic.ClosedDuration);
this.addOptionalCharacteristic(Characteristic.LastActivation);
// Optional Characteristics
this.addOptionalCharacteristic(Characteristic.StatusActive);
this.addOptionalCharacteristic(Characteristic.StatusFault);
this.addOptionalCharacteristic(Characteristic.StatusTampered);
this.addOptionalCharacteristic(Characteristic.StatusLowBattery);
this.addOptionalCharacteristic(Characteristic.Name);
}
}
ContactSensor.UUID = '00000080-0000-1000-8000-0026BB765291';
Service.ContactSensor = ContactSensor;
/// /////////////////////////////////////////////////////////////////////////
// MotionSensor
/// /////////////////////////////////////////////////////////////////////////
class MotionSensor extends Service {
constructor(displayName, subtype) {
super(displayName, '00000085-0000-1000-8000-0026BB765291', subtype);
// Required Characteristics
this.addCharacteristic(Characteristic.MotionDetected);
// Optional Characteristics EVE
this.addOptionalCharacteristic(Characteristic.LastActivation);
// Optional Characteristics
this.addOptionalCharacteristic(Characteristic.StatusActive);
this.addOptionalCharacteristic(Characteristic.StatusFault);
this.addOptionalCharacteristic(Characteristic.StatusTampered);
this.addOptionalCharacteristic(Characteristic.StatusLowBattery);
this.addOptionalCharacteristic(Characteristic.Name);
}
}
MotionSensor.UUID = '00000085-0000-1000-8000-0026BB765291';
Service.MotionSensor = MotionSensor;
}
};