Sadržaj:

Integracija Geiger brojača kućnog pomoćnika: 8 koraka
Integracija Geiger brojača kućnog pomoćnika: 8 koraka

Video: Integracija Geiger brojača kućnog pomoćnika: 8 koraka

Video: Integracija Geiger brojača kućnog pomoćnika: 8 koraka
Video: Zigbee Geiger SBM-20 https://modkam.ru/?p=1591 2024, Srpanj
Anonim
Image
Image
Načelo rada
Načelo rada

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

Sastavite uređaj
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

Učitajte kôd
Učitajte kôd
Učitajte kôd
Učitajte kôd
Učitajte kôd
Učitajte kôd
Učitajte kôd
Učitajte 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

Konfigurirajte HomeAssistant
Konfigurirajte HomeAssistant
Konfigurirajte HomeAssistant
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: