iobroker.iot 4.1.0 → 4.1.3
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.
- package/README.md +6 -521
- package/admin/assets/{index-Ck_2gqQY.js → index-CyfkYMpa.js} +85 -85
- package/admin/index_m.html +1 -1
- package/admin/rules/assets/{index-208Qrr3S.js → index-DBQ_ihVx.js} +83 -83
- package/admin/rules/customRuleBlocks.js +2 -2
- package/build/lib/AlexaSmartHomeV3/Alexa/AlexaResponse.js +13 -0
- package/build/lib/AlexaSmartHomeV3/Alexa/AlexaResponse.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/Base.js +3 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/Base.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/SceneController.js +38 -0
- package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/SceneController.js.map +1 -0
- package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js +2 -0
- package/build/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js +67 -14
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js +6 -0
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/LockState.js +20 -0
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/LockState.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js +14 -0
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/PowerState.js +6 -0
- package/build/lib/AlexaSmartHomeV3/Alexa/Properties/PowerState.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/AirCondition.js +1 -2
- package/build/lib/AlexaSmartHomeV3/Controls/AirCondition.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Button.js +74 -0
- package/build/lib/AlexaSmartHomeV3/Controls/Button.js.map +1 -0
- package/build/lib/AlexaSmartHomeV3/Controls/Control.js +2 -0
- package/build/lib/AlexaSmartHomeV3/Controls/Control.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Ct.js +1 -7
- package/build/lib/AlexaSmartHomeV3/Controls/Ct.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Hue.js +8 -5
- package/build/lib/AlexaSmartHomeV3/Controls/Hue.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Light.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Lock.js +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/Lock.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/RgbSingle.js +200 -0
- package/build/lib/AlexaSmartHomeV3/Controls/RgbSingle.js.map +1 -0
- package/build/lib/AlexaSmartHomeV3/Controls/RgbwSingle.js +210 -0
- package/build/lib/AlexaSmartHomeV3/Controls/RgbwSingle.js.map +1 -0
- package/build/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Controls/index.js +15 -3
- package/build/lib/AlexaSmartHomeV3/Controls/index.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/DeviceManager.js +25 -12
- package/build/lib/AlexaSmartHomeV3/DeviceManager.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Helpers/FileHelper.js +1 -3
- package/build/lib/AlexaSmartHomeV3/Helpers/FileHelper.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js +23 -16
- package/build/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js.map +1 -1
- package/build/lib/AlexaSmartHomeV3/Helpers/Utils.js +287 -1
- package/build/lib/AlexaSmartHomeV3/Helpers/Utils.js.map +1 -1
- package/build/lib/alexaCustom.js +1 -1
- package/build/lib/alexaCustom.js.map +1 -1
- package/build/main.js +23 -3
- package/build/main.js.map +1 -1
- package/io-package.json +27 -27
- package/package.json +5 -2
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Capabilities_1 = __importDefault(require("../Alexa/Capabilities"));
|
|
7
|
+
const Utils_1 = require("../Helpers/Utils");
|
|
8
|
+
const AdapterProvider_1 = __importDefault(require("../Helpers/AdapterProvider"));
|
|
9
|
+
const AdjustableControl_1 = __importDefault(require("./AdjustableControl"));
|
|
10
|
+
const Brightness_1 = __importDefault(require("../Alexa/Properties/Brightness"));
|
|
11
|
+
const ColorTemperatureInKelvin_1 = __importDefault(require("../Alexa/Properties/ColorTemperatureInKelvin"));
|
|
12
|
+
const PowerState_1 = __importDefault(require("../Alexa/Properties/PowerState"));
|
|
13
|
+
const Color_1 = __importDefault(require("../Alexa/Properties/Color"));
|
|
14
|
+
// ### RGB Light Single [rgbSingle]
|
|
15
|
+
//
|
|
16
|
+
// RGB light with one state of color. Could be HEX #RRGGBB, or rgb(0-255,0-255,0-255).
|
|
17
|
+
//
|
|
18
|
+
// | R | Name | Role | Unit | Type | Wr | Ind | Multi | Regex |
|
|
19
|
+
// |---|-----------------|-------------------------------|------|---------|----|-----|-------|---------------------------------------------------|
|
|
20
|
+
// | * | RGB | level.color.rgb | | string | W | | | `/^level\.color\.rgb$/` |
|
|
21
|
+
// | | DIMMER | level.dimmer | % | number | W | | | `/^level\.dimmer$/` |
|
|
22
|
+
// | | BRIGHTNESS | | % | number | W | | | `/^level\.brightness$/` |
|
|
23
|
+
// | | TEMPERATURE | level.color.temperature | °K | number | W | | | `/^level\.color\.temperature$/` |
|
|
24
|
+
// | | ON | switch.light | | boolean | W | | | `/^switch(\.light)?$/` |
|
|
25
|
+
// | | ON_ACTUAL | sensor.light | | boolean | - | | | `/^(state|switch|sensor)\.light|switch$/` |
|
|
26
|
+
class RgbSingle extends AdjustableControl_1.default {
|
|
27
|
+
_brightnessCapability;
|
|
28
|
+
_brightness;
|
|
29
|
+
_colorTemperatureCapability;
|
|
30
|
+
_powerControllerCapability;
|
|
31
|
+
_powerState;
|
|
32
|
+
constructor(detectedControl) {
|
|
33
|
+
super(detectedControl);
|
|
34
|
+
const map = this.statesMap;
|
|
35
|
+
this._supported = [new Capabilities_1.default.ColorController(this.composeInitObjectColor())];
|
|
36
|
+
if (this.states[map.temperature]) {
|
|
37
|
+
this._colorTemperatureCapability = new Capabilities_1.default.ColorTemperatureController(this.composeInitObjectColorTemperature());
|
|
38
|
+
this._supported.push(this._colorTemperatureCapability);
|
|
39
|
+
}
|
|
40
|
+
// if the state DIMMER or BRIGHTNESS configured
|
|
41
|
+
if (this.states[map.dimmer] || this.states[map.brightness]) {
|
|
42
|
+
this._brightnessCapability = new Capabilities_1.default.BrightnessController(this.composeInitObjectBrightness());
|
|
43
|
+
this._brightness = this._brightnessCapability.brightness;
|
|
44
|
+
this._supported.push(this._brightnessCapability);
|
|
45
|
+
}
|
|
46
|
+
// if the state ON, DIMMER or BRIGHTNESS configured
|
|
47
|
+
if (this.states[map.on] || this._brightness) {
|
|
48
|
+
this._powerControllerCapability = new Capabilities_1.default.PowerController(this.composeInitObjectPowerState());
|
|
49
|
+
this._powerState = this._powerControllerCapability.powerState;
|
|
50
|
+
this._supported.push(this._powerControllerCapability);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
get categories() {
|
|
54
|
+
return ['LIGHT'];
|
|
55
|
+
}
|
|
56
|
+
adjustableProperties() {
|
|
57
|
+
return [ColorTemperatureInKelvin_1.default];
|
|
58
|
+
}
|
|
59
|
+
async getOrRetrieveCurrentValue(property) {
|
|
60
|
+
const map = this.statesMap;
|
|
61
|
+
if (property.currentValue === undefined) {
|
|
62
|
+
property.currentValue = await AdapterProvider_1.default.getState(property.getId);
|
|
63
|
+
// convert the non-zero brightness to power = true
|
|
64
|
+
if (property.propertyName === PowerState_1.default.propertyName && !this.states[map.on]) {
|
|
65
|
+
property.currentValue = property.currentValue !== 0;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (property.currentValue === undefined) {
|
|
69
|
+
throw new Error(`unable to retrieve ${property.getId}`);
|
|
70
|
+
}
|
|
71
|
+
return property.currentValue;
|
|
72
|
+
}
|
|
73
|
+
async setState(property, value) {
|
|
74
|
+
const map = this.statesMap;
|
|
75
|
+
if (property.propertyName === PowerState_1.default.propertyName) {
|
|
76
|
+
if (this.states[map.on]) {
|
|
77
|
+
await AdapterProvider_1.default.setState(property.setId, value);
|
|
78
|
+
property.currentValue = value;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
if (!this._brightness) {
|
|
82
|
+
throw new Error('No brightness property configured');
|
|
83
|
+
}
|
|
84
|
+
if (!this._powerState) {
|
|
85
|
+
throw new Error('No powerState property configured');
|
|
86
|
+
}
|
|
87
|
+
if (value) {
|
|
88
|
+
// set brightness
|
|
89
|
+
// set byOn to the configured value or range.max otherwise
|
|
90
|
+
const range = (0, Utils_1.configuredRangeOrDefault)(this.states[map.dimmer] || this.states[map.brightness]);
|
|
91
|
+
const smartName = (this.states[map.dimmer] || this.states[map.brightness])?.smartName;
|
|
92
|
+
let byOn;
|
|
93
|
+
if (smartName && typeof smartName === 'object') {
|
|
94
|
+
byOn = smartName.byON;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
byOn = undefined;
|
|
98
|
+
}
|
|
99
|
+
if (byOn === undefined || byOn === null || isNaN(byOn)) {
|
|
100
|
+
byOn = range.max;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
byOn = parseFloat(byOn);
|
|
104
|
+
}
|
|
105
|
+
await AdapterProvider_1.default.setState(this._brightness.setId, byOn ?? 100);
|
|
106
|
+
this._brightness.currentValue = byOn;
|
|
107
|
+
this._powerState.currentValue = true;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// set brightness to 0 on power OFF
|
|
111
|
+
await AdapterProvider_1.default.setState(this._brightness.setId, 0);
|
|
112
|
+
this._brightness.currentValue = 0;
|
|
113
|
+
this._powerState.currentValue = false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (property.propertyName === Color_1.default.propertyName) {
|
|
118
|
+
// For Color property, convert HAL format to RGB hex string
|
|
119
|
+
await AdapterProvider_1.default.setState(this.states[map.rgb].id, value);
|
|
120
|
+
property.currentValue = value;
|
|
121
|
+
}
|
|
122
|
+
else if (property.propertyName === Brightness_1.default.propertyName ||
|
|
123
|
+
property.propertyName === ColorTemperatureInKelvin_1.default.propertyName) {
|
|
124
|
+
await AdapterProvider_1.default.setState(property.setId, value);
|
|
125
|
+
property.currentValue = value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async adjustValue(event, property) {
|
|
129
|
+
// extract Alexa delta value from event
|
|
130
|
+
const delta = property.alexaDirectiveValue(event);
|
|
131
|
+
// convert delta to iobroker value
|
|
132
|
+
const value = property.value(delta);
|
|
133
|
+
// set iobroker state
|
|
134
|
+
await this.setState(property, value ?? 0);
|
|
135
|
+
return value;
|
|
136
|
+
}
|
|
137
|
+
composeInitObjectColor() {
|
|
138
|
+
const map = this.statesMap;
|
|
139
|
+
return {
|
|
140
|
+
setState: this.states[map.rgb],
|
|
141
|
+
getState: this.states[map.rgb],
|
|
142
|
+
rgb: this.states[map.rgb],
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
composeInitObjectPowerState() {
|
|
146
|
+
const map = this.statesMap;
|
|
147
|
+
return {
|
|
148
|
+
setState: this.states[map.on] || this.states[map.dimmer] || this.states[map.brightness],
|
|
149
|
+
getState: this.states[map.on] || this.states[map.dimmer] || this.states[map.brightness],
|
|
150
|
+
alexaSetter: function (alexaValue) {
|
|
151
|
+
return alexaValue === PowerState_1.default.ON;
|
|
152
|
+
},
|
|
153
|
+
alexaGetter: function (value) {
|
|
154
|
+
return value ? PowerState_1.default.ON : PowerState_1.default.OFF;
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
composeInitObjectBrightness() {
|
|
159
|
+
const map = this.statesMap;
|
|
160
|
+
return {
|
|
161
|
+
setState: this.states[map.dimmer] || this.states[map.brightness],
|
|
162
|
+
getState: this.states[map.dimmer] || this.states[map.brightness],
|
|
163
|
+
alexaSetter: function (alexaValue) {
|
|
164
|
+
return ((0, Utils_1.denormalize_0_100)(alexaValue, this.valuesRangeMin, this.valuesRangeMax) ?? 0);
|
|
165
|
+
},
|
|
166
|
+
alexaGetter: function (value) {
|
|
167
|
+
return (0, Utils_1.normalize_0_100)(value, this.valuesRangeMin, this.valuesRangeMax);
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
composeInitObjectColorTemperature() {
|
|
172
|
+
const map = this.statesMap;
|
|
173
|
+
return {
|
|
174
|
+
setState: this.states[map.temperature],
|
|
175
|
+
getState: this.states[map.temperature],
|
|
176
|
+
alexaSetter: function (alexaValue) {
|
|
177
|
+
if (alexaValue === 1) {
|
|
178
|
+
// increase directive
|
|
179
|
+
const closest = (0, Utils_1.closestFromList)(this.currentValue || this.colorTemperatureTable[0], this.colorTemperatureTable);
|
|
180
|
+
let index = this.colorTemperatureTable.indexOf(closest) + 1;
|
|
181
|
+
index = index >= this.colorTemperatureTable.length ? this.colorTemperatureTable.length - 1 : index;
|
|
182
|
+
return this.colorTemperatureTable[index];
|
|
183
|
+
}
|
|
184
|
+
if (alexaValue === -1) {
|
|
185
|
+
// decrease directive
|
|
186
|
+
const closest = (0, Utils_1.closestFromList)(this.currentValue || this.colorTemperatureTable[0], this.colorTemperatureTable);
|
|
187
|
+
let index = this.colorTemperatureTable.indexOf(closest) - 1;
|
|
188
|
+
index = index < 0 ? 0 : index;
|
|
189
|
+
return this.colorTemperatureTable[index];
|
|
190
|
+
}
|
|
191
|
+
return alexaValue;
|
|
192
|
+
},
|
|
193
|
+
alexaGetter: function (value) {
|
|
194
|
+
return value;
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.default = RgbSingle;
|
|
200
|
+
//# sourceMappingURL=RgbSingle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RgbSingle.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/RgbSingle.ts"],"names":[],"mappings":"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","sourcesContent":["import Capabilities from '../Alexa/Capabilities';\nimport { configuredRangeOrDefault, denormalize_0_100, normalize_0_100, closestFromList } from '../Helpers/Utils';\nimport AdapterProvider from '../Helpers/AdapterProvider';\nimport type { Base as PropertiesBase } from '../Alexa/Properties/Base';\nimport AdjustableControl from './AdjustableControl';\nimport type BrightnessController from '../Alexa/Capabilities/BrightnessController';\nimport Brightness from '../Alexa/Properties/Brightness';\nimport ColorTemperatureInKelvin from '../Alexa/Properties/ColorTemperatureInKelvin';\nimport type ColorTemperatureController from '../Alexa/Capabilities/ColorTemperatureController';\nimport type PowerController from '../Alexa/Capabilities/PowerController';\nimport PowerState from '../Alexa/Properties/PowerState';\nimport type {\n AlexaV3Category,\n AlexaV3DirectiveValue,\n AlexaV3Request,\n IotExternalDetectorState,\n IotExternalPatternControl,\n} from '../types';\nimport Color from '../Alexa/Properties/Color';\n\n// ### RGB Light Single [rgbSingle]\n//\n// RGB light with one state of color. Could be HEX #RRGGBB, or rgb(0-255,0-255,0-255).\n//\n// | R | Name | Role | Unit | Type | Wr | Ind | Multi | Regex |\n// |---|-----------------|-------------------------------|------|---------|----|-----|-------|---------------------------------------------------|\n// | * | RGB | level.color.rgb | | string | W | | | `/^level\\.color\\.rgb$/` |\n// | | DIMMER | level.dimmer | % | number | W | | | `/^level\\.dimmer$/` |\n// | | BRIGHTNESS | | % | number | W | | | `/^level\\.brightness$/` |\n// | | TEMPERATURE | level.color.temperature | °K | number | W | | | `/^level\\.color\\.temperature$/` |\n// | | ON | switch.light | | boolean | W | | | `/^switch(\\.light)?$/` |\n// | | ON_ACTUAL | sensor.light | | boolean | - | | | `/^(state|switch|sensor)\\.light|switch$/` |\n\nexport default class RgbSingle extends AdjustableControl {\n private readonly _brightnessCapability: BrightnessController | undefined;\n private readonly _brightness: Brightness | undefined;\n private readonly _colorTemperatureCapability: ColorTemperatureController | undefined;\n private readonly _powerControllerCapability: PowerController | undefined;\n private readonly _powerState: PowerState | undefined;\n\n constructor(detectedControl: IotExternalPatternControl) {\n super(detectedControl);\n\n const map = this.statesMap;\n this._supported = [new Capabilities.ColorController(this.composeInitObjectColor())];\n\n if (this.states[map.temperature]) {\n this._colorTemperatureCapability = new Capabilities.ColorTemperatureController(\n this.composeInitObjectColorTemperature(),\n );\n this._supported.push(this._colorTemperatureCapability);\n }\n\n // if the state DIMMER or BRIGHTNESS configured\n if (this.states[map.dimmer] || this.states[map.brightness]) {\n this._brightnessCapability = new Capabilities.BrightnessController(this.composeInitObjectBrightness());\n this._brightness = this._brightnessCapability.brightness;\n this._supported.push(this._brightnessCapability);\n }\n\n // if the state ON, DIMMER or BRIGHTNESS configured\n if (this.states[map.on] || this._brightness) {\n this._powerControllerCapability = new Capabilities.PowerController(this.composeInitObjectPowerState());\n this._powerState = this._powerControllerCapability.powerState;\n this._supported.push(this._powerControllerCapability);\n }\n }\n\n get categories(): AlexaV3Category[] {\n return ['LIGHT'];\n }\n\n adjustableProperties(): (typeof PropertiesBase)[] {\n return [ColorTemperatureInKelvin];\n }\n\n protected async getOrRetrieveCurrentValue(property: PropertiesBase): Promise<ioBroker.StateValue> {\n const map = this.statesMap;\n\n if (property.currentValue === undefined) {\n property.currentValue = await AdapterProvider.getState(property.getId);\n // convert the non-zero brightness to power = true\n if (property.propertyName === PowerState.propertyName && !this.states[map.on]) {\n property.currentValue = property.currentValue !== 0;\n }\n }\n\n if (property.currentValue === undefined) {\n throw new Error(`unable to retrieve ${property.getId}`);\n }\n\n return property.currentValue;\n }\n\n async setState(property: PropertiesBase, value: ioBroker.StateValue): Promise<void> {\n const map = this.statesMap;\n\n if (property.propertyName === PowerState.propertyName) {\n if (this.states[map.on]) {\n await AdapterProvider.setState(property.setId, value);\n property.currentValue = value;\n } else {\n if (!this._brightness) {\n throw new Error('No brightness property configured');\n }\n if (!this._powerState) {\n throw new Error('No powerState property configured');\n }\n\n if (value) {\n // set brightness\n // set byOn to the configured value or range.max otherwise\n const range = configuredRangeOrDefault(this.states[map.dimmer] || this.states[map.brightness]!);\n const smartName = (this.states[map.dimmer] || this.states[map.brightness])?.smartName;\n let byOn: number | string | undefined | null;\n if (smartName && typeof smartName === 'object') {\n byOn = smartName.byON;\n } else {\n byOn = undefined;\n }\n if (byOn === undefined || byOn === null || isNaN(byOn as unknown as number)) {\n byOn = range.max as number | string | undefined | null;\n } else {\n byOn = parseFloat(byOn);\n }\n await AdapterProvider.setState(this._brightness.setId, byOn ?? 100);\n this._brightness.currentValue = byOn;\n this._powerState.currentValue = true;\n } else {\n // set brightness to 0 on power OFF\n await AdapterProvider.setState(this._brightness.setId, 0);\n this._brightness.currentValue = 0;\n this._powerState.currentValue = false;\n }\n }\n } else if (property.propertyName === Color.propertyName) {\n // For Color property, convert HAL format to RGB hex string\n await AdapterProvider.setState(this.states[map.rgb]!.id, value);\n property.currentValue = value;\n } else if (\n property.propertyName === Brightness.propertyName ||\n property.propertyName === ColorTemperatureInKelvin.propertyName\n ) {\n await AdapterProvider.setState(property.setId, value);\n property.currentValue = value;\n }\n }\n\n async adjustValue(event: AlexaV3Request, property: PropertiesBase): Promise<AlexaV3DirectiveValue> {\n // extract Alexa delta value from event\n const delta = property.alexaDirectiveValue(event);\n\n // convert delta to iobroker value\n const value = property.value(delta);\n\n // set iobroker state\n await this.setState(property, value ?? 0);\n\n return value as AlexaV3DirectiveValue;\n }\n\n protected composeInitObjectColor(): {\n setState?: IotExternalDetectorState;\n getState?: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n rgb?:\n | IotExternalDetectorState\n | {\n red: IotExternalDetectorState;\n green: IotExternalDetectorState;\n blue: IotExternalDetectorState;\n };\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.rgb]!,\n getState: this.states[map.rgb]!,\n rgb: this.states[map.rgb]!,\n };\n }\n\n protected composeInitObjectPowerState(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.on] || this.states[map.dimmer] || this.states[map.brightness]!,\n getState: this.states[map.on] || this.states[map.dimmer] || this.states[map.brightness]!,\n alexaSetter: function (this: PropertiesBase, alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue {\n return alexaValue === PowerState.ON;\n },\n alexaGetter: function (value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return value ? PowerState.ON : PowerState.OFF;\n },\n };\n }\n\n protected composeInitObjectBrightness(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.dimmer] || this.states[map.brightness]!,\n getState: this.states[map.dimmer] || this.states[map.brightness]!,\n alexaSetter: function (this: PropertiesBase, alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue {\n return (\n denormalize_0_100(\n alexaValue as number,\n this.valuesRangeMin as number,\n this.valuesRangeMax as number,\n ) ?? 0\n );\n },\n alexaGetter: function (\n this: PropertiesBase,\n value: ioBroker.StateValue | undefined,\n ): AlexaV3DirectiveValue {\n return normalize_0_100(value as number, this.valuesRangeMin as number, this.valuesRangeMax as number);\n },\n };\n }\n\n protected composeInitObjectColorTemperature(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.temperature]!,\n getState: this.states[map.temperature]!,\n alexaSetter: function (\n this: ColorTemperatureInKelvin,\n alexaValue: AlexaV3DirectiveValue,\n ): ioBroker.StateValue {\n if (alexaValue === 1) {\n // increase directive\n const closest = closestFromList(\n (this.currentValue as number) || this.colorTemperatureTable[0],\n this.colorTemperatureTable,\n );\n let index = this.colorTemperatureTable.indexOf(closest) + 1;\n index = index >= this.colorTemperatureTable.length ? this.colorTemperatureTable.length - 1 : index;\n return this.colorTemperatureTable[index];\n }\n if (alexaValue === -1) {\n // decrease directive\n const closest = closestFromList(\n (this.currentValue as number) || this.colorTemperatureTable[0],\n this.colorTemperatureTable,\n );\n let index = this.colorTemperatureTable.indexOf(closest) - 1;\n index = index < 0 ? 0 : index;\n return this.colorTemperatureTable[index];\n }\n\n return alexaValue as number;\n },\n alexaGetter: function (value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return value as number;\n },\n };\n }\n}\n"]}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Capabilities_1 = __importDefault(require("../Alexa/Capabilities"));
|
|
7
|
+
const Utils_1 = require("../Helpers/Utils");
|
|
8
|
+
const AdapterProvider_1 = __importDefault(require("../Helpers/AdapterProvider"));
|
|
9
|
+
const AdjustableControl_1 = __importDefault(require("./AdjustableControl"));
|
|
10
|
+
const Brightness_1 = __importDefault(require("../Alexa/Properties/Brightness"));
|
|
11
|
+
const Color_1 = __importDefault(require("../Alexa/Properties/Color"));
|
|
12
|
+
const ColorTemperatureInKelvin_1 = __importDefault(require("../Alexa/Properties/ColorTemperatureInKelvin"));
|
|
13
|
+
const PowerState_1 = __importDefault(require("../Alexa/Properties/PowerState"));
|
|
14
|
+
// ### RGBW Light Single [rgbwSingle]
|
|
15
|
+
//
|
|
16
|
+
// RGBW light one state of color. Could be HEX #RRGGBBWW, or rgba(0-255,0-255,0-255,0-1).
|
|
17
|
+
//
|
|
18
|
+
// | R | Name | Role | Unit | Type | Wr | Ind | Multi | Regex |
|
|
19
|
+
// |---|-----------------|-------------------------------|------|---------|----|-----|-------|---------------------------------------------------|
|
|
20
|
+
// | * | RGBW | level.color.rgbw | | string | W | | | `/^level\.color\.rgbw$/` |
|
|
21
|
+
// | | DIMMER | level.dimmer | % | number | W | | | `/^level\.dimmer$/` |
|
|
22
|
+
// | | BRIGHTNESS | | % | number | W | | | `/^level\.brightness$/` |
|
|
23
|
+
// | | TEMPERATURE | level.color.temperature | °K | number | W | | | `/^level\.color\.temperature$/` |
|
|
24
|
+
// | | ON | switch.light | | boolean | W | | | `/^switch(\.light)?$/` |
|
|
25
|
+
// | | ON_ACTUAL | sensor.light | | boolean | - | | | `/^(state|switch|sensor)\.light|switch$/` |
|
|
26
|
+
class RgbwSingle extends AdjustableControl_1.default {
|
|
27
|
+
_brightnessCapability;
|
|
28
|
+
_brightness;
|
|
29
|
+
_colorTemperatureCapability;
|
|
30
|
+
_powerControllerCapability;
|
|
31
|
+
_powerState;
|
|
32
|
+
constructor(detectedControl) {
|
|
33
|
+
super(detectedControl);
|
|
34
|
+
const map = this.statesMap;
|
|
35
|
+
this._supported = [new Capabilities_1.default.ColorController(this.composeInitObjectColor())];
|
|
36
|
+
if (this.states[map.temperature]) {
|
|
37
|
+
this._colorTemperatureCapability = new Capabilities_1.default.ColorTemperatureController(this.composeInitObjectColorTemperature());
|
|
38
|
+
this._supported.push(this._colorTemperatureCapability);
|
|
39
|
+
}
|
|
40
|
+
// if the state DIMMER or BRIGHTNESS configured
|
|
41
|
+
if (this.states[map.dimmer] || this.states[map.brightness]) {
|
|
42
|
+
this._brightnessCapability = new Capabilities_1.default.BrightnessController(this.composeInitObjectBrightness());
|
|
43
|
+
this._brightness = this._brightnessCapability.brightness;
|
|
44
|
+
this._supported.push(this._brightnessCapability);
|
|
45
|
+
}
|
|
46
|
+
// if the state ON, DIMMER or BRIGHTNESS configured
|
|
47
|
+
if (this.states[map.on] || this._brightness) {
|
|
48
|
+
this._powerControllerCapability = new Capabilities_1.default.PowerController(this.composeInitObjectPowerState());
|
|
49
|
+
this._powerState = this._powerControllerCapability.powerState;
|
|
50
|
+
this._supported.push(this._powerControllerCapability);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
get categories() {
|
|
54
|
+
return ['LIGHT'];
|
|
55
|
+
}
|
|
56
|
+
adjustableProperties() {
|
|
57
|
+
return [ColorTemperatureInKelvin_1.default];
|
|
58
|
+
}
|
|
59
|
+
async getOrRetrieveCurrentValue(property) {
|
|
60
|
+
const map = this.statesMap;
|
|
61
|
+
if (property.currentValue === undefined) {
|
|
62
|
+
property.currentValue = await AdapterProvider_1.default.getState(property.getId);
|
|
63
|
+
// convert the non-zero brightness to power = true
|
|
64
|
+
if (property.propertyName === PowerState_1.default.propertyName && !this.states[map.on]) {
|
|
65
|
+
property.currentValue = property.currentValue !== 0;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (property.currentValue === undefined) {
|
|
69
|
+
throw new Error(`unable to retrieve ${property.getId}`);
|
|
70
|
+
}
|
|
71
|
+
return property.currentValue;
|
|
72
|
+
}
|
|
73
|
+
async setState(property, value) {
|
|
74
|
+
const map = this.statesMap;
|
|
75
|
+
if (property.propertyName === PowerState_1.default.propertyName) {
|
|
76
|
+
if (this.states[map.on]) {
|
|
77
|
+
await AdapterProvider_1.default.setState(property.setId, value);
|
|
78
|
+
property.currentValue = value;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
if (!this._brightness) {
|
|
82
|
+
throw new Error('No brightness property configured');
|
|
83
|
+
}
|
|
84
|
+
if (!this._powerState) {
|
|
85
|
+
throw new Error('No powerState property configured');
|
|
86
|
+
}
|
|
87
|
+
if (value) {
|
|
88
|
+
// set brightness
|
|
89
|
+
// set byOn to the configured value or range.max otherwise
|
|
90
|
+
const range = (0, Utils_1.configuredRangeOrDefault)(this.states[map.dimmer] || this.states[map.brightness]);
|
|
91
|
+
const smartName = (this.states[map.dimmer] || this.states[map.brightness])?.smartName;
|
|
92
|
+
let byOn;
|
|
93
|
+
if (smartName && typeof smartName === 'object') {
|
|
94
|
+
byOn = smartName.byON;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
byOn = undefined;
|
|
98
|
+
}
|
|
99
|
+
if (byOn === undefined || byOn === null || isNaN(byOn)) {
|
|
100
|
+
byOn = range.max;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
byOn = parseFloat(byOn);
|
|
104
|
+
}
|
|
105
|
+
await AdapterProvider_1.default.setState(this._brightness.setId, byOn ?? 100);
|
|
106
|
+
this._brightness.currentValue = byOn;
|
|
107
|
+
this._powerState.currentValue = true;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// set brightness to 0 on power OFF
|
|
111
|
+
await AdapterProvider_1.default.setState(this._brightness.setId, 0);
|
|
112
|
+
this._brightness.currentValue = 0;
|
|
113
|
+
this._powerState.currentValue = false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (property.propertyName === Brightness_1.default.propertyName ||
|
|
118
|
+
property.propertyName === Color_1.default.propertyName ||
|
|
119
|
+
property.propertyName === ColorTemperatureInKelvin_1.default.propertyName) {
|
|
120
|
+
await AdapterProvider_1.default.setState(property.setId, value);
|
|
121
|
+
property.currentValue = value;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async adjustValue(event, property) {
|
|
125
|
+
// extract Alexa delta value from event
|
|
126
|
+
const delta = property.alexaDirectiveValue(event);
|
|
127
|
+
// convert delta to iobroker value
|
|
128
|
+
const value = property.value(delta);
|
|
129
|
+
// set iobroker state
|
|
130
|
+
await this.setState(property, value ?? 0);
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
composeInitObjectColor() {
|
|
134
|
+
const map = this.statesMap;
|
|
135
|
+
return {
|
|
136
|
+
setState: this.states[map.rgbw],
|
|
137
|
+
getState: this.states[map.rgbw],
|
|
138
|
+
alexaSetter: function (alexaValue) {
|
|
139
|
+
// Convert {
|
|
140
|
+
// "hue": 350.5,
|
|
141
|
+
// "saturation": 0.7138,
|
|
142
|
+
// "brightness": 0.6524
|
|
143
|
+
// } to RGB hex #RRGGBBWW
|
|
144
|
+
if (typeof alexaValue === 'object' && alexaValue !== null) {
|
|
145
|
+
return (0, Utils_1.hal2rgbw)(alexaValue);
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
},
|
|
149
|
+
alexaGetter: function (value) {
|
|
150
|
+
return (0, Utils_1.rgbw2hal)((0, Utils_1.rgbwToHex)(value));
|
|
151
|
+
},
|
|
152
|
+
rgbw: this.states[map.rgbw],
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
composeInitObjectPowerState() {
|
|
156
|
+
const map = this.statesMap;
|
|
157
|
+
return {
|
|
158
|
+
setState: this.states[map.on] || this.states[map.dimmer] || this.states[map.brightness],
|
|
159
|
+
getState: this.states[map.on] || this.states[map.dimmer] || this.states[map.brightness],
|
|
160
|
+
alexaSetter: function (alexaValue) {
|
|
161
|
+
return alexaValue === PowerState_1.default.ON;
|
|
162
|
+
},
|
|
163
|
+
alexaGetter: function (value) {
|
|
164
|
+
return value ? PowerState_1.default.ON : PowerState_1.default.OFF;
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
composeInitObjectBrightness() {
|
|
169
|
+
const map = this.statesMap;
|
|
170
|
+
return {
|
|
171
|
+
setState: this.states[map.dimmer] || this.states[map.brightness],
|
|
172
|
+
getState: this.states[map.dimmer] || this.states[map.brightness],
|
|
173
|
+
alexaSetter: function (alexaValue) {
|
|
174
|
+
return ((0, Utils_1.denormalize_0_100)(alexaValue, this.valuesRangeMin, this.valuesRangeMax) ?? 0);
|
|
175
|
+
},
|
|
176
|
+
alexaGetter: function (value) {
|
|
177
|
+
return (0, Utils_1.normalize_0_100)(value, this.valuesRangeMin, this.valuesRangeMax);
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
composeInitObjectColorTemperature() {
|
|
182
|
+
const map = this.statesMap;
|
|
183
|
+
return {
|
|
184
|
+
setState: this.states[map.temperature],
|
|
185
|
+
getState: this.states[map.temperature],
|
|
186
|
+
alexaSetter: function (alexaValue) {
|
|
187
|
+
if (alexaValue === 1) {
|
|
188
|
+
// increase directive
|
|
189
|
+
const closest = (0, Utils_1.closestFromList)(this.currentValue || this.colorTemperatureTable[0], this.colorTemperatureTable);
|
|
190
|
+
let index = this.colorTemperatureTable.indexOf(closest) + 1;
|
|
191
|
+
index = index >= this.colorTemperatureTable.length ? this.colorTemperatureTable.length - 1 : index;
|
|
192
|
+
return this.colorTemperatureTable[index];
|
|
193
|
+
}
|
|
194
|
+
if (alexaValue === -1) {
|
|
195
|
+
// decrease directive
|
|
196
|
+
const closest = (0, Utils_1.closestFromList)(this.currentValue || this.colorTemperatureTable[0], this.colorTemperatureTable);
|
|
197
|
+
let index = this.colorTemperatureTable.indexOf(closest) - 1;
|
|
198
|
+
index = index < 0 ? 0 : index;
|
|
199
|
+
return this.colorTemperatureTable[index];
|
|
200
|
+
}
|
|
201
|
+
return alexaValue;
|
|
202
|
+
},
|
|
203
|
+
alexaGetter: function (value) {
|
|
204
|
+
return value;
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.default = RgbwSingle;
|
|
210
|
+
//# sourceMappingURL=RgbwSingle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RgbwSingle.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/RgbwSingle.ts"],"names":[],"mappings":"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","sourcesContent":["import Capabilities from '../Alexa/Capabilities';\nimport {\n configuredRangeOrDefault,\n denormalize_0_100,\n normalize_0_100,\n closestFromList,\n rgbwToHex,\n rgbw2hal,\n hal2rgbw,\n} from '../Helpers/Utils';\nimport AdapterProvider from '../Helpers/AdapterProvider';\nimport AdjustableControl from './AdjustableControl';\nimport type { Base as PropertiesBase } from '../Alexa/Properties/Base';\nimport type BrightnessController from '../Alexa/Capabilities/BrightnessController';\nimport Brightness from '../Alexa/Properties/Brightness';\nimport Color from '../Alexa/Properties/Color';\nimport ColorTemperatureInKelvin from '../Alexa/Properties/ColorTemperatureInKelvin';\nimport type ColorTemperatureController from '../Alexa/Capabilities/ColorTemperatureController';\nimport type PowerController from '../Alexa/Capabilities/PowerController';\nimport PowerState from '../Alexa/Properties/PowerState';\nimport type {\n AlexaV3Category,\n AlexaV3DirectiveValue,\n AlexaV3Request,\n IotExternalDetectorState,\n IotExternalPatternControl,\n} from '../types';\n\n// ### RGBW Light Single [rgbwSingle]\n//\n// RGBW light one state of color. Could be HEX #RRGGBBWW, or rgba(0-255,0-255,0-255,0-1).\n//\n// | R | Name | Role | Unit | Type | Wr | Ind | Multi | Regex |\n// |---|-----------------|-------------------------------|------|---------|----|-----|-------|---------------------------------------------------|\n// | * | RGBW | level.color.rgbw | | string | W | | | `/^level\\.color\\.rgbw$/` |\n// | | DIMMER | level.dimmer | % | number | W | | | `/^level\\.dimmer$/` |\n// | | BRIGHTNESS | | % | number | W | | | `/^level\\.brightness$/` |\n// | | TEMPERATURE | level.color.temperature | °K | number | W | | | `/^level\\.color\\.temperature$/` |\n// | | ON | switch.light | | boolean | W | | | `/^switch(\\.light)?$/` |\n// | | ON_ACTUAL | sensor.light | | boolean | - | | | `/^(state|switch|sensor)\\.light|switch$/` |\n\nexport default class RgbwSingle extends AdjustableControl {\n private readonly _brightnessCapability: BrightnessController | undefined;\n private readonly _brightness: Brightness | undefined;\n private readonly _colorTemperatureCapability: ColorTemperatureController | undefined;\n private readonly _powerControllerCapability: PowerController | undefined;\n private readonly _powerState: PowerState | undefined;\n\n constructor(detectedControl: IotExternalPatternControl) {\n super(detectedControl);\n\n const map = this.statesMap;\n this._supported = [new Capabilities.ColorController(this.composeInitObjectColor())];\n\n if (this.states[map.temperature]) {\n this._colorTemperatureCapability = new Capabilities.ColorTemperatureController(\n this.composeInitObjectColorTemperature(),\n );\n this._supported.push(this._colorTemperatureCapability);\n }\n\n // if the state DIMMER or BRIGHTNESS configured\n if (this.states[map.dimmer] || this.states[map.brightness]) {\n this._brightnessCapability = new Capabilities.BrightnessController(this.composeInitObjectBrightness());\n this._brightness = this._brightnessCapability.brightness;\n this._supported.push(this._brightnessCapability);\n }\n\n // if the state ON, DIMMER or BRIGHTNESS configured\n if (this.states[map.on] || this._brightness) {\n this._powerControllerCapability = new Capabilities.PowerController(this.composeInitObjectPowerState());\n this._powerState = this._powerControllerCapability.powerState;\n this._supported.push(this._powerControllerCapability);\n }\n }\n\n get categories(): AlexaV3Category[] {\n return ['LIGHT'];\n }\n\n adjustableProperties(): (typeof PropertiesBase)[] {\n return [ColorTemperatureInKelvin];\n }\n\n protected async getOrRetrieveCurrentValue(property: PropertiesBase): Promise<ioBroker.StateValue> {\n const map = this.statesMap;\n\n if (property.currentValue === undefined) {\n property.currentValue = await AdapterProvider.getState(property.getId);\n // convert the non-zero brightness to power = true\n if (property.propertyName === PowerState.propertyName && !this.states[map.on]) {\n property.currentValue = property.currentValue !== 0;\n }\n }\n\n if (property.currentValue === undefined) {\n throw new Error(`unable to retrieve ${property.getId}`);\n }\n\n return property.currentValue;\n }\n\n async setState(property: PropertiesBase, value: ioBroker.StateValue): Promise<void> {\n const map = this.statesMap;\n\n if (property.propertyName === PowerState.propertyName) {\n if (this.states[map.on]) {\n await AdapterProvider.setState(property.setId, value);\n property.currentValue = value;\n } else {\n if (!this._brightness) {\n throw new Error('No brightness property configured');\n }\n if (!this._powerState) {\n throw new Error('No powerState property configured');\n }\n\n if (value) {\n // set brightness\n // set byOn to the configured value or range.max otherwise\n const range = configuredRangeOrDefault(this.states[map.dimmer] || this.states[map.brightness]!);\n const smartName = (this.states[map.dimmer] || this.states[map.brightness])?.smartName;\n let byOn: number | string | undefined | null;\n if (smartName && typeof smartName === 'object') {\n byOn = smartName.byON;\n } else {\n byOn = undefined;\n }\n if (byOn === undefined || byOn === null || isNaN(byOn as unknown as number)) {\n byOn = range.max as number | string | undefined | null;\n } else {\n byOn = parseFloat(byOn);\n }\n await AdapterProvider.setState(this._brightness.setId, byOn ?? 100);\n this._brightness.currentValue = byOn;\n this._powerState.currentValue = true;\n } else {\n // set brightness to 0 on power OFF\n await AdapterProvider.setState(this._brightness.setId, 0);\n this._brightness.currentValue = 0;\n this._powerState.currentValue = false;\n }\n }\n } else if (\n property.propertyName === Brightness.propertyName ||\n property.propertyName === Color.propertyName ||\n property.propertyName === ColorTemperatureInKelvin.propertyName\n ) {\n await AdapterProvider.setState(property.setId, value);\n property.currentValue = value;\n }\n }\n\n async adjustValue(event: AlexaV3Request, property: PropertiesBase): Promise<AlexaV3DirectiveValue> {\n // extract Alexa delta value from event\n const delta = property.alexaDirectiveValue(event);\n\n // convert delta to iobroker value\n const value = property.value(delta);\n\n // set iobroker state\n await this.setState(property, value ?? 0);\n\n return value as AlexaV3DirectiveValue;\n }\n\n protected composeInitObjectColor(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n rgbw:\n | IotExternalDetectorState\n | {\n red: IotExternalDetectorState;\n green: IotExternalDetectorState;\n blue: IotExternalDetectorState;\n white: IotExternalDetectorState;\n };\n } {\n const map = this.statesMap;\n\n return {\n setState: this.states[map.rgbw]!,\n getState: this.states[map.rgbw]!,\n alexaSetter: function (this: PropertiesBase, alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue {\n // Convert {\n // \"hue\": 350.5,\n // \"saturation\": 0.7138,\n // \"brightness\": 0.6524\n // } to RGB hex #RRGGBBWW\n if (typeof alexaValue === 'object' && alexaValue !== null) {\n return hal2rgbw(alexaValue as { hue: number; saturation: number; brightness: number });\n }\n\n return null;\n },\n alexaGetter: function (value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return rgbw2hal(rgbwToHex(value as string));\n },\n rgbw: this.states[map.rgbw]!,\n };\n }\n\n protected composeInitObjectPowerState(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.on] || this.states[map.dimmer] || this.states[map.brightness]!,\n getState: this.states[map.on] || this.states[map.dimmer] || this.states[map.brightness]!,\n alexaSetter: function (this: PropertiesBase, alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue {\n return alexaValue === PowerState.ON;\n },\n alexaGetter: function (value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return value ? PowerState.ON : PowerState.OFF;\n },\n };\n }\n\n protected composeInitObjectBrightness(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.dimmer] || this.states[map.brightness]!,\n getState: this.states[map.dimmer] || this.states[map.brightness]!,\n alexaSetter: function (this: PropertiesBase, alexaValue: AlexaV3DirectiveValue): ioBroker.StateValue {\n return (\n denormalize_0_100(\n alexaValue as number,\n this.valuesRangeMin as number,\n this.valuesRangeMax as number,\n ) ?? 0\n );\n },\n alexaGetter: function (\n this: PropertiesBase,\n value: ioBroker.StateValue | undefined,\n ): AlexaV3DirectiveValue {\n return normalize_0_100(value as number, this.valuesRangeMin as number, this.valuesRangeMax as number);\n },\n };\n }\n\n protected composeInitObjectColorTemperature(): {\n setState: IotExternalDetectorState;\n getState: IotExternalDetectorState;\n alexaSetter?: (alexaValue: AlexaV3DirectiveValue) => ioBroker.StateValue | undefined;\n alexaGetter?: (value: ioBroker.StateValue | undefined) => AlexaV3DirectiveValue;\n } {\n const map = this.statesMap;\n return {\n setState: this.states[map.temperature]!,\n getState: this.states[map.temperature]!,\n alexaSetter: function (\n this: ColorTemperatureInKelvin,\n alexaValue: AlexaV3DirectiveValue,\n ): ioBroker.StateValue {\n if (alexaValue === 1) {\n // increase directive\n const closest = closestFromList(\n (this.currentValue as number) || this.colorTemperatureTable[0],\n this.colorTemperatureTable,\n );\n let index = this.colorTemperatureTable.indexOf(closest) + 1;\n index = index >= this.colorTemperatureTable.length ? this.colorTemperatureTable.length - 1 : index;\n return this.colorTemperatureTable[index];\n }\n if (alexaValue === -1) {\n // decrease directive\n const closest = closestFromList(\n (this.currentValue as number) || this.colorTemperatureTable[0],\n this.colorTemperatureTable,\n );\n let index = this.colorTemperatureTable.indexOf(closest) - 1;\n index = index < 0 ? 0 : index;\n return this.colorTemperatureTable[index];\n }\n\n return alexaValue as number;\n },\n alexaGetter: function (value: ioBroker.StateValue | undefined): AlexaV3DirectiveValue {\n return value as number;\n },\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VacuumCleaner.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.ts"],"names":[],"mappings":";;;;;AACA,yEAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"VacuumCleaner.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.ts"],"names":[],"mappings":";;;;;AACA,yEAAiD;AACjD,wDAAoD;AAEpD,MAAqB,aAAc,SAAQ,iBAAO;IAC9C,YAAY,eAA0C;QAClD,KAAK,CAAC,eAAe,CAAC,CAAC;QAEvB,MAAM,eAAe,GAAG,IAAI,sBAAY,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,UAAU,GAAG,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QAIT,OAAO;YACH,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,SAAS;SACpB,CAAC;IACN,CAAC;CACJ;AArBD,gCAqBC","sourcesContent":["import type { AlexaV3Category, IotExternalPatternControl } from '../types';\nimport Capabilities from '../Alexa/Capabilities';\nimport Control, { type StateName } from './Control';\n\nexport default class VacuumCleaner extends Control {\n constructor(detectedControl: IotExternalPatternControl) {\n super(detectedControl);\n\n const powerController = new Capabilities.PowerController(this.powerStateInitObject());\n this._supported = [powerController];\n }\n\n get categories(): AlexaV3Category[] {\n return ['VACUUM_CLEANER'];\n }\n\n get statesMap(): {\n set: StateName;\n actual?: StateName;\n } {\n return {\n set: 'POWER',\n actual: undefined,\n };\n }\n}\n"]}
|
|
@@ -16,7 +16,10 @@ const Hue_1 = __importDefault(require("./Hue"));
|
|
|
16
16
|
const Light_1 = __importDefault(require("./Light"));
|
|
17
17
|
const Lock_1 = __importDefault(require("./Lock"));
|
|
18
18
|
const Motion_1 = __importDefault(require("./Motion"));
|
|
19
|
+
const RgbSingle_1 = __importDefault(require("./RgbSingle"));
|
|
20
|
+
const RgbwSingle_1 = __importDefault(require("./RgbwSingle"));
|
|
19
21
|
const ReadOnlyDetector_1 = __importDefault(require("./ReadOnlyDetector"));
|
|
22
|
+
const Button_1 = __importDefault(require("./Button"));
|
|
20
23
|
const Slider_1 = __importDefault(require("./Slider"));
|
|
21
24
|
const Socket_1 = __importDefault(require("./Socket"));
|
|
22
25
|
const Temperature_1 = __importDefault(require("./Temperature"));
|
|
@@ -66,9 +69,15 @@ exports.default = {
|
|
|
66
69
|
if (item.type === Motion_1.default.type) {
|
|
67
70
|
return new Motion_1.default(item);
|
|
68
71
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
if (item.type === RgbSingle_1.default.type) {
|
|
73
|
+
return new RgbSingle_1.default(item);
|
|
74
|
+
}
|
|
75
|
+
if (item.type === RgbwSingle_1.default.type) {
|
|
76
|
+
return new RgbwSingle_1.default(item);
|
|
77
|
+
}
|
|
78
|
+
if (item.type === Button_1.default.type) {
|
|
79
|
+
return new Button_1.default(item);
|
|
80
|
+
}
|
|
72
81
|
if (item.type === Slider_1.default.type) {
|
|
73
82
|
return new Slider_1.default(item);
|
|
74
83
|
}
|
|
@@ -109,6 +118,9 @@ exports.default = {
|
|
|
109
118
|
Lock: Lock_1.default,
|
|
110
119
|
Motion: Motion_1.default,
|
|
111
120
|
ReadOnlyDetector: ReadOnlyDetector_1.default,
|
|
121
|
+
RgbSingle: RgbSingle_1.default,
|
|
122
|
+
RgbwSingle: RgbwSingle_1.default,
|
|
123
|
+
Scene: Button_1.default,
|
|
112
124
|
Slider: Slider_1.default,
|
|
113
125
|
Socket: Socket_1.default,
|
|
114
126
|
Temperature: Temperature_1.default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/index.ts"],"names":[],"mappings":";;;;;AAAA,4EAAoD;AACpD,gGAAwE;AACxE,kEAA0C;AAC1C,oDAA4B;AAC5B,oEAA4C;AAE5C,8CAAsB;AACtB,sDAA8B;AAC9B,kDAA0B;AAC1B,kDAA0B;AAC1B,gDAAwB;AACxB,oDAA4B;AAC5B,kDAA0B;AAC1B,sDAA8B;AAC9B,0EAAkD;AAClD,sDAA8B;AAC9B,sDAA8B;AAC9B,gEAAwC;AACxC,8DAAsC;AACtC,oEAA4C;AAC5C,sDAA8B;AAC9B,gEAAwC;AACxC,sDAA8B;AAG9B,kBAAe;IACX,OAAO,EAAE,CAAC,IAA+B,EAAkB,EAAE;QACzD,8CAA8C;QAC9C,0CAA0C;QAC1C,IAAI;QACJ,IAAI,IAAI,CAAC,IAAI,KAAK,qCAA2B,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO,IAAI,qCAA2B,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAY,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO,IAAI,sBAAY,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAK,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,eAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAa,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,uBAAa,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAE,CAAC,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,YAAE,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,IAAI,gBAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO,IAAI,cAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO,IAAI,cAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAG,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,aAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAK,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,eAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO,IAAI,cAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,IAAI,gBAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/AlexaSmartHomeV3/Controls/index.ts"],"names":[],"mappings":"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","sourcesContent":["import AdjustableControl from './AdjustableControl';\nimport AdjustablePercentageControl from './AdjustablePercentageControl';\nimport AirCondition from './AirCondition';\nimport Blind from './Blind';\nimport ContactSensor from './ContactSensor';\nimport type Control from './Control';\nimport Ct from './Ct';\nimport Dimmer from './Dimmer';\nimport Door from './Door';\nimport Gate from './Gate';\nimport Hue from './Hue';\nimport Light from './Light';\nimport Lock from './Lock';\nimport Motion from './Motion';\nimport RgbSingle from './RgbSingle';\nimport RgbwSingle from './RgbwSingle';\nimport ReadOnlyDetector from './ReadOnlyDetector';\nimport Button from './Button';\nimport Slider from './Slider';\nimport Socket from './Socket';\nimport Temperature from './Temperature';\nimport Thermostat from './Thermostat';\nimport VacuumCleaner from './VacuumCleaner';\nimport Volume from './Volume';\nimport VolumeGroup from './VolumeGroup';\nimport Window from './Window';\nimport type { IotExternalPatternControl } from '../types';\n\nexport default {\n factory: (item: IotExternalPatternControl): Control | null => {\n // if (item.type === AdjustableControl.type) {\n // return new AdjustableControl(item);\n // }\n if (item.type === AdjustablePercentageControl.type) {\n return new AdjustablePercentageControl(item);\n }\n if (item.type === AirCondition.type) {\n return new AirCondition(item);\n }\n if (item.type === Blind.type) {\n return new Blind(item);\n }\n if (item.type === ContactSensor.type) {\n return new ContactSensor(item);\n }\n if (item.type === Ct.type) {\n return new Ct(item);\n }\n if (item.type === Dimmer.type) {\n return new Dimmer(item);\n }\n if (item.type === Door.type) {\n return new Door(item);\n }\n if (item.type === Gate.type) {\n return new Gate(item);\n }\n if (item.type === Hue.type) {\n return new Hue(item);\n }\n if (item.type === Light.type) {\n return new Light(item);\n }\n if (item.type === Lock.type) {\n return new Lock(item);\n }\n if (item.type === Motion.type) {\n return new Motion(item);\n }\n if (item.type === RgbSingle.type) {\n return new RgbSingle(item);\n }\n if (item.type === RgbwSingle.type) {\n return new RgbwSingle(item);\n }\n if (item.type === Button.type) {\n return new Button(item);\n }\n if (item.type === Slider.type) {\n return new Slider(item);\n }\n if (item.type === Socket.type) {\n return new Socket(item);\n }\n if (item.type === Temperature.type) {\n return new Temperature(item);\n }\n if (item.type === Thermostat.type) {\n return new Thermostat(item);\n }\n if (item.type === VacuumCleaner.type) {\n return new VacuumCleaner(item);\n }\n if (item.type === Volume.type) {\n return new Volume(item);\n }\n if (item.type === VolumeGroup.type) {\n return new VolumeGroup(item);\n }\n if (item.type === Window.type) {\n return new Window(item);\n }\n return null;\n },\n AdjustableControl,\n AdjustablePercentageControl,\n AirCondition,\n Blind,\n ContactSensor,\n Ct,\n Dimmer,\n Door,\n Gate,\n Hue,\n Light,\n Lock,\n Motion,\n ReadOnlyDetector,\n RgbSingle,\n RgbwSingle,\n Scene: Button,\n Slider,\n Socket,\n Temperature,\n Thermostat,\n VacuumCleaner,\n Volume,\n VolumeGroup,\n Window,\n};\n"]}
|