Sisukord:

Koduabilise Geigeri loenduri integreerimine: 8 sammu
Koduabilise Geigeri loenduri integreerimine: 8 sammu

Video: Koduabilise Geigeri loenduri integreerimine: 8 sammu

Video: Koduabilise Geigeri loenduri integreerimine: 8 sammu
Video: ИНЦИДЕНТ С НЛО В ШКОЛЕ АРИЭЛЬ 2024, Juuli
Anonim
Image
Image
Töö põhimõte
Töö põhimõte

Selles õpetuses näitan, kuidas saate lisada kohandatud andureid HASS -ile (koduabiline), täpsemalt geigeri loendurile, kuid protsess on sarnane ka teiste andurite jaoks.

Kasutame NodeMCU plaati, arduino -põhist geigeri loendurit ja juba installitud koduabilist.

Integratsioon põhineb MQTT -serveril (avalik või privaatne) ja ma juhendan teid sellega samm -sammult.

Kui te ei tea, mis on koduabiline, külastage nende lehte https://www.home-assistant.io/. See on hästi tuntud koduautomaatika platvorm, mis on väga hästi hooldatud ja väga kohandatav.

Õpid järgmist:

- Koduabilise täpsem konfiguratsioon

- NodeMCU (arendusplaat) ja selle programmeerimine Arduino IDE abil

- OTA (üle õhu värskendused), kasutades Arduino IDE -d NodeMCU tahvli jaoks

- kuidas ühendada jadaseade NodeMCU -ga

- MQTT -serveri käsitsi installimine Linuxi (valikuline)

Põhieeldused:

- teil on Home Assistant töökorras

- sa tead natuke elektroonikast

- teil on installitud Arduino IDE

Samm: osad ja tööriistad

Osad:

1. NodeMCU plaat

2. leivapuu

3. mees-mees ja mees-naine juper traadid

3. usb -mikro -USB -kaabel

4. jada liidesega arduino geigeri loendur

(otsige Ebayst "arduino geiger couter")

5. radioaktiivne materjal (valikuline väike proov)

Tööriistad:

1. Arduino IDE

2. Koduabiline on installitud

2. etapp: tööpõhimõte

Meie eesmärk on näidata HomeAssistatis (HASS) geigeri loenduri näitu. Ühel pool on meil HASS -server käimas ja kusagil töötab, see võib olla vaarika pi või muu seade ja teisel pool on meil geigeri loendur.

Geigeri loenduril on jadaport, üks lahendus on jadaport otse RaspberryPi külge kinnitada, millel HASS töötab.

Mõned põhjused, miks see ei pruugi olla hea idee:

- seal pole füüsilist ruumi

- meil on jadapordis mõni muu seade

- tahame kinnitada keskkonnaanduri, mis tuleks geigeri loenduri asemel välja panna

Ok, nii et uurime teist võimalust WIFI kaudu ühenduse loomiseks:

HASS toetab andurite andmete lugemist ja selle kuvamist, et MQTT -serveri kaudu on selline server väikeste seadmete jaoks väikese kaaluga ühendus, üks seade avaldab sõnumi teemal, teine kuulab selle teema vastuvõtmiseks sõnumit. Nii et HASS kuulab ja meil on vaja midagi, mis selle sõnumi avaldab.

Meie andur teab rääkida ainult jadaühenduse kaudu, nii et me kasutame tahvlit, mis suudab lugeda jadaühendust ja mis saab WIFI kaudu ühenduse luua ja MQTT serveriga rääkida. Odav plaat, mis seda teeb, on NodeMCU.

NodeMCU -d saab programmeerida Arduino IDE abil. Visand on üsna lihtne, see teeb järgmist:

- ühendub WIFI -ga

- säilitab MQTT -ühenduse serveriga ja proovib uuesti ühendust, kui see ebaõnnestub või katkeb

- kuulab sissetulevaid jadaandmeid täisarvudena

- kui täisarv saabub, saadab see selle MQTT kaudu kindlale teemale

Samm 3: Seadme kokkupanek

Pange seade kokku
Pange seade kokku

Me kasutame leivaplaate ja juhtmeid, nii et see on üsna lihtne, meil on mõned sammud:

- pange NodeMCU leivaplaadile

- ühendage geigeritoru geigeri loenduriga (jälgige polaarsust)

- VIN läheb geigeri loendurile +

- GND läks geigeri loendurile -

- NodeMCU D7 (tihvt 13) läheb geigerile TX

- NodeMCU D8 (tihvt 15) läheb geigeri RX -le

- toite NodeMCU läbi arvuti USB kaudu

Samm: laadige kood üles

Laadige kood üles
Laadige kood üles
Laadige kood üles
Laadige kood üles
Laadige kood üles
Laadige kood üles
Laadige kood üles
Laadige kood üles

Kasutame Arduino IDE -d ja veendume, et meil on installitud NodeMCU plaat ja Adafruit_MQTT raamatukogu.

1. Kloonige githubi hoidla: https://github.com/danionescu0/arduino ja kopeerige eskiis projektidest/HASSGeigerIntegration oma arduino visandiraamatu asukohta

