Orodha ya maudhui:

Ushirikiano wa Counter wa Msaidizi wa Nyumbani: Hatua 8
Ushirikiano wa Counter wa Msaidizi wa Nyumbani: Hatua 8

Video: Ushirikiano wa Counter wa Msaidizi wa Nyumbani: Hatua 8

Video: Ushirikiano wa Counter wa Msaidizi wa Nyumbani: Hatua 8
Video: DEMU ALIWA NYUMA HADI KINYESI CHATOKA (ANGALIA VIDEO HADI MWISHO) 2024, Novemba
Anonim
Image
Image
Kanuni ya Kazi
Kanuni ya Kazi

Katika mafunzo haya nitaonyesha jinsi ya kuongeza sensorer maalum kwa HASS (msaidizi wa nyumbani) haswa kaunta ya geiger lakini mchakato ni sawa na sensorer zingine pia.

Tutatumia bodi ya NodeMCU, kaunta ya geiger ya arduino na msaidizi wa nyumbani aliyewekwa tayari.

Ujumuishaji utatokana na seva ya MQTT (ya umma au ya kibinafsi) na nitakuchukua hatua kwa hatua na hii.

Ikiwa haujui ni nini msaidizi wa nyumbani tafadhali tembelea ukurasa wao https://www.home-assistant.io/. Ni jukwaa la nyumbani la kujulikana ambalo linahifadhiwa vizuri na linaweza kubadilishwa sana.

Utajifunza juu ya:

- usanidi wa hali ya juu wa Msaidizi wa Nyumbani

- NodeMCU (bodi ya maendeleo) na jinsi ya kuipanga na IDE ya Arduino

- OTA (juu ya sasisho hewani) ukitumia Arduino IDE kwa bodi ya NodeMCU

- jinsi ya kuunganisha kifaa cha serial kwa NodeMCU

- usanidi wa kibinafsi wa MQTT kwenye linux (hiari)

Mawazo ya kimsingi:

- unayo Msaidizi wa Nyumbani anayeendelea

- unajua kidogo juu ya umeme

- una Arduino IDE iliyosanikishwa

Hatua ya 1: Sehemu na Zana

Sehemu:

1. Bodi ya NodeMCU

2. mkate wa mkate

3. waya wa juper wa kiume na wa kiume na wa kike

3. usb kwa kebo ndogo ya usb

4. counter ya arduino geiger na interface ya serial

(tafuta Ebay kwa "arduino geiger couter")

5. nyenzo zenye mionzi (hiari sampuli ndogo ya mtihani)

Zana:

1. Arduino IDE

2. Msaidizi wa Nyumba amewekwa

Hatua ya 2: Kanuni ya Kazi

Lengo letu ni kuonyesha kwenye HomeAssistat (HASS) masomo kutoka kwa kaunta ya geiger. Kwa upande mmoja tuna seva ya HASS inayoendesha mahali pengine inaweza kuwa pi ya raspberry au kifaa kingine na kwa upande mwingine tuna kaunta ya geiger.

Kaunta ya geiger ina bandari ya serial, suluhisho moja itakuwa kuambatisha moja kwa moja bandari ya serial kwa RaspberryPi ambayo HASS inaendesha.

Baadhi ya sababu kwa nini inaweza kuwa sio maoni mazuri:

- hakuna nafasi ya mwili hapo

- tuna kifaa kingine kwenye bandari ya serial

- tunataka kushikamana na sensorer ya mazingira ambayo inapaswa kuwekwa nje badala ya kaunta ya geiger

Sawa kwa hivyo tutachunguza uwezekano mwingine kufanya unganisho kupitia WIFI:

HASS inasaidia kusoma data ya sensa na kuonyesha kuwa kupitia seva ya MQTT, aina hii ya seva ni unganisho la uzito wa chini kwa vifaa vidogo kifaa kimoja huchapisha ujumbe kwenye "mada" nyingine inasikiliza mada hiyo kupokea ujumbe. Kwa hivyo HASS itasikiliza, na tunahitaji kitu ambacho kitachapisha ujumbe.

Sensorer yetu inajua tu kuzungumza juu ya laini ya serial ili tutumie bodi ambayo inaweza kusoma safu ya serial na ambayo inaweza kuungana juu ya WIFI na kuzungumza na seva ya MQTT. Bodi ya bei rahisi ambayo hufanya hii ni NodeMCU.

NodeMCU inaweza kusanidiwa na Arduino IDE. Mchoro ni rahisi sana, inafanya yafuatayo:

- inaunganisha kwa WIFI

