Sisukord:
- Samm: osad ja tööriistad
- 2. etapp: tööpõhimõte
- Samm 3: Seadme kokkupanek
- Samm: laadige kood üles
- Samm: seadistage HomeAssistant
- Samm: oma MQTT -serveri seadistamine [valikuline]
- Samm 7: OTA (üle õhu värskendused) NodeMCU jaoks
- 8. samm: järeldused, tulevane töö
Video: Koduabilise Geigeri loenduri integreerimine: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
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
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
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
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:
DIY nutikas garaažiukseavaja ja koduabilise integreerimine: 5 sammu
DIY nutikas garaažiukseavaja ja koduabilise integreerimine: muutke oma tavaline garaažiuks nutikaks, kasutades seda DIY projekti. Näitan teile, kuidas seda ehitada ja juhtida, kasutades koduabilist (üle MQTT) ja mul on võimalus garaažiukse kaugjuhtimisega avada ja sulgeda. Ma kasutan ESP8266 plaati nimega Wemos
Kontrollige oma automaatset liugväravat koduabilise ja ESP abil Kodu: 5 sammu (piltidega)
Kontrollige oma automaatset liugväravat koduabilise ja ESPHome abil: Järgmine artikkel on tagasiside minu isiklikule kogemusele oma majale paigaldatud automaatse liugvärava juhtimisel. See värav, kaubamärgiga "V2 Alfariss", oli selle juhtimiseks varustatud mõne Phox V2 kaugjuhtimispuldiga. Mul on ka
Koduautomaatikaga alustamine: Koduabilise installimine: 3 sammu
Koduautomaatikaga alustamine: Koduabilise installimine: alustame nüüd koduautomaatika seeriaga, kus loome nutika kodu, mis võimaldab meil juhtida selliseid asju nagu tuled, kõlarid, andurid ja nii edasi, kasutades keskset jaoturit koos hääleassistent. Selles postituses õpime, kuidas sisestada
Kuidas ehitada CubeSat Arduino ja Geigeri loenduri anduriga: 11 sammu
Kuidas ehitada CubeSat Arduino ja Geigeri loenduranduriga: kas olete kunagi mõelnud, kas Mars on radioaktiivne või mitte? Ja kui see on radioaktiivne, kas kiirgus on piisavalt kõrge, et seda inimestele kahjulikuks pidada? Need on kõik küsimused, millele meie CubeSat koos Arduino Geiger Counte'iga loodame vastata
DIY Geigeri loenduri remont: 9 sammu (piltidega)
Isetehtud Geigeri loenduri remont: tellisin selle DIY Geigeri loenduri veebist. See saabus õigel ajal, kuid oli kahjustatud, bussi kaitsmehoidjad purustati ja J305 Geiger Mulleri toru hävitati. See oli probleem, kuna kasutasin oma varasemate ostude punkte sellelt lehelt