2. Avage Arduino IDE ja installige NodeMCU

- minge menüüsse Fail -> Eelistused, lisage täiendavate tahvlite halduri URL -idesse https://arduino.esp8266.com/stable/package_esp8266com_index.json, kui teil on seal juba midagi, pange kooma ette ja klõpsake nuppu OK

-menüüst Tools -> Board -> Board Manager tippige "nodemcu" ja valige ESP8266 Community kirje esp8266 ja vajutage install

3. Installige Adafruit_MQTT

-minge Tööriistad -> Raamatukogude haldamine -> otsige "Adafruit_MQTT" ja installige "Arduino MQTT raamatukogu"

4. Ühendage arvuti USB -kaabel ja konfigureerige plaat:

-minge Tööriistad -> Tahvel -> valige NodeMcu 1.0

-Tööriistad -> Port -> teie USB -port

- jätke muud seaded muutmata

4. Muutke visandis oma WIFI mandaati, et see vastaks teie omale:

#define STASSID "ssid" // Asenda oma WIFI SSID -ga

#define STAPSK "pass" // Asenda oma WIFI parooliga

5. Laadige eskiis oma tahvlile üles ja pärast üleslaadimist tahvli nupult uuesti lähtestage

6. Avage jadamonitor, kui kõik on hästi läinud, peaksite nägema mõnda sellist väljundit:

Käivitamine

IP -aadress: 192.168.1.168 OTA lubatud Ühendamine MQTT -ga… MQTT ühendatud! {"kiirgus": 0,03}..

Samm: seadistage HomeAssistant

Seadistage HomeAssistant
Seadistage HomeAssistant
Seadistage HomeAssistant
Seadistage HomeAssistant

Eeldame, et teil on kodune assistent töökorras. Minu süsteemis on mul RaspberryPi peal HASSOS versioon 3.12. Kui teie koduabilise versioon on liiga vana või väga uus, võivad mõned funktsioonid erineda. See õpetus töötab kindlasti versiooniga 3.12.

Kui teie koduabiline pole installitud, vaadake nende ametlikku installijuhendit:

Enne paigaldamise alustamist veenduge, et NodeMCU on ühendatud ja see avaldab andmeid.

Ok, meil on ka siin konfigureerimiseks mitmeid samme:

1. Installige failifail, kui teil seda menüüs pole, siin on ametlik õpetus:

2. Muutke faili "/config/configuration.yaml" ja lisage järgmine ning salvestage see

- jaotis mqtt, kui teil seda juba pole

mqtt:

maakler: broker.hivemq.com avastus: tõeline avastus_liide: ha

- andurite osa

andur:

- platvorm: mqtt name: "Radiation" state_topic: "ha/radiation" unit_of_measurement: 'uSv' unique_id: "kiirgus" value_template: "{{value_json.radiation}}"

3. Konfiguratsioonist -> Serveri juhtelemendid: vajutage nuppu "Kontrolli konfiguratsiooni", kontrollige yamli konfiguratsioonifaili vigu, seejärel vajutage nuppu "Taaskäivita" ja oodake, kuni see taaskäivitatakse

4. Ülevaates -> Parema ülanurga menüü -> Kasutajaliidese seadistamine -> vajutage paremas alanurgas nuppu +

5. Valige loendist "sensor" -> otsige "olem" väljalt "sensor.radiation", kirjutage nimeväljale "Radiation" ja klõpsake nuppu ok, see peaks nüüd avalehel olema

Samm: oma MQTT -serveri seadistamine [valikuline]

Arutleme natuke MQTT üle

„MQTT on kliendiserveri sõnumite edastamise/tellimise transpordiprotokoll. See on kerge, avatud, lihtne ja kujundatud nii, et seda oleks lihtne rakendada. Need omadused muudavad selle ideaalseks kasutamiseks paljudes olukordades, sealhulgas kitsastes keskkondades, näiteks sidepidamiseks masinast masinasse (M2M) ja asjade Internetis (IoT), kus on vaja väikest koodijälge ja/või võrgu ribalaiust.”

Viide ametlikust MQTT 3.1.1 spetsifikatsioonist.

Nii et põhimõtteliselt saame avaldada sõnumi kuskil ühel pool ja teisel pool neid sõnumeid kuulata ja andmetega midagi ette võtta. MQTT toetab teemasid, teemad on stringid, mida maakler kasutab iga kliendi sõnumite filtreerimiseks, nii et kui avaldame sõnumi teemal "/kiiritus", peab kuulaja tellima sama teema, et saada meie saadetavaid sõnumeid.

Siin on suurepärane õpetus MQTT kohta üksikasjalikult:

Tasuta taru serveri kasutamisel on mõned puudused, näiteks:

- kõik, kes teie teemat kuulavad, saavad teie sõnumid kätte

- kui see läheb alla või nõuab maksmist hiljem, ei saa te seda kasutada (kui te ei maksa)

- kui keegi, kes avaldab sama teema sõnumeid, saate ka teie nende sõnumid, võivad nad avaldada kokkusobimatud sõnumid ja rikkuda teie HASS -i graafikud

Privaatserveri kasutamine

