Sommario:
- Passaggio 1: parti e strumenti
- Fase 2: Principio di lavoro
- Passaggio 3: assemblare il dispositivo
- Passaggio 4: carica il codice
- Passaggio 5: configurare HomeAssistant
- Passaggio 6: configurazione del proprio server MQTT [Facoltativo]
- Passaggio 7: OTA (aggiornamenti via etere) per NodeMCU
- Passaggio 8: conclusioni, lavoro futuro
Video: Home Assistant Integrazione del contatore Geiger: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
In questo tutorial ti mostrerò come aggiungere sensori personalizzati a HASS (assistente domestico) più specificamente un contatore geiger, ma il processo è simile anche per altri sensori.
Useremo la scheda NodeMCU, un contatore geiger basato su arduino e un assistente domestico già installato.
L'integrazione sarà basata su un server MQTT (pubblico o privato) e ti guiderò passo dopo passo.
Nel caso in cui non sai cos'è l'assistente domiciliare, visita la loro pagina https://www.home-assistant.io/. È una piattaforma di automazione domestica ben nota, molto ben tenuta e altamente personalizzabile.
Imparerai a conoscere:
- configurazione avanzata per Home Assistant
- NodeMCU (scheda di sviluppo) e come programmarlo con l'IDE Arduino
- OTA (aggiornamenti via etere) utilizzando l'IDE Arduino per la scheda NodeMCU
- come collegare un dispositivo seriale al NodeMCU
- installazione manuale di un server MQTT su linux (opzionale)
Assunzioni base:
- hai Home Assistant attivo e funzionante
- conosci un po' di elettronica
- hai installato Arduino IDE
Passaggio 1: parti e strumenti
Parti:
1. Scheda NodeMCU
2. breadbord
3. fili juper maschio-maschio e maschio-femmina
3. cavo da usb a micro usb
4. arduino contatore geiger con interfaccia seriale
(cerca su Ebay "arduino geiger couter")
5. materiale radioattivo (opzionale un piccolo campione di prova)
Utensili:
1. Arduino IDE
2. Home Assistant installato
Fase 2: Principio di lavoro
Il nostro obiettivo è mostrare su HomeAssistat (HASS) le letture del contatore geiger. Da un lato abbiamo un server HASS attivo e funzionante da qualche parte che potrebbe essere un raspberry pi o un altro dispositivo e dall'altro abbiamo il contatore geiger.
Il contatore geiger ha una porta seriale, una soluzione sarà quella di collegare direttamente la porta seriale al RaspberryPi su cui gira HASS.
Alcuni motivi per cui potrebbe non essere una buona idea:
- non c'è spazio fisico lì
- abbiamo qualche altro dispositivo sulla porta seriale
- vogliamo collegare un sensore ambientale che va posizionato all'esterno al posto del contatore geiger
Ok, esploreremo un'altra possibilità di effettuare la connessione tramite WIFI:
L'HASS supporta la lettura dei dati del sensore e la visualizzazione che tramite un server MQTT, questo tipo di server è una connessione leggera per dispositivi di piccole dimensioni, un dispositivo pubblica un messaggio su un "argomento" l'altro ascolta su quell'argomento per ricevere il messaggio. Quindi HASS ascolterà e abbiamo bisogno di qualcosa che pubblichi il messaggio.
Il nostro sensore sa parlare solo sulla linea seriale, quindi utilizzeremo una scheda in grado di leggere una linea seriale e che può connettersi tramite WIFI e parlare con il server MQTT. Una scheda economica che fa questo è la NodeMCU.
Il NodeMCU può essere programmato con Arduino IDE. Lo schizzo è piuttosto semplice, fa quanto segue:
- si connette al WIFI
- mantiene una connessione MQTT con il server e riprova la connessione in caso di errore o disconnesso
- ascolta i dati in ingresso seriali come una serie di numeri interi
- una volta che arriva un intero lo invia tramite MQTT a un argomento specifico
Passaggio 3: assemblare il dispositivo
Useremo breadboard e wire, quindi è abbastanza semplice, abbiamo alcuni passaggi:
- metti il NodeMCU sulla breadboard
- collegare il tubo geiger al contatore geiger (attenzione alla polarità)
- VIN va al contatore geiger +
- GND va al contatore geiger -
- NodeMCU D7 (pin 13) va a geiger TX
- NodeMCU D8 (pin 15) va a geiger RX
- alimentare NodeMCU tramite micro USB dal computer
Passaggio 4: carica il codice
Useremo Arduino IDE e ci assicureremo di avere la scheda NodeMCU installata e la libreria Adafruit_MQTT installata.
1. Clona il repository github: https://github.com/danionescu0/arduino e copia lo schizzo da projects/HASSGeigerIntegration nella posizione del tuo sketchbook di arduino
2. Apri Arduino IDE e installa NodeMCU
- vai su File -> Preferenze, negli URL di Gestione schede aggiuntive aggiungi https://arduino.esp8266.com/stable/package_esp8266com_index.json se hai già qualcosa metti un coma davanti e fai clic su ok
- da Strumenti -> Scheda -> Board Manager digitare "nodemcu" e selezionare la voce esp8266 da ESP8266 Community e premere installa
3. Installa Adafruit_MQTT
- vai su Strumenti -> Gestisci librerie -> cerca "Adafruit_MQTT" e installa "Libreria Arduino MQTT"
4. Collega il cavo USB al tuo computer e configura la scheda:
- vai su Strumenti -> Scheda -> seleziona NodeMcu 1.0
- Strumenti -> Porta -> la tua porta USB
- lasciare invariate le altre impostazioni
4. Nello schizzo cambia le tue credenziali WIFI in modo che corrispondano alle tue:
#define STASSID "ssid" // Sostituisci con il tuo SSID WIFI
#define STAPSK "pass" // Sostituisci con la tua password WIFI
5. Carica lo schizzo sulla tua scheda e dopo il caricamento ripristina la scheda dal pulsante
6. Apri il monitor seriale, se tutto è andato bene dovresti vedere un output come questo:
Avvio
Indirizzo IP: 192.168.1.168 OTA abilitato Connessione a MQTT… MQTT connesso! {"radiazione": 0.03}..
Passaggio 5: configurare HomeAssistant
Supponiamo che tu abbia un assistente domestico attivo e funzionante. Sul mio sistema ho HASSOS versione 3.12 su un RaspberryPi. Se la tua versione dell'assistente domestico è troppo vecchia o molto nuova, alcune funzionalità potrebbero differire. Questo tutorial funziona sicuramente con la versione 3.12.
Se non hai installato Home Assistant, controlla la loro guida di installazione ufficiale:
Prima di procedere con l'installazione, assicurati che il NodeMCU sia collegato e che pubblichi i dati.
Ok avremo anche qui una serie di passaggi per la configurazione:
1. Installa "editor di file" se non lo hai nel menu, ecco il tutorial ufficiale:
2. Modifica il file "/config/configuration.yaml" e aggiungi quanto segue e salvalo
- la sezione mqtt se non ce l'hai già
mqt:
broker: broker.hivemq.com discovery: true discovery_prefix: ha
- la sezione sensori
sensore:
- piattaforma: mqtt nome: "Radiation" state_topic: "ha/radiation" unit_of_measurement: 'uSv' unique_id: "radiation" value_template: "{{ value_json.radiation }}"
3. Da Configurazione -> Controlli server: premere "Verifica configurazione" per verificare la presenza di errori nel file di configurazione yaml, quindi premere "riavvia" e attendere il riavvio
4. Da Panoramica -> Menu in alto a destra -> Configura UI -> premi il pulsante + in basso a destra
5. Seleziona "sensore" dall'elenco -> nel campo "entità" cerca "sensor.radiation", nel campo del nome scrivi "Radiazione" e fai clic su ok, ora dovrebbe essere nella pagina principale
Passaggio 6: configurazione del proprio server MQTT [Facoltativo]
Parliamo un po' di MQTT
“MQTT è un protocollo di trasporto di messaggistica di pubblicazione/sottoscrizione del server client. È leggero, aperto, semplice e progettato in modo da essere facile da implementare. Queste caratteristiche lo rendono ideale per l'uso in molte situazioni, inclusi ambienti vincolati come per la comunicazione in contesti Machine to Machine (M2M) e Internet of Things (IoT) in cui è richiesta una piccola impronta di codice e/o la larghezza di banda della rete è un premio."
Citazione dalla specifica ufficiale MQTT 3.1.1.
Quindi fondamentalmente possiamo pubblicare un messaggio da qualche parte da un lato e dall'altro possiamo ascoltare quei messaggi e fare qualcosa con i dati. Supporto MQTT "topics", gli argomenti sono stringhe che il broker utilizza per filtrare i messaggi per ogni client, quindi se pubblichiamo un messaggio nell'argomento "/radiation" un ascoltatore deve iscriversi allo stesso argomento per ottenere i messaggi che stiamo inviando.
Ecco un ottimo tutorial su MQTT in dettaglio:
Utilizzando il server hive gratuito ci sono alcuni svantaggi come:
- chiunque ascolti il tuo argomento riceverà i tuoi messaggi
- se va giù o richiede il pagamento in un secondo momento non potrai utilizzarlo (a meno che tu non paghi)
- se qualcuno che pubblica messaggi sullo stesso argomento riceverà anche i suoi messaggi, potrebbe pubblicare messaggi incompatibili e rompere i tuoi grafici HASS
Utilizzo di un server privato
Se non vuoi utilizzare il server pubblico gratuito hai la possibilità di un server privato. Installeremo Mosquitto MQTT su un server Ubuntu / Debian come un raspberry pi o un computer.
Mosquitto è un server che implementa il protocollo MQTT ed è gratuito.
Per installarlo accedi al tuo raspnerry pi o ad un altro server basato su Debian ed esegui:
sudo apt update
sudo apt install -y mosquitto mosquitto-clients sudo systemctl enable mosquitto.service
Ciò aggiornerà il repository, installerà il server e il client mosquiito e consentirà l'esecuzione di un servizio all'avvio
Per ottenere l'ip del server eseguire:
nome host -I
e produrrà qualcosa come:
192.168.1.52 172.17.0.1 172.18.0.1
Quindi il mio IP è 192.168.1.52, nei comandi seguenti sostituiscilo con il tuo IP
Puoi testare il server MQTT pubblicando un messaggio e ricevendolo con lo strumento console, per questo devono essere aperti due terminali uno che ascolta un messaggio, uno che pubblicherà il messaggio.
Prima in un terminale esegui questo comando per ascoltare un messaggio su "/some-topic"
mosquitto_sub -h 192.168.1.52 -t /un-topic
Apri un altro terminale e pubblica un messaggio su quell'argomento:
mosquitto_pub -h 192.168.1.52 -t /some-topic -m '{"umidità": 74.0}'
Nel primo terminale dovresti vedere ' {"humidity": 74.0}' stampato.
Attenzione speciale:
- questa configurazione presuppone che HASS, Mosquitto e NodeMCU siano connessi alla stessa rete WIFI e non ci siano regole firewall e possano comunicare liberamente
- il server Mosquitt MQTT non ha nome utente/password, se vuoi impostare le credenziali controlla questo: https://www.steves-internet-guide.com/mqtt-username-password-example/ Inoltre dovresti configurare le credenziali in Home Assistant e nello sketch di arduino
Passaggio 7: OTA (aggiornamenti via etere) per NodeMCU
Gli aggiornamenti via etere consentono di eseguire il flashing della scheda di sviluppo in modalità wireless senza la necessità di un cavo fisico.
Arduino IDE supporta questa funzionalità per la serie ESP8266 e alcune altre schede:
- richiede il flash iniziale tramite il cavo USB
- crea una porta virtuale su WIFI ed è visibile solo da Arduino IDE
- non sono disponibili informazioni di debug seriale
- supporta la protezione con password
Per abilitare OTA in uno schizzo ESP8266, includere prima la libreria:
#include "ArduinoOTA.h"
Definisci anche questa costante della password dello schizzo:
#define SKETCHPASS "qualche_password"
Nella sezione di configurazione aggiungi queste righe:
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connessione fallita! Riavvio in corso…"); ritardo (5000); ESP.restart(); } ArduinoOTA.setPassword(SKETCHPASS); ArduinoOTA.onStart(() { String type; if (ArduinoOTA.getCommand() == U_FLASH) { type = "schizzo"; } else { // U_FS type = "filesystem"; } Serial.println("Inizia l'aggiornamento " + digita); }); ArduinoOTA.onEnd(() { Serial.println("\nEnd"); }); ArduinoOTA.onProgress((unsigned int progress, unsigned int total) { Serial.printf("Progress: %u%%\r", (progress / (total/100))); }); ArduinoOTA.onError((ota_error_t error) { Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) { Serial.println("Auth Failed"); } else if (errore == OTA_BEGIN_ERROR) { Serial.println("Inizio fallito"); } else if (errore == OTA_CONNECT_ERROR) { Serial.println("Connessione fallita"); } else if (error == OTA_RECEIVE_ERROR) { Serial.println(" Ricezione fallita"); } else if (errore == OTA_END_ERROR) { Serial.println("Fine fallita"); } }); ArduinoOTA.begin(); Serial.print("Indirizzo IP: "); Serial.println(WiFi.localIP());
E nella sezione loop aggiungi questa riga:
ArduinoOTA.handle();
Dopo il caricamento iniziale del codice dopo l'avvio della scheda, dovresti vedere nell'IDE di Arduino nella sezione Strumenti->Porte due tipi di porte:
Porte seriali: /dev/ttyUSB0 (ad esempio)
Porte di rete: esp8266-xxxxx a 192.168.1.xxx
Ora puoi selezionare la porta di rete e caricare lo sketch remoto, ti verrà richiesta la password dello sketch (quella che hai definito in una costante sopra)
Passaggio 8: conclusioni, lavoro futuro
Questo tutorial può essere facilmente modificato per inviare dati su altri tipi di sensori:
- se il tuo sensore è supportato direttamente da NodeMCU tramite una libreria, raccogli i dati dal sensore e inviali direttamente tramite MQTT
- se la libreria dei sensori non funziona con NodeMCU ma è solo per Arduino, carica il tuo codice su arduino, emetti il valore attraverso la linea seriale e leggilo nel NodeMCU e spingilo (proprio come abbiamo fatto con il contatore geiger)
Possiamo persino modificarlo per inviare dati da più sensori in questo modo:
- collega i tuoi sensori al NodeMCU
- poll dati da ciascun sensore
- per ogni sensore pubblicare i dati su un argomento diverso
- nell'HASS definire più sensori (come abbiamo fatto con il geiger) che ascolteranno diversi argomenti
Consigliato:
Contatore Geiger funzionante con parti minime: 4 passaggi (con immagini)
Contatore Geiger funzionante con parti minime: ecco, per quanto ne so, il contatore Geiger funzionante più semplice che puoi costruire. Questo utilizza un tubo Geiger SMB-20 di fabbricazione russa, pilotato da un circuito step-up ad alta tensione rubato da uno scacciamosche elettronico. Rileva particelle beta e gam
Controllo delle tende con ESP8266, integrazione di Google Home e Openhab e Webcontrol: 5 passaggi (con immagini)
Controllo delle tende con ESP8266, integrazione di Google Home e Openhab e controllo Web: in questo Instructable ti mostro come ho aggiunto l'automazione alle mie tende. Volevo essere in grado di aggiungere e rimuovere l'automazione, quindi tutta l'installazione è a clip. Le parti principali sono: Motore passo-passo Controllato dal driver passo-passo bij ESP-01 Ingranaggio e montaggio
Attività del contatore Geiger per i bambini di 9-11 anni: 4 passaggi
Attività del contatore Geiger per i bambini di 9-11 anni: in questo tutorial imparerai come utilizzare un rilevatore di radiazioni nucleari. Puoi acquistare il rilevatore del contatore Geiger qui Un contatore Geiger è uno strumento utilizzato per rilevare e misurare le radiazioni ionizzanti. Conosciuto anche come contatore Geiger-Mueller (
Attività del contatore Geiger per i bambini dai 12 anni in su: 5 passaggi
Attività del contatore Geiger per i 12+ anni: in questo tutorial imparerai come assemblare un rilevatore di radiazioni nucleari. Puoi acquistare il kit contatore Geiger qui. Un contatore Geiger è uno strumento utilizzato per rilevare e misurare le radiazioni ionizzanti. Conosciuto anche come contatore Geiger-Mueller (
Contatore Geiger fai da te con un ESP8266 e un touchscreen: 4 passaggi (con immagini)
Contatore Geiger fai-da-te con un ESP8266 e un touchscreen: AGGIORNAMENTO: VERSIONE NUOVA E MIGLIORATA CON WIFI E ALTRE FUNZIONI AGGIUNTE QUI ha progettato e costruito un contatore Geiger - un dispositivo in grado di rilevare le radiazioni ionizzanti e avvisare l'utente di pericolosi livelli di radiazioni ambientali con il tutto- troppo familiare clic no