homebridge-tado-platform
Version:
homebridge-tado-platform
338 lines (306 loc) • 16 kB
JavaScript
'use strict';
const inherits = require('util').inherits;
module.exports = {
registerWith: function (hap) {
const Characteristic = hap.Characteristic;
const Service = hap.Service;
/// /////////////////////////////////////////////////////////////////////////
// ResetTotal
/// /////////////////////////////////////////////////////////////////////////
Characteristic.ResetTotal = function () {
Characteristic.call(this, 'Reset Total', 'E863F112-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.UINT32,
unit: Characteristic.Units.SECONDS,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY, Characteristic.Perms.WRITE],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.ResetTotal, Characteristic);
Characteristic.ResetTotal.UUID = 'E863F112-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// HistoryStatus
/// /////////////////////////////////////////////////////////////////////////
Characteristic.HistoryStatus = function () {
Characteristic.call(this, 'History Status', 'E863F116-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.DATA,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY, Characteristic.Perms.WRITE],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.HistoryStatus, Characteristic);
Characteristic.HistoryStatus.UUID = 'E863F116-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// HistoryEntries
/// /////////////////////////////////////////////////////////////////////////
Characteristic.HistoryEntries = function () {
Characteristic.call(this, 'History Entries', 'E863F117-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.DATA,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY, Characteristic.Perms.WRITE],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.HistoryEntries, Characteristic);
Characteristic.HistoryEntries.UUID = 'E863F117-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// HistoryRequest
/// /////////////////////////////////////////////////////////////////////////
Characteristic.HistoryRequest = function () {
Characteristic.call(this, 'History Request', 'E863F11C-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.DATA,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY, Characteristic.Perms.WRITE],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.HistoryRequest, Characteristic);
Characteristic.HistoryRequest.UUID = 'E863F11C-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// SetTime
/// /////////////////////////////////////////////////////////////////////////
Characteristic.SetTime = function () {
Characteristic.call(this, 'Set Time', 'E863F121-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.DATA,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY, Characteristic.Perms.WRITE],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.SetTime, Characteristic);
Characteristic.SetTime.UUID = 'E863F121-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// LastActivation
/// /////////////////////////////////////////////////////////////////////////
Characteristic.LastActivation = function () {
Characteristic.call(this, 'Last Activation', 'E863F11A-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.UINT32,
unit: Characteristic.Units.SECONDS,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.LastActivation, Characteristic);
Characteristic.LastActivation.UUID = 'E863F11A-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// TimesOpened
/// /////////////////////////////////////////////////////////////////////////
Characteristic.TimesOpened = function () {
Characteristic.call(this, 'Times Opened', 'E863F129-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.UINT32,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.TimesOpened, Characteristic);
Characteristic.TimesOpened.UUID = 'E863F129-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// OpenDuration
/// /////////////////////////////////////////////////////////////////////////
Characteristic.OpenDuration = function () {
Characteristic.call(this, 'Open Duration', 'E863F118-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.UINT32,
unit: Characteristic.Units.SECONDS,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY, Characteristic.Perms.WRITE],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.OpenDuration, Characteristic);
Characteristic.OpenDuration.UUID = 'E863F118-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// ClosedDuration
/// /////////////////////////////////////////////////////////////////////////
Characteristic.ClosedDuration = function () {
Characteristic.call(this, 'Closed Duration', 'E863F119-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.UINT32,
unit: Characteristic.Units.SECONDS,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY, Characteristic.Perms.WRITE],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.ClosedDuration, Characteristic);
Characteristic.ClosedDuration.UUID = 'E863F119-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// CurrentConsumption
/// /////////////////////////////////////////////////////////////////////////
Characteristic.CurrentConsumption = function () {
Characteristic.call(this, 'Current Consumption', 'E863F10D-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.FLOAT,
unit: 'W',
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.CurrentConsumption, Characteristic);
Characteristic.CurrentConsumption.UUID = 'E863F10D-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// TotalConsumption
/// /////////////////////////////////////////////////////////////////////////
Characteristic.TotalConsumption = function () {
Characteristic.call(this, 'Total Consumption', 'E863F10C-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.FLOAT,
unit: 'kWh',
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.TotalConsumption, Characteristic);
Characteristic.TotalConsumption.UUID = 'E863F10C-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// Volts
/// /////////////////////////////////////////////////////////////////////////
Characteristic.Volts = function () {
Characteristic.call(this, 'Volts', 'E863F10A-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.FLOAT,
unit: 'V',
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.Volts, Characteristic);
Characteristic.Volts.UUID = 'E863F10A-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// Amperes
/// /////////////////////////////////////////////////////////////////////////
Characteristic.Amperes = function () {
Characteristic.call(this, 'Amperes', 'E863F126-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.FLOAT,
unit: 'A',
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.Amperes, Characteristic);
Characteristic.Amperes.UUID = 'E863F126-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// ValvePosition
/// /////////////////////////////////////////////////////////////////////////
Characteristic.ValvePosition = function () {
Characteristic.call(this, 'Valve Position', 'E863F12E-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.UINT8,
unit: Characteristic.Units.PERCENTAGE,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.ValvePosition, Characteristic);
Characteristic.ValvePosition.UUID = 'E863F12E-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// ProgramCommand
/// /////////////////////////////////////////////////////////////////////////
Characteristic.ProgramCommand = function () {
Characteristic.call(this, 'Program Command', 'E863F12C-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.DATA,
perms: [Characteristic.Perms.WRITE],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.ProgramCommand, Characteristic);
Characteristic.ProgramCommand.UUID = 'E863F12C-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// ProgramData
/// /////////////////////////////////////////////////////////////////////////
Characteristic.ProgramData = function () {
Characteristic.call(this, 'Program Data', 'E863F12F-079E-48FF-8F27-9C2605A29F52');
this.setProps({
format: Characteristic.Formats.DATA,
perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY],
});
this.value = this.getDefaultValue();
};
inherits(Characteristic.ProgramData, Characteristic);
Characteristic.ProgramData.UUID = 'E863F12F-079E-48FF-8F27-9C2605A29F52';
/// /////////////////////////////////////////////////////////////////////////
// Outlet
/// /////////////////////////////////////////////////////////////////////////
Service.Outlet = function (displayName, subtype) {
Service.call(this, 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);
};
inherits(Service.Outlet, Service);
Service.Outlet.UUID = '00000047-0000-1000-8000-0026BB765291';
/// /////////////////////////////////////////////////////////////////////////
// Thermostat
/// /////////////////////////////////////////////////////////////////////////
Service.Thermostat = function (displayName, subtype) {
Service.call(this, 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);
};
inherits(Service.Thermostat, Service);
Service.Thermostat.UUID = '0000004A-0000-1000-8000-0026BB765291';
/// /////////////////////////////////////////////////////////////////////////
// ContactSensor
/// /////////////////////////////////////////////////////////////////////////
Service.ContactSensor = function (displayName, subtype) {
Service.call(this, 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);
};
inherits(Service.ContactSensor, Service);
Service.ContactSensor.UUID = '00000080-0000-1000-8000-0026BB765291';
/// /////////////////////////////////////////////////////////////////////////
// MotionSensor
/// /////////////////////////////////////////////////////////////////////////
Service.MotionSensor = function (displayName, subtype) {
Service.call(this, 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);
};
inherits(Service.MotionSensor, Service);
Service.MotionSensor.UUID = '00000085-0000-1000-8000-0026BB765291';
},
};