Sadržaj:

Integracija kućnog pomoćnika Geiger Counter: 8 koraka
Integracija kućnog pomoćnika Geiger Counter: 8 koraka

Video: Integracija kućnog pomoćnika Geiger Counter: 8 koraka

Video: Integracija kućnog pomoćnika Geiger Counter: 8 koraka
Video: Ошибки в сантехнике. Вводной узел в квартиру. 2024, Juli
Anonim
Image
Image
Princip rada
Princip 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 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

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

Otpremite kôd
Otpremite kôd
Otpremite kôd
Otpremite kôd
Otpremite kôd
Otpremite kôd
Otpremite kôd
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

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