node-red-contrib-eyeon-system-mqtt 1.0.0
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
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
Connessione TCP Gateway Affidabile:
- Connessione diretta a convertitori TCP/RS485 o interfacce di rete Technobus.
- Framing automatico a 5 byte fissi (
[CM0, CM1, ID, VL0, VL1]), garantendo integritĂ dei dati anche su flussi TCP frammentati. - Auto-riconnessione intelligente e keepalive periodico configurabile.
- Pacing dei comandi TX (delay configurabile, default 50ms) per prevenire collisioni e saturazione sul bus seriale RS485.
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 interne.
- Uscita 2 (Raw Buffer): Buffer binario a 5 byte esatti (
eyeon/raw/rxeeyeon/raw/tx) per analisi, diagnostica o log a basso livello.
Mappatura Completa dei Moduli Technobus:
- Relè Digitali: Controllo singole uscite (
00101/output/eyeon/set), toggle generale (001/output/eyeon/all), uscite temporizzate (delay). - Tapparelle (Covers): 4 tapparelle per modulo a 8 relè (coppie 1-2, 3-4, 5-6, 7-8) con comandi
OPEN,CLOSE,STOPe interblocco. - Fan-Coil / Ventilazione: Controllo selettore 3 velocità su relè 2, 3, 4 (
low,medium,high,off). - Dimmer & Uscite Analogiche: Accensione/spegnimento e regolazione intensitĂ sia in scala
0..255che in percentuale0..100. - Termostati & Clima: Decodifica BCD avanzata di temperatura ambiente, manopola (knob), setpoint e velocitĂ ventilazione.
- Energia: Monitoraggio di potenza istantanea (W) ed energia progressiva (kWh).
- Relè Digitali: Controllo singole uscite (
Sincronizzazione di Stato:
- Sincronizzazione automatica all'avvio o riconnessione per tutti i moduli configurati.
- Sincronizzazione periodica programmabile (in secondi).
- Richieste di sync manuali su richiesta (
synco{id}/module/eyeon/sync).
Home Assistant Auto-Discovery via MQTT:
- Registrazione automatica istantanea delle entitĂ su Home Assistant (
light,cover,fan,sensor,binary_sensor). - CompatibilitĂ nativa con MQTT Discovery di Home Assistant.
- 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-mqtt
Oppure 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 la connessione TCP al bus Technobus / EYEON:
- Host / IP: Indirizzo IP del gateway Technobus (es.
192.168.1.100). - Porta TCP: Porta di comunicazione (default
5000). - Riconnessione (ms): Ritardo prima di tentare una nuova connessione in caso di disconnessione (default
5000). - Pacing Comandi (ms): Tempo di attesa tra l'invio di due comandi consecutivi a 5 byte per preservare il bus RS485 (default
50). - Keepalive (sec): Intervallo invio pacchetti di heartbeat (default
30).
2. Bridge Principale (eyeon-system-mqtt)
Nodo applicativo che converte i comandi MQTT in pacchetti Technobus e decodifica i dati di risposta:
- Moduli Digitali: Elenco ID dei moduli digitali a 8 relè standard separati da virgola (es.
001, 002, 010). - Moduli Tapparelle: Elenco ID dei moduli destinati al comando tapparelle (es.
003, 004). - Moduli Fan-Coil: Elenco ID dei moduli usati per il comando ventilatori (es.
005). - Moduli Dimmer: Elenco ID dei moduli regolatori dimmer (es.
006). - Termostati: Elenco ID dei moduli clima/termostato ambiente (es.
007). - Moduli Energia: Elenco ID dei contatori energetici Technobus (es.
008). - Sincronizza alla connessione: Richiede lo stato aggiornato di tutti i moduli appena stabilita la connessione.
- Sync Periodico: Intervallo in secondi per forzare il refresh dello stato del bus (0 per disabilitare).
- 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.