@nubisco/homebridge-tuya-local-platform 1.0.0
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/LICENSE +9 -0
- package/README.md +48 -0
- package/config.schema.json +852 -0
- package/dist/accessories/AirConditioner.accessory.d.ts +50 -0
- package/dist/accessories/AirConditioner.accessory.d.ts.map +1 -0
- package/dist/accessories/AirConditioner.accessory.js +447 -0
- package/dist/accessories/AirConditioner.accessory.js.map +1 -0
- package/dist/accessories/AirPurifier.accessory.d.ts +37 -0
- package/dist/accessories/AirPurifier.accessory.d.ts.map +1 -0
- package/dist/accessories/AirPurifier.accessory.js +414 -0
- package/dist/accessories/AirPurifier.accessory.js.map +1 -0
- package/dist/accessories/Base.accessory.d.ts +43 -0
- package/dist/accessories/Base.accessory.d.ts.map +1 -0
- package/dist/accessories/Base.accessory.js +310 -0
- package/dist/accessories/Base.accessory.js.map +1 -0
- package/dist/accessories/CircuitBreakerMonitor.accessory.d.ts +47 -0
- package/dist/accessories/CircuitBreakerMonitor.accessory.d.ts.map +1 -0
- package/dist/accessories/CircuitBreakerMonitor.accessory.js +274 -0
- package/dist/accessories/CircuitBreakerMonitor.accessory.js.map +1 -0
- package/dist/accessories/Convector.accessory.d.ts +43 -0
- package/dist/accessories/Convector.accessory.d.ts.map +1 -0
- package/dist/accessories/Convector.accessory.js +297 -0
- package/dist/accessories/Convector.accessory.js.map +1 -0
- package/dist/accessories/CustomMultiOutlet.accessory.d.ts +15 -0
- package/dist/accessories/CustomMultiOutlet.accessory.d.ts.map +1 -0
- package/dist/accessories/CustomMultiOutlet.accessory.js +105 -0
- package/dist/accessories/CustomMultiOutlet.accessory.js.map +1 -0
- package/dist/accessories/Dehumidifier.accessory.d.ts +38 -0
- package/dist/accessories/Dehumidifier.accessory.d.ts.map +1 -0
- package/dist/accessories/Dehumidifier.accessory.js +264 -0
- package/dist/accessories/Dehumidifier.accessory.js.map +1 -0
- package/dist/accessories/EnergyCharacteristics.d.ts +4 -0
- package/dist/accessories/EnergyCharacteristics.d.ts.map +1 -0
- package/dist/accessories/EnergyCharacteristics.js +103 -0
- package/dist/accessories/EnergyCharacteristics.js.map +1 -0
- package/dist/accessories/GarageDoor.accessory.d.ts +30 -0
- package/dist/accessories/GarageDoor.accessory.d.ts.map +1 -0
- package/dist/accessories/GarageDoor.accessory.js +228 -0
- package/dist/accessories/GarageDoor.accessory.js.map +1 -0
- package/dist/accessories/MappedHeatPumpHeater.accessory.d.ts +49 -0
- package/dist/accessories/MappedHeatPumpHeater.accessory.d.ts.map +1 -0
- package/dist/accessories/MappedHeatPumpHeater.accessory.js +292 -0
- package/dist/accessories/MappedHeatPumpHeater.accessory.js.map +1 -0
- package/dist/accessories/MultiOutlet.accessory.d.ts +15 -0
- package/dist/accessories/MultiOutlet.accessory.d.ts.map +1 -0
- package/dist/accessories/MultiOutlet.accessory.js +101 -0
- package/dist/accessories/MultiOutlet.accessory.js.map +1 -0
- package/dist/accessories/OilDiffuser.accessory.d.ts +67 -0
- package/dist/accessories/OilDiffuser.accessory.d.ts.map +1 -0
- package/dist/accessories/OilDiffuser.accessory.js +466 -0
- package/dist/accessories/OilDiffuser.accessory.js.map +1 -0
- package/dist/accessories/Outlet.accessory.d.ts +11 -0
- package/dist/accessories/Outlet.accessory.d.ts.map +1 -0
- package/dist/accessories/Outlet.accessory.js +87 -0
- package/dist/accessories/Outlet.accessory.js.map +1 -0
- package/dist/accessories/RGBTWLight.accessory.d.ts +37 -0
- package/dist/accessories/RGBTWLight.accessory.d.ts.map +1 -0
- package/dist/accessories/RGBTWLight.accessory.js +237 -0
- package/dist/accessories/RGBTWLight.accessory.js.map +1 -0
- package/dist/accessories/RGBTWOutlet.accessory.d.ts +38 -0
- package/dist/accessories/RGBTWOutlet.accessory.d.ts.map +1 -0
- package/dist/accessories/RGBTWOutlet.accessory.js +305 -0
- package/dist/accessories/RGBTWOutlet.accessory.js.map +1 -0
- package/dist/accessories/SimpleBlinds.accessory.d.ts +32 -0
- package/dist/accessories/SimpleBlinds.accessory.d.ts.map +1 -0
- package/dist/accessories/SimpleBlinds.accessory.js +286 -0
- package/dist/accessories/SimpleBlinds.accessory.js.map +1 -0
- package/dist/accessories/SimpleDimmer.accessory.d.ts +14 -0
- package/dist/accessories/SimpleDimmer.accessory.d.ts.map +1 -0
- package/dist/accessories/SimpleDimmer.accessory.js +54 -0
- package/dist/accessories/SimpleDimmer.accessory.js.map +1 -0
- package/dist/accessories/SimpleDimmer2.accessory.d.ts +14 -0
- package/dist/accessories/SimpleDimmer2.accessory.d.ts.map +1 -0
- package/dist/accessories/SimpleDimmer2.accessory.js +53 -0
- package/dist/accessories/SimpleDimmer2.accessory.js.map +1 -0
- package/dist/accessories/SimpleFan.accessory.d.ts +21 -0
- package/dist/accessories/SimpleFan.accessory.d.ts.map +1 -0
- package/dist/accessories/SimpleFan.accessory.js +125 -0
- package/dist/accessories/SimpleFan.accessory.js.map +1 -0
- package/dist/accessories/SimpleFanLight.accessory.d.ts +31 -0
- package/dist/accessories/SimpleFanLight.accessory.d.ts.map +1 -0
- package/dist/accessories/SimpleFanLight.accessory.js +191 -0
- package/dist/accessories/SimpleFanLight.accessory.js.map +1 -0
- package/dist/accessories/SimpleHeater.accessory.d.ts +28 -0
- package/dist/accessories/SimpleHeater.accessory.d.ts.map +1 -0
- package/dist/accessories/SimpleHeater.accessory.js +175 -0
- package/dist/accessories/SimpleHeater.accessory.js.map +1 -0
- package/dist/accessories/SimpleLight.accessory.d.ts +11 -0
- package/dist/accessories/SimpleLight.accessory.d.ts.map +1 -0
- package/dist/accessories/SimpleLight.accessory.js +38 -0
- package/dist/accessories/SimpleLight.accessory.js.map +1 -0
- package/dist/accessories/Switch.accessory.d.ts +15 -0
- package/dist/accessories/Switch.accessory.d.ts.map +1 -0
- package/dist/accessories/Switch.accessory.js +101 -0
- package/dist/accessories/Switch.accessory.js.map +1 -0
- package/dist/accessories/TWLight.accessory.d.ts +19 -0
- package/dist/accessories/TWLight.accessory.d.ts.map +1 -0
- package/dist/accessories/TWLight.accessory.js +88 -0
- package/dist/accessories/TWLight.accessory.js.map +1 -0
- package/dist/accessories/Valve.accessory.d.ts +15 -0
- package/dist/accessories/Valve.accessory.d.ts.map +1 -0
- package/dist/accessories/Valve.accessory.js +144 -0
- package/dist/accessories/Valve.accessory.js.map +1 -0
- package/dist/accessories/index.d.ts +25 -0
- package/dist/accessories/index.d.ts.map +1 -0
- package/dist/accessories/index.js +55 -0
- package/dist/accessories/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol/TuyaAccessory.d.ts +45 -0
- package/dist/protocol/TuyaAccessory.d.ts.map +1 -0
- package/dist/protocol/TuyaAccessory.js +646 -0
- package/dist/protocol/TuyaAccessory.js.map +1 -0
- package/dist/protocol/TuyaDiscovery.d.ts +27 -0
- package/dist/protocol/TuyaDiscovery.d.ts.map +1 -0
- package/dist/protocol/TuyaDiscovery.js +141 -0
- package/dist/protocol/TuyaDiscovery.js.map +1 -0
- package/dist/types.d.ts +105 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +21 -0
- package/dist/types.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1,852 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pluginAlias": "TuyaLocalPlatform",
|
|
3
|
+
"pluginType": "platform",
|
|
4
|
+
"singular": true,
|
|
5
|
+
"headerDisplay": "For setup instructions, device configuration, and troubleshooting, visit the [documentation](https://nubisco.github.io/homebridge-tuya-local-platform/).",
|
|
6
|
+
"footerDisplay": "",
|
|
7
|
+
"schema": {
|
|
8
|
+
"type": "object",
|
|
9
|
+
"properties": {
|
|
10
|
+
"devices": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"orderable": false,
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"properties": {
|
|
16
|
+
"type": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"required": true,
|
|
19
|
+
"default": "null",
|
|
20
|
+
"oneOf": [
|
|
21
|
+
{
|
|
22
|
+
"title": "Please select device type...",
|
|
23
|
+
"enum": ["null"]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "Smart Plug / Barely Smart Power Strip",
|
|
27
|
+
"enum": ["Outlet"]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"title": "Simple Light Bulb / Socket",
|
|
31
|
+
"enum": ["SimpleLight"]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"title": "Tunable White Light Bulb",
|
|
35
|
+
"enum": ["TWLight"]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"title": "White and Color Light Bulb",
|
|
39
|
+
"enum": ["RGBTWLight"]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"title": "Smart Power Strip",
|
|
43
|
+
"enum": ["MultiOutlet"]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"title": "Non-sequential Power Strip",
|
|
47
|
+
"enum": ["CustomMultiOutlet"]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"title": "Air Conditioner",
|
|
51
|
+
"enum": ["AirConditioner"]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"title": "Heat Convector",
|
|
55
|
+
"enum": ["Convector"]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"title": "Simple Dimmer",
|
|
59
|
+
"enum": ["SimpleDimmer"]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"title": "Simple Heater",
|
|
63
|
+
"enum": ["SimpleHeater"]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"title": "Mapped Heat Pump Heater (Virtual Room Target)",
|
|
67
|
+
"enum": ["MappedHeatPumpHeater"]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"title": "Garage Door",
|
|
71
|
+
"enum": ["GarageDoor"]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"title": "Simple Blinds",
|
|
75
|
+
"enum": ["SimpleBlinds"]
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"title": "Smart Plug w/ White and Color Lights",
|
|
79
|
+
"enum": ["RGBTWOutlet"]
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"title": "Simple Fan",
|
|
83
|
+
"enum": ["Fan"]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"title": "Simple Fan Light",
|
|
87
|
+
"enum": ["FanLight"]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"title": "Air Purifier",
|
|
91
|
+
"enum": ["AirPurifier"]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"title": "Dehumidifier",
|
|
95
|
+
"enum": ["Dehumidifier"]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"title": "Circuit Breaker Monitor (Read-Only)",
|
|
99
|
+
"enum": ["CircuitBreakerMonitor"]
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"name": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"description": "Anything you'd like to use to identify this device. You can always change the name from within the Home app later.",
|
|
106
|
+
"required": true,
|
|
107
|
+
"condition": {
|
|
108
|
+
"functionBody": "return model.devices && model.devices[arrayIndices].type !== 'null';"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"id": {
|
|
112
|
+
"type": "string",
|
|
113
|
+
"title": "Tuya ID",
|
|
114
|
+
"description": "If you don't have the Tuya ID or Key, follow the steps in the <a href='https://nubisco.github.io/homebridge-tuya-local-platform/get-local-keys' target='_blank'>Getting Local Keys</a> guide.",
|
|
115
|
+
"required": true,
|
|
116
|
+
"condition": {
|
|
117
|
+
"functionBody": "return model.devices && model.devices[arrayIndices].type !== 'null';"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"key": {
|
|
121
|
+
"title": "Tuya Key",
|
|
122
|
+
"type": "string",
|
|
123
|
+
"required": true,
|
|
124
|
+
"condition": {
|
|
125
|
+
"functionBody": "return model.devices && model.devices[arrayIndices].type !== 'null';"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"ip": {
|
|
129
|
+
"title": "IP Address",
|
|
130
|
+
"type": "string",
|
|
131
|
+
"required": false,
|
|
132
|
+
"condition": {
|
|
133
|
+
"functionBody": "return model.devices && model.devices[arrayIndices].type !== 'null';"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"manufacturer": {
|
|
137
|
+
"type": "string",
|
|
138
|
+
"description": "Anything you'd like to use to help identify this device.",
|
|
139
|
+
"condition": {
|
|
140
|
+
"functionBody": "return model.devices && model.devices[arrayIndices].type !== 'null';"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"model": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"description": "Anything you'd like to use to help identify this device.",
|
|
146
|
+
"condition": {
|
|
147
|
+
"functionBody": "return model.devices && model.devices[arrayIndices].type !== 'null';"
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"voltsId": {
|
|
151
|
+
"type": "integer",
|
|
152
|
+
"placeholder": "9",
|
|
153
|
+
"condition": {
|
|
154
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Outlet','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"ampsId": {
|
|
158
|
+
"type": "integer",
|
|
159
|
+
"placeholder": "8",
|
|
160
|
+
"condition": {
|
|
161
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Outlet','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"wattsId": {
|
|
165
|
+
"type": "integer",
|
|
166
|
+
"placeholder": "7",
|
|
167
|
+
"condition": {
|
|
168
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Outlet','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"voltsDivisor": {
|
|
172
|
+
"type": "integer",
|
|
173
|
+
"placeholder": "10",
|
|
174
|
+
"condition": {
|
|
175
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Outlet','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"ampsDivisor": {
|
|
179
|
+
"type": "integer",
|
|
180
|
+
"placeholder": "1000",
|
|
181
|
+
"condition": {
|
|
182
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Outlet','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
"wattsDivisor": {
|
|
186
|
+
"type": "integer",
|
|
187
|
+
"placeholder": "10",
|
|
188
|
+
"condition": {
|
|
189
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Outlet','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"dpPower": {
|
|
193
|
+
"type": "integer",
|
|
194
|
+
"placeholder": "1",
|
|
195
|
+
"condition": {
|
|
196
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Outlet', 'TWLight', 'RGBTWLight', 'SimpleDimmer','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"dpBrightness": {
|
|
200
|
+
"type": "integer",
|
|
201
|
+
"placeholder": "2",
|
|
202
|
+
"condition": {
|
|
203
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['TWLight', 'RGBTWLight', 'SimpleDimmer','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
"dpColorTemperature": {
|
|
207
|
+
"type": "integer",
|
|
208
|
+
"condition": {
|
|
209
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['TWLight', 'RGBTWLight','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"minWhiteColor": {
|
|
213
|
+
"type": "integer",
|
|
214
|
+
"placeholder": "140",
|
|
215
|
+
"condition": {
|
|
216
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['TWLight', 'RGBTWLight','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"maxWhiteColor": {
|
|
220
|
+
"type": "integer",
|
|
221
|
+
"placeholder": "400",
|
|
222
|
+
"condition": {
|
|
223
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['TWLight', 'RGBTWLight','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"dpMode": {
|
|
227
|
+
"type": "integer",
|
|
228
|
+
"placeholder": "2",
|
|
229
|
+
"condition": {
|
|
230
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['RGBTWLight', 'RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
"dpColor": {
|
|
234
|
+
"type": "integer",
|
|
235
|
+
"placeholder": "5",
|
|
236
|
+
"condition": {
|
|
237
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['RGBTWLight','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
"colorFunction": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"placeholder": "HEXHSB",
|
|
243
|
+
"condition": {
|
|
244
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['RGBTWLight','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"scaleBrightness": {
|
|
248
|
+
"type": "integer",
|
|
249
|
+
"placeholder": "255",
|
|
250
|
+
"condition": {
|
|
251
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['RGBTWLight','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
"scaleWhiteColor": {
|
|
255
|
+
"type": "integer",
|
|
256
|
+
"placeholder": "255",
|
|
257
|
+
"condition": {
|
|
258
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['RGBTWLight','RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
"outletCount": {
|
|
262
|
+
"type": "integer",
|
|
263
|
+
"placeholder": "5",
|
|
264
|
+
"condition": {
|
|
265
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MultiOutlet'].includes(model.devices[arrayIndices].type);"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"outlets": {
|
|
269
|
+
"type": "array",
|
|
270
|
+
"orderable": false,
|
|
271
|
+
"items": {
|
|
272
|
+
"type": "object",
|
|
273
|
+
"properties": {
|
|
274
|
+
"name": {
|
|
275
|
+
"type": "string"
|
|
276
|
+
},
|
|
277
|
+
"dp": {
|
|
278
|
+
"type": "integer"
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
"condition": {
|
|
283
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CustomMultiOutlet'].includes(model.devices[arrayIndices].type);"
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"noCool": {
|
|
287
|
+
"type": "boolean",
|
|
288
|
+
"condition": {
|
|
289
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner'].includes(model.devices[arrayIndices].type);"
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
"noHeat": {
|
|
293
|
+
"type": "boolean",
|
|
294
|
+
"condition": {
|
|
295
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner'].includes(model.devices[arrayIndices].type);"
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"cmdCool": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"placeholder": "COOL",
|
|
301
|
+
"condition": {
|
|
302
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner'].includes(model.devices[arrayIndices].type);"
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
"cmdHeat": {
|
|
306
|
+
"type": "string",
|
|
307
|
+
"placeholder": "HEAT",
|
|
308
|
+
"condition": {
|
|
309
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner'].includes(model.devices[arrayIndices].type);"
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"noSwing": {
|
|
313
|
+
"type": "boolean",
|
|
314
|
+
"condition": {
|
|
315
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner'].includes(model.devices[arrayIndices].type);"
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
"minTemperature": {
|
|
319
|
+
"type": "integer",
|
|
320
|
+
"placeholder": "15",
|
|
321
|
+
"condition": {
|
|
322
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner','Convector', 'SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
"maxTemperature": {
|
|
326
|
+
"type": "integer",
|
|
327
|
+
"placeholder": "40",
|
|
328
|
+
"condition": {
|
|
329
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner','Convector', 'SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"minTemperatureSteps": {
|
|
333
|
+
"type": "integer",
|
|
334
|
+
"placeholder": "1",
|
|
335
|
+
"condition": {
|
|
336
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner'].includes(model.devices[arrayIndices].type);"
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
"dpCurrentTemperature": {
|
|
340
|
+
"type": "integer",
|
|
341
|
+
"placeholder": "110",
|
|
342
|
+
"title": "Current Temperature DP",
|
|
343
|
+
"description": "Data point for current temperature reading. For dehumidifiers, use the temperature DP, not humidity.",
|
|
344
|
+
"condition": {
|
|
345
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner'].includes(model.devices[arrayIndices].type);"
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
"temperatureDivisor": {
|
|
349
|
+
"type": "integer",
|
|
350
|
+
"placeholder": "1",
|
|
351
|
+
"title": "Current Temperature Divisor",
|
|
352
|
+
"description": "Divisor for current temperature. Use 1 if temperature is already in degrees, 10 if in tenths of degree.",
|
|
353
|
+
"condition": {
|
|
354
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['AirConditioner'].includes(model.devices[arrayIndices].type);"
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"dpActive": {
|
|
358
|
+
"type": "integer",
|
|
359
|
+
"placeholder": "7",
|
|
360
|
+
"condition": {
|
|
361
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector', 'SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
"dpDesiredTemperature": {
|
|
365
|
+
"type": "integer",
|
|
366
|
+
"placeholder": "2",
|
|
367
|
+
"condition": {
|
|
368
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector', 'SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
"dpCurrentTemperature": {
|
|
372
|
+
"type": "integer",
|
|
373
|
+
"placeholder": "3",
|
|
374
|
+
"condition": {
|
|
375
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector', 'SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
"dpRotationSpeed": {
|
|
379
|
+
"type": "integer",
|
|
380
|
+
"placeholder": "4",
|
|
381
|
+
"condition": {
|
|
382
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector'].includes(model.devices[arrayIndices].type);"
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
"maxSpeed": {
|
|
386
|
+
"type": "integer",
|
|
387
|
+
"placeholder": "3",
|
|
388
|
+
"condition": {
|
|
389
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Fan', 'FanLight'].includes(model.devices[arrayIndices].type);"
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
"fanDefaultSpeed": {
|
|
393
|
+
"type": "integer",
|
|
394
|
+
"placeholder": "1",
|
|
395
|
+
"condition": {
|
|
396
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Fan', 'FanLight'].includes(model.devices[arrayIndices].type);"
|
|
397
|
+
}
|
|
398
|
+
},
|
|
399
|
+
"dpChildLock": {
|
|
400
|
+
"type": "integer",
|
|
401
|
+
"placeholder": "6",
|
|
402
|
+
"condition": {
|
|
403
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector'].includes(model.devices[arrayIndices].type);"
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
"dpTemperatureDisplayUnits": {
|
|
407
|
+
"type": "integer",
|
|
408
|
+
"placeholder": "19",
|
|
409
|
+
"condition": {
|
|
410
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector'].includes(model.devices[arrayIndices].type);"
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
"cmdLow": {
|
|
414
|
+
"type": "string",
|
|
415
|
+
"placeholder": "Low",
|
|
416
|
+
"condition": {
|
|
417
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector'].includes(model.devices[arrayIndices].type);"
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
"cmdHigh": {
|
|
421
|
+
"type": "string",
|
|
422
|
+
"placeholder": "High",
|
|
423
|
+
"condition": {
|
|
424
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector'].includes(model.devices[arrayIndices].type);"
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
"noChildLock": {
|
|
428
|
+
"type": "boolean",
|
|
429
|
+
"condition": {
|
|
430
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector'].includes(model.devices[arrayIndices].type);"
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
"noTemperatureUnit": {
|
|
434
|
+
"type": "boolean",
|
|
435
|
+
"condition": {
|
|
436
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['Convector'].includes(model.devices[arrayIndices].type);"
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
"temperatureDivisor": {
|
|
440
|
+
"type": "integer",
|
|
441
|
+
"placeholder": "1",
|
|
442
|
+
"condition": {
|
|
443
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
"thresholdTemperatureDivisor": {
|
|
447
|
+
"type": "integer",
|
|
448
|
+
"placeholder": "1",
|
|
449
|
+
"condition": {
|
|
450
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
451
|
+
}
|
|
452
|
+
},
|
|
453
|
+
"targetTemperatureDivisor": {
|
|
454
|
+
"type": "integer",
|
|
455
|
+
"placeholder": "1",
|
|
456
|
+
"condition": {
|
|
457
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
"dpAmbientTemperature": {
|
|
461
|
+
"type": "integer",
|
|
462
|
+
"placeholder": "21",
|
|
463
|
+
"title": "Ambient Temperature DP",
|
|
464
|
+
"description": "Optional data point for ambient/room temperature. If set, creates a separate temperature sensor accessory.",
|
|
465
|
+
"condition": {
|
|
466
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
"ambientTemperatureDivisor": {
|
|
470
|
+
"type": "integer",
|
|
471
|
+
"placeholder": "10",
|
|
472
|
+
"title": "Ambient Temperature Divisor",
|
|
473
|
+
"description": "Divisor for ambient temperature. Use 1 if temperature is already in degrees, 10 if in tenths of degree.",
|
|
474
|
+
"condition": {
|
|
475
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
"ambientTemperatureName": {
|
|
479
|
+
"type": "string",
|
|
480
|
+
"placeholder": "Heating Ambient",
|
|
481
|
+
"title": "Ambient Temperature Sensor Name",
|
|
482
|
+
"description": "Optional custom name for the ambient temperature sensor. Defaults to device name + ' Ambient'.",
|
|
483
|
+
"condition": {
|
|
484
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleHeater'].includes(model.devices[arrayIndices].type);"
|
|
485
|
+
}
|
|
486
|
+
},
|
|
487
|
+
"dpReturnTemperature": {
|
|
488
|
+
"type": "integer",
|
|
489
|
+
"placeholder": "25",
|
|
490
|
+
"title": "Return/Tank Temperature DP",
|
|
491
|
+
"description": "Data point for tank/return water temperature (shown as current temperature in HomeKit).",
|
|
492
|
+
"condition": {
|
|
493
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
"returnTemperatureDivisor": {
|
|
497
|
+
"type": "integer",
|
|
498
|
+
"placeholder": "10",
|
|
499
|
+
"title": "Return Temperature Divisor",
|
|
500
|
+
"description": "Divisor for return temperature. Use 1 if temperature is in degrees, 10 if in tenths.",
|
|
501
|
+
"condition": {
|
|
502
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
"dpWaterTarget": {
|
|
506
|
+
"type": "integer",
|
|
507
|
+
"placeholder": "117",
|
|
508
|
+
"title": "Water Target Temperature DP",
|
|
509
|
+
"description": "Data point to write the calculated water target temperature to.",
|
|
510
|
+
"condition": {
|
|
511
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
"waterTargetDivisor": {
|
|
515
|
+
"type": "integer",
|
|
516
|
+
"placeholder": "1",
|
|
517
|
+
"title": "Water Target Divisor",
|
|
518
|
+
"description": "Multiplier when writing water target. Use 1 for degrees, 10 for tenths.",
|
|
519
|
+
"condition": {
|
|
520
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
"dpOutsideTemperature": {
|
|
524
|
+
"type": "integer",
|
|
525
|
+
"placeholder": "21",
|
|
526
|
+
"title": "Outside Air Temperature DP",
|
|
527
|
+
"description": "Optional data point for outside air temperature sensor.",
|
|
528
|
+
"condition": {
|
|
529
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
530
|
+
}
|
|
531
|
+
},
|
|
532
|
+
"outsideTemperatureDivisor": {
|
|
533
|
+
"type": "integer",
|
|
534
|
+
"placeholder": "10",
|
|
535
|
+
"title": "Outside Temperature Divisor",
|
|
536
|
+
"description": "Divisor for outside temperature.",
|
|
537
|
+
"condition": {
|
|
538
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
539
|
+
}
|
|
540
|
+
},
|
|
541
|
+
"dpFlowTemperature": {
|
|
542
|
+
"type": "integer",
|
|
543
|
+
"placeholder": "24",
|
|
544
|
+
"title": "Flow Temperature DP",
|
|
545
|
+
"description": "Optional data point for flow/output water temperature sensor.",
|
|
546
|
+
"condition": {
|
|
547
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
548
|
+
}
|
|
549
|
+
},
|
|
550
|
+
"flowTemperatureDivisor": {
|
|
551
|
+
"type": "integer",
|
|
552
|
+
"placeholder": "10",
|
|
553
|
+
"title": "Flow Temperature Divisor",
|
|
554
|
+
"description": "Divisor for flow temperature.",
|
|
555
|
+
"condition": {
|
|
556
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
557
|
+
}
|
|
558
|
+
},
|
|
559
|
+
"roomTargetMin": {
|
|
560
|
+
"type": "number",
|
|
561
|
+
"placeholder": "18",
|
|
562
|
+
"title": "Minimum Room Target Temperature",
|
|
563
|
+
"description": "Minimum room temperature that can be set in HomeKit.",
|
|
564
|
+
"condition": {
|
|
565
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
566
|
+
}
|
|
567
|
+
},
|
|
568
|
+
"roomTargetMax": {
|
|
569
|
+
"type": "number",
|
|
570
|
+
"placeholder": "24",
|
|
571
|
+
"title": "Maximum Room Target Temperature",
|
|
572
|
+
"description": "Maximum room temperature that can be set in HomeKit.",
|
|
573
|
+
"condition": {
|
|
574
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
"waterTargetMin": {
|
|
578
|
+
"type": "number",
|
|
579
|
+
"placeholder": "35",
|
|
580
|
+
"title": "Minimum Water Target Temperature",
|
|
581
|
+
"description": "Minimum water temperature that will be sent to the device.",
|
|
582
|
+
"condition": {
|
|
583
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
584
|
+
}
|
|
585
|
+
},
|
|
586
|
+
"waterTargetMax": {
|
|
587
|
+
"type": "number",
|
|
588
|
+
"placeholder": "55",
|
|
589
|
+
"title": "Maximum Water Target Temperature",
|
|
590
|
+
"description": "Maximum water temperature that will be sent to the device.",
|
|
591
|
+
"condition": {
|
|
592
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
593
|
+
}
|
|
594
|
+
},
|
|
595
|
+
"defaultRoomTarget": {
|
|
596
|
+
"type": "number",
|
|
597
|
+
"placeholder": "20",
|
|
598
|
+
"title": "Default Room Target Temperature",
|
|
599
|
+
"description": "Default room target temperature on first use.",
|
|
600
|
+
"condition": {
|
|
601
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"roomToWaterMap": {
|
|
605
|
+
"type": "array",
|
|
606
|
+
"title": "Room to Water Temperature Mapping",
|
|
607
|
+
"description": "Map of desired room temperatures to required water temperatures. Plugin will interpolate between points.",
|
|
608
|
+
"items": {
|
|
609
|
+
"type": "object",
|
|
610
|
+
"properties": {
|
|
611
|
+
"room": {
|
|
612
|
+
"type": "number",
|
|
613
|
+
"title": "Room Temperature"
|
|
614
|
+
},
|
|
615
|
+
"water": {
|
|
616
|
+
"type": "number",
|
|
617
|
+
"title": "Water Temperature"
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
"condition": {
|
|
622
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
623
|
+
}
|
|
624
|
+
},
|
|
625
|
+
"exposeOutsideSensor": {
|
|
626
|
+
"type": "boolean",
|
|
627
|
+
"title": "Expose Outside Temperature Sensor",
|
|
628
|
+
"description": "Create a separate temperature sensor for outside air temperature.",
|
|
629
|
+
"condition": {
|
|
630
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
631
|
+
}
|
|
632
|
+
},
|
|
633
|
+
"outsideSensorName": {
|
|
634
|
+
"type": "string",
|
|
635
|
+
"placeholder": "Heating Outside",
|
|
636
|
+
"title": "Outside Sensor Name",
|
|
637
|
+
"description": "Custom name for outside temperature sensor.",
|
|
638
|
+
"condition": {
|
|
639
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
640
|
+
}
|
|
641
|
+
},
|
|
642
|
+
"exposeFlowSensor": {
|
|
643
|
+
"type": "boolean",
|
|
644
|
+
"title": "Expose Flow Temperature Sensor",
|
|
645
|
+
"description": "Create a separate temperature sensor for flow/output water temperature.",
|
|
646
|
+
"condition": {
|
|
647
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
648
|
+
}
|
|
649
|
+
},
|
|
650
|
+
"flowSensorName": {
|
|
651
|
+
"type": "string",
|
|
652
|
+
"placeholder": "Heating Flow",
|
|
653
|
+
"title": "Flow Sensor Name",
|
|
654
|
+
"description": "Custom name for flow temperature sensor.",
|
|
655
|
+
"condition": {
|
|
656
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
657
|
+
}
|
|
658
|
+
},
|
|
659
|
+
"exposeReturnSensor": {
|
|
660
|
+
"type": "boolean",
|
|
661
|
+
"title": "Expose Return Temperature Sensor",
|
|
662
|
+
"description": "Create a separate temperature sensor for tank/return water temperature (in addition to main tile).",
|
|
663
|
+
"condition": {
|
|
664
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
665
|
+
}
|
|
666
|
+
},
|
|
667
|
+
"returnSensorName": {
|
|
668
|
+
"type": "string",
|
|
669
|
+
"placeholder": "Heating Return",
|
|
670
|
+
"title": "Return Sensor Name",
|
|
671
|
+
"description": "Custom name for return temperature sensor.",
|
|
672
|
+
"condition": {
|
|
673
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['MappedHeatPumpHeater'].includes(model.devices[arrayIndices].type);"
|
|
674
|
+
}
|
|
675
|
+
},
|
|
676
|
+
"dpTemperature": {
|
|
677
|
+
"type": "integer",
|
|
678
|
+
"placeholder": "103",
|
|
679
|
+
"title": "DP: Device Temperature",
|
|
680
|
+
"description": "Data point for circuit breaker temperature sensor (default: 103).",
|
|
681
|
+
"condition": {
|
|
682
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
683
|
+
}
|
|
684
|
+
},
|
|
685
|
+
"dpLeakageCurrent": {
|
|
686
|
+
"type": "integer",
|
|
687
|
+
"placeholder": "15",
|
|
688
|
+
"title": "DP: Leakage Current",
|
|
689
|
+
"description": "Data point for leakage current in mA (default: 15).",
|
|
690
|
+
"condition": {
|
|
691
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
692
|
+
}
|
|
693
|
+
},
|
|
694
|
+
"dpFault": {
|
|
695
|
+
"type": "integer",
|
|
696
|
+
"placeholder": "9",
|
|
697
|
+
"title": "DP: Fault Bitmap",
|
|
698
|
+
"description": "Data point for fault alarm bitmap (default: 9). Non-zero = fault active.",
|
|
699
|
+
"condition": {
|
|
700
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
701
|
+
}
|
|
702
|
+
},
|
|
703
|
+
"dpTotalForwardEnergy": {
|
|
704
|
+
"type": "integer",
|
|
705
|
+
"placeholder": "1",
|
|
706
|
+
"title": "DP: Total Energy",
|
|
707
|
+
"description": "Data point for total forward energy (default: 1).",
|
|
708
|
+
"condition": {
|
|
709
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
"dpPhaseA": {
|
|
713
|
+
"type": "integer",
|
|
714
|
+
"placeholder": "6",
|
|
715
|
+
"title": "DP: Phase Data",
|
|
716
|
+
"description": "Data point for raw phase telemetry (voltage/current/power) (default: 6).",
|
|
717
|
+
"condition": {
|
|
718
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
719
|
+
}
|
|
720
|
+
},
|
|
721
|
+
"dpSwitch": {
|
|
722
|
+
"type": "integer",
|
|
723
|
+
"placeholder": "16",
|
|
724
|
+
"title": "DP: Switch State (READ-ONLY)",
|
|
725
|
+
"description": "Data point for breaker switch state. ⚠️ This is logged but NEVER exposed to HomeKit for safety (default: 16).",
|
|
726
|
+
"condition": {
|
|
727
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
728
|
+
}
|
|
729
|
+
},
|
|
730
|
+
"temperatureDivisor": {
|
|
731
|
+
"type": "integer",
|
|
732
|
+
"placeholder": "1",
|
|
733
|
+
"title": "Temperature Divisor",
|
|
734
|
+
"description": "Divisor for temperature value (default: 1).",
|
|
735
|
+
"condition": {
|
|
736
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
737
|
+
}
|
|
738
|
+
},
|
|
739
|
+
"energyDivisor": {
|
|
740
|
+
"type": "integer",
|
|
741
|
+
"placeholder": "100",
|
|
742
|
+
"title": "Energy Divisor",
|
|
743
|
+
"description": "Divisor for energy value to convert to kWh (default: 100 for scale-2).",
|
|
744
|
+
"condition": {
|
|
745
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
"leakageThreshold": {
|
|
749
|
+
"type": "integer",
|
|
750
|
+
"placeholder": "30",
|
|
751
|
+
"title": "Leakage Current Threshold (mA)",
|
|
752
|
+
"description": "Threshold in mA for leakage detection warning (default: 30).",
|
|
753
|
+
"condition": {
|
|
754
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
755
|
+
}
|
|
756
|
+
},
|
|
757
|
+
"exposeTemperatureSensor": {
|
|
758
|
+
"type": "boolean",
|
|
759
|
+
"title": "Expose Temperature Sensor",
|
|
760
|
+
"description": "Show device temperature sensor in HomeKit (default: true).",
|
|
761
|
+
"condition": {
|
|
762
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
763
|
+
}
|
|
764
|
+
},
|
|
765
|
+
"exposeLeakSensor": {
|
|
766
|
+
"type": "boolean",
|
|
767
|
+
"title": "Expose Leak Sensor",
|
|
768
|
+
"description": "Show leakage current warning in HomeKit (default: true).",
|
|
769
|
+
"condition": {
|
|
770
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
771
|
+
}
|
|
772
|
+
},
|
|
773
|
+
"exposeFaultSensor": {
|
|
774
|
+
"type": "boolean",
|
|
775
|
+
"title": "Expose Fault Sensor",
|
|
776
|
+
"description": "Show fault alarm sensor in HomeKit (default: true).",
|
|
777
|
+
"condition": {
|
|
778
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
779
|
+
}
|
|
780
|
+
},
|
|
781
|
+
"leakSensorName": {
|
|
782
|
+
"type": "string",
|
|
783
|
+
"placeholder": "Energy meter Leakage",
|
|
784
|
+
"title": "Leak Sensor Name",
|
|
785
|
+
"description": "Custom name for leakage current sensor.",
|
|
786
|
+
"condition": {
|
|
787
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
788
|
+
}
|
|
789
|
+
},
|
|
790
|
+
"faultSensorName": {
|
|
791
|
+
"type": "string",
|
|
792
|
+
"placeholder": "Energy meter Fault",
|
|
793
|
+
"title": "Fault Sensor Name",
|
|
794
|
+
"description": "Custom name for fault alarm sensor.",
|
|
795
|
+
"condition": {
|
|
796
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['CircuitBreakerMonitor'].includes(model.devices[arrayIndices].type);"
|
|
797
|
+
}
|
|
798
|
+
},
|
|
799
|
+
"dpAction": {
|
|
800
|
+
"type": "integer",
|
|
801
|
+
"placeholder": "1",
|
|
802
|
+
"condition": {
|
|
803
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['GarageDoor'].includes(model.devices[arrayIndices].type);"
|
|
804
|
+
}
|
|
805
|
+
},
|
|
806
|
+
"dpStatus": {
|
|
807
|
+
"type": "integer",
|
|
808
|
+
"placeholder": "2",
|
|
809
|
+
"condition": {
|
|
810
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['GarageDoor'].includes(model.devices[arrayIndices].type);"
|
|
811
|
+
}
|
|
812
|
+
},
|
|
813
|
+
"flipState": {
|
|
814
|
+
"type": "boolean",
|
|
815
|
+
"condition": {
|
|
816
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['GarageDoor','SimpleBlinds'].includes(model.devices[arrayIndices].type);"
|
|
817
|
+
}
|
|
818
|
+
},
|
|
819
|
+
"timeToOpen": {
|
|
820
|
+
"type": "integer",
|
|
821
|
+
"placeholder": "45",
|
|
822
|
+
"condition": {
|
|
823
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleBlinds'].includes(model.devices[arrayIndices].type);"
|
|
824
|
+
}
|
|
825
|
+
},
|
|
826
|
+
"timeToTighten": {
|
|
827
|
+
"type": "integer",
|
|
828
|
+
"placeholder": "0",
|
|
829
|
+
"condition": {
|
|
830
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleBlinds'].includes(model.devices[arrayIndices].type);"
|
|
831
|
+
}
|
|
832
|
+
},
|
|
833
|
+
"dpLight": {
|
|
834
|
+
"type": "integer",
|
|
835
|
+
"placeholder": 1,
|
|
836
|
+
"condition": {
|
|
837
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['RGBTWOutlet'].includes(model.devices[arrayIndices].type);"
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
"dpBlindType": {
|
|
841
|
+
"type": "integer",
|
|
842
|
+
"placeholder": 1,
|
|
843
|
+
"condition": {
|
|
844
|
+
"functionBody": "return model.devices && model.devices[arrayIndices] && ['SimpleBlinds'].includes(model.devices[arrayIndices].type);"
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
}
|