node-red-contrib-knx-ultimate 5.0.4 → 5.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/nodes/commonFunctions.js +93 -0
  3. package/nodes/icons/node-matter-icon.svg +12 -0
  4. package/nodes/knxUltimateMatterBridge.html +342 -0
  5. package/nodes/knxUltimateMatterBridge.js +313 -0
  6. package/nodes/knxUltimateMatterDevice.html +632 -0
  7. package/nodes/knxUltimateMatterDevice.js +308 -0
  8. package/nodes/locales/de/knxUltimateMatterBridge.html +53 -0
  9. package/nodes/locales/de/knxUltimateMatterBridge.json +83 -0
  10. package/nodes/locales/de/knxUltimateMatterDevice.html +56 -0
  11. package/nodes/locales/de/knxUltimateMatterDevice.json +109 -0
  12. package/nodes/locales/de/matter-config.html +25 -0
  13. package/nodes/locales/de/matter-config.json +26 -0
  14. package/nodes/locales/de/matterbridge-config.html +34 -0
  15. package/nodes/locales/de/matterbridge-config.json +20 -0
  16. package/nodes/locales/en/knxUltimateMatterBridge.html +53 -0
  17. package/nodes/locales/en/knxUltimateMatterBridge.json +83 -0
  18. package/nodes/locales/en/knxUltimateMatterDevice.html +56 -0
  19. package/nodes/locales/en/knxUltimateMatterDevice.json +109 -0
  20. package/nodes/locales/en/matter-config.html +25 -0
  21. package/nodes/locales/en/matter-config.json +26 -0
  22. package/nodes/locales/en/matterbridge-config.html +34 -0
  23. package/nodes/locales/en/matterbridge-config.json +20 -0
  24. package/nodes/locales/es/knxUltimateMatterBridge.html +53 -0
  25. package/nodes/locales/es/knxUltimateMatterBridge.json +83 -0
  26. package/nodes/locales/es/knxUltimateMatterDevice.html +56 -0
  27. package/nodes/locales/es/knxUltimateMatterDevice.json +109 -0
  28. package/nodes/locales/es/matter-config.html +25 -0
  29. package/nodes/locales/es/matter-config.json +26 -0
  30. package/nodes/locales/es/matterbridge-config.html +34 -0
  31. package/nodes/locales/es/matterbridge-config.json +20 -0
  32. package/nodes/locales/fr/knxUltimateMatterBridge.html +53 -0
  33. package/nodes/locales/fr/knxUltimateMatterBridge.json +83 -0
  34. package/nodes/locales/fr/knxUltimateMatterDevice.html +56 -0
  35. package/nodes/locales/fr/knxUltimateMatterDevice.json +109 -0
  36. package/nodes/locales/fr/matter-config.html +25 -0
  37. package/nodes/locales/fr/matter-config.json +26 -0
  38. package/nodes/locales/fr/matterbridge-config.html +34 -0
  39. package/nodes/locales/fr/matterbridge-config.json +20 -0
  40. package/nodes/locales/it/knxUltimateMatterBridge.html +53 -0
  41. package/nodes/locales/it/knxUltimateMatterBridge.json +83 -0
  42. package/nodes/locales/it/knxUltimateMatterDevice.html +56 -0
  43. package/nodes/locales/it/knxUltimateMatterDevice.json +109 -0
  44. package/nodes/locales/it/matter-config.html +25 -0
  45. package/nodes/locales/it/matter-config.json +26 -0
  46. package/nodes/locales/it/matterbridge-config.html +34 -0
  47. package/nodes/locales/it/matterbridge-config.json +20 -0
  48. package/nodes/locales/zh-CN/knxUltimateMatterBridge.html +53 -0
  49. package/nodes/locales/zh-CN/knxUltimateMatterBridge.json +83 -0
  50. package/nodes/locales/zh-CN/knxUltimateMatterDevice.html +56 -0
  51. package/nodes/locales/zh-CN/knxUltimateMatterDevice.json +109 -0
  52. package/nodes/locales/zh-CN/matter-config.html +25 -0
  53. package/nodes/locales/zh-CN/matter-config.json +26 -0
  54. package/nodes/locales/zh-CN/matterbridge-config.html +34 -0
  55. package/nodes/locales/zh-CN/matterbridge-config.json +20 -0
  56. package/nodes/matter-config.html +226 -0
  57. package/nodes/matter-config.js +242 -0
  58. package/nodes/matterbridge-config.html +121 -0
  59. package/nodes/matterbridge-config.js +220 -0
  60. package/nodes/utils/matterBridgeDeviceFactory.mjs +511 -0
  61. package/nodes/utils/matterBridgeEngine.mjs +290 -0
  62. package/nodes/utils/matterEngine.mjs +475 -0
  63. package/nodes/utils/matterKnxConverter.js +204 -0
  64. package/package.json +8 -2