- inahifadhi unganisho la MQTT na seva na hujaribu tena muunganisho wakati imeshindwa au kukatika

- husikiliza data zinazoingia kama safu ya nambari

- mara moja nambari kamili ikifika hutuma kupitia MQTT kwa mada maalum

Hatua ya 3: Unganisha Kifaa

Unganisha Kifaa
Unganisha Kifaa

Tutatumia bodi za mikate na waya kwa hivyo ni rahisi, tuna hatua kadhaa:

- weka NodeMCU kwenye ubao wa mkate

- unganisha bomba la geiger kwa kaunta ya geiger (angalia polarity)

- VIN huenda kwa kaunta ya geiger +

- GND kwenda kwa kaunta ya geiger -

- NodeMCU D7 (pini 13) huenda kwa geiger TX

- NodeMCU D8 (pini 15) huenda kwa geiger RX

- NodeMCU ya umeme kupitia USB ndogo kutoka kwa kompyuta

Hatua ya 4: Pakia Nambari

Pakia Nambari
Pakia Nambari
Pakia Nambari
Pakia Nambari
Pakia Nambari
Pakia Nambari
Pakia Nambari
Pakia Nambari

Tutatumia Arduino IDE na tutahakikisha kuwa bodi ya NodeMCU imewekwa na maktaba ya Adafruit_MQTT imewekwa.

1. Clone ghala ya github: https://github.com/danionescu0/arduino na nakili mchoro kutoka kwa miradi / HASSGeigerUjumuishaji kwa eneo lako la arduino sketchbook

2. Fungua Arduino IDE na usakinishe NodeMCU

- nenda kwenye Faili -> Mapendeleo, katika URL za Meneja wa Bodi za Ziada ongeza https://arduino.esp8266.com/stable/package_esp8266com_index.json ikiwa tayari unayo kitu hapo weka koma mbele na bonyeza sawa

- kutoka kwa Zana -> Bodi -> Meneja wa Bodi aina "nodemcu" na uchague kiingilio esp8266 na Jumuiya ya ESP8266, na bonyeza media install

3. Sakinisha Adafruit_MQTT

- nenda kwenye Zana -> Dhibiti Maktaba -> tafuta "Adafruit_MQTT" na usakinishe "maktaba ya Arduino MQTT"

4. Chomeka kebo ya USB kwenye kompyuta yako na usanidi bodi:

- nenda kwenye Zana -> Bodi -> chagua NodeMcu 1.0

- Zana -> Bandari -> bandari yako ya USB

- acha mipangilio mingine bila kubadilika

4. Katika mchoro badilisha hati zako za WIFI ili zilingane na yako mwenyewe:

#fafanua STASSID "ssid" // Badilisha na SSID yako ya WIFI

#fafanua STAPSK "pass" // Badilisha na nenosiri lako la WIFI

5. Pakia mchoro kwenye ubao wako na baada ya kupakia weka upya bodi kutoka kwenye kitufe

6. Fungua mfuatiliaji wa serial, ikiwa yote yameenda vizuri unapaswa kuona pato kama hii:

Kupiga kura

Anwani ya IP: 192.168.1.168 OTA imewezeshwa Kuunganisha kwa MQTT… MQTT Imeunganishwa! {"mnururisho": 0.03}..

Hatua ya 5: Sanidi HomeAssistant

Sanidi HomeAssistant
Sanidi HomeAssistant
Sanidi HomeAssistant
Sanidi HomeAssistant

Tutachukua kuwa una msaidizi wa nyumbani anayefanya kazi. Kwenye mfumo wangu nina toleo la HASSOS 3.12 kwenye RaspberryPi. Ikiwa toleo lako la msaidizi wa nyumbani ni la zamani sana au mpya sana baadhi ya huduma zinaweza kutofautiana. Mafunzo haya hufanya kazi kwa hakika na toleo la 3.12.

Ikiwa yako haina Msaidizi wa Nyumba aliyewekwa, angalia mwongozo wao rasmi wa usanikishaji:

Kabla ya kuendelea na usakinishaji hakikisha NodeMCU imechomekwa na inachapisha data.

Ok tutakuwa na hatua kadhaa hapa pia kwa usanidi:

1. Sakinisha "kihariri faili" ikiwa huna kwenye menyu, hapa kuna mafunzo rasmi:

2. Hariri "/config/configuration.yaml" faili na uongeze yafuatayo na uihifadhi

- sehemu ya mqtt ikiwa huna tayari

mqtt:

broker: broker.hivemq.com ugunduzi: ugunduzi wa kweli_mbadala: ha

