Live
Software
Domotica
HACS
Aggiornato: Set 2026

Hermes: Meshtastic
Commander

Integrazione Home Assistant che fa da ponte tra una mesh radio Meshtastic e la casa: i nodi autorizzati inviano comandi testuali che eseguono azioni e ricevono una risposta, e Home Assistant manda notifiche broadcast sulla mesh dalle automazioni. Tutto configurabile dalla card, senza YAML. Distribuita via HACS.

1
Video serie
v1.12.0
Versione attuale

Cos’è

Hermes è un’integrazione per Home Assistant che fa da ponte tra una mesh radio Meshtastic e la casa domotica. Fa passare il testo attraverso il confine tra due mondi, in entrambe le direzioni:

  • Comandi in ingresso dalla mesh: un nodo autorizzato invia una parola chiave, Hermes esegue l’azione Home Assistant mappata su quella parola e risponde via radio.
  • Notifiche in uscita sulla mesh: i servizi hermes.broadcast e hermes.send_direct si chiamano da qualsiasi automazione, anche pianificata, così allarmi, eventi e promemoria raggiungono chi non ha campo telefonico.

È un livello applicativo sopra l’integrazione Meshtastic ufficiale: non gestisce la connessione al nodo (TCP, seriale o BLE), ne ascolta gli eventi e ne usa i servizi. Tutta la configurazione avviene dalla card, senza YAML scritto a mano, senza Jinja2 grezzo e senza risorse Lovelace da aggiungere.

Perché il nome Hermes

Hermes (greco Ἑρμῆς, il Mercurio romano) è il dio dei messaggeri, dei viaggiatori, dei confini e della comunicazione, l’araldo che porta i messaggi tra i mondi e attraversa ogni frontiera con l’elmo e i sandali alati. Il nome calza alla lettera: Hermes è un araldo che porta testo attraverso un confine, traducendo i comandi che arrivano dalla mesh LoRa in azioni della casa e riportando le notifiche della casa sulla rete radio.

Il nome si affianca al progetto gemello Chronos, dalla stessa linea di nomi di divinità greche.

Cosa fa

Comandi costruiti a bottoni. I comandi si creano scegliendo un’entità e cliccando: i tasti Read inseriscono un valore live nella risposta, i tasti Do eseguono qualcosa. Non si scrive mai il nome di un servizio, e i valori vengono offerti nel range che il dispositivo accetta davvero.

Split byte-safe. Ogni messaggio in uscita viene spezzato per stare nel payload Meshtastic, con un’intestazione (1/3), senza mai tagliare a metà un carattere multi-byte.

Silenzio di default. Una whitelist di nodi filtra i comandi, e i mittenti non autorizzati non ricevono nessuna risposta, perché rispondere confermerebbe che c’è un Home Assistant in ascolto.

La card

Una sola card raccoglie tutto il necessario per la mesh, in schede:

Scheda Cosa contiene
Status Se i messaggi passano e perché no, la radio gateway, i contatori
Chat Conversazioni per canale e per nodo, con le risposte inviate da qui
Log Cosa Hermes ha deciso per ogni messaggio, inclusi quelli ignorati
Devices Ogni nodo con batteria, segnale, hop e ultimo contatto
Map I nodi come punti, opzionalmente tutta la mesh, con filtro a raggio
Messages Costruzione dei comandi e preset di invio rapido
Home Assistant Quali entità usano i comandi, e se esistono ancora
Settings Tutto il configurabile, radio compresa

Accanto alla card principale ne stanno altre due, pensate per una dashboard che usi già per altro: Hermes summary (lo stato come lista di parametri che si riflette su una riga per valore quando la colonna è stretta) e Hermes chat (leggere e inviare messaggi). Entrambe occupano solo l’altezza che serve e non cambiano nessuna impostazione.

Sicurezza

Il principio che guida tutto: un canale ti dice le cose, un messaggio diretto le cambia.

Su un canale l’unica protezione è la chiave condivisa: i messaggi portano un mittente ma niente lo dimostra, quindi chiunque abbia la chiave può spacciarsi per qualsiasi nodo, e lì la lista dei nodi autorizzati è una difesa debole. Su un messaggio diretto con PKC (firmware 2.5 e successivi) il mittente è verificato dal protocollo prima che il messaggio arrivi a Home Assistant, e la lista vale davvero.

La forma consigliata sono due istanze: le interrogazioni di stato su un canale, tutto ciò che agisce sui messaggi diretti. Aggiungere l’integrazione due volte non costa niente, e impedisce che una chiave di canale trapelata diventi il controllo di casa in mano a un altro. Un comando gira come Home Assistant stesso, senza utente e senza conferma, quindi la lista dei comandi è la lista dei permessi: il mittente non fornisce mai un servizio, un’entità o un template, l’unica cosa che un messaggio aggiunge è la parola chiave e, dove ammesso, un numero, letto in modo rigido e controllato nel range.

Da v1.2 questa garanzia non è più solo teorica: leggendo i metadati del pacchetto, Hermes può imporre che passino solo i messaggi cifrati per questo nodo (PKC), rifiutare quelli veicolati via MQTT e scartare quelli troppo vecchi o già gestiti, con una condition entity e un cooldown a fermare i replay. Gli interruttori partono spenti, perché dipendono da campi che firmware e integrazione base devono riportare, e la scheda Status mostra cosa portavano davvero i messaggi arrivati, così si conferma prima di affidarcisi.

Servizi

La pianificazione si ottiene componendo le normali automazioni di Home Assistant con questi servizi, non c’è uno scheduler interno.

Servizio Descrizione
hermes.broadcast Invia un messaggio sul canale o DM dell’istanza
hermes.send_direct Invia un messaggio diretto a un singolo nodo

Entrambi passano dal motore di split byte-safe (massimo 200 byte per parte, intestazione (i/n), nessun carattere multi-byte spezzato).

Prerequisiti e installazione

Hermes lavora sopra l’integrazione Meshtastic ufficiale (domain: meshtastic), che deve essere installata e connessa per prima: è lei a possedere la connessione alla radio, e una sola integrazione può tenerla. Serve un firmware con PKC (≥ 2.5) se si vogliono usare i DM come canale affidabile.

L’installazione avviene via HACS con i badge My Home Assistant (un click apre HACS con il repository precompilato, un altro avvia il config flow). La card si registra da sola, quindi non c’è nessuna risorsa Lovelace da aggiungere a mano, e una vista Panel (1 card) è quella che le si addice, perché riempie lo schermo.

Stato

Hermes ha raggiunto il primo rilascio stabile (1.0), con il motore di split coperto da test (è Python puro, verificabile senza Home Assistant). Alcuni valori (timing di invio, limite di byte, schema degli eventi dell’integrazione base) restano default ragionevoli da tarare sull’hardware radio reale, come indicato nella documentazione del repository.

Licenza

Distribuito sotto licenza MIT.