Sisällysluettelo:

Yhdistetty Letterbox -aurinkovoima: 12 vaihetta (kuvilla)
Yhdistetty Letterbox -aurinkovoima: 12 vaihetta (kuvilla)

Video: Yhdistetty Letterbox -aurinkovoima: 12 vaihetta (kuvilla)

Video: Yhdistetty Letterbox -aurinkovoima: 12 vaihetta (kuvilla)
Video: Он вам не Димон 2024, Heinäkuu
Anonim
Yhdistetty kirjelaatikko aurinkoenergialla
Yhdistetty kirjelaatikko aurinkoenergialla
Yhdistetty kirjelaatikko aurinkoenergialla
Yhdistetty kirjelaatikko aurinkoenergialla

Toista Ibleniäni kuvailen teoksiani yhdistetystä postilaatikostani.

Luettuani tämän Instructable -ohjelman (+ monet muut) ja koska postilaatikkoni ei ole lähellä kotiani, halusin innostaa minua Open Green Energyn töistä yhdistääkseni postilaatikkoni Domoticz -palvelimelleni.

Tavoitteet

  • Telegram ilmoittaa sinulle, kun kirjeet tulevat;
  • Telegram ilmoittaa sinulle, kun paketti on tulossa;
  • Tarkista, onko kirjeet / paketit noudettu.

Päärajoitukseni

Postilaatikko on suhteellisen kaukana talosta, ja siihen oli mahdotonta vetää sähköjohtoa virratakseen mitään.

Minun piti löytää toinen ratkaisu: aurinkoenergia oli hyvä ratkaisu!

BOM

  • Raspberry Pi (MQTT- ja Domoticz -osien isännöinti - ei tässä kuvattu)
  • Telegram Bot -tili
  • Lolin D1 mini (tai Wemos …)
  • Plug-In-ruuviliitinliitin
  • TP4056 litiumakun latauslevy
  • 6V 2W aurinkosähköinen aurinkopaneeli
  • Li-Ion 18650 akku
  • Litiumioniakun pidike
  • Piirilevy DIY -juotoskupari -prototyyppipainettu piirilevy
  • Analoginen servo SG90
  • 3 Reed -kytkintä (yksi kirjeille, yksi paketille ja yksi kassalle)
  • Magneetit
  • Jotkut johdot
  • Puinen laatikko: Koska en saanut mitään 3D -tulostinta, tajusin oman pienen taloni, jossa oli puuta elektroniikan osien vastaanottamiseksi…
  • Vara Ethernet -kaapeli
  • RJ45 Ethernet -liittimen katkaisukortti

  • JB hitsaus
  • Jotkut kuulalaakerit
  • Ruuvit, mutterit, aluslevyt

Vaihe 1: Yleinen järjestelmä

Global Scheme
Global Scheme
Global Scheme
Global Scheme

Kauniit piirustukset ovat aina parempia kuin pitkät puheet;-)

Mutta muutama selitys MQTT: stä, Domoticzista ja Telegramista on aina tervetullut!

MQTT (Message Queuing Telemetry Transport) on viestiprotokolla, jota käytetään datan lähettämiseen laitteiden ja muiden IoT: n (esineiden internet) maailman järjestelmien välillä.

Menemättä liikaa yksityiskohtiin sen toiminta perustuu periaatteeseen, jonka mukaan asiakkaat muodostavat yhteyden palvelimeen. MQTT: ssä asiakkaita kutsutaan tilaajaksi tai julkaisijaksi ja palvelinta Brokeriksi.

Tässä Instructable -ohjelmassa käytän vain yhtä kustantajaa, Lolin langallisena postilaatikkooni: kun kirjeet tai paketti havaitaan postilaatikkoon asennettujen ruoko -yhteystietojen kautta (vaihe 1), se lähettää MQTT -viestin WIFI -yhteyden kautta välittäjälle (vaihe 2).

Välittäjäosan tekee Mosquitto, joka on asennettu Raspberry Pi -laitteeseen (vaihe 3).

Tietoja Domoticzista:

Kuten lähdesivulla on kuvattu, Domoticz on "kotiautomaatiojärjestelmä", jonka avulla voit hallita erilaisia laitteita ja vastaanottaa tietoja eri protokollista: MQTT on yksi tuetuista protokollista…