- sehemu ya sensorer

sensa:

- jukwaa: jina la mqtt: "Mionzi" state_topic: "ha / radiation" unit_of_ kipimo: 'uSv' kipekee_id: "radiation" value_template: "{{value_json.radiation}}"

3. Kutoka kwa Usanidi -> Udhibiti wa seva: bonyeza "Angalia usanidi" angalia faili ya usanidi wa yaml kwa makosa, na kisha bonyeza "kuanzisha upya" na subiri hadi itaanza upya.

4. Kutoka kwa Muhtasari -> Menyu ya kona ya juu kulia -> Sanidi UI -> bonyeza kitufe cha + kutoka kulia chini

5. Chagua "sensa" kutoka kwenye orodha -> katika uwanja wa "chombo" tafuta "sensor.radiation", katika uwanja wa jina andika "Radiation" na ubonyeze sawa, inapaswa kuwa kwenye ukurasa kuu sasa

Hatua ya 6: Kusanidi seva yako ya MQTT yako mwenyewe [Hiari]

Wacha tujadili kidogo juu ya MQTT

“MQTT ni Seva ya Mteja kuchapisha / kujiandikisha kwa itifaki ya usafirishaji wa ujumbe. Ni uzani mwepesi, wazi, rahisi, na iliyoundwa ili iwe rahisi kutekeleza. Tabia hizi hufanya iwe bora kutumiwa katika hali nyingi, pamoja na mazingira yaliyozuiliwa kama vile mawasiliano katika Mashine kwa Mashine (M2M) na Mtandao wa Vitu (IoT) muktadha ambapo alama ndogo ya nambari inahitajika na / au upelekaji wa mtandao uko kwenye malipo.”

Nukuu kutoka kwa vipimo rasmi vya MQTT 3.1.1.

Kwa hivyo kimsingi tunaweza kuchapisha ujumbe mahali pengine upande mmoja na kwa upande mwingine tunaweza kusikiliza ujumbe huo na kufanya kitu na data. MQTT inasaidia "mada", mada ni masharti ambayo broker hutumia kuchuja ujumbe kwa kila mteja kwa hivyo ikiwa tutachapisha ujumbe kwa mada ya "/ mionzi" msikilizaji lazima ajisajili kwa mada hiyo hiyo kupata ujumbe ambao tunatuma.

Hapa kuna mafunzo mazuri kuhusu MQTT kwa undani:

Kutumia seva ya mzinga ya bure kuna shida kama:

- mtu yeyote anayesikiliza mada yako atapokea ujumbe wako

- ikiwa itashuka au inahitaji malipo baadaye hautaweza kuitumia (isipokuwa ulipe)

- ikiwa mtu yeyote anayechapisha ujumbe kwa mada hiyo hiyo utapokea ujumbe wao pia, anaweza kuchapisha ujumbe usiokubaliana na kuvunja grafu zako za HASS

Kutumia seva ya kibinafsi

Ikiwa hautaki kutumia seva ya bure ya umma una chaguo la seva ya kibinafsi. Tutaweka Mosquitto MQTT kwenye seva ya ubuntu / debian kama pi ya raspberry au kompyuta.

Mosquitto ni seva inayotumia itifaki ya MQTT na ni bure.

Ili kuiweka ingia kwenye pi yako ya raspnerry au seva nyingine ya msingi ya debian na uendesha:

sasisho la sudo apt

Sudo apt kufunga - mbu-wateja-mbu sudo systemctl wezesha huduma ya mbu

Hii itasasisha hazina, kufunga seva ya mbu na mteja na kuiwezesha huduma kuanza wakati wa kuanza

Kupata seva ip kutekeleza:

jina la mwenyeji -I

na itatoa kitu kama:

192.168.1.52 172.17.0.1 172.18.0.1

Kwa hivyo ip yangu ni 192.168.1.52, katika maagizo hapa chini ibadilishe na ip yako mwenyewe

Unaweza kujaribu seva ya MQTT kwa kuchapisha ujumbe na kuipokea kwa zana ya koni, kwa kuwa vituo hivi viwili lazima vifunguliwe ambavyo vinasikiliza ujumbe, ambao utachapisha ujumbe.

Kwanza kwenye terminal endesha amri hii kusikiliza ujumbe kwenye "/ some-mada"

mosquitto_sub -h 192.168.1.52 -t / mada-fulani

Fungua kituo kingine na uchapishe ujumbe kwa mada hiyo:

mosquitto_pub -h 192.168.1.52 -t / some-mada -m '{"unyevu": 74.0}'

