Sadržaj:
- Korak 1: Dijelovi i alati
- Korak 2: Načelo rada
- Korak 3: Sastavite uređaj
- Korak 4: Prenesite kôd
- Korak 5: Konfigurirajte HomeAssistant
- Korak 6: Konfiguriranje vlastitog MQTT poslužitelja [izborno]
- Korak 7: OTA (Over the Air Updates) za NodeMCU
- Korak 8: Zaključci, budući rad
Video: Integracija Geiger brojača kućnog pomoćnika: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
U ovom tutorijalu pokazat ću vam kako dodati prilagođene senzore u HASS (kućni pomoćnik), točnije gejgerov brojač, ali proces je sličan i za ostale senzore.
Koristit ćemo NodeMCU ploču, geiger -ov brojač zasnovan na arduinu i već instaliranog kućnog pomoćnika.
Integracija će se temeljiti na MQTT poslužitelju (javnom ili privatnom), a ja ću vas voditi korak po korak s ovim.
U slučaju da ne znate što je kućni pomoćnik, posjetite njihovu stranicu https://www.home-assistant.io/. To je poznata platforma za kućnu automatizaciju koja je vrlo dobro održavana i vrlo prilagodljiva.
Naučit ćete o:
- napredna konfiguracija za kućnog pomoćnika
- NodeMCU (razvojna ploča) i kako ga programirati s Arduino IDE -om
- OTA (ažuriranja putem zraka) pomoću Arduino IDE -a za ploču NodeMCU
- kako spojiti serijski uređaj na NodeMCU
- ručno instaliranje MQTT poslužitelja na linux (izborno)
Osnovne pretpostavke:
- imate aktiviran Home Assistant
- znate nešto o elektronici
- imate instaliran Arduino IDE
Korak 1: Dijelovi i alati
Dijelovi:
1. NodeMCU ploča
2. hljeb
3. muško-muški i muško-ženski juper žice
3. usb na micro usb kabel
4. arduino geiger brojač sa serijskim sučeljem
(na Ebayu tražite "arduino geiger couter")
5. radioaktivni materijal (po izboru mali ispitni uzorak)
Alati:
1. Arduino IDE
2. Instaliran kućni pomoćnik
Korak 2: Načelo rada
Naš je cilj prikazati na HomeAssistatu (HASS) očitanja s geigerovog brojača. S jedne strane imamo HASS poslužitelj pokrenut i negdje radi, to može biti malina pi ili neki drugi uređaj, a s druge strane imamo gejgerov brojač.
Gajgerov brojač ima serijski priključak, jedno rješenje bit će izravno priključivanje serijskog porta na RaspberryPi na kojem radi HASS.
Neki razlozi zašto to možda nije dobra ideja:
- tamo nema fizičkog prostora
- imamo neki drugi uređaj na serijskom portu
- želimo priključiti senzor okoliša koji bi trebao biti postavljen vani umjesto Geiger brojača
U redu pa ćemo istražiti još jednu mogućnost povezivanja putem WIFI -ja:
HASS podržava čitanje podataka senzora i prikazuje da je putem MQTT poslužitelja ova vrsta poslužitelja mala veza za male uređaje. Jedan uređaj objavljuje poruku o "temi", drugi sluša o toj temi da bi primio poruku. Tako će HASS poslušati, a potrebno nam je nešto što će objaviti poruku.
Naš senzor zna govoriti samo preko serijske linije pa ćemo koristiti ploču koja može čitati serijsku liniju i koja se može povezati putem WIFI -ja i razgovarati s poslužiteljem MQTT. Jeftina ploča koja to radi je NodeMCU.
NodeMCU se može programirati s Arduino IDE -om. Skica je prilično jednostavna, a radi sljedeće:
- povezuje se na WIFI
- održava MQTT vezu sa poslužiteljem i ponovno pokušava uspostaviti vezu kada ne uspije ili se prekine
- sluša serijske ulazne podatke kao niz cijelih brojeva
- nakon što dođe cijeli broj, šalje ga putem MQTT -a na određenu temu
Korak 3: Sastavite uređaj
Koristit ćemo matične ploče i žice pa je prilično jednostavno, imamo nekoliko koraka:
- stavite NodeMCU na ploču
- spojite gejgerovu cijev na gejgerov brojač (pazite na polaritet)
- VIN odlazi na geigerov brojač +
- GND goest to geiger counter -
- NodeMCU D7 (pin 13) ide na Geiger TX
- NodeMCU D8 (pin 15) ide na Geiger RX
- napajanje NodeMCU putem mikro USB -a s računala
Korak 4: Prenesite kôd
Koristit ćemo Arduino IDE i pobrinut ćemo se da imamo instaliranu NodeMCU ploču i instaliranu biblioteku Adafruit_MQTT.
1. Klonirajte github spremište: https://github.com/danionescu0/arduino i kopirajte skicu iz projekata/HASSGeigerIntegration na svoju arduino skicu knjiga
2. Otvorite Arduino IDE i instalirajte NodeMCU
- idite na Datoteka -> Postavke, u URL -ovima dodatnih upravitelja ploča dodajte https://arduino.esp8266.com/stable/package_esp8266com_index.json ako već imate nešto, stavite koma ispred i kliknite u redu
-iz Alati -> Ploča -> Upravitelj odbora upišite "nodemcu" i odaberite unos esp8266 od strane zajednice ESP8266, pa pritisnite install
3. Instalirajte Adafruit_MQTT
-idite na Alati -> Upravljanje knjižnicama -> pretražite "Adafruit_MQTT" i instalirajte "Arduino MQTT biblioteku"
4. Priključite USB kabel u računalo i konfigurirajte ploču:
-idite na Alati -> Ploča -> odaberite NodeMcu 1.0
-Alati -> Port -> vaš USB priključak
- ostale postavke ne mijenjajte
4. Na skici promijenite svoje vjerodajnice za WIFI tako da odgovaraju vašim:
#define STASSID "ssid" // Zamijenite svojim WIFI SSID -om
#define STAPSK "pass" // Zamijenite svojom WIFI lozinkom
5. Postavite skicu na svoju ploču i nakon učitavanja resetirajte ploču s gumba
6. Otvorite serijski monitor, ako je sve prošlo dobro, trebali biste vidjeti neki izlaz poput ovog:
Pokretanje
IP adresa: 192.168.1.168 OTA omogućeno Povezivanje na MQTT… MQTT Povezano! {"zračenje": 0,03}..
Korak 5: Konfigurirajte HomeAssistant
Pretpostavit ćemo da imate pomoćnog kućnog pomoćnika. Na svom sustavu imam HASSOS verziju 3.12 na RaspberryPi. Ako je vaša verzija kućnog pomoćnika prestara ili vrlo nova, neke se značajke mogu razlikovati. Ovaj vodič sigurno radi s verzijom 3.12.
Ako nemate instaliran Home Assistant, pogledajte njihov službeni vodič za instalaciju:
Prije nego nastavite s instalacijom, provjerite je li NodeMCU priključen i objavljuje li podatke.
U redu, ovdje ćemo imati niz koraka za konfiguraciju:
1. Instalirajte "uređivač datoteka" ako ga nemate u izborniku, evo službenog vodiča:
2. Uredite datoteku "/config/configuration.yaml" i dodajte sljedeće te je spremite
- odjeljak mqtt ako ga već nemate
mqtt:
broker: broker.hivemq.com otkriće: pravo otkriće_prefiks: ha
- odjeljak senzora
senzor:
- platforma: naziv mqtt: "Radijacija" stanje_teme: "ha/zračenje" jedinica_mjera_mjerenja: 'uSv' jedinstveni_id: "zračenje" vrijednost_predložak: "{{value_json.radiation}}"
3. U odjeljku Konfiguracija -> Kontrole poslužitelja: pritisnite "Provjeri konfiguraciju", provjerite ima li yaml konfiguracijske datoteke pogreške, a zatim pritisnite "ponovno pokreni" i pričekajte da se ponovno pokrene
4. U odjeljku Pregled -> izbornik u gornjem desnom kutu -> Konfiguriranje korisničkog sučelja -> pritisnite gumb + u donjem desnom kutu
5. Odaberite "senzor" s popisa -> u polju "entitet" potražite "senzor.radijacija", u polje s imenom upišite "Zračenje" i kliknite u redu, to bi trebalo biti sada na glavnoj stranici
Korak 6: Konfiguriranje vlastitog MQTT poslužitelja [izborno]
Razgovarajmo malo o MQTT -u
“MQTT je transportni protokol za objavljivanje/pretplaćivanje poruka klijentskog poslužitelja. Lagan je, otvoren, jednostavan i dizajniran tako da ga je lako implementirati. Te ga karakteristike čine idealnom za uporabu u mnogim situacijama, uključujući ograničena okruženja, primjerice za komunikaciju u kontekstu stroj -stroj (M2M) i Internet stvari (IoT) u kojima je potreban mali otisak koda i/ili je propusnost mreže na prvom mjestu.”
Navod iz službene specifikacije MQTT 3.1.1.
Dakle, u osnovi možemo objaviti poruku negdje s jedne strane, a s druge strane možemo slušati te poruke i učiniti nešto s podacima. MQTT podržava "teme", teme su nizovi koje posrednik koristi za filtriranje poruka za svakog klijenta, pa ako objavimo poruku na temu "/zračenje", slušatelj se mora pretplatiti na istu temu da bi dobio poruke koje šaljemo.
Evo sjajnog vodiča o MQTT u detalje:
Korištenje besplatnog poslužitelja košnica ima neke nedostatke poput:
- svatko tko sluša vašu temu primit će vaše poruke
- ako se smanji ili kasnije zahtijeva plaćanje, nećete je moći koristiti (osim ako ne platite)
- ako netko tko objavi poruke na istu temu primit ćete i njegove poruke, može objaviti nekompatibilne poruke i razbiti vaše HASS grafikone
Korištenje privatnog poslužitelja
Ako ne želite koristiti javni besplatni poslužitelj, imate mogućnost privatnog poslužitelja. Instalirat ćemo Mosquitto MQTT na ubuntu / debian poslužitelj poput maline pi ili računala.
Mosquitto je poslužitelj koji implementira MQTT protokol i besplatan je.
Da biste ga instalirali, prijavite se na svoj raspnerry pi ili drugi poslužitelj temeljen na debianu i pokrenite:
sudo apt ažuriranje
sudo apt install -y mosquitto mosquitto -clients sudo systemctl enable mosquitto.service
Ovo će ažurirati spremište, instalirati Mosquiito poslužitelj i klijenta i omogućiti mu pokretanje usluge pri pokretanju
Da biste dobili IP poslužitelja, izvršite:
naziv hosta -I
i ispisat će nešto poput:
192.168.1.52 172.17.0.1 172.18.0.1
Dakle, moj IP je 192.168.1.52, u naredbama ispod ga zamijenite vlastitim
MQTT poslužitelj možete testirati objavljivanjem poruke i primanjem s alatom konzole, jer se za ova dva terminala mora otvoriti onaj koji sluša poruku, jedan koji će objaviti poruku.
Prvo u terminalu pokrenite ovu naredbu kako biste poslušali poruku o "/some-topic"
komarac_sub -h 192.168.1.52 -t /neka tema
Otvorite drugi terminal i objavite poruku na tu temu:
mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"vlažnost": 74.0}'
Na prvom terminalu trebali biste vidjeti ispisano "{" Vlažnost ": 74.0}".
Posebna pažnja:
- ovo postavljanje pretpostavlja da su HASS, Mosquitto i NodeMCU povezani na istu WIFI mrežu i da nema pravila vatrozida te da mogu slobodno komunicirati
-Mosquitt MQTT poslužitelj nema korisničko ime/lozinku, ako želite postaviti vjerodajnice, provjerite ovo: https://www.steves-internet-guide.com/mqtt-username-password-example/ Također biste trebali konfigurirati vjerodajnice u kućnom pomoćniku i u arduino skici
Korak 7: OTA (Over the Air Updates) za NodeMCU
Bežično ažuriranje znači da se razvojna ploča može žicati žicom bez potrebe za fizičkim kabelom.
Arduino IDE podržava ovu funkcionalnost za ESP8266 seriju i neke druge ploče:
- zahtijeva početnu bljeskalicu preko USB kabela
- stvara virtualni port preko WIFI -a i vidljiv je samo iz Arduino IDE -a
- nisu dostupne informacije o serijskom otklanjanju pogrešaka
- podržava zaštitu lozinkom
Da biste omogućili OTA u skici ESP8266, prvo uključite knjižnicu:
#include "ArduinoOTA.h"
Također definirajte ovu konstantnu lozinku skice:
#define SKETCHPASS "some_password"
U odjeljak za postavljanje dodajte ove retke:
while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {{100} {101}
Serial.println ("Veza nije uspjela! Ponovno pokretanje …"); kašnjenje (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Vrsta niza; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "datotečni sustav";} Serial.println ("Počni ažurirati " + tip);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nKraj");}); ArduinoOTA.onProgress ( (bezznačni int napredak, bezznačni int ukupno) {Serial.printf ("Napredak:%u %% / r", (napredak / (ukupno / 100)));}); ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Pogreška [%u]:", pogreška); if (pogreška == OTA_AUTH_ERROR) {Serial.println ("Auth nije uspio");} else if (pogreška == OTA_BEGIN_ERROR) {Serial.println ("Begin Failed");} else if (error == OTA_CONNECT_ERROR) {Serial.println ("Connect Failed");} else if (error == OTA_RECEIVE_ERROR) {Serial.println (" Primanje nije uspjelo ");} else if (error == OTA_END_ERROR) {Serial.println (" End Failed ");}}); ArduinoOTA.begin (); Serial.print ("IP adresa:"); Serial.println (WiFi.localIP ());
U odjeljak petlje dodajte ovaj redak:
ArduinoOTA.handle ();
Nakon početnog učitavanja koda nakon podizanja ploče, u Arduino IDE-u u odjeljku Alati-> Port trebali biste vidjeti dvije vrste portova:
Serijski portovi: /dev /ttyUSB0 (na primjer)
Mrežni portovi: esp8266-xxxxx na 192.168.1.xxx
Sada možete odabrati mrežni port i učitati daljinski upravljač za skicu, od vas će se tražiti lozinka za skicu (ona koju ste definirali u gornjoj konstanti)
Korak 8: Zaključci, budući rad
Ovaj se vodič može lako izmijeniti za slanje podataka o drugim vrstama senzora:
- ako vaš senzor izravno podržava NodeMCU putem biblioteke, samo skupite podatke sa senzora i izravno ih gurnite kroz MQTT
- ako knjižnica senzora ne radi s NodeMCU -om, ali je samo za Arduino, onda prenesite svoj kôd na arduino, ispišite vrijednost kroz serijski redak i pročitajte je u NodeMCU -u te je gurnite (baš kao što smo učinili s gejgerovim brojačem)
Možemo ga čak i izmijeniti za slanje podataka s više senzora na sljedeći način:
- spojite svoje senzore na NodeMCU
- podaci ankete sa svakog senzora
- za svaki od senzora objaviti podatke na drugu temu
- u HASS -u definirajte više senzora (kao što smo učinili s geigerom) koji će slušati različite teme
Preporučeni:
DIY pametni otvarač garažnih vrata + integracija kućnog pomoćnika: 5 koraka
DIY pametni otvarač garažnih vrata + integracija kućnog pomoćnika: Pretvorite svoja normalna garažna vrata u ovaj DIY projekt. Pokazat ću vam kako ga izgraditi i kontrolirati pomoću kućnog pomoćnika (preko MQTT -a) i imati mogućnost daljinskog otvaranja i zatvaranja vaših garažnih vrata. Koristit ću ploču ESP8266 pod nazivom Wemos
Upravljajte svojim automatskim kliznim vratima pomoću kućnog pomoćnika i ESP -a: 5 koraka (sa slikama)
Upravljajte svojim automatskim kliznim vratima uz pomoć kućnog pomoćnika i ESPHome: Sljedeći članak predstavlja neke povratne informacije o mom osobnom iskustvu u upravljanju automatskim kliznim vratima koja sam instalirao u svojoj kući. Ova vrata, robne marke "V2 Alfariss", bila su opremljena s nekoliko daljinskih upravljača Phox V2 za upravljanje. Također imam
556 Vrijeme omogućuje unos sata u 2 dekadna brojača koji će pokretati 20 LED -ova: 6 koraka
556 Vrijeme omogućuje unos sata na 2 desetljetna brojača koji će pokretati 20 LED -ova: Ova instrukcija će pokazati kako će mjerač vremena 556 osigurati unose sata na brojače za 2 desetljeća. Brojači desetljeća će pokretati 20 LED -ova. LED diode će treptati u nizu od 10
Početak rada s kućnom automatizacijom: instaliranje kućnog pomoćnika: 3 koraka
Početak rada s kućnom automatizacijom: instaliranje kućnog pomoćnika: Sada ćemo započeti seriju kućne automatizacije gdje stvaramo pametni dom koji će nam omogućiti upravljanje stvarima poput svjetla, zvučnika, senzora i tako dalje pomoću središnjeg čvorišta zajedno sa glasovni asistent. U ovom ćemo članku naučiti kako ući u
Popravak DIEG Geiger brojača: 9 koraka (sa slikama)
Popravak DIY Geiger brojača: Naručio sam ovaj DIIG Geiger brojač na mreži. Stigao je u pravo vrijeme, međutim bio je oštećen, držači osigurača su zgnječeni, a cijev J305 Geiger Muller uništena. To je bio problem jer sam koristio bodove iz ranijih kupnji u ovom