@@ -0,0 +1,34 @@
1
+ <script type="text/markdown" data-help-name="matterbridge-config">
2
+ # Bridge Matter (BETA)
3
+
4
+ > Ce nœud est en **BETA** : il fonctionne, mais des détails peuvent encore changer entre les versions.
5
+
6
+ ## Vue d'ensemble
7
+
8
+ Ce nœud de configuration est le **bridge Matter lui-même** : il exécute le serveur Matter qu'Alexa, Google Home, Apple Home (ou tout contrôleur Matter) appairent **une seule fois**. Chaque nœud **Matter Bridge device** de vos flux pointe ici et apparaît dans les apps comme un appareil du bridge.
9
+
10
+ ## Configuration
11
+
12
+ |Champ|Description|
13
+ |--|--|
14
+ | Nom | Le nom de ce nœud de configuration dans Node-RED |
15
+ | Nom du bridge Matter | Le nom du bridge lui-même dans les apps Matter |
16
+ | Port | Port UDP du serveur Matter (5540 par défaut). Chaque bridge a besoin de son propre port, vous pouvez donc exécuter **plusieurs bridges indépendants** |
17
+
18
+ ## Appairage
19
+
20
+ 1. **Déployez**, attendez quelques secondes, puis rouvrez ce nœud.
21
+ 2. Le panneau d'appairage montre le **QR code** et le **code manuel** : scannez ou saisissez-le dans Alexa / Google Home / Apple Home (« ajouter un appareil Matter »).
22
+ 3. Plusieurs contrôleurs peuvent être appairés au même bridge (multi-fabric Matter).
23
+
24
+ Le bouton **Réinitialiser l'appairage** supprime tous les contrôleurs appairés et relance l'annonce d'appairage.
25
+
26
+ ## Identité et stockage
27
+
28
+ L'identité du bridge est liée à ce nœud de configuration et enregistrée dans `knxultimatestorage/matter` du répertoire utilisateur de Node-RED : les re-deploys (même en changeant port ou nom) ne nécessitent **PAS** de nouvel appairage. Seule la suppression de ce nœud de configuration et la création d'un nouveau changent l'identité — dans ce cas supprimez l'ancien bridge de l'app Matter et appairez de nouveau.
29
+
30
+ ## Notes
31
+
32
+ - L'hôte Node-RED doit avoir **IPv6 link-local** activé (exigence standard de Matter) et être joignable par les contrôleurs sur le réseau local.
33
+ - Les nœuds d'appareil ajoutés/renommés/supprimés sont pris en compte en quelques secondes, sans nouvel appairage.
34
+ </script>
@@ -0,0 +1,20 @@
1
+ {
2
+ "matterbridge-config": {
3
+ "properties": {
4
+ "title": "Bridge Matter",
5
+ "intro": "Ce nœud de configuration est le bridge Matter lui-même : Alexa, Google Home, Apple Home (ou tout contrôleur Matter) l'appairent une fois et voient tous les appareils KNX que vous y rattachez. Ajoutez des nœuds \"Matter Bridge device\" dans vos flux et pointez-les ici. Déployez d'abord, puis rouvrez pour obtenir le code d'appairage.",
6
+ "node-config-input-name": "Nom",
7
+ "bridge_name": "Nom du bridge Matter",
8
+ "port": "Port",
9
+ "pairing_title": "Appairage (Alexa, Google Home, Apple Home...)",
10
+ "not_running": "Le bridge Matter n'est pas encore démarré. Déployez, attendez quelques secondes puis cliquez sur actualiser.",
11
+ "commissioned": "Bridge appairé avec ces contrôleurs :",
12
+ "awaiting": "En attente d'appairage. Scannez le QR code ou saisissez le code manuel dans votre app Matter :",
13
+ "qr_link": "Ouvrir le QR code dans le navigateur",
14
+ "deploy_first": "Déployez d'abord ce nœud de configuration, puis cliquez sur actualiser.",
15
+ "reset_button": "Réinitialiser l'appairage",
16
+ "reset_confirm": "Supprimer TOUS les contrôleurs appairés et relancer l'appairage ? Les appareils disparaîtront d'Alexa/Google/Apple.",
17
+ "reset_ok": "Appairage réinitialisé. Le bridge attend de nouveau un appairage."
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,53 @@
1
+ <script type="text/markdown" data-help-name="knxUltimateMatterBridge">
2
+ # Matter Bridge device (BETA)
3
+
4
+ > Questo nodo è in **BETA**: funziona, ma alcuni dettagli potrebbero cambiare tra una release e l'altra.
5
+
6
+ ## Panoramica
7
+
8
+ Ogni nodo Matter Bridge device espone **un dispositivo KNX come dispositivo Matter**: i controller abbinati (Alexa, Google Home, Apple Home...) lo vedono, con il nome che hai scelto, pronto per il controllo da app e vocale. Puntalo a un nodo di configurazione **Bridge Matter** (il bridge vero e proprio, abbinato una sola volta - il QR di abbinamento vive lì) e aggiungi quanti nodi device vuoi, ovunque nei tuoi flow.
9
+
10
+ È la direzione opposta del nodo *Matter Device*: lì KNX controlla un dispositivo Matter, qui i controller Matter controllano KNX.
11
+
12
+ ## Configurazione
13
+
14
+ |Campo|Descrizione|
15
+ |--|--|
16
+ | Bridge Matter | Il nodo di configurazione Bridge Matter a cui appartiene questo dispositivo |
17
+ | GW KNX | Gateway KNX usato per i telegrammi. **Opzionale**: senza, il dispositivo funziona in modalità solo-flow tramite i PIN del nodo. Selezionato automaticamente se il progetto ha un solo gateway |
18
+ | Nome | Quello che Alexa & Co. mostrano e usano per i comandi vocali |
19
+ | Tipo dispositivo | Il tipo di dispositivo Matter (vedi sotto); determina quali campi indirizzo di gruppo compaiono |
20
+ | Leggi lo stato all'avvio | Invia una `GroupValue_Read` ai GA di stato all'avvio, per popolare gli attributi Matter |
21
+
22
+ ## Tipi di dispositivo e indirizzi di gruppo
23
+
24
+ |Tipo|Indirizzi di gruppo|
25
+ |--|--|
26
+ | Luce On/Off, Presa | GA comando On/Off, GA stato On/Off (DPT 1.001) |
27
+ | Luce dimmerabile | + GA comando/stato dimmer % (DPT 5.001) |
28
+ | Luce RGB (colore) | + GA comando/stato colore RGB (DPT 232.600). Il colore Matter (hue/saturation o XY, dalla ruota colore dell'app) viene convertito da/verso la terna RGB KNX |
29
+ | Luce bianco dinamico | + GA comando/stato temperatura colore in Kelvin (DPT 7.600) |
30
+ | Tapparella / Tenda | Su/Giù (DPT 1.008), Stop (DPT 1.017), posizione % comando/stato (DPT 5.001), inversione posizione opzionale |
31
+ | Termostato (riscaldamento) | GA temperatura attuale, GA comando/stato setpoint (DPT 9.001) |
32
+ | Ventola / VMC | GA comando/stato velocità % (DPT 5.001) |
33
+ | Sensori (temperatura, umidità, luminosità, presenza, contatto) | Un GA di stato ciascuno |
34
+ | Rilevatore fumo/CO | GA stato allarme fumo + GA stato allarme CO opzionale (DPT 1.005): notifiche critiche sul telefono |
35
+ | Rilevatore allagamento | GA stato allagamento (DPT 1.005) |
36
+ | Sensore qualità aria (CO2) | GA stato CO2 in ppm (DPT 9.008); la classe qualità aria (buona/discreta/moderata/scarsa...) è derivata automaticamente |
37
+ | Robot aspirapolvere | **Solo-flow**: nessun indirizzo di gruppo. Abilita i PIN del nodo: i comandi dell'assistente ("avvia pulizia", pausa/riprendi/torna alla base) arrivano sull'output come `rvcmode`/`rvccommand`; riporta lo stato con `msg.payload = { function: "rvcstate", value: "running"\|"docked"\|"charging"\|"paused"\|"error" }` e la modalità con `function: "rvcmode", value: "cleaning"\|"idle"` |
38
+
39
+ - **GA comando**: scritto sul bus KNX quando l'assistente invia un comando.
40
+ - **GA stato**: letto dal bus per tenere aggiornati gli attributi Matter (e le app).
41
+
42
+ ## PIN del nodo
43
+
44
+ Se abiliti i PIN input/output del nodo:
45
+
46
+ - **Input**: aggiorna lo stato Matter dal flow, senza passare dal bus KNX: `msg.payload = { function: "onoff", value: true }` (`function` è una tra `onoff`, `level`, `rgb`, `colortemp`, `position`, `temperature`, `humidity`, `illuminance`, `occupancy`, `contact`, `currenttemp`, `setpoint`, `fanspeed`, `smoke`, `co`, `leak`, `co2`, `rvcstate`, `rvcmode`). Utile per esporre ad Alexa & Co. valori calcolati nel flow (es. un sensore virtuale).
47
+ - **Output**: ogni comando ricevuto da un controller Matter viene inoltrato al flow: `msg.topic` = nome del dispositivo, `msg.payload` = valore, `msg.matter` = il comando grezzo. Un dispositivo senza GA di comando diventa un **dispositivo solo-flow**.
48
+
49
+ ## Note
50
+
51
+ - L'identità Matter del dispositivo è legata a questo nodo: eliminando il nodo e creandone uno nuovo, le app vedono un dispositivo nuovo di zecca.
52
+ - I nodi device aggiunti/rinominati/rimossi vengono recepiti dai controller abbinati in pochi secondi, senza riabbinare il bridge.
53
+ </script>
@@ -0,0 +1,83 @@
1
+ {
2
+ "knxUltimateMatterBridge": {
3
+ "title": "Matter Bridge (BETA)",
4
+ "bridge_name": "Nome del bridge Matter",
5
+ "port": "Porta",
6
+ "devices_help": "Aggiungi i dispositivi KNX da esporre su Matter. Il \"Nome\" è quello che Alexa/Google/Apple mostrano e usano per i comandi vocali. GA comando = scritto quando l'assistente invia un comando; GA stato = letto dal bus per tenere aggiornata l'app.",
7
+ "read_status_startup": "Leggi i GA di stato all'avvio",
8
+ "opt_yes": "Sì",
9
+ "opt_no": "No",
10
+ "node_pins": "PIN Input/Output del nodo",
11
+ "node_pins_hide": "Nascondi",
12
+ "node_pins_show": "Mostra i PIN input/output del nodo",
13
+ "fields": {
14
+ "type": "Tipo dispositivo",
15
+ "name": "Nome (mostrato da Alexa & Co.)",
16
+ "name_placeholder": "es. Luce cucina",
17
+ "invert": "Inverti posizione %"
18
+ },
19
+ "functions": {
20
+ "fn_onoff_cmd": "GA comando On/Off",
21
+ "fn_onoff_status": "GA stato On/Off",
22
+ "fn_level_cmd": "GA comando dimmer %",
23
+ "fn_level_status": "GA stato dimmer %",
24
+ "fn_sensor_ga": "GA stato sensore",
25
+ "fn_updown": "GA comando Su/Giù",
26
+ "fn_stop": "GA comando Stop",
27
+ "fn_position_cmd": "GA comando posizione %",
28
+ "fn_position_status": "GA stato posizione %",
29
+ "fn_currenttemp": "GA temperatura attuale",
30
+ "fn_setpoint_cmd": "GA comando setpoint",
31
+ "fn_setpoint_status": "GA stato setpoint",
32
+ "fn_rgb_cmd": "GA comando colore RGB (DPT 232.600)",
33
+ "fn_rgb_status": "GA stato colore RGB (DPT 232.600)",
34
+ "fn_ct_cmd": "GA comando temperatura colore (Kelvin)",
35
+ "fn_ct_status": "GA stato temperatura colore (Kelvin)",
36
+ "fn_smoke_ga": "GA stato allarme fumo",
37
+ "fn_co_ga": "GA stato allarme CO (opzionale)",
38
+ "fn_leak_ga": "GA stato allagamento",
39
+ "fn_co2_ga": "GA stato CO2 (ppm, DPT 9.008)",
40
+ "fn_fanspeed_cmd": "GA comando velocità ventola %",
41
+ "fn_fanspeed_status": "GA stato velocità ventola %"
42
+ },
43
+ "types": {
44
+ "onofflight": "Luce On/Off",
45
+ "dimmablelight": "Luce dimmerabile",
46
+ "rgblight": "Luce RGB (colore)",
47
+ "colortemperaturelight": "Luce bianco dinamico (temperatura colore)",
48
+ "onoffplug": "Presa (on/off)",
49
+ "temperaturesensor": "Sensore temperatura",
50
+ "humiditysensor": "Sensore umidità",
51
+ "lightsensor": "Sensore luminosità (Lux)",
52
+ "occupancysensor": "Sensore presenza",
53
+ "contactsensor": "Sensore contatto",
54
+ "windowcovering": "Tapparella / Tenda",
55
+ "thermostat": "Termostato (riscaldamento)",
56
+ "fan": "Ventola / VMC",
57
+ "smokecoalarm": "Rilevatore fumo/CO",
58
+ "waterleakdetector": "Rilevatore allagamento",
59
+ "airqualitysensor": "Sensore qualità aria (CO2)",
60
+ "robotvacuum": "Robot aspirapolvere (solo-flow, via PIN del nodo)"
61
+ },
62
+ "pairing": {
63
+ "title": "Abbinamento (Alexa, Google Home, Apple Home...)",
64
+ "not_running": "Il bridge Matter non è ancora in esecuzione. Fai il deploy, attendi qualche secondo e clicca aggiorna.",
65
+ "commissioned": "Bridge abbinato a questi controller:",
66
+ "awaiting": "In attesa di abbinamento. Scansiona il QR code o inserisci il codice manuale nella tua app Matter:",
67
+ "qr_link": "Apri il QR code nel browser",
68
+ "deploy_first": "Fai prima il deploy di questo nodo, poi clicca aggiorna.",
69
+ "reset_button": "Reset abbinamento",
70
+ "reset_confirm": "Rimuovere TUTTI i controller abbinati e riavviare l'abbinamento? I dispositivi spariranno da Alexa/Google/Apple.",
71
+ "reset_ok": "Abbinamento resettato. Il bridge è di nuovo in attesa di abbinamento."
72
+ },
73
+ "bridge": "Bridge Matter",
74
+ "device_name": "Nome (mostrato da Alexa & Co.)",
75
+ "device_help": "Scegli il tipo di dispositivo e dagli il nome che userà l'assistente vocale, poi compila gli indirizzi di gruppo. Il gateway KNX è opzionale: senza, abilita i PIN del nodo e piloti il dispositivo dal flow."
76
+ },
77
+ "common": {
78
+ "ga": "GA",
79
+ "dpt": "DPT",
80
+ "name": "Nome",
81
+ "knx_gw": "GW KNX"
82
+ }
83
+ }
@@ -0,0 +1,56 @@
1
+ <script type="text/markdown" data-help-name="knxUltimateMatterDevice">
2
+ # Dispositivo Matter (BETA)
3
+
4
+ > Questo nodo è in **BETA**: funziona, ma alcuni dettagli potrebbero cambiare tra una release e l'altra.
5
+
6
+ ## Panoramica
7
+
8
+ Il nodo Matter Device fa da ponte tra un **dispositivo Matter** e gli **indirizzi di gruppo KNX**. Il nodo opera tramite il nodo di configurazione *Matter Controller*, che associa (commissiona) i dispositivi nella propria fabric Matter.
9
+
10
+ - **Controlla** qualsiasi dispositivo Matter associato dal bus KNX (on/off, dimmerazione, tapparelle, termostati, serrature, ...).
11
+ - **Riporta** ogni attributo del dispositivo sugli indirizzi di gruppo KNX (stati, sensori, misure di potenza, batteria...).
12
+ - Completamente generico: la lista delle mappature è costruita dagli **endpoint/cluster reali** esposti dal dispositivo.
13
+
14
+ ## Configurazione
15
+
16
+ |Campo|Descrizione|
17
+ |--|--|
18
+ | GW KNX | Gateway KNX usato per i telegrammi |
19
+ | Ctrl Matter | Il nodo di configurazione Matter Controller (dove associ i dispositivi) |
20
+ | Dispositivo | Scegli il dispositivo Matter associato dalla lista con autocompletamento |
21
+ | Mappature | Una riga per ogni mappatura indirizzo di gruppo ↔ cluster Matter |
22
+ | Leggi lo stato all'avvio | Se abilitato, il nodo emette i valori correnti in cache al deploy/connessione |
23
+ | PIN Input/Output del nodo | Abilita i pin input/output Node-RED per l'accesso Matter grezzo |
24
+
25
+ ## Mappature
26
+
27
+ La lista delle destinazioni mostra le funzioni supportate con nomi comprensibili come *"Interruttore On/Off"* o *"Potenza istantanea consumata (W)"*, filtrate su ciò che il dispositivo espone realmente e con il valore attuale tra parentesi quadre.
28
+
29
+ Ogni riga di mappatura ha una **direzione**:
30
+
31
+ - **KNX → Matter (comando)**: un telegramma ricevuto sull'indirizzo di gruppo invoca un comando del cluster Matter o scrive un attributo. Esempio: GA `1/1/1` DPT 1.001 → `OnOff.on/off` (il payload booleano seleziona automaticamente on oppure off).
32
+ - **Matter → KNX (stato)**: quando l'attributo Matter sottoscritto cambia, il valore viene convertito e scritto sull'indirizzo di gruppo. Le richieste `GroupValue_Read` ricevono in risposta il valore in cache.
33
+
34
+ I cluster più comuni vengono convertiti automaticamente in valori adatti a KNX:
35
+
36
+ |Cluster|Conversione|
37
+ |--|--|
38
+ | OnOff | booleano (DPT 1.001) |
39
+ | LevelControl | 0-254 ↔ percentuale (DPT 5.001) |
40
+ | WindowCovering | percent100ths ↔ percentuale (DPT 5.001), su/giù (DPT 1.008) |
41
+ | ColorControl | mired ↔ Kelvin (DPT 7.600) |
42
+ | Thermostat | centi-°C ↔ °C (DPT 9.001) |
43
+ | Temperatura/Umidità | centi-unità ↔ unità (DPT 9.001/9.007) |
44
+ | Luminosità | scala logaritmica ↔ Lux (DPT 9.004) |
45
+ | PowerSource | mezzi-percento ↔ percentuale batteria (DPT 5.001) |
46
+ | Potenza/Energia elettrica | mW ↔ W (DPT 14.056), mWh ↔ kWh (DPT 13.013) |
47
+
48
+ Gli altri cluster/attributi passano senza conversione; il DPT che scegli esegue la codifica KNX finale.
49
+
50
+ ## PIN del nodo
51
+
52
+ Se abiliti i PIN del nodo:
53
+
54
+ - **Input**: invia comandi grezzi: `msg.payload = { endpointId: 1, clusterId: 6, command: "toggle" }` oppure scritture di attributi: `msg.payload = { endpointId: 1, clusterId: 8, attribute: "onLevel", value: 128 }`
55
+ - **Output**: riceve ogni variazione di attributo (`msg.matter` contiene l'evento completo) e ogni evento dei cluster (pressioni di pulsanti ecc.).
56
+ </script>
@@ -0,0 +1,109 @@
1
+ {
2
+ "knxUltimateMatterDevice": {
3
+ "title": "Dispositivo Matter (BETA)",
4
+ "paletteLabel": "Matter Device (BETA)",
5
+ "matter_controller": "Ctrl Matter",
6
+ "matter_device": "Dispositivo",
7
+ "device_placeholder": "Clicca per scegliere un dispositivo Matter associato",
8
+ "mapping_help": "Aggiungi una riga per ogni mappatura. \"KNX → Matter\" invoca un comando del cluster (o scrive un attributo) quando arriva un telegramma sull'indirizzo di gruppo. \"Matter → KNX\" scrive il valore dell'attributo sull'indirizzo di gruppo ad ogni variazione (le richieste di lettura ricevono il valore in cache).",
9
+ "select_target": "-- seleziona la destinazione Matter --",
10
+ "stored_target": "Salvato",
11
+ "read_status_startup": "Leggi lo stato all'avvio",
12
+ "opt_yes_emit": "Sì, ed emetti i telegrammi KNX.",
13
+ "opt_no": "No",
14
+ "node_pins": "PIN Input/Output del nodo",
15
+ "node_pins_hide": "Nascondi",
16
+ "node_pins_show": "Mostra i PIN input/output del nodo",
17
+ "direction": {
18
+ "command": "KNX → Matter (comando)",
19
+ "status": "Matter → KNX (stato)"
20
+ },
21
+ "fields": {
22
+ "direction": "Direzione",
23
+ "target": "Endpoint / cluster / destinazione Matter",
24
+ "ga": "Indirizzo di gruppo",
25
+ "dpt": "DPT",
26
+ "ganame": "Nome"
27
+ },
28
+ "no_simple_targets": "Nessuna funzione supportata trovata su questo dispositivo (o il dispositivo non è ancora connesso).",
29
+ "endpoint": "Endpoint",
30
+ "friendly": {
31
+ "onoff_switch": "Interruttore On/Off (accendi/spegni)",
32
+ "onoff_toggle": "Inverti stato (toggle)",
33
+ "onoff_state": "Stato On/Off",
34
+ "level_set": "Imposta luminosità / livello (%)",
35
+ "level_state": "Luminosità / livello attuale (%)",
36
+ "colortemp_set": "Imposta temperatura colore (Kelvin)",
37
+ "colortemp_state": "Temperatura colore attuale (Kelvin)",
38
+ "cover_updown": "Tapparella Su/Giù",
39
+ "cover_stop": "Tapparella Stop",
40
+ "cover_position_set": "Porta tapparella in posizione (%)",
41
+ "cover_position_state": "Posizione attuale tapparella (%)",
42
+ "cover_tilt_set": "Inclina lamelle (%)",
43
+ "cover_tilt_state": "Inclinazione attuale lamelle (%)",
44
+ "thermo_localtemp": "Temperatura ambiente (°C)",
45
+ "thermo_heatsp_set": "Imposta setpoint riscaldamento (°C)",
46
+ "thermo_coolsp_set": "Imposta setpoint raffrescamento (°C)",
47
+ "thermo_heatsp_state": "Setpoint riscaldamento (°C)",
48
+ "thermo_coolsp_state": "Setpoint raffrescamento (°C)",
49
+ "fan_speed_set": "Imposta velocità ventola (%)",
50
+ "fan_speed_state": "Velocità ventola attuale (%)",
51
+ "lock_cmd": "Blocca/Sblocca serratura",
52
+ "lock_state": "Stato serratura (bloccata)",
53
+ "temp_measured": "Temperatura misurata (°C)",
54
+ "humidity_measured": "Umidità relativa (%)",
55
+ "illuminance_measured": "Luminosità ambiente (Lux)",
56
+ "occupancy_state": "Presenza rilevata",
57
+ "contact_state": "Stato contatto (chiuso/aperto)",
58
+ "battery_percent": "Livello batteria (%)",
59
+ "power_active": "Potenza istantanea consumata (W)",
60
+ "power_voltage": "Tensione (V)",
61
+ "power_current": "Corrente (A)",
62
+ "energy_imported": "Energia consumata (kWh)",
63
+ "identify_cmd": "Identifica dispositivo (lampeggio)",
64
+ "switch_position": "Posizione pulsante"
65
+ },
66
+ "devtype": {
67
+ "onofflight": "Luce On/Off",
68
+ "dimmablelight": "Luce dimmerabile",
69
+ "colortemperaturelight": "Luce bianco dinamico",
70
+ "extendedcolorlight": "Luce colorata",
71
+ "onoffpluginunit": "Presa (on/off)",
72
+ "dimmablepluginunit": "Presa (dimmerabile)",
73
+ "smartplug": "Presa smart",
74
+ "contactsensor": "Sensore contatto",
75
+ "lightsensor": "Sensore luminosità",
76
+ "occupancysensor": "Sensore presenza",
77
+ "temperaturesensor": "Sensore temperatura",
78
+ "humiditysensor": "Sensore umidità",
79
+ "pressuresensor": "Sensore pressione",
80
+ "flowsensor": "Sensore flusso",
81
+ "doorlock": "Serratura",
82
+ "windowcovering": "Tapparella/Tenda",
83
+ "thermostat": "Termostato",
84
+ "fan": "Ventilatore",
85
+ "genericswitch": "Pulsante/Interruttore",
86
+ "airqualitysensor": "Sensore qualità aria",
87
+ "smokecoalarm": "Rilevatore fumo/CO",
88
+ "waterleakdetector": "Rilevatore perdite acqua",
89
+ "roomairconditioner": "Condizionatore",
90
+ "airpurifier": "Purificatore aria",
91
+ "speaker": "Altoparlante",
92
+ "pumpcontroller": "Pompa",
93
+ "onofflightswitch": "Interruttore luce",
94
+ "dimmerswitch": "Interruttore dimmer",
95
+ "colordimmerswitch": "Interruttore dimmer colore",
96
+ "powersource": "Alimentazione",
97
+ "electricalsensor": "Sensore elettrico",
98
+ "bridgednode": "Dispositivo bridged",
99
+ "aggregator": "Bridge/Aggregatore",
100
+ "rootnode": "Nodo radice"
101
+ }
102
+ },
103
+ "common": {
104
+ "ga": "GA",
105
+ "dpt": "DPT",
106
+ "name": "Nome",
107
+ "knx_gw": "GW KNX"
108
+ }
109
+ }
@@ -0,0 +1,25 @@
1
+ <script type="text/markdown" data-help-name="matter-config">
2
+ # Controller Matter
3
+
4
+ ## Panoramica
5
+
6
+ Questo nodo di configurazione è un **controller Matter** completo: crea una propria *fabric* Matter e vi associa (commissiona) i tuoi dispositivi Matter. I dispositivi associati diventano poi disponibili ai nodi **Matter Device**, che li mappano sugli indirizzi di gruppo KNX.
7
+
8
+ Il controller comunica con i dispositivi tramite la **rete IP** (WiFi, Ethernet, oppure Thread attraverso un border router). Il commissioning via Bluetooth non è supportato: il dispositivo deve essere già raggiungibile in rete.
9
+
10
+ ## Associare un dispositivo
11
+
12
+ 1. Fai prima il **deploy** di questo nodo di configurazione (il controller deve essere in esecuzione).
13
+ 2. Riapri il nodo e inserisci il **codice di abbinamento**: il codice manuale a 11 cifre (es. `3497-011-2332`) oppure il contenuto del QR code (`MT:....`).
14
+ 3. Clicca **ASSOCIA**. Il commissioning può richiedere fino a un minuto.
15
+
16
+ Se il dispositivo è nuovo di fabbrica e supporta solo il commissioning Bluetooth, associalo prima con l'app del produttore o con un altro controller Matter (Alexa, Google Home, Apple Home), poi usa la funzione **"condividi / abbina con altro hub"** di quel controller per generare un nuovo codice di abbinamento per KNX-Ultimate. In questo modo il dispositivo entra in più fabric contemporaneamente.
17
+
18
+ ## Archiviazione
19
+
20
+ Le credenziali della fabric e i dispositivi associati sono salvati nella cartella `knxultimatestorage/matter` dentro la directory utente di Node-RED. Cancellando quella cartella si perdono tutte le associazioni.
21
+
22
+ ## Rimuovere un dispositivo
23
+
24
+ Usa il pulsante cestino nella lista dei dispositivi associati. Il controller prova a decommissionare correttamente il dispositivo; se non è raggiungibile, viene comunque rimosso dalla fabric (potrebbe poi servire un reset di fabbrica del dispositivo).
25
+ </script>
@@ -0,0 +1,26 @@
1
+ {
2
+ "matter-config": {
3
+ "properties": {
4
+ "title": "Controller Matter",
5
+ "intro": "Questo nodo è un controller Matter (con una propria fabric). Associa qui i tuoi dispositivi Matter, poi usa il nodo \"Matter Device\" per mapparli sugli indirizzi di gruppo KNX. Fai prima il deploy del nodo, poi torna qui per associare i dispositivi.",
6
+ "node-config-input-name": "Nome",
7
+ "fabric_label": "Etichetta fabric",
8
+ "pairing_title": "Associa un nuovo dispositivo",
9
+ "pairing_help": "Inserisci il codice di abbinamento manuale a 11 cifre (es. 3497-011-2332) o il contenuto del QR code (MT:....). Il dispositivo deve essere raggiungibile sulla rete IP (WiFi/Ethernet o Thread tramite border router). Se il dispositivo è già associato a un altro controller (Alexa, Google, Apple), usa la funzione \"condividi/abbina con altro hub\" per ottenere un nuovo codice.",
10
+ "pairing_code": "Codice abbinamento",
11
+ "pair_button": "ASSOCIA",
12
+ "devices_title": "Dispositivi associati",
13
+ "col_name": "Nome",
14
+ "col_product": "Prodotto",
15
+ "col_state": "Stato",
16
+ "no_devices": "Nessun dispositivo ancora associato.",
17
+ "unpair_confirm": "Rimuovere (decommissionare) il dispositivo",
18
+ "unpair_ok": "Dispositivo rimosso.",
19
+ "deploy_first": "Fai prima il deploy di questo nodo di configurazione, poi riprova.",
20
+ "pairing_code_missing": "Inserisci un codice di abbinamento.",
21
+ "pairing_wait": "Abbinamento in corso. Può richiedere fino a un minuto...",
22
+ "pairing_failed": "Abbinamento fallito",
23
+ "pairing_ok": "Dispositivo associato con successo!"
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,34 @@
1
+ <script type="text/markdown" data-help-name="matterbridge-config">
2
+ # Bridge Matter (BETA)
3
+
4
+ > Questo nodo è in **BETA**: funziona, ma alcuni dettagli potrebbero cambiare tra una release e l'altra.
5
+
6
+ ## Panoramica
7
+
8
+ Questo nodo di configurazione è il **bridge Matter vero e proprio**: esegue il server Matter che Alexa, Google Home, Apple Home (o qualunque controller Matter) associano **una sola volta**. Ogni nodo **Matter Bridge device** nei tuoi flow punta qui e compare nelle app come un dispositivo del bridge.
9
+
10
+ ## Configurazione
11
+
12
+ |Campo|Descrizione|
13
+ |--|--|
14
+ | Nome | Il nome di questo nodo di configurazione in Node-RED |
15
+ | Nome del bridge Matter | Come viene chiamato il bridge stesso nelle app Matter |
16
+ | Porta | Porta UDP del server Matter (default 5540). Ogni bridge richiede la propria porta, quindi puoi eseguire **più bridge indipendenti** |
17
+
18
+ ## Abbinamento
19
+
20
+ 1. Fai il **deploy**, attendi qualche secondo, poi riapri questo nodo.
21
+ 2. Il pannello di abbinamento mostra il **QR code** e il **codice manuale**: scansiona o digita in Alexa / Google Home / Apple Home ("aggiungi dispositivo Matter").
22
+ 3. Più controller possono essere abbinati allo stesso bridge (multi-fabric Matter).
23
+
24
+ Il pulsante **Reset abbinamento** rimuove tutti i controller abbinati e riavvia l'advertising di abbinamento.
25
+
26
+ ## Identità e archiviazione
27
+
28
+ L'identità del bridge è legata a questo nodo di configurazione ed è salvata in `knxultimatestorage/matter` nella directory utente di Node-RED: i re-deploy (anche cambiando porta o nome) **NON** richiedono un nuovo abbinamento. Solo eliminando questo nodo di configurazione e creandone uno nuovo cambia l'identità — in quel caso rimuovi il vecchio bridge dall'app Matter e riabbina.
29
+
30
+ ## Note
31
+
32
+ - L'host Node-RED deve avere **IPv6 link-local** attivo (requisito standard Matter) ed essere raggiungibile dai controller sulla rete locale.
33
+ - I nodi device aggiunti/rinominati/rimossi vengono recepiti dai controller abbinati in pochi secondi, senza riabbinare.
34
+ </script>
@@ -0,0 +1,20 @@
1
+ {
2
+ "matterbridge-config": {
3
+ "properties": {
4
+ "title": "Bridge Matter",
5
+ "intro": "Questo nodo di configurazione è il bridge Matter vero e proprio: Alexa, Google Home, Apple Home (o qualunque controller Matter) lo associano una volta sola e vedono tutti i dispositivi KNX che gli colleghi. Aggiungi i nodi \"Matter Bridge device\" nei tuoi flow e puntali qui. Fai prima il deploy, poi riapri per ottenere il codice di abbinamento.",
6
+ "node-config-input-name": "Nome",
7
+ "bridge_name": "Nome del bridge Matter",
8
+ "port": "Porta",
9
+ "pairing_title": "Abbinamento (Alexa, Google Home, Apple Home...)",
10
+ "not_running": "Il bridge Matter non è ancora in esecuzione. Fai il deploy, attendi qualche secondo e clicca aggiorna.",
11
+ "commissioned": "Bridge abbinato a questi controller:",
12
+ "awaiting": "In attesa di abbinamento. Scansiona il QR code o inserisci il codice manuale nella tua app Matter:",
13
+ "qr_link": "Apri il QR code nel browser",
14
+ "deploy_first": "Fai prima il deploy di questo nodo di configurazione, poi clicca aggiorna.",
15
+ "reset_button": "Reset abbinamento",
16
+ "reset_confirm": "Rimuovere TUTTI i controller abbinati e riavviare l'abbinamento? I dispositivi spariranno da Alexa/Google/Apple.",
17
+ "reset_ok": "Abbinamento resettato. Il bridge è di nuovo in attesa di abbinamento."
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,53 @@
1
+ <script type="text/markdown" data-help-name="knxUltimateMatterBridge">
2
+ # Matter Bridge device (BETA)
3
+
4
+ > 此节点处于 **BETA** 阶段:可以正常工作,但细节可能在版本之间发生变化。
5
+
6
+ ## 概述
7
+
8
+ 每个 Matter Bridge device 节点将**一个 KNX 设备公开为 Matter 设备**:已配对的控制器(Alexa、Google Home、Apple Home...)会以您输入的名称看到它,随时可通过 App 和语音控制。将它指向一个 **Matter 桥接器**配置节点(真正的桥接器,只需配对一次 - 配对二维码在那里),然后在流程中随意添加任意数量的设备节点。
9
+
10
+ 这与 *Matter Device* 节点方向相反:那里是 KNX 控制 Matter 设备,这里是 Matter 控制器控制 KNX。
11
+
12
+ ## 配置
13
+
14
+ |字段|说明|
15
+ |--|--|
16
+ | Matter 桥接器 | 此设备所属的 Matter 桥接器配置节点 |
17
+ | KNX 网关 | 用于报文的 KNX 网关。**可选**:没有网关时,设备通过节点引脚以纯 Flow 模式工作。项目中只有一个网关时会自动选择 |
18
+ | 名称 | Alexa 等显示并用于语音命令的名称 |
19
+ | 设备类型 | Matter 设备类型(见下文);决定显示哪些组地址字段 |
20
+ | 启动时读取状态 | 启动时向状态 GA 发送 `GroupValue_Read`,以填充 Matter 属性 |
21
+
22
+ ## 设备类型与组地址
23
+
24
+ |类型|组地址|
25
+ |--|--|
26
+ | 开关灯、插座 | 开/关命令 GA、开/关状态 GA (DPT 1.001) |
27
+ | 调光灯 | + 调光 % 命令/状态 GA (DPT 5.001) |
28
+ | RGB 彩色灯 | + RGB 颜色命令/状态 GA (DPT 232.600)。Matter 颜色(hue/saturation 或 XY,来自 App 的色轮)与 KNX RGB 三元组相互转换 |
29
+ | 色温灯 | + 色温命令/状态 GA,开尔文 (DPT 7.600) |
30
+ | 窗帘/卷帘 | 上/下 (DPT 1.008)、停止 (DPT 1.017)、位置 % 命令/状态 (DPT 5.001)、可选位置反转 |
31
+ | 温控器(采暖) | 当前温度 GA、设定点命令/状态 GA (DPT 9.001) |
32
+ | 风扇/新风 | 速度 % 命令/状态 GA (DPT 5.001) |
33
+ | 传感器(温度、湿度、光照、人体、门磁) | 各一个状态 GA |
34
+ | 烟雾/CO 报警器 | 烟雾报警状态 GA + 可选 CO 报警状态 GA (DPT 1.005):手机上的紧急通知 |
35
+ | 漏水探测器 | 漏水状态 GA (DPT 1.005) |
36
+ | 空气质量传感器 (CO2) | CO2 状态 GA,ppm (DPT 9.008);空气质量等级(好/一般/中等/差...)自动推导 |
37
+ | 扫地机器人 | **仅 Flow**:无组地址。启用节点引脚:助手的命令("开始清扫"、暂停/继续/回充)作为 `rvcmode`/`rvccommand` 到达输出;用 `msg.payload = { function: "rvcstate", value: "running"\|"docked"\|"charging"\|"paused"\|"error" }` 报告状态,用 `function: "rvcmode", value: "cleaning"\|"idle"` 报告模式 |
38
+
39
+ - **命令 GA**:助手发送命令时写入 KNX 总线。
40
+ - **状态 GA**:从总线读取,保持 Matter 属性(和 App)更新。
41
+
42
+ ## 节点引脚
43
+
44
+ 如果启用节点的输入/输出引脚:
45
+
46
+ - **输入**:从 Flow 更新 Matter 状态,无需经过 KNX 总线:`msg.payload = { function: "onoff", value: true }`(`function` 为 `onoff`、`level`、`rgb`、`colortemp`、`position`、`temperature`、`humidity`、`illuminance`、`occupancy`、`contact`、`currenttemp`、`setpoint`、`fanspeed`、`smoke`、`co`、`leak`、`co2`、`rvcstate`、`rvcmode` 之一)。适合把 Flow 中计算的值(如虚拟传感器)公开给 Alexa 等。
47
+ - **输出**:从 Matter 控制器收到的每个命令都转发到 Flow:`msg.topic` = 设备名称,`msg.payload` = 值,`msg.matter` = 原始命令。没有命令 GA 的设备成为**纯 Flow 设备**。
48
+
49
+ ## 说明
50
+
51
+ - 设备的 Matter 身份与此节点绑定:删除节点并新建一个后,App 会看到一个全新的设备。
52
+ - 添加/重命名/移除的设备节点会在几秒内被已配对的控制器识别,无需重新配对桥接器。
53
+ </script>
@@ -0,0 +1,83 @@
1
+ {
2
+ "knxUltimateMatterBridge": {
3
+ "title": "Matter Bridge (BETA)",
4
+ "bridge_name": "Matter 桥接器名称",
5
+ "port": "端口",
6
+ "devices_help": "添加要在 Matter 上公开的 KNX 设备。\"名称\"是 Alexa/Google/Apple 显示并用于语音命令的名称。命令 GA = 助手发送命令时写入;状态 GA = 从总线读取以保持 App 更新。",
7
+ "read_status_startup": "启动时读取状态组地址",
8
+ "opt_yes": "是",
9
+ "opt_no": "否",
10
+ "node_pins": "节点输入/输出引脚",
11
+ "node_pins_hide": "隐藏",
12
+ "node_pins_show": "显示节点输入/输出引脚",
13
+ "fields": {
14
+ "type": "设备类型",
15
+ "name": "名称(Alexa 等显示)",
16
+ "name_placeholder": "例如 厨房灯",
17
+ "invert": "反转位置 %"
18
+ },
19
+ "functions": {
20
+ "fn_onoff_cmd": "开/关 命令 GA",
21
+ "fn_onoff_status": "开/关 状态 GA",
22
+ "fn_level_cmd": "调光 % 命令 GA",
23
+ "fn_level_status": "调光 % 状态 GA",
24
+ "fn_sensor_ga": "传感器状态 GA",
25
+ "fn_updown": "上/下 命令 GA",
26
+ "fn_stop": "停止 命令 GA",
27
+ "fn_position_cmd": "位置 % 命令 GA",
28
+ "fn_position_status": "位置 % 状态 GA",
29
+ "fn_currenttemp": "当前温度 GA",
30
+ "fn_setpoint_cmd": "设定点 命令 GA",
31
+ "fn_setpoint_status": "设定点 状态 GA",
32
+ "fn_rgb_cmd": "RGB 颜色命令 GA (DPT 232.600)",
33
+ "fn_rgb_status": "RGB 颜色状态 GA (DPT 232.600)",
34
+ "fn_ct_cmd": "色温命令 GA(开尔文)",
35
+ "fn_ct_status": "色温状态 GA(开尔文)",
36
+ "fn_smoke_ga": "烟雾报警状态 GA",
37
+ "fn_co_ga": "CO 报警状态 GA(可选)",
38
+ "fn_leak_ga": "漏水状态 GA",
39
+ "fn_co2_ga": "CO2 状态 GA(ppm,DPT 9.008)",
40
+ "fn_fanspeed_cmd": "风扇速度 % 命令 GA",
41
+ "fn_fanspeed_status": "风扇速度 % 状态 GA"
42
+ },
43
+ "types": {
44
+ "onofflight": "开关灯",
45
+ "dimmablelight": "调光灯",
46
+ "rgblight": "RGB 彩色灯",
47
+ "colortemperaturelight": "色温灯(可调白光)",
48
+ "onoffplug": "插座(开/关)",
49
+ "temperaturesensor": "温度传感器",
50
+ "humiditysensor": "湿度传感器",
51
+ "lightsensor": "光照传感器 (Lux)",
52
+ "occupancysensor": "人体传感器",
53
+ "contactsensor": "门磁传感器",
54
+ "windowcovering": "窗帘 / 卷帘",
55
+ "thermostat": "温控器(采暖)",
56
+ "fan": "风扇 / 新风",
57
+ "smokecoalarm": "烟雾/CO 报警器",
58
+ "waterleakdetector": "漏水探测器",
59
+ "airqualitysensor": "空气质量传感器 (CO2)",
60
+ "robotvacuum": "扫地机器人(仅 Flow,通过节点引脚)"
61
+ },
62
+ "pairing": {
63
+ "title": "配对(Alexa、Google Home、Apple Home...)",
64
+ "not_running": "Matter 桥接器尚未运行。请先部署,等待几秒后点击刷新。",
65
+ "commissioned": "桥接器已与以下控制器配对:",
66
+ "awaiting": "等待配对。请在您的 Matter App 中扫描二维码或输入手动配对码:",
67
+ "qr_link": "在浏览器中打开二维码",
68
+ "deploy_first": "请先部署此节点,然后点击刷新。",
69
+ "reset_button": "重置配对",
70
+ "reset_confirm": "移除所有已配对的控制器并重新开始配对?设备将从 Alexa/Google/Apple 中消失。",
71
+ "reset_ok": "配对已重置。桥接器重新进入配对模式。"
72
+ },
73
+ "bridge": "Matter 桥接器",
74
+ "device_name": "名称(Alexa 等显示)",
75
+ "device_help": "选择设备类型并输入语音助手将使用的名称,然后填写组地址。KNX 网关是可选的:没有网关时,启用节点引脚并从流程驱动设备。"
76
+ },
77
+ "common": {
78
+ "ga": "GA",
79
+ "dpt": "DPT",
80
+ "name": "名称",
81
+ "knx_gw": "KNX 网关"
82
+ }
83
+ }