Heti kun tieto saapuu häneen (vaihe 4), voit määrittää tapahtumia: Postilaatikon tapauksessa päätin lähettää sähkeilmoituksen (vaihe 5).

Lopuksi Telegram -asiakas on määritetty puhelimessani (ja myös vaimoni! - Vaihe 6): lopullinen tavoite saavutetaan …

Vaihe 2: Shemaattinen / johdotus

Shemaattinen / johdotus
Shemaattinen / johdotus
Shemaattinen / johdotus
Shemaattinen / johdotus
Shemaattinen / johdotus
Shemaattinen / johdotus
Shemaattinen / johdotus
Shemaattinen / johdotus

Yksi sana analogisesta lukemisesta:

Ensinnäkin huomasin joidenkin tutkimusten jälkeen, että Lolin mini D1 (kuten vanha Wemos) on sisäänrakennettu jännitteenjakaja nastalle A0 (ottaen huomioon 220KΩ R1: lle ja 100KΩ R2: lle - katso linkitetty linkki oikealle), jolloin 3,2 volttia suurin analoginen tulojännite.

Ottaen huomioon, että akun maksimilähtöjännite on 4, 2 V (latauslevyn rajoittama), ja teoreettisesti sinun tarvitsee vain lisätä ulkoinen resitori (sarjassa R1: n kanssa) lisätäksesi maksimijännitealuetta. Sitten, jos lisäät 100K sarjassa R1: llä, saat tämän tuloksen:

Vin * R1/(R1+R2) = Vout

4, 2 * 320K/(320K+100K) = 3, 2

Piirissäni valitsin pystyä säätämään sen arvoa, siksi olen mieluummin käyttänyt säädettävää vastusta piirissäni: ehkä se on hyödytöntä sinulle, mutta tilanteessani asetin sen arvoksi noin 10KΩ yhtenäinen arvo Domoticzissa …

Huomaa, että A0 -nastan resoluutio on 10 bittiä: tämä tarkoittaa, että luonnoksessasi analoginen lukema palauttaa arvon välillä 0 - 1024.

Koska haluan lähettää prosenttiarvon Domoticzille, minun on jaettava analoginen lukutulos 10, 24.

Vaihe 3: Virranhallinta

Virranhallinta
Virranhallinta
Virranhallinta
Virranhallinta

Tietenkin haluan, että postilaatikko on itsenäinen. Tavoitteen saavuttamiseksi käytän seuraavia elementtejä:

  • Li-Ion 18650 -akku 4000 mAh;
  • aurinkopaneeli, joka voi tuottaa 6V / 2W;
  • TP4056 -litiumakun latauslevy.

Sopivimman aurinkopaneelin valitsemiseksi katsoin joitain esimerkkejä, mukaan lukien tämä: tässä esimerkissä käytetään 5,5 V / 0,66 W: n aurinkopaneelia, ja se todennäköisesti riittää tähän tarkoitukseen. Minun tapauksessani, ja koska ESP8266: n on pysyttävä päällä päivän aikana ja sen on pystyttävä käyttämään servomoottoria pitämään talo kasvot aurinkoon, valitsin tehokkaamman aurinkopaneelimallin (6V / 2W) - Se mahdollistaa myös ennakoida pimeitä talvikausia ja pilvisiä päiviä;-)

Olen myös valinnut seuraavat skenaariot energiankulutuksen pienentämiseksi:

  • tietäen, että postimies kulki vain klo 7–20, ESP sijoitetaan DeepSleepiin koko yön;
  • Tekijä ei kulje lauantain keskipäivän ja maanantai -aamun välillä: ESP asetetaan myös DeepSleep -tilaan tänä aikana.
  • Kello 7.00–20.00 ja virrankulutuksen vähentämiseksi poistan ESP: n verkkoliitännän käytöstä: verkko käynnistetään uudelleen vasta paketin tai kirjeen saapuessa, vain tarpeeksi aikaa tietojen lähettämiseen Minua ei tarvitse varoittaa välittömästi, ja muutama lisäsekunti verkkoliittymän uudelleenkäynnistämiseksi eivät ole haitallisia!

