@marcel2215/homebridge-supla-plugin 2.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +31 -0
  3. package/config.json +3 -0
  4. package/config.schema.json +52 -0
  5. package/dist/Accesories/ActionTriggerAccessory.d.ts +13 -0
  6. package/dist/Accesories/ActionTriggerAccessory.d.ts.map +1 -0
  7. package/dist/Accesories/ActionTriggerAccessory.js +43 -0
  8. package/dist/Accesories/ActionTriggerAccessory.js.map +1 -0
  9. package/dist/Accesories/AirQualityAccessory.d.ts +18 -0
  10. package/dist/Accesories/AirQualityAccessory.d.ts.map +1 -0
  11. package/dist/Accesories/AirQualityAccessory.js +91 -0
  12. package/dist/Accesories/AirQualityAccessory.js.map +1 -0
  13. package/dist/Accesories/ContactSensorAccessory.d.ts +14 -0
  14. package/dist/Accesories/ContactSensorAccessory.d.ts.map +1 -0
  15. package/dist/Accesories/ContactSensorAccessory.js +40 -0
  16. package/dist/Accesories/ContactSensorAccessory.js.map +1 -0
  17. package/dist/Accesories/DimmerAccessory.d.ts +20 -0
  18. package/dist/Accesories/DimmerAccessory.d.ts.map +1 -0
  19. package/dist/Accesories/DimmerAccessory.js +73 -0
  20. package/dist/Accesories/DimmerAccessory.js.map +1 -0
  21. package/dist/Accesories/DimmerRgbLightAccessory.d.ts +28 -0
  22. package/dist/Accesories/DimmerRgbLightAccessory.d.ts.map +1 -0
  23. package/dist/Accesories/DimmerRgbLightAccessory.js +125 -0
  24. package/dist/Accesories/DimmerRgbLightAccessory.js.map +1 -0
  25. package/dist/Accesories/ElectricityMeterAccessory.d.ts +17 -0
  26. package/dist/Accesories/ElectricityMeterAccessory.d.ts.map +1 -0
  27. package/dist/Accesories/ElectricityMeterAccessory.js +65 -0
  28. package/dist/Accesories/ElectricityMeterAccessory.js.map +1 -0
  29. package/dist/Accesories/FacadeBlindAccessory.d.ts +29 -0
  30. package/dist/Accesories/FacadeBlindAccessory.d.ts.map +1 -0
  31. package/dist/Accesories/FacadeBlindAccessory.js +123 -0
  32. package/dist/Accesories/FacadeBlindAccessory.js.map +1 -0
  33. package/dist/Accesories/GarageDoorOpenerAccesory.d.ts +17 -0
  34. package/dist/Accesories/GarageDoorOpenerAccesory.d.ts.map +1 -0
  35. package/dist/Accesories/GarageDoorOpenerAccesory.js +63 -0
  36. package/dist/Accesories/GarageDoorOpenerAccesory.js.map +1 -0
  37. package/dist/Accesories/LeakSensorAccessory.d.ts +14 -0
  38. package/dist/Accesories/LeakSensorAccessory.d.ts.map +1 -0
  39. package/dist/Accesories/LeakSensorAccessory.js +40 -0
  40. package/dist/Accesories/LeakSensorAccessory.js.map +1 -0
  41. package/dist/Accesories/LightBulbAccesory.d.ts +17 -0
  42. package/dist/Accesories/LightBulbAccesory.d.ts.map +1 -0
  43. package/dist/Accesories/LightBulbAccesory.js +56 -0
  44. package/dist/Accesories/LightBulbAccesory.js.map +1 -0
  45. package/dist/Accesories/PressureAccessory.d.ts +15 -0
  46. package/dist/Accesories/PressureAccessory.d.ts.map +1 -0
  47. package/dist/Accesories/PressureAccessory.js +43 -0
  48. package/dist/Accesories/PressureAccessory.js.map +1 -0
  49. package/dist/Accesories/RGBLightBulbAccesory.d.ts +24 -0
  50. package/dist/Accesories/RGBLightBulbAccesory.d.ts.map +1 -0
  51. package/dist/Accesories/RGBLightBulbAccesory.js +97 -0
  52. package/dist/Accesories/RGBLightBulbAccesory.js.map +1 -0
  53. package/dist/Accesories/RollerShutterAccessory.d.ts +22 -0
  54. package/dist/Accesories/RollerShutterAccessory.d.ts.map +1 -0
  55. package/dist/Accesories/RollerShutterAccessory.js +85 -0
  56. package/dist/Accesories/RollerShutterAccessory.js.map +1 -0
  57. package/dist/Accesories/SwitchAccessory.d.ts +17 -0
  58. package/dist/Accesories/SwitchAccessory.d.ts.map +1 -0
  59. package/dist/Accesories/SwitchAccessory.js +55 -0
  60. package/dist/Accesories/SwitchAccessory.js.map +1 -0
  61. package/dist/Accesories/TemperatureAccessory.d.ts +15 -0
  62. package/dist/Accesories/TemperatureAccessory.d.ts.map +1 -0
  63. package/dist/Accesories/TemperatureAccessory.js +43 -0
  64. package/dist/Accesories/TemperatureAccessory.js.map +1 -0
  65. package/dist/Accesories/TemperatureHumidityAccessory.d.ts +18 -0
  66. package/dist/Accesories/TemperatureHumidityAccessory.d.ts.map +1 -0
  67. package/dist/Accesories/TemperatureHumidityAccessory.js +62 -0
  68. package/dist/Accesories/TemperatureHumidityAccessory.js.map +1 -0
  69. package/dist/Accesories/ThermostatAccessory.d.ts +28 -0
  70. package/dist/Accesories/ThermostatAccessory.d.ts.map +1 -0
  71. package/dist/Accesories/ThermostatAccessory.js +166 -0
  72. package/dist/Accesories/ThermostatAccessory.js.map +1 -0
  73. package/dist/Accesories/ValveAccessory.d.ts +18 -0
  74. package/dist/Accesories/ValveAccessory.d.ts.map +1 -0
  75. package/dist/Accesories/ValveAccessory.js +63 -0
  76. package/dist/Accesories/ValveAccessory.js.map +1 -0
  77. package/dist/Accesories/WicketAccesory.d.ts +16 -0
  78. package/dist/Accesories/WicketAccesory.d.ts.map +1 -0
  79. package/dist/Accesories/WicketAccesory.js +51 -0
  80. package/dist/Accesories/WicketAccesory.js.map +1 -0
  81. package/dist/Heplers/ColorConverters.d.ts +17 -0
  82. package/dist/Heplers/ColorConverters.d.ts.map +1 -0
  83. package/dist/Heplers/ColorConverters.js +107 -0
  84. package/dist/Heplers/ColorConverters.js.map +1 -0
  85. package/dist/Heplers/SuplaChannelContext.d.ts +10 -0
  86. package/dist/Heplers/SuplaChannelContext.d.ts.map +1 -0
  87. package/dist/Heplers/SuplaChannelContext.js +15 -0
  88. package/dist/Heplers/SuplaChannelContext.js.map +1 -0
  89. package/dist/Heplers/SuplaMqttClient.d.ts +15 -0
  90. package/dist/Heplers/SuplaMqttClient.d.ts.map +1 -0
  91. package/dist/Heplers/SuplaMqttClient.js +169 -0
  92. package/dist/Heplers/SuplaMqttClient.js.map +1 -0
  93. package/dist/Heplers/SuplaMqttClientContext.d.ts +11 -0
  94. package/dist/Heplers/SuplaMqttClientContext.d.ts.map +1 -0
  95. package/dist/Heplers/SuplaMqttClientContext.js +16 -0
  96. package/dist/Heplers/SuplaMqttClientContext.js.map +1 -0
  97. package/dist/index.d.ts +7 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +7 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/platform.d.ts +36 -0
  102. package/dist/platform.d.ts.map +1 -0
  103. package/dist/platform.js +320 -0
  104. package/dist/platform.js.map +1 -0
  105. package/dist/settings.d.ts +9 -0
  106. package/dist/settings.d.ts.map +1 -0
  107. package/dist/settings.js +12 -0
  108. package/dist/settings.js.map +1 -0
  109. package/package.json +41 -0
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemperatureHumidityAccessory = void 0;
4
+ class TemperatureHumidityAccessory {
5
+ constructor(platform, accessory, context) {
6
+ this.platform = platform;
7
+ this.accessory = accessory;
8
+ this.context = context;
9
+ this.temperature = 0;
10
+ this.humidity = 0;
11
+ this.connected = true;
12
+ this.accessory.getService(this.platform.Service.AccessoryInformation)
13
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
14
+ .setCharacteristic(this.platform.Characteristic.Model, 'HumidityTemperatureSensor');
15
+ this.temperatureService = this.accessory.getService(this.platform.Service.TemperatureSensor)
16
+ || this.accessory.addService(this.platform.Service.TemperatureSensor);
17
+ this.temperatureService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
18
+ this.temperatureService.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
19
+ .onGet(this.handleTemperatureGet.bind(this));
20
+ this.humidityService = this.accessory.getService(this.platform.Service.HumiditySensor)
21
+ || this.accessory.addService(this.platform.Service.HumiditySensor);
22
+ this.humidityService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
23
+ this.humidityService.getCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity)
24
+ .onGet(this.handleHumidityGet.bind(this));
25
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/temperature`);
26
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/humidity`);
27
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/connected`);
28
+ this.platform.MqttClient.client.on('message', (topic, message) => {
29
+ if (topic === `${this.context.topic}/state/temperature`) {
30
+ const value = parseFloat(message.toString());
31
+ if (!Number.isNaN(value)) {
32
+ this.temperature = this.clamp(value, -50, 100);
33
+ this.temperatureService.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.temperature);
34
+ }
35
+ }
36
+ if (topic === `${this.context.topic}/state/humidity`) {
37
+ const value = parseFloat(message.toString());
38
+ if (!Number.isNaN(value)) {
39
+ this.humidity = this.clamp(value, 0, 100);
40
+ this.humidityService.updateCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity, this.humidity);
41
+ }
42
+ }
43
+ if (topic === `${this.context.topic}/state/connected`) {
44
+ this.connected = message.toString() === 'true';
45
+ const faultValue = this.connected ? 0 : 1;
46
+ this.temperatureService.updateCharacteristic(this.platform.Characteristic.StatusFault, faultValue);
47
+ this.humidityService.updateCharacteristic(this.platform.Characteristic.StatusFault, faultValue);
48
+ }
49
+ });
50
+ }
51
+ async handleTemperatureGet() {
52
+ return this.temperature;
53
+ }
54
+ async handleHumidityGet() {
55
+ return this.humidity;
56
+ }
57
+ clamp(value, min, max) {
58
+ return Math.min(Math.max(value, min), max);
59
+ }
60
+ }
61
+ exports.TemperatureHumidityAccessory = TemperatureHumidityAccessory;
62
+ //# sourceMappingURL=TemperatureHumidityAccessory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemperatureHumidityAccessory.js","sourceRoot":"","sources":["../../src/Accesories/TemperatureHumidityAccessory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { PlatformAccessory, CharacteristicValue } from 'homebridge';
2
+ import { SuplaPlatform } from '../platform';
3
+ import { SuplaChannelContext } from '../Heplers/SuplaChannelContext';
4
+ export declare class ThermostatAccessory {
5
+ private readonly platform;
6
+ private readonly accessory;
7
+ private readonly context;
8
+ private service;
9
+ private currentTemperature;
10
+ private targetTemperature;
11
+ private targetState;
12
+ private currentState;
13
+ private connected;
14
+ private isOn;
15
+ private hasCurrentTemperature;
16
+ constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
17
+ handleCurrentTemperatureGet(): Promise<CharacteristicValue>;
18
+ handleTargetTemperatureGet(): Promise<CharacteristicValue>;
19
+ handleTargetTemperatureSet(value: CharacteristicValue): Promise<void>;
20
+ handleCurrentStateGet(): Promise<CharacteristicValue>;
21
+ handleTargetStateGet(): Promise<CharacteristicValue>;
22
+ handleTargetStateSet(value: CharacteristicValue): Promise<void>;
23
+ private toTargetState;
24
+ private toCurrentState;
25
+ private fromTargetState;
26
+ private clamp;
27
+ }
28
+ //# sourceMappingURL=ThermostatAccessory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThermostatAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/ThermostatAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,mBAAmB;IAW5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,WAAW,CAA8D;IACjF,OAAO,CAAC,YAAY,CAA+D;IACnF,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,qBAAqB,CAAS;gBAGnB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAgGzC,2BAA2B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI3D,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI1D,0BAA0B,CAAC,KAAK,EAAE,mBAAmB;IAYrD,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIpD,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;IAqBrD,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ThermostatAccessory = void 0;
4
+ class ThermostatAccessory {
5
+ constructor(platform, accessory, context) {
6
+ this.platform = platform;
7
+ this.accessory = accessory;
8
+ this.context = context;
9
+ this.currentTemperature = 20;
10
+ this.targetTemperature = 20;
11
+ this.targetState = this.platform.Characteristic.TargetHeatingCoolingState.OFF;
12
+ this.currentState = this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
13
+ this.connected = true;
14
+ this.isOn = false;
15
+ this.hasCurrentTemperature = false;
16
+ this.accessory.getService(this.platform.Service.AccessoryInformation)
17
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
18
+ .setCharacteristic(this.platform.Characteristic.Model, 'Thermostat');
19
+ this.service = this.accessory.getService(this.platform.Service.Thermostat)
20
+ || this.accessory.addService(this.platform.Service.Thermostat);
21
+ this.service.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
22
+ this.service.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
23
+ .onGet(this.handleCurrentTemperatureGet.bind(this));
24
+ this.service.getCharacteristic(this.platform.Characteristic.TargetTemperature)
25
+ .onGet(this.handleTargetTemperatureGet.bind(this))
26
+ .onSet(this.handleTargetTemperatureSet.bind(this));
27
+ this.service.getCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState)
28
+ .onGet(this.handleCurrentStateGet.bind(this));
29
+ this.service.getCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState)
30
+ .onGet(this.handleTargetStateGet.bind(this))
31
+ .onSet(this.handleTargetStateSet.bind(this));
32
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/temperature_setpoint`);
33
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/mode`);
34
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/action`);
35
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/is_on`);
36
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/temperature`);
37
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/connected`);
38
+ this.platform.MqttClient.client.on('message', (topic, message) => {
39
+ if (topic === `${this.context.topic}/state/temperature_setpoint`) {
40
+ const value = parseFloat(message.toString());
41
+ if (!Number.isNaN(value)) {
42
+ this.targetTemperature = this.clamp(value, 5, 35);
43
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetTemperature, this.targetTemperature);
44
+ if (!this.hasCurrentTemperature) {
45
+ this.currentTemperature = this.targetTemperature;
46
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.currentTemperature);
47
+ }
48
+ }
49
+ }
50
+ if (topic === `${this.context.topic}/state/temperature`) {
51
+ const value = parseFloat(message.toString());
52
+ if (!Number.isNaN(value)) {
53
+ this.currentTemperature = this.clamp(value, -50, 100);
54
+ this.hasCurrentTemperature = true;
55
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.currentTemperature);
56
+ }
57
+ }
58
+ if (topic === `${this.context.topic}/state/mode`) {
59
+ const mode = message.toString();
60
+ this.targetState = this.toTargetState(mode, this.isOn);
61
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.targetState);
62
+ }
63
+ if (topic === `${this.context.topic}/state/action`) {
64
+ const action = message.toString();
65
+ this.currentState = this.toCurrentState(action, this.isOn);
66
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.currentState);
67
+ }
68
+ if (topic === `${this.context.topic}/state/is_on`) {
69
+ this.isOn = message.toString() === 'true';
70
+ this.targetState = this.toTargetState(undefined, this.isOn, this.targetState);
71
+ this.currentState = this.toCurrentState(undefined, this.isOn, this.currentState);
72
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.targetState);
73
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.currentState);
74
+ }
75
+ if (topic === `${this.context.topic}/state/connected`) {
76
+ this.connected = message.toString() === 'true';
77
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
78
+ }
79
+ });
80
+ }
81
+ async handleCurrentTemperatureGet() {
82
+ return this.currentTemperature;
83
+ }
84
+ async handleTargetTemperatureGet() {
85
+ return this.targetTemperature;
86
+ }
87
+ async handleTargetTemperatureSet(value) {
88
+ const target = this.clamp(value, 5, 35);
89
+ this.targetTemperature = target;
90
+ this.platform.log.debug(`Publishing ${this.context.topic}/set/temperature_setpoint = ${target.toString()}`);
91
+ this.platform.MqttClient.client.publish(`${this.context.topic}/set/temperature_setpoint`, target.toString());
92
+ }
93
+ async handleCurrentStateGet() {
94
+ return this.currentState;
95
+ }
96
+ async handleTargetStateGet() {
97
+ return this.targetState;
98
+ }
99
+ async handleTargetStateSet(value) {
100
+ const state = value;
101
+ this.targetState = state;
102
+ if (state === this.platform.Characteristic.TargetHeatingCoolingState.OFF) {
103
+ this.platform.log.debug(`Publishing ${this.context.topic}/set/is_on = false`);
104
+ this.platform.MqttClient.client.publish(`${this.context.topic}/set/is_on`, 'false');
105
+ return;
106
+ }
107
+ const mode = this.fromTargetState(state);
108
+ this.platform.log.debug(`Publishing ${this.context.topic}/set/is_on = true`);
109
+ this.platform.MqttClient.client.publish(`${this.context.topic}/set/is_on`, 'true');
110
+ this.platform.log.debug(`Publishing ${this.context.topic}/set/mode = ${mode}`);
111
+ this.platform.MqttClient.client.publish(`${this.context.topic}/set/mode`, mode);
112
+ }
113
+ toTargetState(mode, isOn, fallback) {
114
+ if (isOn === false) {
115
+ return this.platform.Characteristic.TargetHeatingCoolingState.OFF;
116
+ }
117
+ if (!mode) {
118
+ return fallback !== null && fallback !== void 0 ? fallback : this.platform.Characteristic.TargetHeatingCoolingState.OFF;
119
+ }
120
+ switch (mode.toLowerCase()) {
121
+ case 'heat':
122
+ return this.platform.Characteristic.TargetHeatingCoolingState.HEAT;
123
+ case 'cool':
124
+ return this.platform.Characteristic.TargetHeatingCoolingState.COOL;
125
+ case 'auto':
126
+ return this.platform.Characteristic.TargetHeatingCoolingState.AUTO;
127
+ case 'off':
128
+ return this.platform.Characteristic.TargetHeatingCoolingState.OFF;
129
+ default:
130
+ return this.platform.Characteristic.TargetHeatingCoolingState.OFF;
131
+ }
132
+ }
133
+ toCurrentState(action, isOn, fallback) {
134
+ if (isOn === false) {
135
+ return this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
136
+ }
137
+ if (!action) {
138
+ return fallback !== null && fallback !== void 0 ? fallback : this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
139
+ }
140
+ switch (action.toLowerCase()) {
141
+ case 'heating':
142
+ return this.platform.Characteristic.CurrentHeatingCoolingState.HEAT;
143
+ case 'cooling':
144
+ return this.platform.Characteristic.CurrentHeatingCoolingState.COOL;
145
+ default:
146
+ return this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
147
+ }
148
+ }
149
+ fromTargetState(state) {
150
+ switch (state) {
151
+ case this.platform.Characteristic.TargetHeatingCoolingState.HEAT:
152
+ return 'heat';
153
+ case this.platform.Characteristic.TargetHeatingCoolingState.COOL:
154
+ return 'cool';
155
+ case this.platform.Characteristic.TargetHeatingCoolingState.AUTO:
156
+ return 'auto';
157
+ default:
158
+ return 'off';
159
+ }
160
+ }
161
+ clamp(value, min, max) {
162
+ return Math.min(Math.max(value, min), max);
163
+ }
164
+ }
165
+ exports.ThermostatAccessory = ThermostatAccessory;
166
+ //# sourceMappingURL=ThermostatAccessory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThermostatAccessory.js","sourceRoot":"","sources":["../../src/Accesories/ThermostatAccessory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { PlatformAccessory, CharacteristicValue } from 'homebridge';
2
+ import { SuplaPlatform } from '../platform';
3
+ import { SuplaChannelContext } from '../Heplers/SuplaChannelContext';
4
+ export declare class ValveAccessory {
5
+ private readonly platform;
6
+ private readonly accessory;
7
+ private readonly context;
8
+ private service;
9
+ private active;
10
+ private inUse;
11
+ private connected;
12
+ private flooding;
13
+ constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
14
+ handleActiveGet(): Promise<CharacteristicValue>;
15
+ handleActiveSet(value: CharacteristicValue): Promise<void>;
16
+ handleInUseGet(): Promise<CharacteristicValue>;
17
+ }
18
+ //# sourceMappingURL=ValveAccessory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValveAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/ValveAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,cAAc;IAQvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAGN,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAkDzC,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI/C,eAAe,CAAC,KAAK,EAAE,mBAAmB;IAW1C,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAGrD"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValveAccessory = void 0;
4
+ class ValveAccessory {
5
+ constructor(platform, accessory, context) {
6
+ this.platform = platform;
7
+ this.accessory = accessory;
8
+ this.context = context;
9
+ this.active = this.platform.Characteristic.Active.INACTIVE;
10
+ this.inUse = this.platform.Characteristic.InUse.NOT_IN_USE;
11
+ this.connected = true;
12
+ this.flooding = false;
13
+ this.accessory.getService(this.platform.Service.AccessoryInformation)
14
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
15
+ .setCharacteristic(this.platform.Characteristic.Model, 'Valve');
16
+ this.service = this.accessory.getService(this.platform.Service.Valve)
17
+ || this.accessory.addService(this.platform.Service.Valve);
18
+ this.service.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
19
+ this.service.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.GENERIC_VALVE);
20
+ this.service.getCharacteristic(this.platform.Characteristic.Active)
21
+ .onGet(this.handleActiveGet.bind(this))
22
+ .onSet(this.handleActiveSet.bind(this));
23
+ this.service.getCharacteristic(this.platform.Characteristic.InUse)
24
+ .onGet(this.handleInUseGet.bind(this));
25
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/closed`);
26
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/flooding`);
27
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/connected`);
28
+ this.platform.MqttClient.client.on('message', (topic, message) => {
29
+ if (topic === `${this.context.topic}/state/closed`) {
30
+ const closed = message.toString() === 'true';
31
+ this.active = closed
32
+ ? this.platform.Characteristic.Active.INACTIVE
33
+ : this.platform.Characteristic.Active.ACTIVE;
34
+ this.inUse = closed
35
+ ? this.platform.Characteristic.InUse.NOT_IN_USE
36
+ : this.platform.Characteristic.InUse.IN_USE;
37
+ this.service.updateCharacteristic(this.platform.Characteristic.Active, this.active);
38
+ this.service.updateCharacteristic(this.platform.Characteristic.InUse, this.inUse);
39
+ }
40
+ if (topic === `${this.context.topic}/state/flooding`) {
41
+ this.flooding = message.toString() === 'true';
42
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.flooding ? 1 : 0);
43
+ }
44
+ if (topic === `${this.context.topic}/state/connected`) {
45
+ this.connected = message.toString() === 'true';
46
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected && !this.flooding ? 0 : 1);
47
+ }
48
+ });
49
+ }
50
+ async handleActiveGet() {
51
+ return this.active;
52
+ }
53
+ async handleActiveSet(value) {
54
+ const active = value === this.platform.Characteristic.Active.ACTIVE;
55
+ this.platform.log.debug(`Publishing ${this.context.topic}/set/closed = ${(!active).toString()}`);
56
+ this.platform.MqttClient.client.publish(`${this.context.topic}/set/closed`, (!active).toString());
57
+ }
58
+ async handleInUseGet() {
59
+ return this.inUse;
60
+ }
61
+ }
62
+ exports.ValveAccessory = ValveAccessory;
63
+ //# sourceMappingURL=ValveAccessory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValveAccessory.js","sourceRoot":"","sources":["../../src/Accesories/ValveAccessory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { PlatformAccessory, CharacteristicValue } from 'homebridge';
2
+ import { SuplaPlatform } from '../platform';
3
+ import { SuplaChannelContext } from '../Heplers/SuplaChannelContext';
4
+ export declare class WicketAccesory {
5
+ private readonly platform;
6
+ private readonly accessory;
7
+ private readonly context;
8
+ private service;
9
+ private connected;
10
+ constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
11
+ handleCurrentDoorStateGet(): Promise<CharacteristicValue>;
12
+ handleTargetDoorStateGet(): Promise<CharacteristicValue>;
13
+ handleTargetDoorStateSet(): Promise<void>;
14
+ handleObstructionDetectedGet(): Promise<CharacteristicValue>;
15
+ }
16
+ //# sourceMappingURL=WicketAccesory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WicketAccesory.d.ts","sourceRoot":"","sources":["../../src/Accesories/WicketAccesory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,qBAAa,cAAc;IAKnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAQ;gBAGF,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAiC7C,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIzD,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIxD,wBAAwB;IAiBxB,4BAA4B,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAKnE"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WicketAccesory = void 0;
4
+ class WicketAccesory {
5
+ constructor(platform, accessory, context) {
6
+ this.platform = platform;
7
+ this.accessory = accessory;
8
+ this.context = context;
9
+ this.connected = true;
10
+ this.accessory.getService(this.platform.Service.AccessoryInformation)
11
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
12
+ .setCharacteristic(this.platform.Characteristic.Model, 'GarageDoorOpener');
13
+ this.service = this.accessory.getService(this.platform.Service.GarageDoorOpener)
14
+ || this.accessory.addService(this.platform.Service.GarageDoorOpener);
15
+ this.service.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
16
+ this.service.getCharacteristic(this.platform.Characteristic.CurrentDoorState)
17
+ .onGet(this.handleCurrentDoorStateGet.bind(this));
18
+ this.service.getCharacteristic(this.platform.Characteristic.TargetDoorState)
19
+ .onGet(this.handleTargetDoorStateGet.bind(this))
20
+ .onSet(this.handleTargetDoorStateSet.bind(this));
21
+ this.service.getCharacteristic(this.platform.Characteristic.ObstructionDetected)
22
+ .onGet(this.handleObstructionDetectedGet.bind(this));
23
+ this.platform.MqttClient.client.subscribe(`${this.context.topic}/state/connected`);
24
+ this.platform.MqttClient.client.on('message', (topic, message) => {
25
+ if (topic === `${this.context.topic}/state/connected`) {
26
+ this.connected = message.toString() === 'true';
27
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
28
+ }
29
+ });
30
+ }
31
+ async handleCurrentDoorStateGet() {
32
+ return this.platform.Characteristic.TargetDoorState.CLOSED;
33
+ }
34
+ async handleTargetDoorStateGet() {
35
+ return this.platform.Characteristic.TargetDoorState.CLOSED;
36
+ }
37
+ async handleTargetDoorStateSet() {
38
+ this.platform.log.debug(`Publishing ${this.context.topic}/execute_action = open`);
39
+ this.platform.MqttClient.client.publish(`${this.context.topic}/execute_action`, 'open');
40
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentDoorState, this.platform.Characteristic.CurrentDoorState.OPEN);
41
+ setTimeout(() => {
42
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentDoorState, this.platform.Characteristic.CurrentDoorState.CLOSED);
43
+ }, 1000);
44
+ }
45
+ async handleObstructionDetectedGet() {
46
+ const state = 0;
47
+ return state;
48
+ }
49
+ }
50
+ exports.WicketAccesory = WicketAccesory;
51
+ //# sourceMappingURL=WicketAccesory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WicketAccesory.js","sourceRoot":"","sources":["../../src/Accesories/WicketAccesory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare function HSVtoRGB(h: any, s: any, v: any): {
2
+ r: number;
3
+ g: number;
4
+ b: number;
5
+ };
6
+ export declare function RGBtoHSV(r: any, g: any, b: any): {
7
+ h: number;
8
+ s: number;
9
+ v: number;
10
+ };
11
+ export declare function HexToRGB(hex: any): {
12
+ r: number;
13
+ g: number;
14
+ b: number;
15
+ };
16
+ export declare function RGBToHex(r: any, g: any, b: any): string;
17
+ //# sourceMappingURL=ColorConverters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorConverters.d.ts","sourceRoot":"","sources":["../../src/Heplers/ColorConverters.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,CAAC,KAAA;;;;EAiC/B;AAED,wBAAgB,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,CAAC,KAAA;;;;EA2B/B;AAED,wBAAgB,QAAQ,CAAC,GAAG,KAAA;;;;EAM3B;AAED,wBAAgB,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,CAAC,KAAA,UAU/B"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RGBToHex = exports.HexToRGB = exports.RGBtoHSV = exports.HSVtoRGB = void 0;
4
+ function HSVtoRGB(h, s, v) {
5
+ h = h / 360;
6
+ s = s / 100;
7
+ v = v / 100;
8
+ let r, g, b, i, f, p, q, t;
9
+ if (arguments.length === 1) {
10
+ s = h.s;
11
+ v = h.v;
12
+ h = h.h;
13
+ }
14
+ // eslint-disable-next-line prefer-const
15
+ i = Math.floor(h * 6);
16
+ // eslint-disable-next-line prefer-const
17
+ f = h * 6 - i;
18
+ // eslint-disable-next-line prefer-const
19
+ p = v * (1 - s);
20
+ // eslint-disable-next-line prefer-const
21
+ q = v * (1 - f * s);
22
+ // eslint-disable-next-line prefer-const
23
+ t = v * (1 - (1 - f) * s);
24
+ switch (i % 6) {
25
+ case 0:
26
+ r = v, g = t, b = p;
27
+ break;
28
+ case 1:
29
+ r = q, g = v, b = p;
30
+ break;
31
+ case 2:
32
+ r = p, g = v, b = t;
33
+ break;
34
+ case 3:
35
+ r = p, g = q, b = v;
36
+ break;
37
+ case 4:
38
+ r = t, g = p, b = v;
39
+ break;
40
+ case 5:
41
+ r = v, g = p, b = q;
42
+ break;
43
+ }
44
+ return {
45
+ r: Math.round(r * 255),
46
+ g: Math.round(g * 255),
47
+ b: Math.round(b * 255),
48
+ };
49
+ }
50
+ exports.HSVtoRGB = HSVtoRGB;
51
+ function RGBtoHSV(r, g, b) {
52
+ if (arguments.length === 1) {
53
+ g = r.g;
54
+ b = r.b;
55
+ r = r.r;
56
+ }
57
+ const max = Math.max(r, g, b), min = Math.min(r, g, b), d = max - min;
58
+ let h,
59
+ // eslint-disable-next-line prefer-const
60
+ s = (max === 0 ? 0 : d / max),
61
+ // eslint-disable-next-line prefer-const
62
+ v = max / 255;
63
+ switch (max) {
64
+ case min:
65
+ h = 0;
66
+ break;
67
+ case r:
68
+ h = (g - b) + d * (g < b ? 6 : 0);
69
+ h /= 6 * d;
70
+ break;
71
+ case g:
72
+ h = (b - r) + d * 2;
73
+ h /= 6 * d;
74
+ break;
75
+ case b:
76
+ h = (r - g) + d * 4;
77
+ h /= 6 * d;
78
+ break;
79
+ }
80
+ return {
81
+ h: Math.round(h * 360),
82
+ s: Math.round(s * 100),
83
+ v: Math.round(v * 100),
84
+ };
85
+ }
86
+ exports.RGBtoHSV = RGBtoHSV;
87
+ function HexToRGB(hex) {
88
+ return {
89
+ r: parseInt(hex.substr(2, 2), 16),
90
+ g: parseInt(hex.substr(4, 2), 16),
91
+ b: parseInt(hex.substr(6, 2), 16),
92
+ };
93
+ }
94
+ exports.HexToRGB = HexToRGB;
95
+ function RGBToHex(r, g, b) {
96
+ if (arguments.length === 1) {
97
+ g = r.g;
98
+ b = r.b;
99
+ r = r.r;
100
+ }
101
+ return '0x' + [r, g, b].map(x => {
102
+ const hex = x.toString(16);
103
+ return hex.length === 1 ? '0' + hex : hex;
104
+ }).join('');
105
+ }
106
+ exports.RGBToHex = RGBToHex;
107
+ //# sourceMappingURL=ColorConverters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorConverters.js","sourceRoot":"","sources":["../../src/Heplers/ColorConverters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare class SuplaChannelContext {
2
+ topic: string;
3
+ channelType: string;
4
+ channelFunction: string;
5
+ channelCaption: string;
6
+ deviceId: string;
7
+ channelId: string;
8
+ constructor(topic: string, channelType: string, channelFunction: string, channelCaption: string, deviceId: string, channelId: string);
9
+ }
10
+ //# sourceMappingURL=SuplaChannelContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuplaChannelContext.d.ts","sourceRoot":"","sources":["../../src/Heplers/SuplaChannelContext.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAmB;IAErB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,MAAM;IACvB,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;gBALjB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;CAG3B"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SuplaChannelContext = void 0;
4
+ class SuplaChannelContext {
5
+ constructor(topic, channelType, channelFunction, channelCaption, deviceId, channelId) {
6
+ this.topic = topic;
7
+ this.channelType = channelType;
8
+ this.channelFunction = channelFunction;
9
+ this.channelCaption = channelCaption;
10
+ this.deviceId = deviceId;
11
+ this.channelId = channelId;
12
+ }
13
+ }
14
+ exports.SuplaChannelContext = SuplaChannelContext;
15
+ //# sourceMappingURL=SuplaChannelContext.js.map