Sadržaj:
- Korak 1: Dijelovi i alati
- Korak 2: Princip rada
- Korak 3: Sastavite uređaj
- Korak 4: Otpremite kôd
- Korak 5: Konfigurirajte HomeAssistant
- Korak 6: Konfiguriranje vlastitog MQTT servera [opcionalno]
- Korak 7: OTA (Over the Air Updates) za NodeMCU
- Korak 8: Zaključci, budući rad
Video: Integracija kućnog pomoćnika Geiger Counter: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
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 druge 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 šta 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 (bežično ažuriranje) pomoću Arduino IDE -a za NodeMCU ploču
- kako spojiti serijski uređaj na NodeMCU
- ručno instaliranje MQTT servera na linux (opcionalno)
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. hleb
3. muško-muške i muško-ženske juper žice
3. USB kabel za mikro USB kabel
4. arduino geiger brojač sa serijskim interfejsom
(na Ebayu tražite "arduino geiger couter")
5. radioaktivni materijal (opcionalno mali testni uzorak)
Alati:
1. Arduino IDE
2. Instaliran je kućni pomoćnik
Korak 2: Princip rada
Naš cilj je da na HomeAssistat -u (HASS) prikažemo očitanja sa Gajgerovog brojača. S jedne strane imamo HASS server koji radi 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 port, jedno rješenje će biti priključivanje serijskog porta direktno 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 prikazivanje toga da putem MQTT servera ova vrsta servera predstavlja vezu male težine 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 i treba nam nešto što će objaviti poruku.
Naš senzor zna samo za razgovor 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 pomoću Arduino IDE -a. Skica je prilično jednostavna, a radi sljedeće:
- povezuje se na WIFI
- održava MQTT vezu sa poslužiteljem i ponovo pokušava uspostaviti vezu kada ne uspije ili se prekine
- sluša serijske ulazne podatke kao niz cijelih brojeva
- jednom kada 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 tako da je prilično jednostavno, imamo nekoliko koraka:
- stavite NodeMCU na matičnu ploču
- spojite gejgerovu cijev na gejgerov brojač (pazite na polaritet)
- VIN odlazi na gejgerov brojač +
- GND goest to geiger counter -
- NodeMCU D7 (pin 13) ide na Geiger TX
- NodeMCU D8 (pin 15) ide na Geiger RX
- napajanje NodeMCU preko mikro USB -a sa računara
Korak 4: Otpremite 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 knjigu skica
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 instalaciju
3. Instalirajte Adafruit_MQTT
-idite na Alati -> Upravljanje bibliotekama -> pretražite "Adafruit_MQTT" i instalirajte "Arduino MQTT biblioteku"
4. Priključite USB kabl u računar i konfigurišite ploču:
-idite na Alati -> Ploča -> odaberite NodeMcu 1.0
-Alati -> Port -> vaš USB port
- ostale postavke ne mijenjajte
4. Na skici promijenite svoje WIFI vjerodajnice 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 sa dugmeta
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 aktivnog kućnog pomoćnika. Na mom sistemu 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 uključen i objavljuje 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 i spremite je
- odjeljak mqtt ako ga već nemate
mqtt:
broker: broker.hivemq.com otkriće: istinsko otkriće_prefiks: ha
- odjeljak senzora
senzor:
- platforma: mqtt naziv: "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 grešaka u konfiguracijskoj datoteci yaml, a zatim pritisnite "ponovno pokreni" i pričekajte da se ponovno pokrene
4. Na stranici Pregled -> Gornji desni kut izbornika -> Konfiguriraj korisnički interfejs -> pritisnite dugme + u donjem desnom kutu
5. Odaberite "senzor" sa popisa -> u polju "entitet" potražite "senzor.radijacija", u polje s imenom upišite "Zračenje" i kliknite u redu, to bi sada trebalo biti na glavnoj stranici
Korak 6: Konfiguriranje vlastitog MQTT servera [opcionalno]
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 se lako implementira. Ove karakteristike ga čine idealnim za upotrebu u mnogim situacijama, uključujući ograničena okruženja, na primjer za komunikaciju u kontekstu Mašina za stroj (M2M) i Internet stvari (IoT) gdje je potreban mali otisak koda i/ili propusnost mreže je na vrhu.”
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 servera za košnice ima neke nedostatke poput:
- svako ko 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 neko ko objavi poruke na istu temu primit ćete i njegove poruke, može objaviti nekompatibilne poruke i razbiti vaše HASS grafikone
Korišćenje privatnog servera
Ako ne želite koristiti javni besplatni poslužitelj, imate mogućnost privatnog poslužitelja. Instalirat ćemo Mosquitto MQTT na ubuntu / debian server poput maline pi ili računara.
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 update
sudo apt install -y mosquitto mosquitto -clients sudo systemctl enable mosquitto.service
Ovo će ažurirati spremište, instalirati mosquiito server i klijenta i omogućiti mu uslugu za pokretanje pri pokretanju
Da biste dobili IP servera, izvršite sljedeće:
hostname -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 narednim naredbama zamijenite ga vlastitim IP -om
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"
mosquitto_sub -h 192.168.1.52 -t /some -topic
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 server 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
Ažuriranje bežičnim putem znači da se razvojna ploča može žicati žicom bez potrebe za fizičkim kabelom.
Arduino IDE podržava ovu funkcionalnost za seriju ESP8266 i neke druge ploče:
- potreban je početni blic preko USB kabla
- stvara virtualni port preko WIFI -a i vidljiv je samo iz Arduino IDE -a
- nisu dostupne informacije o serijskom otklanjanju grešaka
- podržava zaštitu lozinkom
Da biste omogućili OTA u skici ESP8266, prvo uključite biblioteku:
#include "ArduinoOTA.h"
Također definirajte ovu konstantu lozinke za skicu:
#define SKETCHPASS "some_password"
U odjeljak za postavljanje dodajte ove redove:
while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {
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 sistem";} Serial.println ("Počni ažuriranje " + tip);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nKraj");}); ArduinoOTA. ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [%u]:", error); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} else if (error == 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, trebali biste vidjeti u Arduino IDE-u u odjeljku Alati-> Port 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 vodič se 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 biblioteka senzora ne radi s NodeMCU -om, ali je samo za Arduino, onda prenesite svoj kôd na arduino, ispišite vrijednost kroz serijsku liniju 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 objavite 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čuje se:
DIY pametni otvarač garažnih vrata + integracija kućnog pomoćnika: 5 koraka
DIY pametni otvarač garažnih vrata + integracija kućnog pomoćnika: Pametno pretvorite svoja normalna garažna vrata pomoću ovog DIY projekta. 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 zvanu Wemos
Upravljajte svojim automatskim kliznim vratima pomoću kućnog pomoćnika i ESP -a: 5 koraka (sa slikama)
Upravljajte svojim automatskim kliznim vratima pomoću kućnog pomoćnika i ESPHomea: Sljedeći članak predstavlja neke povratne informacije o mom ličnom iskustvu u upravljanju automatskim kliznim vratima koja sam instalirao u svojoj kući. Ova kapija, robne marke "V2 Alfariss", bila je opremljena s nekoliko daljinskih upravljača Phox V2 za kontrolu. Takođe imam
Kućna automatizacija pomoću Google pomoćnika i Adafruit IO: 3 koraka
Kućna automatizacija pomoću Google pomoćnika i Adafruit IO -a: Google asistent je usluga glasovnih komandi zasnovana na AI (umjetna inteligencija). Pomoću glasa možemo komunicirati s google asistentom koji može pretraživati na internetu, zakazivati događaje, postavljati alarme, kontrolne uređaje itd. Ova usluga dostupna je na sma
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 kontrolu stvari poput svjetla, zvučnika, senzora i tako dalje pomoću centralnog čvorišta zajedno sa glasovni asistent. U ovom postu ćemo naučiti kako da uvedemo
Sobni monitor za kućnog pomoćnika: 6 koraka
Sobni monitor za HomeAssistant: Nakon što sam pripremio Raspberry Pi sa kućnim pomoćnikom za upravljanje različitim prostorima, primijetio sam da su jedna od osnovnih informacija svakog prostora temperatura i vlažnost. Možemo kupiti jedan od nekoliko senzora dostupnih na tržištu kompatibilnih s Home Assist