UNPKG

homebridge-edomoticz

Version:

homebridge-plugin for Domoticz https://github.com/nfarina/homebridge

368 lines (359 loc) 14.9 kB
var Constants = require('./constants.js'); module.exports = { eDomoticzServices: eDomoticzServices } function eDomoticzServices() { } /* Define Custom Services & Characteristics */ // PowerMeter Characteristics eDomoticzServices.TotalConsumption = function() { var charUUID = 'E863F10C-079E-48FF-8F27-9C2605A29F52'; //UUID.generate('eDomoticz:customchar:TotalConsumption'); Characteristic.call(this, 'Total Consumption', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'kWh' }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; eDomoticzServices.TodayConsumption = function() { var charUUID = UUID.generate('eDomoticz:customchar:TodayConsumption'); Characteristic.call(this, 'Today', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'kWh' }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; eDomoticzServices.CurrentConsumption = function() { var charUUID = 'E863F10D-079E-48FF-8F27-9C2605A29F52'; //UUID.generate('eDomoticz:customchar:CurrentConsumption'); Characteristic.call(this, 'Consumption', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'W' }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; eDomoticzServices.Ampere = function() { var charUUID = 'E863F126-079E-48FF-8F27-9C2605A29F52'; //AMPERE Characteristic.call(this, 'Amps', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'A' }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; eDomoticzServices.Volt = function() { var charUUID = 'E863F10A-079E-48FF-8F27-9C2605A29F52'; //VOLT Characteristic.call(this, 'Volts', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'V' }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; eDomoticzServices.GasConsumption = function() { var charUUID = UUID.generate('eDomoticz:customchar:CurrentConsumption'); Characteristic.call(this, 'Meter Total', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY] }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; eDomoticzServices.WaterFlow = function() { var charUUID = UUID.generate('eDomoticz:customchar:WaterFlow'); Characteristic.call(this, 'Flow Rate', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'm3' }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; eDomoticzServices.TotalWaterFlow = function() { var charUUID = UUID.generate('eDomoticz:customchar:TotalWaterFlow'); Characteristic.call(this, 'Flow Total', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'l' }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // Custom SetPoint Minutes characteristic for TempOverride modes eDomoticzServices.TempOverride = function() { var charUUID = UUID.generate('eDomoticz:customchar:OverrideTime'); Characteristic.call(this, 'Override (Mins, 0 = Auto, 481 = Permanent)', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, maxValue: 481, minValue: 0, minStep: 1, unit: 'mins', perms: [Characteristic.Perms.READ, Characteristic.Perms.WRITE, Characteristic.Perms.NOTIFY] }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // Ampere Meter eDomoticzServices.AMPDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:powermeter:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.Ampere()); }; // Voltage Meter eDomoticzServices.VOLTDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:powermeter:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.Volt()); }; // The PowerMeter itself eDomoticzServices.MeterDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:powermeter:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.CurrentConsumption()); this.addOptionalCharacteristic(new eDomoticzServices.TotalConsumption()); this.addOptionalCharacteristic(new eDomoticzServices.TodayConsumption()); }; // Waterflow Meter eDomoticzServices.WaterDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:watermeter:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.WaterFlow()); this.addOptionalCharacteristic(new eDomoticzServices.TotalWaterFlow()); }; // P1 Smart Meter -> Gas eDomoticzServices.GasDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:gasmeter:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.GasConsumption()); }; // Usage Meter Characteristics eDomoticzServices.CurrentUsage = function() { var charUUID = UUID.generate('eDomoticz:customchar:CurrentUsage'); Characteristic.call(this, 'Current Usage', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, unit: Characteristic.Units.PERCENTAGE, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], minValue:0, maxValue:100, minStep:0.1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // The Usage Meter itself eDomoticzServices.UsageDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:usagedevice:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.CurrentUsage()); }; // Location Meter (sensor should have 'Location' in title) eDomoticzServices.Location = function() { var charUUID = UUID.generate('eDomoticz:customchar:Location'); Characteristic.call(this, 'Location', charUUID); this.setProps({ format: Characteristic.Formats.STRING, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY] }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; eDomoticzServices.LocationService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:location:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.Location()); }; // DarkSkies WindSpeed Characteristic eDomoticzServices.WindSpeed = function() { var charUUID = '49C8AE5A-A3A5-41AB-BF1F-12D5654F9F41';//'9331096F-E49E-4D98-B57B-57803498FA36'; //UUID.generate('eDomoticz:customchar:WindSpeed'); Characteristic.call(this, 'Wind Speed', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit:'m/s', minValue:0, maxValue:360, minStep:0.1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // DarkSkies WindChill Characteristic eDomoticzServices.WindChill = function() { var charUUID = UUID.generate('eDomoticz:customchar:WindChill'); Characteristic.call(this, 'Wind Chill', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: Characteristic.Units.CELSIUS, minValue:-50, maxValue:100, minStep:0.1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // DarkSkies WindDirection Characteristic eDomoticzServices.WindDirection = function() { var charUUID = '46f1284c-1912-421b-82f5-eb75008b167e';//'6C3F6DFA-7340-4ED4-AFFD-0E0310ECCD9E'; //UUID.generate('eDomoticz:customchar:WindDirection'); Characteristic.call(this, 'Wind Direction', charUUID); this.setProps({ format: Characteristic.Formats.INT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: Characteristic.Units.ARC_DEGREE, minValue:0, maxValue:360, minStep:1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // DarkSkies Virtual Wind Sensor eDomoticzServices.WindDeviceService = function(displayName, subtype) { var serviceUUID = '2AFB775E-79E5-4399-B3CD-398474CAE86C'; //UUID.generate('eDomoticz:winddevice:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.WindSpeed()); this.addOptionalCharacteristic(new eDomoticzServices.WindChill()); this.addOptionalCharacteristic(new eDomoticzServices.WindDirection()); this.addOptionalCharacteristic(new Characteristic.CurrentTemperature()); }; // DarkSkies Rain Characteristics eDomoticzServices.Rainfall = function() { var charUUID = 'ccc04890-565b-4376-b39a-3113341d9e0f';//'C53F35CE-C615-4AA4-9112-EBF679C5EB14'; //UUID.generate('eDomoticz:customchar:Rainfall'); Characteristic.call(this, 'Amount today', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'mm', minValue:0, maxValue:360, minStep:0.1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // DarkSkies Rain Meter itself eDomoticzServices.RainDeviceService = function(displayName, subtype) { var serviceUUID = 'D92D5391-92AF-4824-AF4A-356F25F25EA1'; //UUID.generate('eDomoticz:raindevice:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.Rainfall()); }; // DarkSkies Visibility Characteristics eDomoticzServices.Visibility = function() { var charUUID = 'd24ecc1e-6fad-4fb5-8137-5af88bd5e857';//UUID.generate('eDomoticz:customchar:Visibility'); Characteristic.call(this, 'Distance', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'miles', minValue:0, maxValue:20, minStep:0.1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // DarkSkies Visibility Meter itself eDomoticzServices.VisibilityDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:visibilitydevice:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.Visibility()); }; // DarkSkies UVIndex Characteristics eDomoticzServices.UVIndex = function() { var charUUID = '05ba0fe0-b848-4226-906d-5b64272e05ce';//UUID.generate('eDomoticz:customchar:Visibility'); Characteristic.call(this, 'UVIndex', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'UVI', minValue:0, maxValue:20, minStep:0.1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // DarkSkies UV Index Meter itself eDomoticzServices.UVDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:uvdevice:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.UVIndex()); }; // DarkSkies Solar Radiation Characteristics eDomoticzServices.SolRad = function() { var charUUID = UUID.generate('eDomoticz:customchar:SolRad'); Characteristic.call(this, 'Radiation', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, unit: 'W/m2', perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], minValue:0, maxValue:10000, minStep:0.1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // DarkSkies Solar Radiation Meter itself eDomoticzServices.SolRadDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:solraddevice:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.SolRad()); }; // Barometer Characteristic eDomoticzServices.Barometer = function() { var charUUID = 'E863F10F-079E-48FF-8F27-9C2605A29F52'; Characteristic.call(this, 'Pressure', charUUID); this.setProps({ format: Characteristic.Formats.FLOAT, perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY], unit: 'hPA', minValue: 500, maxValue: 2000, minStep: 0.1 }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // Weather Service eDomoticzServices.WeatherService = function(displayName, subtype) { var serviceUUID = 'debf1b79-312e-47f7-bf82-993d9950f3a2';//'E863F001-079E-48FF-8F27-9C2605A29F52'; Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new Characteristic.CurrentTemperature()); this.addOptionalCharacteristic(new Characteristic.CurrentRelativeHumidity()); this.addOptionalCharacteristic(new eDomoticzServices.Barometer()); }; // DarkSkies Visibility Characteristics eDomoticzServices.Infotext = function() { var charUUID = UUID.generate('eDomoticz:customchar:Infotext'); Characteristic.call(this, 'Infotext', charUUID); this.setProps({ format: 'string', perms: [Characteristic.Perms.READ, Characteristic.Perms.NOTIFY] }); this.value = this.getDefaultValue(); this.UUID = charUUID; }; // DarkSkies Visibility Meter itself eDomoticzServices.InfotextDeviceService = function(displayName, subtype) { var serviceUUID = UUID.generate('eDomoticz:infotextdevice:customservice'); Service.call(this, displayName, serviceUUID, subtype); this.addCharacteristic(new eDomoticzServices.Infotext()); }; /* End of Custom Services & Characteristics */