Kui te ei soovi kasutada avalikku tasuta serverit, on teil võimalus kasutada privaatserverit. Me installime Mosquitto MQTT ubuntu / debiani serverisse nagu vaarika pi või arvuti.

Mosquitto on server, mis rakendab MQTT -protokolli ja on tasuta.

Selle installimiseks logige oma raspnerry pi või muusse debianipõhisesse serverisse ja käivitage:

sudo apt värskendus

sudo apt install -y mosquitto mosquitto -kliendid sudo systemctl lubavad mosquitto.service

See värskendab hoidlat, installib sääskeserveri ja kliendi ning lubab sellel teenuse käivitamisel käivitada

Serveri ip käivitamiseks:

hostinimi -mina

ja see väljastab midagi sellist:

192.168.1.52 172.17.0.1 172.18.0.1

Nii et minu ip on 192.168.1.52, asendage allolevates käskudes see oma IP -ga

Saate MQTT -serverit testida, avaldades sõnumi ja saades selle konsooli tööriistaga, selleks tuleb avada kaks terminali, mis kuulab sõnumit, ja teine, mis sõnumi avaldab.

Esmalt käivitage terminalis see käsk, et kuulata sõnumit teemal "/some-topic"

mosquitto_sub -h 192.168.1.52 -t /mingi teema

Avage teine terminal ja avaldage selle teema kohta sõnum:

mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"niiskus": 74.0}'

Esimeses terminalis peaksite nägema välja trükitud märget „{„ niiskus”: 74.0}”.

Eriline tähelepanu:

- see seadistus eeldab, et HASS, Mosquitto ja NodeMCU on ühendatud sama WIFI -võrguga ning tulemüüri reegleid pole ja nad saavad vabalt suhelda

-Mosquitt MQTT serveril pole kasutajanime/parooli, kui soovite volikirja seadistada, vaadake seda: https://www.steves-internet-guide.com/mqtt-username-password-example/ Samuti peate konfigureerima volikirjad Home Assistantis ja arduino visandis

Samm 7: OTA (üle õhu värskendused) NodeMCU jaoks

Uuenduste kaudu tähendab see, et arendusplaati saab juhtmevabalt välgutada ilma füüsilise kaablita.

Arduino IDE toetab seda funktsiooni ESP8266 seeria ja mõne muu tahvli jaoks:

- nõuab esmast välklampi USB -kaabli kaudu

- loob WIFI kaudu virtuaalse pordi ja see on nähtav ainult Arduino IDE kaudu

- seeria silumise teave pole saadaval

- toetab parooliga kaitset

OTA lubamiseks ESP8266 visandis lisage esmalt teek:

#include "ArduinoOTA.h"

Määrake ka see visandparooli konstant:

#define SKETCHPASS "some_password"

Lisage jaotises Seadistamine järgmised read:

while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("Ühendus nurjus! Taaskäivitamine …"); viivitus (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Stringi tüüp; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Alusta värskendamist " + tüüp);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nLõpp");}); ArduinoOTA.onProgress ( (allkirjastamata int progress, allkirjastamata int kokku) {Serial.printf ("Progress:%u %% / r", (progress / (kokku / 100)));}); 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 ("Algus ebaõnnestus");} else if (error == OTA_CONNECT_ERROR) {Serial.println ("Connect Failed");} else if (error == OTA_RECEIVE_ERROR) {Serial.println (" Vastuvõtt ebaõnnestus ");} else if (error == OTA_END_ERROR) {Serial.println (" End Failed ");}}); ArduinoOTA.begin (); Serial.print ("IP -aadress:"); Serial.println (WiFi.localIP ());

Ja ahela sektsiooni lisage see rida:

ArduinoOTA.käepide ();

Pärast esmast koodi üleslaadimist pärast plaadi käivitamist peaksite Arduino IDE jaotises Tööriistad-> port nägema kahte tüüpi porte:

Sarjapordid: /dev /ttyUSB0 (näiteks)

Võrgupordid: esp8266-xxxxx aadressil 192.168.1.xxx

Nüüd saate valida võrgupordi ja visandipuldi üles laadida ning teilt küsitakse eskiisiparooli (see, mille olete määratlenud ülaltoodud konstandis)

8. samm: järeldused, tulevane töö

Seda õpetust saab hõlpsasti muuta, et saata andmeid muud tüüpi andurite kohta:

- kui NodeMCU toetab teie andurit otse kogu kaudu, koondage andurilt saadud andmed ja suruge need otse läbi MQTT

- kui andurite kogu ei tööta NodeMCU -ga, kuid see on mõeldud ainult Arduino jaoks, laadige oma kood üles arduino -sse, väljastage väärtus jadaühenduse kaudu ja lugege see NodeMCU -st ning vajutage seda (täpselt nagu me tegime seda geigeri loenduri puhul)

Saame seda isegi muuta, et saata andmeid mitmelt andurilt, näiteks:

- ühendage andurid NodeMCU -ga

- küsitlusandmeid iga anduri kohta

- avaldage iga anduri andmed erineval teemal

- määratlege HASSis mitu andurit (nagu me tegime geigeriga), mis kuulavad erinevaid teemasid

Soovitan: