Sisällysluettelo:

MQTT- ja Wifi -pohjainen postilaatikon lippu: 7 vaihetta (kuvilla)
MQTT- ja Wifi -pohjainen postilaatikon lippu: 7 vaihetta (kuvilla)

Video: MQTT- ja Wifi -pohjainen postilaatikon lippu: 7 vaihetta (kuvilla)

Video: MQTT- ja Wifi -pohjainen postilaatikon lippu: 7 vaihetta (kuvilla)
Video: Dingtian DT-R008 многоканальное умное реле с ethernet и wi-fi - обзор и интеграция в Home Assistant 2024, Heinäkuu
Anonim
MQTT ja Wifi Powered Mailbox -lippu
MQTT ja Wifi Powered Mailbox -lippu

Huomautus: päivitetty uudella laiteohjelmistolla, kaavalla ja vinkkejä ohjelmoijalle

Pari vuotta aloitin oman kotiautomaatiohankkeen. Se alkoi rakentamalla palvelinohjattua 433 MHz: n lähetinrakennetta Arduinon kanssa vaihtamaan paljon halpoja PT2262 -pohjaisia etäkytkimiä. Myöhemmin lisäsin Arduino -pohjaisen vastaanottimen sääasemalleni, kytkin sähköauton latauslaitteen ohjauskoskettimen jne. Asiat kietoutuivat yhä enemmän yhteen (ja monimutkaisiksi!). Joten muutama kuukausi sitten päätin standardoida kaiken MQTT: n perusteella viesteille, Node-RED: n automaatiolle (molemmat toimivat yhdellä Raspberry Pi B+: lla) ja MariaDb: n kirjautumiselle (käynnissä Synology NAS -laitteellani). Myöhemmin siirsin MQTT-välittäjän (Mosquitto) ja Node-REDin myös NAS: lle.

Tämä opas kuvaa typerää ja hauskaa projektia, joka kiinnittää kadulle asennetun postilaatikkoni tähän koti-infrastruktuuriin. Ajatuksena on, että jos joku avaa aidalle asennetun postilaatikon noin 10 metrin päähän etuovesta, se ilmoittaa minulle puhelimessani ja mahdollisesti muilla laitteilla.

Vaihe 1: Yleiskatsaus, edellytykset ja osat

Ääriviivat

Korkealla tasolla postilaatikon pitäisi avattaessa lähettää välittäjälle ainutlaatuinen MQTT -viesti, jotta aiheen tilaajille ilmoitetaan asiasta. Node-RED tilaa myös ja tekee jonkin verran automaatiota, tässä tapauksessa sähköpostin ja/tai push-viestin lähettämisen puhelimeeni.

Postilaatikon pitäisi toimia paristoilla ja vähintään vuoden, ja sen pitäisi toimia WiFi -verkon kautta. Mikro-ohjaimen herättäminen ja yhteyden muodostaminen WiFi-verkkoon voi kestää useita sekunteja, joten en voinut katkaista virtaa aktivointikytkimellä. Sen sijaan prosessorin pitäisi antaa lopettaa liiketoimintansa sen jälkeen, kun postilaatikon kansi on jo suljettu.

Edellytykset

Oletan, että sinulla on vaatimaton juotostaito, olet työskennellyt hieman Arduino IDE: n kanssa ja asentanut ESP8266 -levyt Boards Managerin avulla. Tarvitset myös 3,3 voltin USB-sarjasovittimen mikro-ohjaimen ohjelmoimiseksi.

Oletan myös, että sinulla on käytössä MQTT-välittäjä ja Node-RED-palvelin. Jos ei, Internetissä on monia ohjeita, mutta suosittelen valitsemaan laiska reitin ja käyttämään Peter Scargillin erinomaista asennusohjelmaa, jos haluat käyttää tätä missä tahansa Pi: ssä tai Ubuntussa tai käyttää Andreas Spiessin kuvaa Pi Zero W (linkit videon kuvauksessa), mikä säästää muutaman tunnin asennuskomentosarjojen katselemisesta. Vaihtoehtoisesti voit saada laiteohjelmiston lähettämään sähköpostin suoraan, mutta menetät paljon joustavuutta.

Osat

  • 1 suljettu, 3 AA -paristokotelo
  • 2 AA -paristoa
  • 1 ESP8266 -moduuli. Tässä projektissa käytin ESP-01: tä
  • 1 mikrokytkin
  • 1 47K vastus
  • 1 4M7 vastus
  • 1 2.2uF kondensaattori
  • 1 ohut muoviputki. Käytin kynää
  • 1 paksu, pitkä tulitikku tai tikkari. Sen pitäisi sopia ja liikkua helposti muoviputkessa

Vaihe 2: Laitteisto: laatikko, kytkin ja johdotus

