Taula de continguts:
- Pas 1: peces i eines
- Pas 2: Principi de treball
- Pas 3: munteu el dispositiu
- Pas 4: pengeu el codi
- Pas 5: configureu HomeAssistant
- Pas 6: Configuració del vostre propi servidor MQTT [Opcional]
- Pas 7: OTA (Over the Air Updates) per al NodeMCU
- Pas 8: Conclusions, treball futur
Vídeo: Integració del comptador Geiger Assistant Home: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
En aquest tutorial us mostraré com afegir sensors personalitzats a HASS (assistent domèstic) més concretament a un comptador geiger, però el procés també és similar per a altres sensors.
Utilitzarem la placa NodeMCU, un comptador geiger basat en arduino i un assistent domèstic ja instal·lat.
La integració es basarà en un servidor MQTT (públic o privat) i us faré pas a pas.
En cas que no sàpiga què és assistent a la llar, visiteu la seva pàgina https://www.home-assistant.io/. És una coneguda plataforma domòtica molt ben mantinguda i molt personalitzable.
Aprendràs sobre:
- Configuració avançada per a Home Assistant
- NodeMCU (placa de desenvolupament) i com programar-lo amb l'IDE Arduino
- OTA (actualitzacions over the air) mitjançant l'IDE Arduino per a la placa NodeMCU
- Com connectar un dispositiu sèrie al NodeMCU
- instal·lar manualment un servidor MQTT a Linux (opcional)
Supòsits bàsics:
- teniu Home Assistant en funcionament
- Coneixes una mica l'electrònica
- teniu Arduino IDE instal·lat
Pas 1: peces i eines
Parts:
1. Tauler NodeMCU
2. pa de pa
3. cables juper masculí i masculí i femení
3. cable USB a micro USB
4. comptador geiger arduino amb interfície sèrie
(cerqueu a Ebay "arduino geiger couter")
5. material radioactiu (opcional una petita mostra de prova)
Eines:
1. ID Arduino
2. Home Assistant instal·lat
Pas 2: Principi de treball
El nostre objectiu és mostrar a HomeAssistat (HASS) les lectures del comptador Geiger. Per un costat, tenim un servidor HASS funcionant en algun lloc, pot ser un raspberry pi o un altre dispositiu i, per l'altre, tenim el comptador geiger.
El comptador geiger té un port sèrie, una solució serà connectar directament el port sèrie al RaspberryPi on funciona el HASS.
Alguns motius pels quals potser no és una bona idea:
- allà no hi ha espai físic
- Tenim algun altre dispositiu al port sèrie
- volem connectar un sensor ambiental que s’ha de col·locar a l’exterior en lloc del comptador geiger
D'acord, així que explorarem una altra possibilitat de fer la connexió a través de WIFI:
El HASS admet la lectura de dades del sensor i mostra que mitjançant un servidor MQTT, aquest tipus de servidor és una connexió de poc pes per a dispositius petits, un dispositiu publica un missatge sobre un "tema" i l'altre escolta sobre aquest tema per rebre el missatge. Per tant, HASS escoltarà i necessitarem alguna cosa que publiqui el missatge.
El nostre sensor només sap parlar per la línia de sèrie, de manera que utilitzarem una placa que pot llegir una línia de sèrie i que es pot connectar a través de WIFI i parlar amb el servidor MQTT. Un tauler barat que ho fa és el NodeMCU.
El NodeMCU es pot programar amb Arduino IDE. L’esbós és força senzill, fa el següent:
- es connecta a WIFI
- manté una connexió MQTT amb el servidor i torna a intentar la connexió quan falla o es desconnecta
- escolta les dades entrants en sèrie com una sèrie de enters
- un cop arriba un nombre enter, l'envia a través de MQTT a un tema específic
Pas 3: munteu el dispositiu
Utilitzarem taulers de connexió i cables, de manera que és bastant senzill, tenim uns quants passos:
- col·loqueu el NodeMCU a la pissarra
- connecteu el tub Geiger al comptador Geiger (vigileu la polaritat)
- VIN va al comptador geiger +
- GND és el millor per comptador geiger -
- NodeMCU D7 (pin 13) va a Geiger TX
- NodeMCU D8 (pin 15) va a Geiger RX
- alimentar NodeMCU mitjançant micro USB des de l'ordinador
Pas 4: pengeu el codi
Utilitzarem Arduino IDE i ens assegurarem que tenim la placa NodeMCU instal·lada i la biblioteca Adafruit_MQTT instal·lada.
1. Cloneu el dipòsit de github: https://github.com/danionescu0/arduino i copieu l'esbós dels projectes / HASSGeigerIntegration a la ubicació del vostre quadern de dibuixos arduino.
2. Obriu Arduino IDE i instal·leu NodeMCU
- aneu a Fitxer -> Preferències, als URL del Gestor de taulers addicionals, afegiu https://arduino.esp8266.com/stable/package_esp8266com_index.json si ja teniu alguna cosa, poseu-hi un coma al davant i feu clic a D'acord
- des d'Eines -> Tauler -> Gestor de taules, escriviu "nodemcu" i seleccioneu l'entrada esp8266 per la comunitat ESP8266 i premeu instal·lar
3. Instal·leu Adafruit_MQTT
- aneu a Eines -> Gestiona biblioteques -> cerqueu "Adafruit_MQTT" i instal·leu "Biblioteca Arduino MQTT"
4. Connecteu el cable USB a l'ordinador i configureu la placa:
- aneu a Eines -> Tauler -> seleccioneu NodeMcu 1.0
- Eines -> Port -> el vostre port USB
- deixeu els altres paràmetres sense canvis
4. A l'esbós, canvieu les vostres credencials WIFI perquè coincideixin amb les vostres:
#define STASSID "ssid" // Substitueix-lo pel SSID WIFI
#define STAPSK "pass" // Substitueix per la contrasenya WIFI
5. Pengeu l'esbós al tauler i després de la càrrega reinicieu el tauler des del botó
6. Obriu el monitor sèrie, si tot ha anat bé, hauríeu de veure alguna sortida com aquesta:
Arrencada
Adreça IP: 192.168.1.168 habilitat OTA Connexió a MQTT … MQTT connectat! {"radiació": 0,03}..
Pas 5: configureu HomeAssistant
Suposarem que teniu l’assistent domèstic en funcionament. Al meu sistema tinc la versió 3.12 de HASSOS en un RaspberryPi. Si la vostra versió d'assistent a la llar és massa antiga o molt nova, algunes funcions poden variar. Aquest tutorial funciona amb seguretat amb la versió 3.12.
Si no teniu instal·lat Home Assistant, consulteu la seva guia d'instal·lació oficial:
Abans d’avançar amb la instal·lació, assegureu-vos que el NodeMCU està connectat i que publica dades.
D'acord, aquí també tindrem una sèrie de passos per a la configuració:
1. Instal·leu "editor de fitxers" si no el teniu al menú, aquí teniu el tutorial oficial:
2. Editeu el fitxer "/config/configuration.yaml" i afegiu el següent i deseu-lo
- la secció mqtt si encara no la teniu
mqtt:
broker: broker.hivemq.com discovery: veritable descobriment_prefix: ha
- la secció de sensors
sensor:
- platform: mqtt name: "Radiation" state_topic: "ha / radiation" unit_of_measurement: 'uSv' unique_id: "radiation" value_template: "{{value_json.radiation}}"
3. Des de Configuració -> Controls del servidor: premeu "Comprova la configuració", comproveu si hi ha errors al fitxer de configuració yaml i, a continuació, premeu "reiniciar" i espereu fins que es reiniciï.
4. Des de Visió general -> Menú de l'extrem superior dret -> Configura interfície d'usuari -> premeu el botó + de la part inferior dreta
5. Seleccioneu "sensor" a la llista -> al camp "entitat" cerqueu "sensor.radiation", al camp del nom escriviu "Radiació" i feu clic a D'acord, hauria de ser a la pàgina principal ara
Pas 6: Configuració del vostre propi servidor MQTT [Opcional]
Discutim una mica sobre MQTT
“MQTT és un protocol de transport de missatgeria de publicació / subscripció del servidor client. És lleuger, obert, senzill i dissenyat de manera que sigui fàcil d’implementar. Aquestes característiques el fan ideal per utilitzar-lo en moltes situacions, inclosos els entorns restringits, com ara la comunicació en contextos de màquina a màquina (M2M) i Internet de les coses (IoT), on es requereix una petita petjada de codi i / o l’amplada de banda de la xarxa supera.”
Citació de l'especificació oficial MQTT 3.1.1.
Per tant, bàsicament podem publicar un missatge en algun costat i, de l’altra, podem escoltar aquests missatges i fer alguna cosa amb les dades. MQTT admet "temes", els temes són cadenes que el corredor utilitza per filtrar els missatges de cada client, de manera que si publiquem un missatge al tema "/ radiation", un oient s'ha de subscriure al mateix tema per obtenir els missatges que estem enviant.
Aquí teniu un gran tutorial sobre MQTT en detall:
Utilitzant el servidor gratuït de rusc hi ha alguns desavantatges com:
- Tothom que escolti el vostre tema rebrà els vostres missatges
- si baixa o requereix un pagament més endavant, no el podreu utilitzar (tret que pagueu)
- si algú que publica missatges sobre el mateix tema, també en rebrà els missatges, pot publicar missatges incompatibles i trencar els gràfics HASS
Utilització d’un servidor privat
Si no voleu utilitzar el servidor públic gratuït, teniu l'opció d'un servidor privat. Instal·larem el Mosquitto MQTT en un servidor ubuntu / debian com un raspberry pi o un ordinador.
Mosquitto és un servidor que implementa el protocol MQTT i és gratuït.
Per instal·lar-lo, inicieu sessió al vostre raspnerry pi o a un altre servidor basat en debian i executeu:
actualització sudo apt
sudo apt install -y mosquitto mosquitto-clients sudo systemctl habilita mosquitto.service
Això actualitzarà el dipòsit, instal·larà el client i el servidor mosquiito i li permetrà executar un servei a l'inici
Per obtenir l'execució de l'IP del servidor:
nom d'amfitrió -I
i produirà alguna cosa així:
192.168.1.52 172.17.0.1 172.18.0.1
Per tant, la meva IP és 192.168.1.52, a les ordres següents substituïu-la per la vostra pròpia IP
Podeu provar el servidor MQTT publicant un missatge i rebent-lo amb l’eina de la consola, per a això s’han d’obrir dos terminals que escoltin un missatge, un que publicarà el missatge.
Primer en un terminal executeu aquesta ordre per escoltar un missatge sobre "/ some-topic"
mosquitto_sub -h 192.168.1.52 -t / some-topic
Obriu un altre terminal i publiqueu un missatge sobre aquest tema:
mosquitto_pub -h 192.168.1.52 -t / some-topic -m '{"humitat": 74.0}'
Al primer terminal hauríeu de veure imprès "{" humitat ": 74.0}".
Atenció especial:
- aquesta configuració suposa que HASS, Mosquitto i NodeMCU estan connectats a la mateixa xarxa WIFI i no hi ha regles de tallafoc i es poden comunicar lliurement
- El servidor Mosquitt MQTT no té cap nom d'usuari / contrasenya, si voleu configurar les credencials, consulteu-ho: https://www.steves-internet-guide.com/mqtt-username-password-example/ També hauríeu de configurar les credencials a Home Assistant i a l'esbós d'arduino
Pas 7: OTA (Over the Air Updates) per al NodeMCU
Les actualitzacions a través de l'aire vol dir que la placa de desenvolupament es pot llançar de manera ràpida sense necessitat de cable físic.
Arduino IDE admet aquesta funcionalitat per a la sèrie ESP8266 i algunes altres plaques:
- requereix flash inicial pel cable USB
- crea un port virtual a través de WIFI i només és visible des d’Arduino IDE
- no hi ha informació de depuració en sèrie disponible
- Admet protecció amb contrasenya
Per habilitar OTA en un esbós ESP8266, primer cal incloure la biblioteca:
#include "ArduinoOTA.h"
Definiu també aquesta constant de contrasenya d'esbós:
#define SKETCHPASS "some_password"
A la secció de configuració, afegiu aquestes línies:
while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {
Serial.println ("Error de connexió! Reinici …"); retard (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Tipus de cadena; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Comença a actualitzar "tipus +);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nFin");}); ArduinoOTA.onProgress ( (progrés int sense signatura, total sense signatura) {Serial.printf ("Progrés:% u %% / r", (progrés / (total / 100)));}); ArduinoOTA.onError ( (error ota_error_t) {Serial.printf ("Error [% u]:", error); if (error == OTA_AUTH_ERROR) {Serial.println ("Error fallit");} else if (error == OTA_BEGIN_ERROR) {Serial.println ("S'ha produït un error");} else if (error == OTA_CONNECT_ERROR) {Serial.println ("Error de connexió");} else if (error == OTA_RECEIVE_ERROR) {Serial.println (" Error de recepció ");} else if (error == OTA_END_ERROR) {Serial.println (" Error final ");}}); ArduinoOTA.begin (); Serial.print ("adreça IP:"); Serial.println (WiFi.localIP ());
I a la secció del bucle, afegiu aquesta línia:
ArduinoOTA.handle ();
Després de carregar el codi inicial després de l’arrencada de la placa, hauríeu de veure a l’IDE Arduino a la secció Eines-> Port dos tipus de ports:
Ports sèrie: / dev / ttyUSB0 (per exemple)
Ports de xarxa: esp8266-xxxxx a 192.168.1.xxx
Ara podeu seleccionar el port de xarxa i penjar el comandament d'esbós, se us demanarà la contrasenya d'esbós (la que heu definit en una constant anterior).
Pas 8: Conclusions, treball futur
Aquest tutorial es pot modificar fàcilment per enviar dades sobre altres tipus de sensors:
- si NodeMCU admet el sensor directament a través d’una biblioteca, només cal que agrupeu les dades del sensor i que l’envieu directament a través de MQTT
- si la biblioteca de sensors no funciona amb NodeMCU, però només és per a Arduino, carregueu el vostre codi a l'arduino, envieu el valor a través de la línia serial i llegiu-lo al NodeMCU i feu-lo clic (igual que vam fer amb el comptador geiger)
Fins i tot el podem modificar per enviar dades de diversos sensors com ara:
- connecteu els vostres sensors al NodeMCU
- dades d'enquesta de cada sensor
- per a cadascun dels sensors publiqueu les dades a un tema diferent
- a la HASS definiu diversos sensors (com vam fer amb el geiger) que escoltaran diferents temes
Recomanat:
Comptador Geiger de treball amb parts mínimes: 4 passos (amb imatges)
Funcionament del comptador Geiger W / Minimal Parts: Heus aquí, que jo sàpiga, el comptador Geiger de funcionament més senzill que podeu construir. Aquest utilitza un tub Geiger de fabricació russa SMB-20, accionat per un circuit de pujada d’alta tensió robat per un fly swatch electrònic. Detecta partícules beta i gam
Activitat de comptador Geiger per a majors de 12 anys: 5 passos
Activitat de comptador Geiger per a més de 12 anys: en aquest tutorial aprendreu a muntar un detector de radiació nuclear. Podeu adquirir el kit de comptador Geiger aquí. Un comptador Geiger és un instrument que s’utilitza per detectar i mesurar la radiació ionitzant. També conegut com a comptador Geiger – Mueller (
Comptador Geiger nou i millorat: ara amb WiFi: 4 passos (amb imatges)
Comptador Geiger nou i millorat: ara amb Wi-Fi: aquesta és una versió actualitzada del meu comptador Geiger d’aquest instructiu. Va ser força popular i vaig rebre una bona quantitat de comentaris de la gent interessada a construir-lo, així que aquí teniu la seqüela: The GC-20. Un comptador, dosímetre i radiació Geiger m
Comptador Piger Meter Geiger: 7 passos (amb imatges)
Mesurador PKE Geiger Counter: des de fa temps volia construir un comptador Geiger per complementar la meva càmera de núvols refrigerats Peltier. (Tant de bo) no hi ha un propòsit molt útil a l’hora de posseir un comptador Geiger, però m’encanten els vells tubs russos i vaig pensar que seria b
Com construir CubeSat amb el sensor de comptador Arduino i Geiger: 11 passos
Com construir CubeSat amb el sensor de comptador Arduino i Geiger: mai us heu preguntat si Mart és radioactiu o no? I si és radioactiu, els nivells de radiació són prou alts per considerar-se nocius per als humans? Totes aquestes són preguntes que esperem que el nostre CubeSat amb Arduino Geiger Counte pugui respondre