Joitakin arvoja kulutuksesta eri tiloissa, joita käytän Lolinissa - katso tietolomake, s18:

  • Normaalitilassa (RF -toiminnolla) virrankulutus voi nousta 170 mA: iin! Koska postilaatikkoni on noin 50 metrin päässä talostani (ja WIFI -signaalin rajalla …), oletan, että yhteyden ylläpitämiseen käytetty teho on hänen maksimissaan …
  • Modeemi-lepotilassa virrankulutus laskee 15 mA: iin. Mutta kuten taulukosta näet, se ei pysäyttänyt modeemia kokonaan, koska ESP "ylläpitää Wi-Fi-yhteyttä ilman tiedonsiirtoa".
  • Syväunessa virta laskee 20 uA: iin.

Varmistaakseni, että wifi ei pysy aktiivisena tarpeettomasti, mieluummin poistin sen käytöstä seuraavilla komennoilla. Huomaa monet delay () -puhelut … Ilman niitä ESP -kaatuminen:

WiFi. Irrota ();

viive (1000); WiFi.mode (WIFI_OFF); viive (1000); WiFi.forceSleepBegin (); viive (1);

Kaiken kaikkiaan useiden päivien käytön jälkeen se näyttää toimivan ja etenkin latautuvan oikein:

  • tämä sallii minun käyttää servomoottoria joka tunti asettaakseni talon kohti aurinkoa;
  • Voin myös sallia itseni aktivoida verkkoliitäntä uudelleen joka tunti lähettääkseni Domoticzille akun varaustason.

Vaihe 4: Magneettien ja ruokoisten kontaktien asentaminen

Magneettien ja ruokoisten kontaktien asentaminen
Magneettien ja ruokoisten kontaktien asentaminen
Magneettien ja ruokoisten kontaktien asentaminen
Magneettien ja ruokoisten kontaktien asentaminen
Magneettien ja ruokoisten kontaktien asentaminen
Magneettien ja ruokoisten kontaktien asentaminen

Kuten tavallista, käytin Proxxonia muotoilemaan Reedin paikkaa puukappaleeseen.

Ruokokoskettimen kiinnittämiseksi reikään käytin hieman J-B-hitsausta.

Paketille ja tuotokselle pieni pala teippiä, vähän rautasahaa ja tavoite on saavutettu!

Postilaatikkoni etuna on, että se on metallia, mikä helpottaa magneettien sijoittamista siten, että se on vuorovaikutuksessa kunnolla ruokoisten koskettimien kanssa.

Vaihe 5: Yhdistä My Little Houseen

Yhdistä My Little Houseen
Yhdistä My Little Houseen
Yhdistä My Little Houseen
Yhdistä My Little Houseen

Jotta pystyisin helposti yhdistämään ja irrottamaan kaapelin, joka menee ruoko -kontakteihin postilaatikosta taloon, päätin käyttää Ethernet -liitintä.

Voit käyttää tätä mallia tai, kuten minä, käyttää vanhaa Arduino Ethernet -kilpiä, joka roikkuu laatikoissani: Hän ei kärsinyt, hän oli rohkea sahan edessä, hänen kuolemansa oli nopea ^^

Vain muutama sana tästä Arduino Ethernet -kilvestä: älä odota, että sinulla on kahdeksan erillistä ohjainta… Kaapelit on liitetty pariksi 2 kilven sisällä… Se sai minut hulluksi liian kauan !!!

Vaihe 6: Talossa…

Talossa …
Talossa …
Talossa …
Talossa …

Vain tarpeeksi tilaa paristopidikkeen, servon ja RJ45 -naarasliittimen kiinnittämiseen.

Vaihe 7: Anna sen kääntyä …

Anna sen olla levysoitin…
Anna sen olla levysoitin…
Anna sen olla levysoitin…
Anna sen olla levysoitin…
Anna sen olla levysoitin…
Anna sen olla levysoitin…
Anna sen olla levysoitin…
Anna sen olla levysoitin…

Tavoitteena on pitää se aurinkoa vasten…

Kierrettävyyden mahdollistamiseksi käytin akselina pitkää ruuvia, jossa oli muttereita ja kaksi kuulalaakeria…

Tähän asti olen käyttänyt SG90 -servoa (vääntömomentti: 1,8 kg/cm 4,8 voltilla).

Talon kääntäminen (ja sen muutama gramma) riittää. Toisaalta en ole varma, että sen muovivaihteistot kestävät pitkään alueeni toistuvia tuulenpuuskia.

Tilasin toisen (MG995 -vääntömomentti: 9,4 kg/cm 4,8 voltilla), ei kovin kalliskaan, mutta metallivaihteilla.