Laitteisto: laatikko, kytkin ja johdot
Laitteisto: laatikko, kytkin ja johdot
Laitteisto: laatikko, kytkin ja johdot
Laitteisto: laatikko, kytkin ja johdot
Laitteisto: laatikko, kytkin ja johdot
Laitteisto: laatikko, kytkin ja johdot

Aloitin vanhasta paristokotelosta, joka oli peräisin katkenneesta joulukoristeesta. Se on suunniteltu kolmelle AA -kokoiselle paristolle. Koska ESP8266 toimii hienosti 3 voltilla, voisin käyttää kahta paristoa ja käyttää kolmatta asentoa mikro-ohjaimelle. Huomaa, kuinka laatikossa oli pieni ylimääräinen osasto, jota voisin käyttää aktivointikytkimellä. Käytin kuvissa näkyvää hyvin yleistä kytkintyyppiä, mutta poistin jousen, joka lukitsee sen päälle tai pois. Juotin kaksi ohutta johtoa NC -koskettimiin ja liimasin sen laatikkoon pienellä tipalla superliimaa.

Seuraavaksi porasin yläkansiin reiän, joka vastaa kuulakärkistä otettua muoviputkea. Reikä on täsmälleen linjassa kytkimen kanssa ja ohjaa paksusta tulitikusta valmistettua mäntää.

Lopuksi juotin vielä kaksi johtoa akun koskettimiin ja ohjasin kaikki neljä johtoa kolmannen akun kohtaan, jossa mikro-ohjain oli.

Vaihe 3: Laitteisto: ESP-01

Laitteisto: ESP-01
Laitteisto: ESP-01
Laitteisto: ESP-01
Laitteisto: ESP-01
Laitteisto: ESP-01
Laitteisto: ESP-01

Kun otetaan huomioon WiFi -vaatimus, koko projekti huutaa ESP8266. Tästä pienestä WiFi -ohjaimesta on tullut näpertelyyhteisön suosikki työhevonen moduulina, jonka voi ostaa alle 2,50 euron hintaan. Arduino IDE (tai Atom PlatformIO -laajennuksella) tukee täysin ESP8266: ta.

Ottaisin yleensä ESP-12F: n, mutta minulla oli ympärillä pieni ESP-01-levy, joka sopi täydellisesti työhön ja sopii hyvin akkukoteloon. Ainoa ongelma on, että ESP-01: n laiteohjelmiston flash-muotoilu on melko monimutkaista. Siitä lisää seuraavassa vaiheessa. On tehtävä yksi muutos: Sinun on poistettava punainen virran merkkivalo levyltä, koska se kuluttaa jatkuvasti 3 mA. Kun LED on poistettu, moduuli käyttää vain muutamia kymmeniä uA: ta syväunetilassa, joten se kestää yli vuoden kahdella laadukkaalla AA -paristolla.

Kävi ilmi, että voisin käyttää kahta 4-napaista naarasliitintä ja juotosta muutamiin lisäkomponentteihin vapaassa muodossa, jotta voin poistaa ESP-01: n laiteohjelmiston päivittämiseksi, vaikka se mahtuu edelleen kolmanteen paristolokeroon.

On erittäin tärkeää kytkeä ESP oikein. Yhdistä se yllä olevan huijausarkin avulla seuraavasti.

  1. Akku plus Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) ja 47K vastus.
  2. Akku miinus GND (A1) ja yksi kytkimen johto.
  3. Kytkimen toinen johto 100nF kondensaattoriin ja 4M7 vastukseen.
  4. Molempien vastuksen ja kondensaattorin avoimet päät RST: lle (C2).
  5. TXD (A2) voi jäädä yhdistämättä.

Edit: Minun piti vaihtaa ESP-01, koska tein typerän virheen ja tuhosin sen. Kävi ilmi, että yllätyksekseni uusi ESP-01 ei nollautunut alkuperäisellä 100nF kondensaattorilla. Siinä on luultavasti hieman erilainen muotoilu. Vaihdoin sen 2.2 uF -laitteeseen ja nyt se toimii jälleen

Kun olet valmis, kaikki voidaan asentaa laatikkoon, mutta odota, ensin meidän on ohjelmoitava moduuli.

Vaihe 4: ESP-01: n ohjelmointi

ESP-01: n ohjelmointi
ESP-01: n ohjelmointi
ESP-01: n ohjelmointi
ESP-01: n ohjelmointi
ESP-01: n ohjelmointi
ESP-01: n ohjelmointi

Jos haluat päivittää ESP-01: n laiteohjelmiston, voit joko rakentaa pienen laitteen tai ostaa (melkein) täydellisen ohjelmoijan noin 1 eurolla.

Laitteiston ohjelmointilaite