Katika kituo cha kwanza unapaswa kuona '{"unyevu": 74.0}' kuchapishwa.

Tahadhari maalum:

- usanidi huu unafikiria kuwa HASS, Mosquitto na NodeMCU zimeunganishwa kwenye mtandao huo wa WIFI na hakuna sheria za firewall na wanaweza kuwasiliana kwa uhuru

- seva ya Mosquitt MQTT haina jina la mtumiaji / nywila, ikiwa unataka kuweka kitambulisho angalia hii: https://www.steves-internet-guide.com/mqtt-username-password-example/ Pia utahitaji kusanidi sifa za Msaidizi wa Nyumbani na katika mchoro wa arduino

Hatua ya 7: OTA (Juu ya Sasisho za Hewa) kwa NodeMCU

Juu ya sasisho za hewa inamaanisha kuwa bodi ya maendeleo inaweza kuwaka kwa waya bila hitaji la kebo ya mwili.

Arduino IDE inasaidia utendakazi huu wa safu ya ESP8266 na bodi zingine:

- inahitaji mwangaza wa kwanza juu ya kebo ya USB

- inaunda bandari halisi juu ya WIFI na inaonekana tu kutoka Arduino IDE

- hakuna habari ya utatuzi ya serial inapatikana

- inasaidia ulinzi na nywila

Ili kuwezesha OTA kwenye mchoro wa ESP8266 kwanza ni pamoja na maktaba:

# pamoja na "ArduinoOTA.h"

Pia fafanua nenosiri hili la mchoro kila wakati:

#fafanua SKETCHPASS "neno fulani"

Katika sehemu ya usanidi ongeza laini hizi:

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

Serial.println ("Uunganisho Umeshindwa! Inawasha upya…"); kuchelewesha (5000); Kuanza kwa ESP (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Aina ya kamba; "+ aina);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (maendeleo yasiyosainiwa ya int, uns int int) {Serial.printf ("Maendeleo:% u %% / r", (maendeleo / (jumla / 100)));}); ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [% u]:", error); ikiwa (error == OTA_AUTH_ERROR) {Serial.println ("Auth Imeshindwa");} mwingine ikiwa (makosa == OTA_BEGIN_ERROR) {Serial.println ("Anza Imeshindwa");} vingine ikiwa (kosa == OTA_CONNECT_ERROR) {Serial.println ("Unganisha Imeshindwa"); Pokea Imeshindwa ");} mwingine ikiwa (kosa == OTA_END_ERROR) {Serial.println (" Mwisho Umeshindwa ");}}); ArduinoOTA.anza (); Serial.print ("Anwani ya IP:"); Serial.println (WiFi.localIP ());

Na katika sehemu ya kitanzi ongeza mstari huu:

ArduinoOTA.shughulikia ();

Baada ya kupakia nambari yako ya kwanza baada ya buti ya bodi kupanda juu unapaswa kuona katika Arduino IDE katika sehemu ya Zana-> Bandari aina mbili za bandari:

Bandari za serial: / dev / ttyUSB0 (kwa mfano)

Bandari za mtandao: esp8266-xxxxx mnamo 192.168.1.xxx

Sasa unaweza kuchagua bandari ya mtandao na kupakia kijijini cha mchoro, utaombwa kwa nywila ya mchoro (ile ambayo umefafanua mara kwa mara hapo juu)

Hatua ya 8: Hitimisho, Kazi ya Baadaye

Mafunzo haya yanaweza kubadilishwa kwa urahisi ili kutuma data kuhusu aina zingine za sensorer:

- ikiwa sensorer yako inasaidiwa moja kwa moja na NodeMCU kupitia maktaba, data ya kuogelea tu kutoka kwa sensa na uisukuma moja kwa moja kupitia MQTT

- ikiwa maktaba ya sensa haifanyi kazi na NodeMCU lakini ni ya Arduino tu kisha pakia nambari yako kwa arduino, toa thamani kupitia laini ya serial na uisome kwenye NodeMCU na uisukume (kama vile tulivyofanya na kaunta ya geiger)

Tunaweza hata kuibadilisha ili kutuma data kutoka kwa sensorer nyingi kama hivyo:

- unganisha sensorer zako kwa NodeMCU

- data ya uchaguzi kutoka kila sensorer

- kwa kila sensorer kuchapisha data kwa mada tofauti

- katika HASS hufafanua sensorer nyingi (kama tulivyofanya na geiger) ambayo itasikiliza mada tofauti

Ilipendekeza: