node-red-contrib-eyeon-system-mqtt
v1.0.3
Published
Professional Technobus / EYEON System to MQTT bridge for Node-RED with native TCP and Serial support, dual output (MQTT and raw 5-byte bus frames) and optional Home Assistant Auto-Discovery
Downloads
590
Maintainers
Readme
node-red-contrib-eyeon-system-mqtt
Nodo Node-RED ad alte prestazioni per l'integrazione e il controllo bidirezionale del sistema domotico EYEON / Technobus di Alarmsystems TechnoLife tramite MQTT e Home Assistant, con supporto nativo TCP, framing binario a 5 byte, pacing RS485 e doppia uscita (Dual Output).
Sviluppato e manutenuto da Bruno Leonardi.
🌟 Caratteristiche Principali
Doppia Modalità di Connessione al Bus:
- Porta Seriale RS485 Diretta: Connessione diretta a convertitori USB/RS485 (default
/dev/ttyUSB0a 19200 baud, 8N1 standard Technobus EYEON). - Gateway TCP / Ethernet: Connessione socket verso convertitori Ethernet/RS485 o controller IP EYEON (
IP:Porta, auto-riconnessione e keepalive). - Modalità Standalone / Serial I/O: Possibilità di utilizzare il nodo senza controller interno, collegandolo direttamente ai nodi seriali esistenti di Node-RED (
serial requestoserial in/serial out).
- Porta Seriale RS485 Diretta: Connessione diretta a convertitori USB/RS485 (default
Framing & Pacing Bus RS485:
- Framing automatico a 5 byte fissi (
[CM0, CM1, ID, VL0, VL1]). - Pacing dei comandi TX (delay configurabile, default 100ms / ~10 msg/sec) per prevenire collisioni e sovraccarico sul bus RS485.
- Watchdog Connection: Interrogazione periodica del modulo watchdog (default ID 10 ogni 60s) con monitoraggio inattività bus (timeout a 75s).
- Framing automatico a 5 byte fissi (
Doppia Uscita (Dual Output):
- Uscita 1 (MQTT JSON): Notifiche di stato JSON formattate, pronte per essere inviate a un broker MQTT standard o ad automazioni Home Assistant.
- Uscita 2 (Raw Buffer): Buffer binario a 5 byte esatti (
eyeon/raw/rxeeyeon/raw/tx) per analisi, diagnostica o collegamento a nodi seriali esterni.
Mappatura Completa dei Moduli Technobus:
- Digital module ID: Moduli digitali a 8 relè standard (es.
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,50,51,52). - Cover module ID: Moduli tapparelle (coppie relè 1-2, 3-4, 5-6, 7-8) con comandi
OPEN,CLOSE,STOPe interblocco. - Fan module ID: Moduli fan-coil a 3 velocità (
low,medium,high,off) con compatibilità fancoil/valvole. - Analogic module ID: Moduli clima/termostato ambiente con temperatura e setpoint.
- Dimmer module ID: Moduli regolatori dimmer DALI/DMX (canali da 01 a 08).
- Energy module ID: Contatori energetici Technobus (potenza istantanea W ed energia progressiva kWh).
- Watchdog connection module ID: Modulo interrogato periodicamente per verificare la connessione bus.
- Digital module ID: Moduli digitali a 8 relè standard (es.
Sincronizzazione di Stato:
- Sync on startup: Sincronizzazione automatica di tutti i moduli all'avvio.
- Sincronizzazione periodica programmabile (in secondi).
- Richieste di sync manuali via MQTT (
sync,startup/full/eyeon/sync,{id}/module/eyeon/sync).
Home Assistant Auto-Discovery via MQTT:
- Registrazione automatica istantanea delle entità su Home Assistant (
light,cover,fan,sensor,binary_sensor). - Piena compatibilità con i package YAML Home Assistant preesistenti.
- Registrazione automatica istantanea delle entità su Home Assistant (
📦 Installazione
Dalla cartella utente di Node-RED (solitamente ~/.node-red):
npm install node-red-contrib-eyeon-system-mqttOppure direttamente dall'interfaccia grafica di Node-RED:
- Apri Menu (in alto a destra) -> Gestisci tavolozza (Manage palette).
- Seleziona la scheda Installa.
- Cerca
node-red-contrib-eyeon-system-mqtt. - Clicca su Installa.
⚙️ Configurazione dei Nodi
1. Gateway Controller (eyeon-controller)
Nodo di configurazione che gestisce il collegamento fisico verso il bus Technobus / EYEON:
- Connessione: Seleziona tra Porta Seriale RS485 oppure Gateway TCP / Ethernet.
- Porta Seriale: Percorso del dispositivo (default
/dev/ttyUSB0su Linux, oCOMxsu Windows). - Baud Rate: Velocità di trasmissione (default
19200, opzioni: 9600, 19200, 38400, 57600, 115200). - Host / IP: Indirizzo IP in modalità TCP (es.
192.168.1.100). - Porta TCP: Porta di comunicazione in modalità TCP (default
5000). - Pacing (ms): Tempo di attesa tra due pacchetti per non saturare il bus RS485 (default
100ms). - Riconnessione (ms): Intervallo di riconnessione automatica (default
5000ms).
2. Bridge Principale (eyeon-system-mqtt)
Nodo applicativo che gestisce la logica di conversione bidirezionale tra MQTT e il bus:
- Controller Gateway: Seleziona la configurazione del controller, oppure lascia vuoto per operare in modalità Standalone Serial I/O (collegato direttamente ai nodi
serial inoserial requestdi Node-RED). - Digital module ID: ID di tutti i moduli digitali a 8 relè presenti sul bus separati da virgola.
- Cover module ID: ID dei moduli usati per tapparelle.
- Fan module ID: ID dei moduli usati per fan-coil a 3 velocità.
- Analogic module ID: ID dei termostati/sonde temperatura.
- Dimmer module ID: ID dei moduli dimmer.
- Energy module ID: ID dei contatori di energia.
- Watchdog connection module ID: ID del modulo di verifica heartbeat (es.
10). - Sync on startup: Se abilitato, esegue la sincronizzazione dello stato dei moduli all'avvio.
- Debug log: Abilita il log diagnostico dettagliato nei messaggi di debug di Node-RED.
- Abilita Home Assistant Auto-Discovery: Pubblica automaticamente le configurazioni discovery su MQTT.
📡 Riferimento Topic MQTT
I topic Technobus utilizzano il formato a tre cifre per l'ID modulo (es. 001) e a due cifre per l'uscita/canale (es. 01).
Comandi (Inviati al nodo in ingresso)
| Funzione | Topic | Payload di Esempio | Descrizione |
|---|---|---|---|
| Uscita Digitale | <ID><OUT>/output/eyeon/set | "ON" oppure "OFF" | Es. 00101/output/eyeon/set -> Accende o spegne l'uscita 1 del modulo 1 |
| Uscita Temporizzata | <ID><OUT>/output/eyeon/delay | "ON" | Es. 00101/output/eyeon/delay -> Attivazione con timer programmato a bordo |
| Tutte le Uscite | <ID>/output/eyeon/all | "OFF" oppure "ON" | Es. 001/output/eyeon/all -> Spegne o accende tutte le 8 uscite del modulo |
| Tapparella | <ID><COV>/cover/eyeon/set | "OPEN", "CLOSE", "STOP" | Es. 00301/cover/eyeon/set -> Movimento o arresto tapparella 1 del modulo 3 |
| Ventilatore / Fan | <ID>/fan/eyeon/set | "low", "medium", "high", "off" | Es. 004/fan/eyeon/set -> Seleziona velocità fan-coil (relè 2, 3, 4) |
| Dimmer On/Off | <ID><CH>/dimmer/eyeon/set | "ON" oppure "OFF" | Es. 00601/dimmer/eyeon/set -> Toggle o stato del canale dimmer |
| Dimmer Luminosità (255) | <ID><CH>/brightness/255/eyeon/set | 180 (da 0 a 255) | Es. 00601/brightness/255/eyeon/set -> Imposta livello assoluto |
| Dimmer Luminosità (%) | <ID><CH>/brightness/100/eyeon/set | 75 (da 0 a 100) | Es. 00601/brightness/100/eyeon/set -> Imposta percentuale luminosità |
| Setpoint Clima | <ID>/climate/setpoint/eyeon/set | 21.5 | Es. 007/climate/setpoint/eyeon/set -> Imposta temperatura di setpoint |
| Sync Singolo Modulo | <ID>/module/eyeon/sync | Qualsiasi | Richiede lo stato digitale del modulo specificato |
| Sync Globale | sync | Qualsiasi | Richiede la sincronizzazione di tutti i moduli configurati |
| Forza Discovery | discovery | Qualsiasi | Emette nuovamente tutte le schede di auto-discovery per Home Assistant |
Notifiche di Stato (Emesse dall'Uscita 1)
| Funzione | Topic | Esempio Payload JSON |
|---|---|---|
| Stato Uscite Digitali | <ID>/output/eyeon/status | {"output":{"o1":"ON","o2":"OFF",...},"attributes":{...}} |
| Singola Uscita Digitale| <ID><OUT>/output/eyeon/status | {"output":{"state":"ON","relay":1},"attributes":{...}} |
| Ingressi Digitali | <ID>/input/eyeon/status | {"input":{"i1":"ON","i2":"OFF",...},"attributes":{...}} |
| Stato Tapparella | <ID><COV>/cover/eyeon/status | {"cover":{"state":"opening","open":true,"close":false},"attributes":{...}} |
| Stato Ventilatore | <ID>/fan/eyeon/status | {"fan":{"state":"ON","preset":"medium","percentage":2},"attributes":{...}} |
| Stato Dimmer | <ID><CH>/dimmer/eyeon/status | {"dimmer":{"state":"ON","brightness_255":200,"brightness_100":78},"attributes":{...}} |
| Temperatura Ambiente | <ID>/climate/temperature/eyeon/status | {"climate":{"temperature":"21.5"},"attributes":{...}} |
| Potenza Istantanea | <ID>/energy/power/eyeon/status | {"energy":{"power_w":2350},"attributes":{...}} |
| Energia Totale | <ID>/energy/total/eyeon/status | {"energy":{"energy_kwh":1420.5},"attributes":{...}} |
| Stato Connessione | connection/eyeon/status | {"connection":{"state":"ON","status":"CONNECTED"},"attributes":{...}} |
🛠️ Esempio di Flusso Node-RED
Collega un nodo MQTT In all'ingresso del nodo eyeon-system-mqtt, e collega la sua prima uscita ad un nodo MQTT Out:
[MQTT In: #] ---> [eyeon-system-mqtt] === (Out 1) ---> [MQTT Out]
=== (Out 2) ---> [Debug Raw Buffer]Grazie al gestore interno, se invii via MQTT un messaggio con topic 00101/output/eyeon/set e payload ON, il nodo genererà automaticamente il frame Technobus a 5 byte 0x55 0x22 0x01 0x01 0x01, lo trasmetterà al gateway con cadenza sicura sul bus RS485 e riceverà l'eco di conferma aggiornando lo stato in tempo reale.
📋 Licenza
Distribuito sotto licenza MIT. Consulta il file LICENSE per ulteriori dettagli.
Copyright (c) 2026 Bruno Leonardi.