Rakenna ESP-01: lle pieni naulain, jossa on kaksi naarasosaa. Tarvitset myös USB -sarjamoduulin, joka pystyy tarjoamaan 3,3 voltin jännitteen. Huomaa, että ESP8266 -siru ei ole 5 voltin kovettunut, joten virhe tässä voi tappaa moduulin. Joka tapauksessa, käytä uudelleen huijausarkkia, lankauta laitteesi seuraavasti:

  1. 3.3V USBSerial -moduulista Vcc, CH_PD, RST ja GPIO2.
  2. USBSerial -moduulin GND GND: hen ja GPIO0: een.
  3. TXD USBSerial -moduulista RXD: hen.
  4. USBSerial -moduulin RDX TXD: hen.

Esivalmisteluohjelmoija

On hauskaa rakentaa omia juttujaan, mutta laiskempi lähestymistapa on hankkia ESP-01-sarjaliitäntä suosikkihuutokauppasivustostasi, katso yllä oleva kuva. Tämä on paljon helpompaa, pienempää ja luotettavampaa kuin rig. Jotkut näistä eivät kuitenkaan ole ohjelmoijia, vain sarjaliitäntöjä. Sinun on juotettava johtosilta GND: n (nasta A1) ja GPIO0: n (nasta C1) välillä liitännän takana, katso toinen kuva. Huomaa, että ESP-01 on kytkettävä pistorasiaan antenni USB-liitintä kohti päin, ei päinvastoin!

Huomaa: ne ovat myös kytkimellä, katso kolmas kuva, erittäin mukava.

Lataa laiteohjelmisto

Olettaen, että Arduino IDE on 1.8.3 tai uudempi, valitse Työkalut> Hallitus ja valitse haluamasi levy. Valitse käyttämälläni ESP-01: llä "Generic ESP8266 Module" ja määritä seuraavat vaihtoehdot (tämän pitäisi olla kaikki oletusasetukset):

  1. Salama: DIO
  2. Salaman taajuus: 40 MHz
  3. Suorittimen taajuus: 80 MHz
  4. Salaman koko: 512 kt (64 kt SPIFFS) Huomautus: jos käytät mustaa ESP-01-korttia, valitse 1 Mt (64 kt SPIFFS)
  5. Virheenkorjausportti: Ei käytössä
  6. Virheenkorjaustaso: Ei mitään
  7. Palautusmenetelmä: ck
  8. Latausnopeus 115200
  9. Portti: valitse USB -sarjaliitäntään liitetty portti. Ubuntu -tietokoneelleni se oli /dev /ttyUSB0

Liitä laite/ohjelmoija, lataa Sketch, joka löytyy täältä https://gitlab.com/jeroenmeijer/Mailbox.git. Anna WiFi- ja MQTT -välittäjän kirjautumistietosi ja IP -määrityksesi konfiguraatiossa h ja valitse Lataa.

Vaihe 5: Kokoaminen

Kokoaminen Kaikki
Kokoaminen Kaikki

Porasin muoviputkea varten reiän postilaatikon sisäkansiin mahdollisimman lähelle saranaa ja liimasin sitten akkukotelon kuuman liiman sen kannen alapuolelle. Seuraavaksi käytin paksua tulitikkua mäntänä. Leikkasin tikun pituudeksi katkaisulla, jotta kytkin avautuisi, jos ulompi kansi suljettiin. Tarkistin liitännät avaamalla kannen käynnissä mosquitto_sub MQTT -viestien valvomiseksi (korvaa mqttbroker, käyttäjä ja salasana MQTT -kokoonpanollasi):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u käyttäjä -P salasana

Noin kuusi sekuntia ulkokannen avaamisen jälkeen seuraava MQTT -viesti julkaistaan. Aikaa käytetään mikro-ohjaimen herättämiseen ja WiFi- ja välitysyhteyden muodostamiseen.

stat/mailbox/trigger {"vcc": 3050, "läppä": true, "prev": 0, "RSSI": 29, "version": "005"}

Tänä aikana mikro-ohjain käytti noin 70 mA. Kun se on tehty, se menee syvään uneen ja minun tapauksessani se käytti alle 20 uA. "läppä" on aina totta, "vcc" ilmoittaa akun jännitteen mV: n ja "prev": n pitäisi olla 0. Jos se on 1 tai 2, se tarkoittaa, että postilaatikko ei voinut lähettää viestiä aikaisemmin, koska se ei voinut muodostaa yhteyttä WiFi, tai koska se ei voinut muodostaa yhteyttä MQTT -välittäjään. "RSSI" on WiFi -signaalin voimakkuus. Molemmat ovat erittäin käteviä ongelmien diagnosoimiseksi.