Se on seuraava asia, kun saan sen: Luotan yhdistettyyn postilaatikkooni ilmoittaa minulle hänen saapumisestaan!

Vaihe 8: Jotkut testit

Image
Image

Muutama huomautus:

Tämä luonnos on vain jäljittelemään tuntien muutoksia päivän aikana, jotta voin hallita servon asentoa.

  • SG90: Ei ylimääräisiä tarpeita, se voi toimia paristosäätimestä tulevan OUT -jännitteen kanssa.
  • Mutta MG 995:

    • Kiertokulma ei ole sama (leveämpi): Minun piti käyttää lisätoimintoa sen pienentämiseksi (Servo_Delta ()).
    • Tarvitset DC/DC -tehon, jotta servolle saadaan riittävä jännite… jatkoa varten…

/*

- TESTAUS SG90: llä: ei ylimääräisiä tarpeita, se voi toimia akun ohjaimesta tulevan OUT -jännitteen kanssa - FOR MG 995: - käytä Servo_Delta () -toimintoa … - Tarvitsetko DC/DC -tehostetta, jotta servolle saadaan tarpeeksi jännitettä … jatkoa: */ #include bool Logs = true; Servo myservo; #define PIN_SERVO D2 // servoasento: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h // int Arr_Servo_Pos = {177, 173, 163, 148, 133, 118, 100, 80, 61, 41, 28, 15, 2, 2, 2}; int Arr_Servo_Pos = {180, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 0, 0, 0}; int vanha; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Lokit) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); for (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; index 7 && i = Arr_Servo_Pos [i-7]; index-) {if (Lokit) Serial.println (indeksi); if (Lokit) Serial.print ("Oikaistu arvo:"); if (Lokit) Serial.println (Servo_Delta (indeksi)); viive (200); //myservo.write(Servo_Delta(index)); myservo.write (hakemisto); } viive (15); myservo.write (Arr_Servo_Pos [i-7]); // kirjoita uudelleen viimeinen arvo välttääksesi nykiviä liikkeitä, kun datach myservo.detach (); }}} viive (2000); }} int Servo_Delta (int -arvo) {int Temp_val; Lämpötila_valo = (arvo*0,80) +9; return Temp_val; }

Vaihe 9: Pieni talo

Pieni talo
Pieni talo
Pieni talo
Pieni talo
Pieni talo
Pieni talo

Kuten aiemmin kerroin, en saanut mitään 3D -tulostinta. Joten päätän käyttää vanhaa vihanneslaatikkoa …

Ehkä se ei kestä kauan, mutta siihen mennessä minulla olisi aikaa harkita toista ratkaisua (tai ystävää, joka omistaa 3D -tulostimen): puun suojaamiseksi lisäsin paljon lakkaa kaikkialle …

Näet "kauniit verhot" … Näin tapahtuu, kun pyydät vaimoasi tekemään työn ^^

Vaihe 10: Luonnos

Käynnissä… Mutta näyttää vakaalta

Työskentelen edelleen koodin parissa: koska tämä ei ole lopullinen versio, kommenttisi / neuvosi ovat tervetulleita;-)

Muutamia huomioita:

  • Koodissa on paljon viivästyksiä (): näin vältetään Lolinin suuri kaatuminen, varsinkin kun käynnistysverkko pysäytetään…
  • En löytänyt helppoa ja luotettavaa tapaa saada aurinkosimuutti: siksi korjasin servoarvon havaitsemani funktiona … Minulla on hyvä (ja yksinkertainen) tapa saada se, olen kiinnostunut! Ehkä raita, jota opiskelemaan täällä, vaikka mieluummin online -sovellusliittymä antaa minulle atsimuutin suoraan päivämäärän, kellonajan ja maantieteellisen sijainnin mukaan…
  • Tietoja unetekniikasta: Koska Lolin on 32-bittinen Tensilica-prosessori, sen maksimiarvo 32-bittiselle allekirjoittamattomalle kokonaisluvulle on 4294967295… sitten se antaa noin 71 minuuttia syvän unen välille. Siksi teen nukkumasta l'ESP: tä monta kertaa noin 60 minuutin ajan…

EDIT - 08.10.2018:

Huomasin, että servossa on paljon nykiviä liikkeitä, erityisesti ennen kiinnitystä (), irrotusta () ja joka kerta, kun Lolin herää syväunesta ().

Opiskellessani hieman enemmän tietolomakkeita tajusin kaksi asiaa:

  • Lolin -tietolomakkeessa D4 -ulostulo on jo kytketty BUILTIN_LED …
  • ESP8266ex -tietolomakkeessa opimme, että D4 -lähtöä käytetään UART 1/U 1 TXD -laitteena (Universal Asynchronous Receiver Transmitter). On myös määritetty, että tätä UART1 -protokollaa käytetään lokin tulostamiseen.

Lukiessani näitä tietoja ymmärsin, että D4 -lähtö ei ollut hyvä idea varsinkin servomoottorin hallintaan!

Joten nyt servomoottorin ohjaamiseen käytetty lähtö on D2, alla oleva koodi on päivitetty vastaavasti.

//****************************************

Päivämäärän määrittäminen: 08/Date mise en prod: 08/Versio: 0.9.4 Versio IDE Arduino: 1.8.6 Latausnopeus: 921600 Tyyppi de carte dans l'IDE: "LOLIN (WEMOS) D1 R2 & mini" Carte physique Employee: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Nastatoiminto ESP-8266-nastakäyttöalue ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analoginen tulo, enintään 3,3 V: n tulo A0 Jännitys D0 IO GPIO16 Connecté à RST (kaada syvälle uneen) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k Pull-up GPIO0 D4 IO, 10k pull-up, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reed reléve D6 IO, MISO GPIO12 Reed letre D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k pull-down, SS GPIO15 G Ground GND 5V 5V-3V3 3.3V 3.3V RST Reset RST Connecté à D0 (kaada syvälle).sleep) ****************************************/ #include bool Logs = true; // wifi const char* ssid = "LOL"; const char* password = "LOL"; IPA -osoite ip (192, 168, 000, 000); IPAddns dns (192, 168, 000, 000); IPAddress -yhdyskäytävä (192, 168, 000, 000); IPAddress -aliverkko (255, 255, 000, 000); WiFiClient -asiakas; // Servo #include #define PIN_SERVO D2 Servo myservo; // servoasento: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h int Arr_Servo_Pos = {179, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 1, 1, 1}; // Reeds #define PIN_SWITCH_OUT D5 tavu Old_Switch_State_OUT; tavu Switch_State_OUT; #define PIN_SWITCH_IN_PARCEL D6 tavu Old_Switch_State_IN_PARCEL; tavu Switch_State_IN_PARCEL; #define PIN_SWITCH_IN_LETTER D7 tavu Old_Switch_State_IN_LETTER; tavu Switch_State_IN_LETTER; allekirjoittamaton pitkä kytkin PressTime; const unsigned long DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Sinun MQTT -osoitteesi"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (asiakas); char MQTT_Message_Buff [70]; Jono MQTT_Pub_String; // Jännitys float vcc; // NTP #include time_t tnow; int Vanha_aika = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; void setup () {Serial.begin (115200); verkko (tosi); pinMode (PIN_SWITCH_OUT, INPUT_PULLUP); Old_Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); pinMode (PIN_SWITCH_IN_LETTER, INPUT_PULLUP); Old_Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); pinMode (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Old_Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); LähetäBatteryLevel (); verkko (epätosi); // NTP -joukko tnow = aika (nullptr); Int_Heures = Merkkijono (ctime (& tnow)).alimerkkijono (11, 13).toInt (); Int_Minutes = Merkkijono (ctime (& tnow)).alimerkkijono (14, 16).toInt (); // Deepps for the night if (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Sarja. println ("minuuttia)"); nukkua (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = Merkkijono (ctime (& tnow)).alimerkkijono (11, 13).toInt (); Int_Minutes = Merkkijono (ctime (& tnow)).alimerkkijono (14, 16).toInt (); //Sarja.println (Merkkijono (aika) (& tie))); //Serial.println ("Heure:" + Jono (ctime (& tnow)). Alimerkkijono (11, 13)); //Serial.println (Jono (ctime (& tnow)). Alimerkkijono (11, 13).toInt ()); // Servohallinta if (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Lokit) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); for (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; index 7 && Int_Heures = Arr_Servo_Pos [Int_Heures-7]; index-) {if (Lokit) Serial.println (indeksi); viive (200); myservo.write (hakemisto); } viive (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // kirjoita uudelleen viimeinen arvo välttääksesi nykiviä liikkeitä, kun irrotat myservo.detach (); } verkko (tosi); LähetäBatteryLevel (); verkko (epätosi); }}} // Syvä nukkuminen, jos lauantai 13 tunnin jälkeen, jos ((String (ctime (& tnow)).. Alimerkkijono (0, 3) == "Sat") && (Int_Heures> = 13)) {if (Logs) Serial.print ("Sleep pour le samedi aprés midi ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Logs) Serial.println ("minutes)"); nukkua (Int_Sleep_Duration - Int_Minutes); } // Deepps if if sunnuntai if (String (ctime (& tnow)). Substring (0, 3) == "Sun") {if (Logs) Serial.print ("Sleep pour le dimanche ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Lokit) Serial.println ("minutes)"); nukkua (Int_Sleep_Duration - Int_Minutes); } // Ruokien hallinta Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); if (Switch_State_OUT! = Old_Switch_State_OUT) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_OUT == HIGH) {Serial.println ("courrier relevanté!"); verkko (tosi); viive (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); viive (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); viive (5000); verkko (epätosi); }} Old_Switch_State_OUT = Switch_State_OUT; } Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); if (Switch_State_IN_LETTER! = Old_Switch_State_IN_LETTER) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_IN_LETTER == HIGH) {Serial.println ("kuriiri saapuu!"); verkko (tosi); viive (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); viive (5000); verkko (epätosi); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); if (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_IN_PARCEL == HIGH) {Serial.println ("colis arrivé!"); verkko (tosi); viive (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); viive (5000); verkko (epätosi); }} Old_Switch_State_IN_PARCEL = Vaihda_tila_IN_PARCEL; }} mitätön SendBatteryLevel () {delay (5000); vcc = analoginen luku (PIN_ANALOG)/10,24; if (Lokit) Serial.println ("\ tTension relevantée:" + Jono (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, merkkijono (vcc, 0)); viive (5000); } tyhjä uni (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } tyhjä verkko (bool UpDown) {if (UpDown) {Serial.print ("Network start"); WiFi.forceSleepWake (); viive (1); // init WIFI WiFi.config (ip, dns, yhdyskäytävä, aliverkko); WiFi.begin (ssid, salasana); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } viive (5000); Sarja.println ("."); Serial.print ("\ tYhdistetty - IP -osoite:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Init NTP Serial.print ("\ tTime Synch."); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0/3 ", 0); while (aika (nullptr) <= 100000) {Serial.print ("."); Delay (100);} Serial.println (".");} Else {Serial.println ("Network stop."); WiFi.disconnect (); delay (1000); WiFi.mode (WIFI_OFF); delay (1000); WiFi.forceSleepBegin (); delay (1);}} void reconnect () {while (! ClientMQTT.connected ()) {Serial.print (" / tYritetään MQTT -yhteyttä… "); // Yritetään muodostaa yhteys, jos (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" connected ");} else {Serial.print (" failed, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("yritä uudelleen 5 sekunnin kuluttua"); // Odota 5 sekuntia ennen viiveen uudelleen yrittämistä (5000);}}} void MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) reonnect (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tSend info to MQTT…"); MQTT_Pub_String = "{" idx / ":" + Jono (Int_IDX) + ", \" Battery / ":" + String (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue / ": \" " + S_arvo +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

Vaihe 11: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

Domoticzissa:

Yleiseen käyttöön:

  • Luo kaksi "nukkea (ei tee mitään, käytä virtuaalikytkimille)":

    1. Ensimmäinen kirjeille…
    2. Toinen paketille…
  • Mukauta ilmoituksia kullekin niistä.
  • Tietenkin sinun on määritettävä Tegegram -tunnuksesi.

Valinnaisesti:

Voit lisätä "Utility -anturin" valvoaksesi akun varaustasoa.

Vinkkejä: täältä löydät paljon ilmaisia mukautettuja kuvakkeita…

Vaihe 12: Johtopäätös

Johtopäätös
Johtopäätös
Johtopäätös
Johtopäätös

Toivottavasti tämä Instructable auttaa sinua:

  • haluatko tehdä oman yhdistetyn postilaatikon;
  • tai vain antaa sinulle ideoita projekteihisi!

Jos sinulla on parannusideoita, kuuntelen!

PS: anteeksi englannista, Google-käännös auttaa minua paljon, mutta ei todennäköisesti ole täydellinen;-)

Suositeltava: