Përmbajtje:
- Hapi 1: Pjesët dhe mjetet
- Hapi 2: Parimi i punës
- Hapi 3: Mblidhni pajisjen
- Hapi 4: Ngarko kodin
- Hapi 5: Konfiguroni HomeAssistant
- Hapi 6: Konfigurimi i serverit tuaj MQTT [Opsionale]
- Hapi 7: OTA (Përditësimet mbi ajrin) për NodeMCU
- Hapi 8: Përfundime, Puna në të ardhmen
Video: Home Assistant Geiger Counter Integrimi: 8 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Në këtë tutorial do të tregoj se si të shtoni sensorë të personalizuar në HASS (asistent në shtëpi) më konkretisht një sportel geiger, por procesi është i ngjashëm edhe për sensorët e tjerë.
Ne do të përdorim tabelën NodeMCU, një sportel geiger të bazuar në arduino dhe një asistent tashmë të instaluar në shtëpi.
Integrimi do të bazohet në një server MQTT (publik ose privat) dhe unë do t'ju çoj hap pas hapi me këtë.
Në rast se nuk e dini se çfarë është ndihmësi i shtëpisë ju lutemi vizitoni faqen e tyre https://www.home-assistant.io/. It'sshtë një platformë e njohur e automatizimit të shtëpisë që është e mirëmbajtur shumë dhe shumë e personalizueshme.
Do të mësoni për:
- konfigurim i avancuar për Home Assistant
- NodeMCU (bordi i zhvillimit) dhe si ta programoni me Arduino IDE
- OTA (përditësimet mbi ajrin) duke përdorur Arduino IDE për bordin e NodeMCU
- si të lidhni një pajisje serike me NodeMCU
- instalimi manual i një serveri MQTT në linux (opsional)
Supozimet themelore:
- ju keni Home Assistant në funksionim
- ju dini pak për elektronikën
- keni të instaluar Arduino IDE
Hapi 1: Pjesët dhe mjetet
Pjesët:
1. Bordi NodeMCU
2. bukëbardhë
3. telat meshkuj meshkuj-meshkuj dhe meshkuj-femra
3. kabllo usb në mikro usb
4. sportel arduino geiger me ndërfaqe serike
(kërko në Ebay për "arduino geiger couter")
5. material radioaktiv (opsional një mostër e vogël prove)
Mjetet:
1. Arduino IDE
2. Asistenti i shtëpisë i instaluar
Hapi 2: Parimi i punës
Qëllimi ynë është të tregojmë në HomeAssistat (HASS) leximet nga sporteli geiger. Nga njëra anë kemi një server HASS që funksionon diku mund të jetë një mjedër pi ose pajisje tjetër dhe në anën tjetër kemi sportelin geiger.
Numëruesi geiger ka një port serik, një zgjidhje do të jetë të lidhni direkt portin serik me RaspberryPi në të cilën funksionon HASS.
Disa arsye pse mund të mos jetë një ide e mirë:
- nuk ka hapësirë fizike atje
- ne kemi disa pajisje të tjera në portin serik
- ne duam të bashkojmë një sensor mjedisor që duhet të vendoset jashtë në vend të sportelit geiger
Ok, kështu që ne do të eksplorojmë një mundësi tjetër për të bërë lidhjen përmes WIFI:
HASS mbështet leximin e të dhënave të sensorit dhe shfaqjen se përmes një serveri MQTT, ky lloj serveri është një lidhje e lehtë për pajisjet e vogla, një pajisje publikon një mesazh në një "temë" dhe tjetra dëgjon në atë temë për të marrë mesazhin. Kështu që HASS do të dëgjojë, dhe ne kemi nevojë për diçka që do të publikojë mesazhin.
Sensori ynë di vetëm të flasë mbi linjën serike, kështu që ne do të përdorim një tabelë që mund të lexojë një linjë serike dhe që mund të lidhet përmes WIFI dhe të flasë me serverin MQTT. Një bord i lirë që e bën këtë është NodeMCU.
NodeMCU mund të programohet me Arduino IDE. Skica është mjaft e thjeshtë, ajo bën sa më poshtë:
- lidhet me WIFI
- mban një lidhje MQTT me serverin dhe riprovon lidhjen kur dështon ose shkëputet
- dëgjon të dhënat hyrëse serike si një seri numrash të plotë
- sapo të arrijë një numër i plotë ai e dërgon atë përmes MQTT në një temë të caktuar
Hapi 3: Mblidhni pajisjen
Ne do të përdorim tabela dhe tela kështu që është mjaft e thjeshtë, kemi disa hapa:
- vendosni NodeMCU në tabelën e bukës
- lidhni tubin geiger me sportelin geiger (kini kujdes për polaritetin)
- VIN shkon në numëruesin geiger +
- GND shkon në sportelin geiger -
- NodeMCU D7 (kunja 13) shkon te geiger TX
- NodeMCU D8 (kunja 15) shkon te geiger RX
- fuqizoni NodeMCU përmes mikro USB nga kompjuteri
Hapi 4: Ngarko kodin
Ne do të përdorim Arduino IDE dhe do të sigurohemi që kemi bordin NodeMCU të instaluar dhe bibliotekën Adafruit_MQTT të instaluar.
1. Klononi depon e github: https://github.com/danionescu0/arduino dhe kopjoni skicën nga projektet/HASSGeigerIntegration në vendndodhjen tuaj të skicave arduino
2. Hapni Arduino IDE dhe instaloni NodeMCU
- shkoni te Skedari -> Preferencat, në URL -të e Menaxherëve të Bordeve Shtesë shtoni https://arduino.esp8266.com/stable/package_esp8266com_index.json nëse tashmë keni diçka atje vendosni një koma përpara dhe klikoni ok
-nga Tools -> Board -> Board Manager shkruani "nodemcu" dhe zgjidhni hyrjen esp8266 nga ESP8266 Community dhe shtypni install
3. Instaloni Adafruit_MQTT
-shkoni te Mjetet -> Menaxhoni Bibliotekat -> kërkoni "Adafruit_MQTT" dhe instaloni "bibliotekën Arduino MQTT"
4. Lidheni kabllon USB në kompjuterin tuaj dhe konfiguroni tabelën:
-shkoni te Tools -> Board -> zgjidhni NodeMcu 1.0
-Mjetet -> Porti -> porta juaj USB
- lini cilësimet e tjera të pandryshuara
4. Në skicë ndryshoni kredencialet tuaja WIFI që të përputhen me tuajat:
#define STASSID "ssid" // Zëvendësoni me SSID -in tuaj WIFI
#define STAPSK "pass" // Zëvendësoni me fjalëkalimin tuaj WIFI
5. Ngarko skicën në tabelën tënde dhe pas ngarkimit rivendos bordin nga butoni
6. Hapni monitorin serik, nëse gjithçka ka shkuar mirë, duhet të shihni një dalje si kjo:
Nisja
Adresa IP: 192.168.1.168 OTA aktivizohet Lidhja me MQTT… MQTT e lidhur! {"rrezatimi": 0.03}..
Hapi 5: Konfiguroni HomeAssistant
Ne do të supozojmë se keni asistentin e shtëpisë në punë. Në sistemin tim kam versionin HASSOS 3.12 në një RaspberryPi. Nëse versioni juaj i asistentit në shtëpi është shumë i vjetër ose shumë i ri, disa veçori mund të ndryshojnë. Ky tutorial punon me siguri me versionin 3.12.
Nëse nuk keni të instaluar Asistentin në shtëpi, shikoni udhëzuesin e tyre zyrtar të instalimit:
Para se të përparoni me instalimin, sigurohuni që NodeMCU të jetë i kyçur dhe të publikojë të dhëna.
Ok ne do të kemi një seri hapash edhe këtu për konfigurimin:
1. Instaloni "redaktuesin e skedarëve" nëse nuk e keni në meny, këtu është mësimi zyrtar:
2. Ndryshoni skedarin "/config/configuration.yaml" dhe shtoni sa vijon dhe ruajeni
- seksioni mqtt nëse nuk e keni tashmë
mqtt:
ndërmjetësi: broker.hivemq.com zbulim: zbulim i vërtetë_prefiks: ha
- seksioni i sensorëve
sensor:
- platforma: mqtt emri: "Rrezatimi" gjendja_tema: "ha/rrezatimi" njësia e_masës: 'uSv' unique_id: "rrezatimi" vlera_template: "{{value_json.radiation}}"
3. Nga Konfigurimi -> Kontrollet e serverit: shtypni "Kontrollo konfigurimin" kontrolloni skedarin e konfigurimit yaml për gabime, dhe më pas shtypni "rinis" dhe prisni derisa të riniset
4. Nga Pasqyra -> Menyja e këndit të sipërm të djathtë -> Konfiguro UI -> shtyp butonin + nga poshtë djathtas
5. Zgjidhni "sensor" nga lista -> në fushën "entitet" kërkoni për "sensor.radiation", në fushën e emrit shkruani "Rrezatim" dhe klikoni ok, duhet të jetë në faqen kryesore tani
Hapi 6: Konfigurimi i serverit tuaj MQTT [Opsionale]
Le të diskutojmë pak rreth MQTT
"MQTT është një server i klientit që publikon/regjistrohet në protokollin e transportit të mesazheve. Weightshtë e lehtë, e hapur, e thjeshtë dhe e dizajnuar në mënyrë që të jetë e lehtë për t'u zbatuar. Këto karakteristika e bëjnë atë ideal për përdorim në shumë situata, duke përfshirë mjedise të kufizuara, të tilla si për komunikim në kontekstet Machine to Machine (M2M) dhe Internet of Things (IoT), ku kërkohet një gjurmë e vogël e kodit dhe/ose gjerësia e brezit të rrjetit është me çmim të lartë."
Citimi nga specifikimi zyrtar MQTT 3.1.1.
Pra, në thelb ne mund të publikojmë një mesazh diku në njërën anë dhe në anën tjetër mund t'i dëgjojmë ato mesazhe dhe të bëjmë diçka me të dhënat. MQTT mbështet "temat", temat janë vargje që ndërmjetësi përdor për të filtruar mesazhet për secilin klient, kështu që nëse publikojmë një mesazh në temën "/rrezatimi", një dëgjues duhet të regjistrohet në të njëjtën temë për të marrë mesazhet që ne po dërgojmë.
Këtu është një mësim i shkëlqyeshëm në lidhje me MQTT në detaje:
Përdorimi i serverit falas të koshereve ka disa disavantazhe si:
- kushdo që dëgjon temën tuaj do të marrë mesazhet tuaja
- nëse zbret ose kërkon pagesa më vonë, nuk do të mund ta përdorni (nëse nuk paguani)
- nëse dikush që publikon mesazhe për të njëjtën temë do të merrni edhe mesazhet e tij, ata mund të publikojnë mesazhe të papajtueshme dhe të thyejnë grafikët tuaj HASS
Përdorimi i një serveri privat
Nëse nuk doni të përdorni serverin publik falas, ju keni mundësinë e një serveri privat. Ne do të instalojmë Mosquitto MQTT në një server ubuntu / debian si një pi mjedër ose kompjuter.
Mosquitto është një server që zbaton protokollin MQTT dhe është falas.
Për ta instaluar, regjistrohuni në raspnerry pi ose server tjetër me bazë debian dhe ekzekutoni:
sudo apt përditësim
sudo apt install -y mushkonja mushkonja -klientë sudo systemctl aktivizoni mushkonjat.shërbimi
Kjo do të azhurnojë depon, do të instalojë serverin dhe klientin e mushkonjave dhe do t'i mundësojë atij një shërbim që të funksionojë gjatë fillimit
Për të ekzekutuar ip serverin:
emri i hostit -I
dhe do të dalë diçka si:
192.168.1.52 172.17.0.1 172.18.0.1
Pra, IP -ja ime është 192.168.1.52, në komandat më poshtë zëvendësojeni atë me IP -në tuaj
Ju mund të testoni serverin MQTT duke publikuar një mesazh dhe duke e marrë atë me mjetin e tastierës, për këtë duhet të hapen dy terminale, ai që dëgjon një mesazh, ai që do të publikojë mesazhin.
Së pari në një terminal ekzekutoni këtë komandë për të dëgjuar një mesazh në "/disa-tema"
mushkonja_sub -h 192.168.1.52 -t /ndonjë temë
Hapni një terminal tjetër dhe publikoni një mesazh për atë temë:
mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"lagështia": 74.0}'
Në terminalin e parë duhet të shihni '{"lagështia": 74.0}' të shtypura.
Vëmendje e veçantë:
- ky konfigurim supozon se HASS, Mosquitto dhe NodeMCU janë të lidhur në të njëjtin rrjet WIFI dhe nuk ka rregulla firewall dhe ato mund të komunikojnë lirshëm
-serveri Mosquitt MQTT nuk ka emër përdoruesi/fjalëkalim, nëse doni të konfiguroni kredencialet, kontrolloni këtë: https://www.steves-internet-guide.com/mqtt-username-password-example/ Gjithashtu ju do të duhet të konfiguroni kredencialet në Home Assistant dhe në skicën arduino
Hapi 7: OTA (Përditësimet mbi ajrin) për NodeMCU
Përditësimet mbi ajër do të thotë që bordi i zhvillimit mund të ndizet me tela pa nevojën e një kablli fizik.
Arduino IDE mbështet këtë funksionalitet për seritë ESP8266 dhe disa borde të tjera:
- kërkon ndezje fillestare mbi kabllon USB
- krijon një port virtual mbi WIFI dhe është i dukshëm vetëm nga Arduino IDE
- nuk ka asnjë informacion të korrigjimit serik
- mbështet mbrojtjen me fjalëkalim
Për të aktivizuar OTA në një skicë të ESP8266, së pari përfshini bibliotekën:
#përfshi "ArduinoOTA.h"
Përcaktoni gjithashtu këtë konstante të skicës së fjalëkalimit:
#define SKETCHPASS "some_password"
Në pjesën e konfigurimit shtoni këto rreshta:
ndërsa (WiFi.waitForConnectResult ()! = WL_CONNECTED) {
Serial.println ("Lidhja dështoi! Rinisja …"); vonesa (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Lloji i vargut; nëse (ArduinoOTA.getCommand () == U_FLASH) {type = "skicë";} tjetër {// U_FS type = "sistemi i skedarëve";} Serial.println ("Fillo përditësimin " + lloji);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nPërfundim");}); ArduinoOTA.onProgress ( (progres i panënshkruar int, i panënshkruar int total) {Serial.printf ("Progresi:%u %% / r", (përparimi / (total / 100)));}); ArduinoOTA.onError ( (gabimi ota_error_t) {Serial.printf ("Gabim [%u]:", gabim); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} tjetër nëse (gabim == OTA_BEGIN_ERROR) {Serial.println ("Fillimi dështoi");} tjetër nëse (gabim == OTA_CONNECT_ERROR) {Serial.println ("Lidhja dështoi");} tjetër nëse (gabim == OTA_RECEIVE_ERROR) {Serial.println (" Marrja dështoi ");} tjetër nëse (gabim == OTA_END_ERROR) {Serial.println (" Fundi dështoi ");}}); ArduinoOTA.filloj (); Serial.print ("Adresa IP:"); Serial.println (WiFi.localIP ());
Dhe në pjesën lak shtoni këtë rresht:
ArduinoOTA.handle ();
Pas ngarkimit të kodit fillestar pasi bordi të ngrihet, duhet të shihni në Arduino IDE në seksionin Tools-> Port dy lloje portesh:
Portet serike: /dev /ttyUSB0 (për shembull)
Portet e rrjetit: esp8266-xxxxx në 192.168.1.xxx
Tani mund të zgjidhni portën e rrjetit dhe të ngarkoni telekomandën e skicës, do t'ju kërkohet fjalëkalimi i skicës (ai që keni përcaktuar në një konstante më lart)
Hapi 8: Përfundime, Puna në të ardhmen
Ky tutorial mund të modifikohet lehtësisht për të dërguar të dhëna në lidhje me llojet e tjera të sensorëve:
- nëse sensori juaj mbështetet drejtpërdrejt nga NodeMCU përmes një biblioteke, thjesht grumbulloni të dhëna nga sensori dhe drejtojini drejtpërdrejt përmes MQTT
- nëse biblioteka e sensorëve nuk punon me NodeMCU por është vetëm për Arduino atëherë ngarkoni kodin tuaj në arduino, nxirrni vlerën përmes linjës seriale dhe lexojeni në NodeMCU dhe shtyjeni atë (ashtu siç bëmë me sportelin geiger)
Ne madje mund ta modifikojmë atë për të dërguar të dhëna nga sensorë të shumtë si kështu:
- lidhni sensorët tuaj me NodeMCU
- të dhënat e sondazhit nga secili sensor
- për secilin nga sensorët publikoni të dhënat në një temë të ndryshme
- në HASS përcaktoni sensorë të shumtë (siç bëmë me geiger) që do të dëgjojnë tema të ndryshme
Recommended:
DIY Smart Garage Opener Door + Home Assistant Integrimi: 5 hapa
DIY Smart Garage Opener Door + Home Assistant Integrimi: Kthejeni derën tuaj të zakonshme të garazhit të zgjuar duke përdorur këtë projekt DIY. Unë do t'ju tregoj se si ta ndërtoni dhe kontrolloni atë duke përdorur Home Assistant (mbi MQTT) dhe të keni aftësinë për të hapur dhe mbyllur nga distanca derën tuaj të garazhit. Unë do të përdor një tabelë ESP8266 të quajtur Wemos
DIY Smart Doorbell: Kodi, Konfigurimi dhe Integrimi HA: 7 hapa (me fotografi)
DIY Smart Doorbell: Code, Setup dhe HA Integration: Në këtë projekt, unë do t'ju tregoj se si mund ta shndërroni zilen tuaj normale të derës në një të zgjuar pa ndryshuar ndonjë nga funksionet aktuale ose duke prerë telat. Unë do të përdor një tabelë ESP8266 të quajtur Wemos D1 mini. E re në ESP8266? Shikoni prezantimin tim
Armatura e shpatullave të printuara 3D Integrimi me tela EL: 5 hapa
Armatura e shpatullave të printuara 3D Integrimi me tela EL: Unë printova 3D një forca të blinduara të shpatullave dhe tela të integruar EL në të. Ju mund ta përdorni këtë teknikë për personazhet në ndërtimin e kostumeve komike
Raspberry Pi Linux Motion Integrimi i Google Photos: 5 hapa
Integrimi i Fotografive të Google Raspberry Pi Linux: Ideja është të ngarkoni fotografi dhe video të bëra me kamerë të aktivizuar me lëvizje të lidhur me Raspberry Pi për të ngarkuar skedarë në një re. Softueri ‘Motion’ mbështet ngarkimin në Google Drive përmes PyDrive. Në këtë artikull 'Motion' përdoret për të ngarkuar në Google P
Arduino dhe Apple HomeKit Integrimi - Kontrolloni shtëpinë tuaj nga Siri! IoT është këtu: 6 hapa
Arduino dhe Apple HomeKit Integrimi - Kontrolloni shtëpinë tuaj nga Siri! IoT është këtu: Ky Instructable do t'ju japë një mënyrë të shpejtë dhe të lehtë për të shtuar një bord arduino në HomeKit të Apple në një pajisje iOS. Ajo hap të gjitha llojet e mundësive, përfshirë Skriptet që funksionojnë në server, të kombinuara me Apples HomeKit " Skenat ", ajo bën