Akun jännitettä on hyvä seurata muutaman päivän ajan varmistaaksesi, että laite toimii tarkoitetulla tavalla eikä tyhjennä akkua jostain syystä.

Laiteohjelmisto pystyy myös päivittämään itsensä langattomasti (OTA), mutta se on hieman tämän ohjeen soveltamisalan ulkopuolella. Kiinnostuneille OTA -määritykset ovat myös config.h -tiedostossa.

Vaihe 6: Solmun-PUNAINEN käyttäminen MQTT-viestin käsittelyyn

Node-RED-toiminnon käyttäminen MQTT-viestin käsittelyssä
Node-RED-toiminnon käyttäminen MQTT-viestin käsittelyssä

Lopuksi loin yksinkertaisen kulun Node-RED: ssä. Ensimmäinen solmu tilaa postilaatikon aiheen (stat/postbox/trigger). Kun viesti vastaanotetaan, toinen solmu muotoilee sähköpostin *). Viimeinen solmu lähettää sen gmail -osoitteeseeni käyttäen gmailia SMTP -palvelimena. Puhelimeni ilmoittaa minulle uudesta sähköpostista.

Olen lisännyt Node-RED-kulun gitlab-katkelmaan, jotta voit tuoda sen Node-RED-kulkuihisi.

Voit tietysti lisätä lisää solmuja, esimerkiksi kirjaamaan postilaatikkotapahtumat MariaDb- tai SqlLite -laitteeseen, tai luoda ylimääräisiä hälytyksiä, kun akun jännite laskee alle 2,7 voltin.

Hyvää postin metsästystä!

*) Katso seuraava sivu, käytän nyt PushBulletia sähköpostin sijasta.

Vaihe 7: Jälki-ajatuksia

Aina on sellainen tunne, että asiat olisi voitu tehdä paremmin.

Vaihtaa

Olisin mieluummin käyttänyt (super) magneettia ja ruokoista kosketinta hieman kömpelön männän lähestymistavan sijasta. Syitä oli kaksi. Yksi on, etten voinut mitenkään tehdä tätä työtä koskettimen sulkeutuessa, kun laatikko avattiin, ja sen ollessa aina suljettu tarkoitti aina pientä virtaa. Jälkeenpäin ajateltuna alle 1uA, joka virtaa 4M7 -vastuksen läpi, ei olisi ollut iso ongelma akun keston kannalta. Toinen oli käytännöllisempi. Tein tämän projektin lauantaina ja kirjoitin ohjelmiston, rakenna se kaikki sunnuntaina siitä, mikä oli ympärillä. Minulla ei yksinkertaisesti ollut ruoko -kontaktia roskakorissa.

Huomautus: kuten diy_bloke kommentoi, ruoko -koskettimilla on taipumus tarttua kiinni, kun niitä magnetoidaan pitkään, joten ehkä mäntä ei ollut ollenkaan huono idea. Nähdään. *)

Viesti tyhjennyksestä

Postilaatikko lähettää myös viestin tyhjennyksen yhteydessä. Tämä ei ole iso juttu, mutta kun useampia ihmisiä talossa saa varoituksen, saatat päätyä silmukkaan, joka tarkistaa postilaatikon, joka uhmaa sen koko tarkoituksen! On olemassa muutamia tapoja kiertää tämä, kuten tarkistaa, onko sisäkansi nostettu, ja jos on, älä lähetä viestiä. Tai kannen kytkimen sijasta asenna ilmaisin postilaatikon alaosaan. Tai pieni nollauspainike, jota on painettava tyhjennettäessä. Kaikki kuitenkin vaikeuttaisi asioita ja todennäköisesti heikentäisi luotettavuutta.

Viestit

Sähköpostin lähettäminen on melko tehokas, mutta karkea tapa varoituksen ilmoittamiseen. Tyylikkäämpi tapa olisi puhelinsovellus, mutta en ole löytänyt Android MQTT -koontisovellusta, joka voidaan määrittää käynnistämään käyttöjärjestelmähälytys tietyn viestin saapuessa. Jos sellainen on lähellä, lisää se kommentteihin. **)

*) Yli vuoden käytön jälkeen käy ilmi, että käyttämälläni tikkari -tikulla, pohjimmiltaan kovavalssatulla paperilla, on taipumus lyhentyä kytkinjousen jatkuvassa paineessa. Muutaman vianmäärityksen jälkeen korvasin sen puisella sauvalla.

**) Käytän nyt PushBulletia push -viesteihin, erillään MQTT -kojelaudasta. Pieni Node-RED matala rajapinta API: lle löytyy täältä. Varmista, että annat käyttöoikeustunnuksen solmussa "Valmistaudu pushbulletiksi" ja sähköpostiosoitteesi varmuuskopiointia varten solmussa "Yritä uudelleen".

Suositeltava: