homebridge-plugin-klares4 1.1.7-beta1
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/CHANGELOG.md +238 -0
- package/LICENSE +21 -0
- package/README.md +495 -0
- package/config.schema.json +801 -0
- package/dist/accessories/cover-accessory.d.ts +26 -0
- package/dist/accessories/cover-accessory.d.ts.map +1 -0
- package/dist/accessories/cover-accessory.js +134 -0
- package/dist/accessories/cover-accessory.js.map +1 -0
- package/dist/accessories/gate-accessory.d.ts +20 -0
- package/dist/accessories/gate-accessory.d.ts.map +1 -0
- package/dist/accessories/gate-accessory.js +70 -0
- package/dist/accessories/gate-accessory.js.map +1 -0
- package/dist/accessories/light-accessory.d.ts +20 -0
- package/dist/accessories/light-accessory.d.ts.map +1 -0
- package/dist/accessories/light-accessory.js +81 -0
- package/dist/accessories/light-accessory.js.map +1 -0
- package/dist/accessories/scenario-accessory.d.ts +17 -0
- package/dist/accessories/scenario-accessory.d.ts.map +1 -0
- package/dist/accessories/scenario-accessory.js +59 -0
- package/dist/accessories/scenario-accessory.js.map +1 -0
- package/dist/accessories/sensor-accessory.d.ts +28 -0
- package/dist/accessories/sensor-accessory.d.ts.map +1 -0
- package/dist/accessories/sensor-accessory.js +141 -0
- package/dist/accessories/sensor-accessory.js.map +1 -0
- package/dist/accessories/thermostat-accessory.d.ts +25 -0
- package/dist/accessories/thermostat-accessory.d.ts.map +1 -0
- package/dist/accessories/thermostat-accessory.js +228 -0
- package/dist/accessories/thermostat-accessory.js.map +1 -0
- package/dist/accessories/zone-accessory.d.ts +22 -0
- package/dist/accessories/zone-accessory.d.ts.map +1 -0
- package/dist/accessories/zone-accessory.js +99 -0
- package/dist/accessories/zone-accessory.js.map +1 -0
- package/dist/debug-capture.d.ts +45 -0
- package/dist/debug-capture.d.ts.map +1 -0
- package/dist/debug-capture.js +294 -0
- package/dist/debug-capture.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/log-levels.d.ts +28 -0
- package/dist/log-levels.d.ts.map +1 -0
- package/dist/log-levels.js +48 -0
- package/dist/log-levels.js.map +1 -0
- package/dist/mqtt-bridge.d.ts +33 -0
- package/dist/mqtt-bridge.d.ts.map +1 -0
- package/dist/mqtt-bridge.js +397 -0
- package/dist/mqtt-bridge.js.map +1 -0
- package/dist/platform.d.ts +90 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +517 -0
- package/dist/platform.js.map +1 -0
- package/dist/settings.d.ts +3 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +6 -0
- package/dist/settings.js.map +1 -0
- package/dist/types.d.ts +284 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +81 -0
- package/dist/types.js.map +1 -0
- package/dist/websocket-client.d.ts +69 -0
- package/dist/websocket-client.d.ts.map +1 -0
- package/dist/websocket-client.js +1068 -0
- package/dist/websocket-client.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,801 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pluginAlias": "Lares4Complete",
|
|
3
|
+
"pluginType": "platform",
|
|
4
|
+
"singular": true,
|
|
5
|
+
"customUi": false,
|
|
6
|
+
"headerDisplay": "<div class='text-center mb-3'><h3>klares4 - Ksenia Lares4 per Homebridge</h3><p class='text-muted'>Integrazione professionale per sistemi di sicurezza Ksenia Lares 4.0</p></div><div class='alert alert-info'><strong>Prima di iniziare, verifica che:</strong><ul class='mb-0 mt-2'><li>La centrale Lares4 sia raggiungibile in rete locale</li><li>L'accesso WebSocket sia abilitato sulla centrale</li><li>Tu disponga di un PIN utente</li></ul></div>",
|
|
7
|
+
"footerDisplay": "<div class='text-center mt-4 pt-3 border-top'><p class='text-muted mb-2'>Versione 1.1.6 • Sviluppato da Paolo Trivisonno</p><a href='https://github.com/paolo-trivi/homebridge-plugin-klares4' target='_blank' class='btn btn-sm btn-outline-primary mr-2'>Documentazione</a> <a href='https://github.com/paolo-trivi/homebridge-plugin-klares4/issues' target='_blank' class='btn btn-sm btn-outline-secondary mr-2'>Segnala Bug</a> <a href='https://github.com/sponsors/paolo-trivi' target='_blank' class='btn btn-sm btn-outline-success'>Supporta</a></div>",
|
|
8
|
+
"schema": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"name": {
|
|
12
|
+
"title": "Nome Piattaforma",
|
|
13
|
+
"type": "string",
|
|
14
|
+
"default": "Lares4",
|
|
15
|
+
"description": "Nome identificativo che apparirà nei log di Homebridge",
|
|
16
|
+
"minLength": 1,
|
|
17
|
+
"maxLength": 50
|
|
18
|
+
},
|
|
19
|
+
"ip": {
|
|
20
|
+
"title": "Indirizzo IP Centrale",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"format": "ipv4",
|
|
23
|
+
"placeholder": "192.168.1.x",
|
|
24
|
+
"description": "Indirizzo IP locale della centrale Ksenia Lares4",
|
|
25
|
+
"pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
|
|
26
|
+
},
|
|
27
|
+
"port": {
|
|
28
|
+
"title": "Porta WebSocket",
|
|
29
|
+
"type": "integer",
|
|
30
|
+
"default": 443,
|
|
31
|
+
"minimum": 1,
|
|
32
|
+
"maximum": 65535,
|
|
33
|
+
"description": "Porta di comunicazione (443 per HTTPS, 80 per HTTP)"
|
|
34
|
+
},
|
|
35
|
+
"https": {
|
|
36
|
+
"title": "Connessione Sicura (HTTPS)",
|
|
37
|
+
"type": "boolean",
|
|
38
|
+
"default": true,
|
|
39
|
+
"description": "Usa connessione crittografata - raccomandata per la sicurezza"
|
|
40
|
+
},
|
|
41
|
+
"sender": {
|
|
42
|
+
"title": "Identificativo Client",
|
|
43
|
+
"type": "string",
|
|
44
|
+
"default": "homebridge",
|
|
45
|
+
"placeholder": "homebridge",
|
|
46
|
+
"description": "Nome univoco per identificare questa connessione sulla centrale",
|
|
47
|
+
"pattern": "^[a-zA-Z0-9_-]+$",
|
|
48
|
+
"minLength": 1,
|
|
49
|
+
"maxLength": 32
|
|
50
|
+
},
|
|
51
|
+
"pin": {
|
|
52
|
+
"title": "PIN di Accesso",
|
|
53
|
+
"type": "string",
|
|
54
|
+
"placeholder": "123456",
|
|
55
|
+
"description": "PIN utente abilitato all'uso delle API WebSocket sulla centrale",
|
|
56
|
+
"pattern": "^[0-9]+$",
|
|
57
|
+
"minLength": 4,
|
|
58
|
+
"maxLength": 8
|
|
59
|
+
},
|
|
60
|
+
"showAdvanced": {
|
|
61
|
+
"title": "Mostra Configurazione Avanzata",
|
|
62
|
+
"type": "boolean",
|
|
63
|
+
"default": false,
|
|
64
|
+
"description": "Abilita per personalizzare timing, heartbeat e parametri di rete"
|
|
65
|
+
},
|
|
66
|
+
"debug": {
|
|
67
|
+
"title": "Modalita Debug (Legacy)",
|
|
68
|
+
"type": "boolean",
|
|
69
|
+
"default": false,
|
|
70
|
+
"description": "Deprecated: usa logLevel invece. Attiva logging dettagliato"
|
|
71
|
+
},
|
|
72
|
+
"logLevel": {
|
|
73
|
+
"title": "Livello Log",
|
|
74
|
+
"type": "integer",
|
|
75
|
+
"default": 1,
|
|
76
|
+
"oneOf": [
|
|
77
|
+
{
|
|
78
|
+
"title": "0 - Minimal (solo errori e allarmi)",
|
|
79
|
+
"const": 0
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"title": "1 - Normal (funzionamento standard)",
|
|
83
|
+
"const": 1
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"title": "2 - Debug (dettagliato per diagnostica)",
|
|
87
|
+
"const": 2
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
"description": "Controlla la quantita di messaggi nei log"
|
|
91
|
+
},
|
|
92
|
+
"maxSeconds": {
|
|
93
|
+
"title": "Tempo Massimo Movimento Tapparelle",
|
|
94
|
+
"type": "integer",
|
|
95
|
+
"default": 30,
|
|
96
|
+
"minimum": 5,
|
|
97
|
+
"maximum": 300,
|
|
98
|
+
"description": "Secondi necessari per apertura/chiusura completa delle tapparelle"
|
|
99
|
+
},
|
|
100
|
+
"reconnectInterval": {
|
|
101
|
+
"title": "Intervallo Base Riconnessione",
|
|
102
|
+
"type": "integer",
|
|
103
|
+
"default": 5000,
|
|
104
|
+
"minimum": 1000,
|
|
105
|
+
"maximum": 60000,
|
|
106
|
+
"description": "Millisecondi prima del primo tentativo di riconnessione (raddoppia ad ogni tentativo)"
|
|
107
|
+
},
|
|
108
|
+
"heartbeatInterval": {
|
|
109
|
+
"title": "Intervallo Heartbeat",
|
|
110
|
+
"type": "integer",
|
|
111
|
+
"default": 30000,
|
|
112
|
+
"minimum": 10000,
|
|
113
|
+
"maximum": 300000,
|
|
114
|
+
"description": "Millisecondi tra i ping di keep-alive per verificare la connessione"
|
|
115
|
+
},
|
|
116
|
+
"coverStepSize": {
|
|
117
|
+
"title": "Step Animazione Tapparelle",
|
|
118
|
+
"type": "integer",
|
|
119
|
+
"default": 5,
|
|
120
|
+
"minimum": 1,
|
|
121
|
+
"maximum": 20,
|
|
122
|
+
"description": "Percentuale di movimento per ogni step di animazione in HomeKit"
|
|
123
|
+
},
|
|
124
|
+
"scenarioAutoOffDelay": {
|
|
125
|
+
"title": "Ritardo Auto-Off Scenari",
|
|
126
|
+
"type": "integer",
|
|
127
|
+
"default": 500,
|
|
128
|
+
"minimum": 100,
|
|
129
|
+
"maximum": 5000,
|
|
130
|
+
"description": "Millisecondi prima che uno scenario torni automaticamente a OFF"
|
|
131
|
+
},
|
|
132
|
+
"devicesSummaryDelay": {
|
|
133
|
+
"title": "Ritardo Sommario Dispositivi",
|
|
134
|
+
"type": "integer",
|
|
135
|
+
"default": 2000,
|
|
136
|
+
"minimum": 500,
|
|
137
|
+
"maximum": 10000,
|
|
138
|
+
"description": "Millisecondi di attesa prima di stampare il sommario dispositivi nei log"
|
|
139
|
+
},
|
|
140
|
+
"excludeZones": {
|
|
141
|
+
"title": "Zone da Escludere",
|
|
142
|
+
"type": "array",
|
|
143
|
+
"items": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"pattern": "^[0-9]+$"
|
|
146
|
+
},
|
|
147
|
+
"default": []
|
|
148
|
+
},
|
|
149
|
+
"excludeOutputs": {
|
|
150
|
+
"title": "Output da Escludere",
|
|
151
|
+
"type": "array",
|
|
152
|
+
"items": {
|
|
153
|
+
"type": "string",
|
|
154
|
+
"pattern": "^[0-9]+$"
|
|
155
|
+
},
|
|
156
|
+
"default": []
|
|
157
|
+
},
|
|
158
|
+
"excludeSensors": {
|
|
159
|
+
"title": "Sensori da Escludere",
|
|
160
|
+
"type": "array",
|
|
161
|
+
"items": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"pattern": "^[0-9]+$"
|
|
164
|
+
},
|
|
165
|
+
"default": []
|
|
166
|
+
},
|
|
167
|
+
"excludeScenarios": {
|
|
168
|
+
"title": "Scenari da Escludere",
|
|
169
|
+
"type": "array",
|
|
170
|
+
"items": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"pattern": "^[0-9]+$"
|
|
173
|
+
},
|
|
174
|
+
"default": []
|
|
175
|
+
},
|
|
176
|
+
"customNames": {
|
|
177
|
+
"type": "object",
|
|
178
|
+
"properties": {
|
|
179
|
+
"zones": {
|
|
180
|
+
"type": "object",
|
|
181
|
+
"additionalProperties": {
|
|
182
|
+
"type": "string"
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
"outputs": {
|
|
186
|
+
"type": "object",
|
|
187
|
+
"additionalProperties": {
|
|
188
|
+
"type": "string"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"sensors": {
|
|
192
|
+
"type": "object",
|
|
193
|
+
"additionalProperties": {
|
|
194
|
+
"type": "string"
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
"scenarios": {
|
|
198
|
+
"type": "object",
|
|
199
|
+
"additionalProperties": {
|
|
200
|
+
"type": "string"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"temperatureDefaults": {
|
|
206
|
+
"type": "object",
|
|
207
|
+
"properties": {
|
|
208
|
+
"target": {
|
|
209
|
+
"title": "Temperatura Target Default",
|
|
210
|
+
"type": "number",
|
|
211
|
+
"default": 21,
|
|
212
|
+
"minimum": 5,
|
|
213
|
+
"maximum": 35
|
|
214
|
+
},
|
|
215
|
+
"min": {
|
|
216
|
+
"title": "Temperatura Minima",
|
|
217
|
+
"type": "number",
|
|
218
|
+
"default": 10,
|
|
219
|
+
"minimum": 5,
|
|
220
|
+
"maximum": 20
|
|
221
|
+
},
|
|
222
|
+
"max": {
|
|
223
|
+
"title": "Temperatura Massima",
|
|
224
|
+
"type": "number",
|
|
225
|
+
"default": 38,
|
|
226
|
+
"minimum": 25,
|
|
227
|
+
"maximum": 40
|
|
228
|
+
},
|
|
229
|
+
"step": {
|
|
230
|
+
"title": "Step Regolazione",
|
|
231
|
+
"type": "number",
|
|
232
|
+
"default": 0.5,
|
|
233
|
+
"enum": [
|
|
234
|
+
0.5,
|
|
235
|
+
1
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
"mqtt": {
|
|
241
|
+
"type": "object",
|
|
242
|
+
"properties": {
|
|
243
|
+
"enabled": {
|
|
244
|
+
"title": "Abilita Bridge MQTT",
|
|
245
|
+
"type": "boolean",
|
|
246
|
+
"default": false,
|
|
247
|
+
"description": "Pubblica stati e riceve comandi via MQTT"
|
|
248
|
+
},
|
|
249
|
+
"broker": {
|
|
250
|
+
"title": "URL Broker MQTT",
|
|
251
|
+
"type": "string",
|
|
252
|
+
"placeholder": "mqtt://192.168.1.x:1883",
|
|
253
|
+
"description": "Indirizzo completo del broker (es: mqtt://host:1883 o mqtts://host:8883)"
|
|
254
|
+
},
|
|
255
|
+
"username": {
|
|
256
|
+
"title": "Username",
|
|
257
|
+
"type": "string",
|
|
258
|
+
"placeholder": "mqtt_user",
|
|
259
|
+
"description": "Credenziali di accesso al broker (opzionale)"
|
|
260
|
+
},
|
|
261
|
+
"password": {
|
|
262
|
+
"title": "Password",
|
|
263
|
+
"type": "string",
|
|
264
|
+
"placeholder": "password",
|
|
265
|
+
"description": "Password per l'autenticazione MQTT"
|
|
266
|
+
},
|
|
267
|
+
"clientId": {
|
|
268
|
+
"title": "Client ID",
|
|
269
|
+
"type": "string",
|
|
270
|
+
"default": "homebridge-klares4",
|
|
271
|
+
"placeholder": "homebridge-klares4",
|
|
272
|
+
"description": "Identificativo univoco per il broker MQTT"
|
|
273
|
+
},
|
|
274
|
+
"topicPrefix": {
|
|
275
|
+
"title": "Prefisso Topic",
|
|
276
|
+
"type": "string",
|
|
277
|
+
"default": "homebridge/klares4",
|
|
278
|
+
"placeholder": "homebridge/klares4",
|
|
279
|
+
"description": "Prefisso per tutti i topic pubblicati"
|
|
280
|
+
},
|
|
281
|
+
"qos": {
|
|
282
|
+
"title": "Quality of Service",
|
|
283
|
+
"type": "integer",
|
|
284
|
+
"default": 1,
|
|
285
|
+
"oneOf": [
|
|
286
|
+
{
|
|
287
|
+
"title": "0 - At most once (fastest)",
|
|
288
|
+
"const": 0
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"title": "1 - At least once (recommended)",
|
|
292
|
+
"const": 1
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"title": "2 - Exactly once (slowest)",
|
|
296
|
+
"const": 2
|
|
297
|
+
}
|
|
298
|
+
],
|
|
299
|
+
"description": "Livello di garanzia consegna messaggi"
|
|
300
|
+
},
|
|
301
|
+
"retain": {
|
|
302
|
+
"title": "Retain Messages",
|
|
303
|
+
"type": "boolean",
|
|
304
|
+
"default": true,
|
|
305
|
+
"description": "Il broker memorizza l'ultimo stato per i nuovi subscriber"
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
"roomMapping": {
|
|
310
|
+
"type": "object",
|
|
311
|
+
"properties": {
|
|
312
|
+
"enabled": {
|
|
313
|
+
"title": "Abilita Mappatura Stanze",
|
|
314
|
+
"type": "boolean",
|
|
315
|
+
"default": false,
|
|
316
|
+
"description": "Organizza i topic MQTT per stanza invece che per tipo dispositivo"
|
|
317
|
+
},
|
|
318
|
+
"rooms": {
|
|
319
|
+
"title": "Stanze",
|
|
320
|
+
"type": "array",
|
|
321
|
+
"items": {
|
|
322
|
+
"type": "object",
|
|
323
|
+
"properties": {
|
|
324
|
+
"roomName": {
|
|
325
|
+
"title": "Nome Stanza",
|
|
326
|
+
"type": "string",
|
|
327
|
+
"placeholder": "soggiorno",
|
|
328
|
+
"pattern": "^[a-z0-9_]+$",
|
|
329
|
+
"description": "Usare solo lettere minuscole, numeri e underscore"
|
|
330
|
+
},
|
|
331
|
+
"devices": {
|
|
332
|
+
"title": "Dispositivi",
|
|
333
|
+
"type": "array",
|
|
334
|
+
"items": {
|
|
335
|
+
"type": "object",
|
|
336
|
+
"properties": {
|
|
337
|
+
"deviceId": {
|
|
338
|
+
"title": "ID Dispositivo",
|
|
339
|
+
"type": "string",
|
|
340
|
+
"pattern": "^(light_|cover_|sensor_temp_|sensor_hum_|sensor_light_|zone_|thermostat_|scenario_)[0-9]+$"
|
|
341
|
+
},
|
|
342
|
+
"deviceName": {
|
|
343
|
+
"title": "Nome Dispositivo",
|
|
344
|
+
"type": "string",
|
|
345
|
+
"readOnly": true
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
"required": [
|
|
349
|
+
"deviceId"
|
|
350
|
+
]
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
"required": [
|
|
355
|
+
"roomName"
|
|
356
|
+
]
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
"generateDebugFile": {
|
|
362
|
+
"title": "Genera File Debug",
|
|
363
|
+
"type": "boolean",
|
|
364
|
+
"default": false,
|
|
365
|
+
"description": "Attiva per generare un file di diagnostica completo al prossimo riavvio (si disabilita automaticamente dopo la generazione)"
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
"required": [
|
|
369
|
+
"ip",
|
|
370
|
+
"pin"
|
|
371
|
+
]
|
|
372
|
+
},
|
|
373
|
+
"layout": [
|
|
374
|
+
{
|
|
375
|
+
"type": "section",
|
|
376
|
+
"title": "Connessione & Autenticazione",
|
|
377
|
+
"expandable": true,
|
|
378
|
+
"expanded": true,
|
|
379
|
+
"items": [
|
|
380
|
+
{
|
|
381
|
+
"type": "help",
|
|
382
|
+
"helpvalue": "<div class='alert alert-success'><strong>Configurazione Essenziale</strong><p class='mb-0'>Inserisci i dati di connessione alla tua centrale Ksenia Lares4. Puoi trovare l'IP nella configurazione di rete della centrale.</p></div>"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"key": "ip",
|
|
386
|
+
"type": "string",
|
|
387
|
+
"title": "Indirizzo IP Centrale",
|
|
388
|
+
"placeholder": "192.168.1.x",
|
|
389
|
+
"validationMessage": "Inserisci un indirizzo IP valido (es: 192.168.1.100)"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"type": "flex",
|
|
393
|
+
"flex-flow": "row wrap",
|
|
394
|
+
"items": [
|
|
395
|
+
{
|
|
396
|
+
"key": "port",
|
|
397
|
+
"flex": "1 1 120px"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"key": "https",
|
|
401
|
+
"flex": "1 1 180px"
|
|
402
|
+
}
|
|
403
|
+
]
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"key": "pin",
|
|
407
|
+
"type": "password",
|
|
408
|
+
"title": "PIN di Accesso",
|
|
409
|
+
"placeholder": "Solo numeri (4-8 cifre)",
|
|
410
|
+
"validationMessage": "Il PIN deve contenere solo numeri (4-8 cifre)"
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"type": "flex",
|
|
414
|
+
"flex-flow": "row wrap",
|
|
415
|
+
"items": [
|
|
416
|
+
{
|
|
417
|
+
"key": "sender",
|
|
418
|
+
"flex": "1 1 200px"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"key": "name",
|
|
422
|
+
"flex": "1 1 200px"
|
|
423
|
+
}
|
|
424
|
+
]
|
|
425
|
+
}
|
|
426
|
+
]
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"type": "section",
|
|
430
|
+
"title": "Preferenze Dispositivi",
|
|
431
|
+
"expandable": true,
|
|
432
|
+
"expanded": false,
|
|
433
|
+
"items": [
|
|
434
|
+
{
|
|
435
|
+
"type": "help",
|
|
436
|
+
"helpvalue": "<div class='alert alert-info'><strong>Personalizza il Comportamento</strong><p class='mb-0'>Configura i parametri di funzionamento per tapparelle, termostati e scenari.</p></div>"
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
"type": "fieldset",
|
|
440
|
+
"title": "Tapparelle & Cover",
|
|
441
|
+
"expandable": false,
|
|
442
|
+
"items": [
|
|
443
|
+
{
|
|
444
|
+
"type": "flex",
|
|
445
|
+
"flex-flow": "row wrap",
|
|
446
|
+
"items": [
|
|
447
|
+
{
|
|
448
|
+
"key": "maxSeconds",
|
|
449
|
+
"flex": "1 1 200px",
|
|
450
|
+
"description": "Tempo totale apertura/chiusura"
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
"key": "coverStepSize",
|
|
454
|
+
"flex": "1 1 200px",
|
|
455
|
+
"description": "Fluidità animazione (5 = fluido)"
|
|
456
|
+
}
|
|
457
|
+
]
|
|
458
|
+
}
|
|
459
|
+
]
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"type": "fieldset",
|
|
463
|
+
"title": "Termostati",
|
|
464
|
+
"expandable": false,
|
|
465
|
+
"items": [
|
|
466
|
+
{
|
|
467
|
+
"type": "flex",
|
|
468
|
+
"flex-flow": "row wrap",
|
|
469
|
+
"items": [
|
|
470
|
+
{
|
|
471
|
+
"key": "temperatureDefaults.target",
|
|
472
|
+
"title": "Temp. Target Default (°C)",
|
|
473
|
+
"flex": "1 1 150px"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"key": "temperatureDefaults.min",
|
|
477
|
+
"title": "Temp. Minima (°C)",
|
|
478
|
+
"flex": "1 1 150px"
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"key": "temperatureDefaults.max",
|
|
482
|
+
"title": "Temp. Massima (°C)",
|
|
483
|
+
"flex": "1 1 150px"
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"key": "temperatureDefaults.step",
|
|
487
|
+
"title": "Step (°C)",
|
|
488
|
+
"flex": "1 1 100px"
|
|
489
|
+
}
|
|
490
|
+
]
|
|
491
|
+
}
|
|
492
|
+
]
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"type": "fieldset",
|
|
496
|
+
"title": "Scenari",
|
|
497
|
+
"expandable": false,
|
|
498
|
+
"items": [
|
|
499
|
+
{
|
|
500
|
+
"key": "scenarioAutoOffDelay",
|
|
501
|
+
"description": "Dopo l'attivazione, lo switch torna OFF automaticamente"
|
|
502
|
+
}
|
|
503
|
+
]
|
|
504
|
+
}
|
|
505
|
+
]
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"type": "section",
|
|
509
|
+
"title": "Esclusioni Dispositivi",
|
|
510
|
+
"expandable": true,
|
|
511
|
+
"expanded": false,
|
|
512
|
+
"items": [
|
|
513
|
+
{
|
|
514
|
+
"type": "help",
|
|
515
|
+
"helpvalue": "<div class='alert alert-warning'><strong>Come Trovare gli ID</strong><ol class='mb-0 mt-2'><li>Avvia il plugin una volta</li><li>Apri il file <code>~/.homebridge/klares4-devices.json</code></li><li>Trova gli ID numerici dei dispositivi da escludere</li><li>Aggiungili qui sotto usando il pulsante <strong>+ Aggiungi</strong></li></ol></div>"
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"key": "excludeOutputs",
|
|
519
|
+
"type": "array",
|
|
520
|
+
"title": "Output Esclusi (Luci, Tapparelle, Termostati)",
|
|
521
|
+
"description": "Inserisci solo il numero ID, senza prefissi",
|
|
522
|
+
"orderable": false,
|
|
523
|
+
"buttonText": "+ Aggiungi Output",
|
|
524
|
+
"items": [
|
|
525
|
+
{
|
|
526
|
+
"key": "excludeOutputs[]",
|
|
527
|
+
"notitle": true,
|
|
528
|
+
"placeholder": "ID numerico (es: 18)"
|
|
529
|
+
}
|
|
530
|
+
]
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
"key": "excludeZones",
|
|
534
|
+
"type": "array",
|
|
535
|
+
"title": "Zone Escluse (Sensori di sicurezza)",
|
|
536
|
+
"description": "Zone che non vuoi vedere come sensori contatto in HomeKit",
|
|
537
|
+
"orderable": false,
|
|
538
|
+
"buttonText": "+ Aggiungi Zona",
|
|
539
|
+
"items": [
|
|
540
|
+
{
|
|
541
|
+
"key": "excludeZones[]",
|
|
542
|
+
"notitle": true,
|
|
543
|
+
"placeholder": "ID numerico (es: 5)"
|
|
544
|
+
}
|
|
545
|
+
]
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"key": "excludeSensors",
|
|
549
|
+
"type": "array",
|
|
550
|
+
"title": "Sensori Esclusi (Ambientali)",
|
|
551
|
+
"description": "Sensori temperatura/umidità/luminosità da nascondere",
|
|
552
|
+
"orderable": false,
|
|
553
|
+
"buttonText": "+ Aggiungi Sensore",
|
|
554
|
+
"items": [
|
|
555
|
+
{
|
|
556
|
+
"key": "excludeSensors[]",
|
|
557
|
+
"notitle": true,
|
|
558
|
+
"placeholder": "ID numerico (es: 1)"
|
|
559
|
+
}
|
|
560
|
+
]
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"key": "excludeScenarios",
|
|
564
|
+
"type": "array",
|
|
565
|
+
"title": "Scenari Esclusi",
|
|
566
|
+
"description": "Scenari che non vuoi attivare da HomeKit",
|
|
567
|
+
"orderable": false,
|
|
568
|
+
"buttonText": "+ Aggiungi Scenario",
|
|
569
|
+
"items": [
|
|
570
|
+
{
|
|
571
|
+
"key": "excludeScenarios[]",
|
|
572
|
+
"notitle": true,
|
|
573
|
+
"placeholder": "ID numerico (es: 3)"
|
|
574
|
+
}
|
|
575
|
+
]
|
|
576
|
+
}
|
|
577
|
+
]
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"type": "section",
|
|
581
|
+
"title": "Integrazione MQTT",
|
|
582
|
+
"expandable": true,
|
|
583
|
+
"expanded": false,
|
|
584
|
+
"items": [
|
|
585
|
+
{
|
|
586
|
+
"type": "help",
|
|
587
|
+
"helpvalue": "<div class='alert alert-primary'><strong>Bridge MQTT</strong><p class='mb-1'>Pubblica gli stati su MQTT e ricevi comandi per integrazione con Home Assistant, Node-RED, o altri sistemi.</p><small><strong>Topic:</strong> <code>{prefix}/{type}/{slug}/state</code> e <code>.../{type}/{slug}/set</code></small></div>"
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"key": "mqtt.enabled",
|
|
591
|
+
"title": "Abilita Bridge MQTT"
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
"key": "mqtt.broker",
|
|
595
|
+
"condition": {
|
|
596
|
+
"functionBody": "return model.mqtt && model.mqtt.enabled === true;"
|
|
597
|
+
},
|
|
598
|
+
"placeholder": "mqtt://192.168.1.x:1883"
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
"type": "flex",
|
|
602
|
+
"flex-flow": "row wrap",
|
|
603
|
+
"condition": {
|
|
604
|
+
"functionBody": "return model.mqtt && model.mqtt.enabled === true;"
|
|
605
|
+
},
|
|
606
|
+
"items": [
|
|
607
|
+
{
|
|
608
|
+
"key": "mqtt.username",
|
|
609
|
+
"flex": "1 1 200px"
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
"key": "mqtt.password",
|
|
613
|
+
"type": "password",
|
|
614
|
+
"flex": "1 1 200px"
|
|
615
|
+
}
|
|
616
|
+
]
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
"type": "flex",
|
|
620
|
+
"flex-flow": "row wrap",
|
|
621
|
+
"condition": {
|
|
622
|
+
"functionBody": "return model.mqtt && model.mqtt.enabled === true;"
|
|
623
|
+
},
|
|
624
|
+
"items": [
|
|
625
|
+
{
|
|
626
|
+
"key": "mqtt.clientId",
|
|
627
|
+
"flex": "1 1 200px"
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"key": "mqtt.topicPrefix",
|
|
631
|
+
"flex": "1 1 200px"
|
|
632
|
+
}
|
|
633
|
+
]
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
"type": "flex",
|
|
637
|
+
"flex-flow": "row wrap",
|
|
638
|
+
"condition": {
|
|
639
|
+
"functionBody": "return model.mqtt && model.mqtt.enabled === true;"
|
|
640
|
+
},
|
|
641
|
+
"items": [
|
|
642
|
+
{
|
|
643
|
+
"key": "mqtt.qos",
|
|
644
|
+
"flex": "1 1 200px"
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"key": "mqtt.retain",
|
|
648
|
+
"flex": "1 1 200px"
|
|
649
|
+
}
|
|
650
|
+
]
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"type": "section",
|
|
654
|
+
"title": "Mappatura Stanze",
|
|
655
|
+
"expandable": true,
|
|
656
|
+
"expanded": false,
|
|
657
|
+
"condition": {
|
|
658
|
+
"functionBody": "return model.mqtt && model.mqtt.enabled === true;"
|
|
659
|
+
},
|
|
660
|
+
"items": [
|
|
661
|
+
{
|
|
662
|
+
"type": "help",
|
|
663
|
+
"helpvalue": "<div class='alert alert-success'><strong>Organizza per stanza:</strong> invece di <code>klares4/light/luce_sala</code> ottieni <code>soggiorno/light/luce_sala</code></div>"
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
"key": "roomMapping.enabled",
|
|
667
|
+
"title": "Abilita Mappatura Stanze"
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"key": "roomMapping.rooms",
|
|
671
|
+
"type": "array",
|
|
672
|
+
"title": "Configurazione Stanze",
|
|
673
|
+
"orderable": true,
|
|
674
|
+
"buttonText": "+ Aggiungi Stanza",
|
|
675
|
+
"condition": {
|
|
676
|
+
"functionBody": "return model.roomMapping && model.roomMapping.enabled === true;"
|
|
677
|
+
},
|
|
678
|
+
"items": [
|
|
679
|
+
{
|
|
680
|
+
"type": "fieldset",
|
|
681
|
+
"items": [
|
|
682
|
+
{
|
|
683
|
+
"key": "roomMapping.rooms[].roomName",
|
|
684
|
+
"title": "Nome Stanza (minuscolo)",
|
|
685
|
+
"placeholder": "soggiorno"
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
"key": "roomMapping.rooms[].devices",
|
|
689
|
+
"type": "array",
|
|
690
|
+
"title": "Dispositivi",
|
|
691
|
+
"orderable": false,
|
|
692
|
+
"buttonText": "+ Dispositivo",
|
|
693
|
+
"items": [
|
|
694
|
+
{
|
|
695
|
+
"key": "roomMapping.rooms[].devices[].deviceId",
|
|
696
|
+
"title": "ID Dispositivo",
|
|
697
|
+
"placeholder": "light_9 o sensor_temp_1"
|
|
698
|
+
}
|
|
699
|
+
]
|
|
700
|
+
}
|
|
701
|
+
]
|
|
702
|
+
}
|
|
703
|
+
]
|
|
704
|
+
}
|
|
705
|
+
]
|
|
706
|
+
}
|
|
707
|
+
]
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
"type": "section",
|
|
711
|
+
"title": "Configurazione Avanzata",
|
|
712
|
+
"expandable": true,
|
|
713
|
+
"expanded": false,
|
|
714
|
+
"items": [
|
|
715
|
+
{
|
|
716
|
+
"type": "help",
|
|
717
|
+
"helpvalue": "<div class='alert alert-danger'><strong>Solo per Utenti Esperti</strong><p class='mb-0'>Modifica questi parametri solo se sai cosa stai facendo. Valori errati possono causare disconnessioni frequenti o comportamenti anomali.</p></div>"
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
"key": "showAdvanced",
|
|
721
|
+
"title": "Sblocca Parametri Avanzati",
|
|
722
|
+
"description": "Abilita per modificare timing e parametri di rete"
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"type": "fieldset",
|
|
726
|
+
"title": "Parametri di Rete",
|
|
727
|
+
"condition": {
|
|
728
|
+
"functionBody": "return model.showAdvanced === true;"
|
|
729
|
+
},
|
|
730
|
+
"items": [
|
|
731
|
+
{
|
|
732
|
+
"type": "flex",
|
|
733
|
+
"flex-flow": "row wrap",
|
|
734
|
+
"items": [
|
|
735
|
+
{
|
|
736
|
+
"key": "reconnectInterval",
|
|
737
|
+
"flex": "1 1 200px",
|
|
738
|
+
"description": "Base per exponential backoff (v1.1.6)"
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
"key": "heartbeatInterval",
|
|
742
|
+
"flex": "1 1 200px",
|
|
743
|
+
"description": "Frequenza ping keep-alive con timeout PONG (v1.1.6)"
|
|
744
|
+
}
|
|
745
|
+
]
|
|
746
|
+
}
|
|
747
|
+
]
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
"type": "fieldset",
|
|
751
|
+
"title": "Debug & Diagnostica",
|
|
752
|
+
"condition": {
|
|
753
|
+
"functionBody": "return model.showAdvanced === true;"
|
|
754
|
+
},
|
|
755
|
+
"items": [
|
|
756
|
+
{
|
|
757
|
+
"type": "flex",
|
|
758
|
+
"flex-flow": "row wrap",
|
|
759
|
+
"items": [
|
|
760
|
+
{
|
|
761
|
+
"key": "debug",
|
|
762
|
+
"flex": "1 1 200px"
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"key": "devicesSummaryDelay",
|
|
766
|
+
"flex": "1 1 200px",
|
|
767
|
+
"description": "Ritardo stampa lista dispositivi"
|
|
768
|
+
}
|
|
769
|
+
]
|
|
770
|
+
}
|
|
771
|
+
]
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
"type": "section",
|
|
775
|
+
"title": "🔧 Diagnostica & Debug",
|
|
776
|
+
"expandable": true,
|
|
777
|
+
"expanded": false,
|
|
778
|
+
"items": [
|
|
779
|
+
{
|
|
780
|
+
"type": "help",
|
|
781
|
+
"helpvalue": "<div class='alert alert-warning'><strong>⚠️ Strumento di Diagnostica Completa</strong><p class='mb-2'>Genera un file di debug con TUTTO il necessario per diagnosticare problemi:</p><ul class='mb-2'><li><strong>Tutti i messaggi WebSocket RAW</strong> per 60 secondi</li><li><strong>Lista completa dispositivi</strong> dalla centrale Ksenia</li><li><strong>Tutti i comandi disponibili</strong> (ZONES, OUTPUTS, BUS_HAS, SCENARIOS, STATUS)</li><li><strong>Stati in tempo reale</strong> durante la cattura</li></ul><p class='mb-0 text-danger'><strong>IMPORTANTE:</strong> Durante i 60 secondi di cattura, <strong>prova tutte le entità che non funzionano usando l'app Ksenia</strong> (accendi/spegni luci, apri/chiudi tapparelle, cambia zone, ecc). Questo ci permetterà di vedere esattamente come la centrale risponde ai comandi.</p></div>"
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
"key": "generateDebugFile",
|
|
785
|
+
"title": "Genera File Debug al Prossimo Avvio",
|
|
786
|
+
"description": "Si disattiverà automaticamente dopo la generazione del file"
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
"type": "help",
|
|
790
|
+
"helpvalue": "<div class='alert alert-info'><strong>📋 Procedura consigliata:</strong><ol class='mb-0'><li><strong>Attiva</strong> l'opzione sopra e <strong>salva</strong> la configurazione</li><li><strong>Riavvia Homebridge</strong> (il debug inizierà automaticamente)</li><li><strong>Nei prossimi 60 secondi</strong>: apri l'app Ksenia e <strong>testa TUTTE le entità che non funzionano</strong> (luci on/off, tapparelle su/giù, scenari, zone, ecc)</li><li><strong>Attendi</strong> che la cattura finisca (vedrai conferma nei log con il percorso del file)</li><li><strong>Trova il file</strong> usando il pulsante qui sotto o nei log</li><li><strong>Condividi</strong> il file per supporto (PIN già mascherati automaticamente)</li></ol></div>"
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"type": "help",
|
|
794
|
+
"helpvalue": "<div class='alert alert-success'><strong>📂 Percorso File Debug:</strong><p class='mb-2'>I file di debug vengono salvati in:</p><p class='mb-2'><code>~/.homebridge/klares4-debug-*.json</code></p><p class='mb-2'>oppure su macOS:</p><p class='mb-2'><code>/Users/[tuo-username]/.homebridge/klares4-debug-*.json</code></p><p class='mb-0'><strong>💡 Suggerimento:</strong> Cerca il file più recente con nome <code>klares4-debug-</code> seguito dalla data/ora. Il percorso esatto viene mostrato nei log di Homebridge quando il file viene generato.</p></div>"
|
|
795
|
+
}
|
|
796
|
+
]
|
|
797
|
+
}
|
|
798
|
+
]
|
|
799
|
+
}
|
|
800
|
+
]
|
|
801
|
+
}
|