Sadržaj:

Povezano Letterbox Solarno napajanje: 12 koraka (sa slikama)
Povezano Letterbox Solarno napajanje: 12 koraka (sa slikama)

Video: Povezano Letterbox Solarno napajanje: 12 koraka (sa slikama)

Video: Povezano Letterbox Solarno napajanje: 12 koraka (sa slikama)
Video: Стеки технологий – информатика для руководителей бизнеса 2016 2024, Juli
Anonim
Povezani poštanski sandučić na solarni pogon
Povezani poštanski sandučić na solarni pogon
Povezani poštanski sandučić na solarni pogon
Povezani poštanski sandučić na solarni pogon

Za svoj drugi Ible opisaću vam svoja dela o svom povezanom poštanskom sandučetu.

Nakon što sam pročitao ovaj Instructable (+ mnoge druge), a pošto moje poštansko sanduče nije u blizini moje kuće, htio sam da me inspiriše na radove Open Green Energy da povežu moj poštanski sandučić sa mojim Domoticz serverom.

Ciljevi

  • Telegram vas obavještava kada stižu pisma;
  • Telegram vas obavještava kada paket stiže;
  • Proverite da li su preuzeta pisma / paketi.

Moje glavno ograničenje

Poštansko sanduče je relativno daleko od kuće, pa je bilo nemoguće do njega povući električni kabel za napajanje.

Morao sam pronaći drugo rješenje: solarna energija je bila dobro rješenje!

BOM

  • Raspberry Pi (za smještaj MQTT i Domoticz dijelova - ovdje nije opisano)
  • Račun Telegram Bota
  • Lolin D1 mini (ili Wemos …)
  • Utični konektor s priključnim vijcima
  • TP4056 ploča za punjenje litijumske baterije
  • 6V 2W fotonaponski solarni panel
  • Li-Ion 18650 baterija
  • Nosač Li-Ion baterije
  • PCB DIY lemljenje bakra Prototip tiskane ploče
  • Analogni servo SG90
  • 3 Reed prekidača (jedan za pisma, jedan za paket i jedan za naplatu)
  • Magneti
  • Neke žice
  • Drveni sanduk: Kako nisam dobio nijedan 3D štampač, shvatio sam svoju kućicu sa drvetom do primljenih dijelova elektronike …
  • Rezervni Ethernet kabel
  • RJ45 ploča za probijanje Ethernet konektora

  • J-B Weld
  • Neki kuglični ležajevi
  • Vijci, matice, podloške

Korak 1: Globalna šema

Global Scheme
Global Scheme
Global Scheme
Global Scheme

Prekrasni crteži uvijek su bolji od dugih govora;-)

No, nekoliko objašnjenja o MQTT -u, Domoticzu i Telegramu uvijek su dobrodošli!

MQTT (Telemetry Transport Messe Queuing Telemetry Transport) je protokol za razmjenu poruka koji se koristi za slanje podataka između uređaja i drugih sistema u svijetu IoT (Internet stvari).

Ne ulazeći u previše detalja, njegov rad se zasniva na principu povezivanja klijenata na server. U MQTT -u se klijenti zovu Pretplatnik ili Izdavač, a poslužitelj se naziva Broker.

U ovom Instructable -u koristim samo jednog izdavača, Lolin ožičen na moj poštanski sandučić: kada se slova ili paket otkriju preko kontakata trske instaliranih u sandučiću (korak 1 u shematskom obliku), njegova MQTT poruka se šalje putem WIFI -a posredniku (Korak 2).

Posrednički dio radi Mosquitto, koji je instaliran na Raspberry Pi (korak 3).

O Domoticzu:

Kao što je opisano na izvornoj stranici, Domoticz je "sustav kućne automatizacije" koji vam omogućuje kontrolu različitih uređaja i primanje unosa iz različitih protokola: MQTT je jedan od podržanih protokola …

Čim mu informacije stignu (korak 4), možete definirati događaje: U slučaju poštanskog sandučića, odlučio sam poslati obavijest Telegramu (korak 5).

Konačno, Telegram klijent je konfiguriran na mom telefonu (i moja žena također! - Korak 6): krajnji cilj je postignut …

Korak 2: Shematski / ožičenje

Shematski / ožičenje
Shematski / ožičenje
Shematski / ožičenje
Shematski / ožičenje
Shematski / ožičenje
Shematski / ožičenje
Shematski / ožičenje
Shematski / ožičenje

Jedna riječ o analognom glasi:

Prije svega, primijetio sam nakon nekih istraživanja da je Lolin mini D1 (kao stari Wemos), ugradio razdjelnik napona za pin A0 (s obzirom na 220KΩ za R1 i 100KΩ za R2 - vidi na desnoj strani povezane podatkovne tablice), dopuštajući 3,2 V kao maksimalni analogni ulazni napon.

S obzirom na to da je maksimalni izlazni napon baterije 4, 2v (ograničen pločom za punjenje), a teoretski je potrebno samo dodati vanjski otpornik (u seriji s R1) kako biste povećali maksimalni raspon ulaznog napona. Zatim, ako dodate 100K u nizu s R1, dobit ćete ovaj rezultat:

Vin * R1/(R1+R2) = Vout

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

U svom krugu sam odabrao da mogu podesiti njegovu vrijednost, zato sam radije koristio podesivi otpornik u svom krugu: možda će vam to biti beskorisno, ali u mojoj situaciji postavio sam njegovu vrijednost na oko 10KΩ da biste imali koherentna vrijednost u Domoticzu …

Imajte na umu da pin A0 ima 10 -bitnu rezoluciju: to znači da će u vašoj skici vaše analogno očitanje vratiti vrijednost između 0 do 1024.

Kako želim poslati postotnu vrijednost Domoticzu, moram podijeliti rezultat analognog čitanja na 10, 24.

Korak 3: Upravljanje napajanjem

Upravljanje napajanjem
Upravljanje napajanjem
Upravljanje napajanjem
Upravljanje napajanjem

Naravno, želim da poštanski sandučić bude autonoman. Da bih postigao svoj cilj, koristim ove elemente:

  • Li-Ion 18650 baterija od 4000mAh;
  • solarni panel koji može isporučiti 6V / 2W;
  • ploča za punjenje litijumske baterije TP4056.

Da bih odabrao najprikladniji solarni panel, pogledao sam neke primjere, uključujući i ovaj: u ovom primjeru koristi se solarni panel od 5,5 V / 0,66 W, što je vjerojatno dovoljno za tu svrhu. U mom slučaju, a kako ESP8266 mora ostati UKLJUČEN tijekom dana i mora moći pokrenuti servo motor kako bi kuću držao okrenutu prema suncu, odabrao sam snažniji model solarne ploče (6V / 2W) - To mi također omogućava za predviđanje mračnih zimskih perioda i oblačnih dana;-)

Također, kako bih maksimalno smanjio potrošnju energije, odabrao sam sljedeće scenarije:

  • znajući da je poštar prošao samo između 7 i 20 sati, ESP je smešten u DeepSleep ostatak noći;
  • Faktor ne prolazi između subote u podne i ponedjeljka ujutro: ESP je također postavljen u način dubokog sna tokom ovog perioda.
  • U razdoblju od 7 do 20 sati, a kako bih smanjio potrošnju energije, jednostavno onemogućim mrežno sučelje ESP -a: mreža se ponovo pokreće tek po dolasku paketa ili pisma, taman toliko vremena da se informacije pošalju na Domoticz. Ne moram odmah biti upozoren i nekoliko dodatnih sekundi potrebnih za ponovno pokretanje mrežnog sučelja nisu štetni!

Neke vrijednosti o potrošnji u različitim načinima koje koristim za Lolin - pogledajte podatkovnu tablicu, str.

  • U normalnom načinu rada (s RF radom), potrošnja energije se može povećati na 170mA! Budući da je moj poštanski sandučić udaljen oko 50 metara od moje kuće (i na granici WIFI signala …) pretpostavljam da je snaga koja se koristi za održavanje veze na njegovom maksimumu …
  • U modu za spavanje, potrošnja energije pada na 15 mA. No, kao što vidite u podatkovnoj tablici, modem nije u potpunosti zaustavio, jer ESP "održava Wi-Fi vezu bez prijenosa podataka".
  • U dubokom snu snaga pada na 20uA.

Da bih bio siguran da wifi ne ostaje nepotrebno aktivan, radije sam ga onemogućio sljedećim naredbama. Imajte na umu mnogo poziva delay () … Bez njih, ESP se ruši:

WiFi.disconnect ();

kašnjenje (1000); WiFi.mode (WIFI_OFF); kašnjenje (1000); WiFi.forceSleepBegin (); kašnjenje (1);

Sve u svemu, nakon nekoliko dana rada, čini se da radi, a posebno da se pravilno učitava:

  • ovo mi omogućava da pokrećem servomotor svakih sat vremena da postavim kuću prema suncu;
  • Također mogu dopustiti sebi da ponovo aktiviram mrežno sučelje svakih sat vremena kako bih poslao Domoticzu nivo napunjenosti baterije.

Korak 4: Instaliranje kontakata magneta i trske

Instaliranje kontakata magneta i trske
Instaliranje kontakata magneta i trske
Instaliranje kontakata magneta i trske
Instaliranje kontakata magneta i trske
Instaliranje kontakata magneta i trske
Instaliranje kontakata magneta i trske

Kao i obično, upotrijebio sam svoj Proxxon za oblikovanje mjesta Trske u komadu drveta.

Da bih fiksirao kontakt trske u rupu, upotrijebio sam malo J-B zavara.

Za paket i izlaz, malo trake, malo nožne pile, i cilj je postignut!

Prednost poštanskog sandučića je u tome što je metalni, što olakšava pozicioniranje magneta tako da pravilno komunicira s kontaktima trske.

Korak 5: Povežite se s mojom kućicom

Povežite se s Mojom kućicom
Povežite se s Mojom kućicom
Povežite se s Mojom kućicom
Povežite se s Mojom kućicom

Da bih mogao jednostavno spojiti i odspojiti kabel koji ide do trskastih kontakata od poštanskog sandučića do kuće, odlučio sam koristiti Ethernet konektor.

Možete koristiti ovaj model ili, poput mene, upotrijebiti stari Arduino Ethernet štit koji mi visi u ladicama: Nije patio, bio je hrabar ispred pile, njegova smrt je bila brza ^^

Samo nekoliko riječi o ovom Arduino Ethernet štitu: ne očekujte da ćete imati 8 zasebnih upravljačkih programa … Kablovi su upareni sa 2 unutar štita … Predugo me izluđivalo !!!

Korak 6: U kući…

U kući …
U kući …
U kući …
U kući …

Taman dovoljno mjesta za pričvršćivanje držača baterije, postavljanje servo i ženskog konektora RJ45.

Korak 7: Neka gramofon …

Neka gramofon…
Neka gramofon…
Neka gramofon…
Neka gramofon…
Neka gramofon…
Neka gramofon…
Neka gramofon…
Neka gramofon…

Cilj je držati lice okrenuto prema suncu …

Da bih dopustio mogućnost okretanja, za osovinu sam koristio dugi vijak, s nekim maticama i dva kuglična ležaja …

Do sada sam koristio SG90 servo (obrtni moment: 1,8 kg/cm pri 4,8 V).

Za okretanje kuće (i njenih nekoliko grama) dovoljno je. S druge strane, nisam siguran da li njegovi plastični zupčanici dugo odolijevaju čestim naletima vjetra koji postoje u mojoj regiji.

Naručio sam još jedan (okretni moment MG995: 9,4 kg/cm pri 4,8 V), ni on nije previše skup, ali s metalnim zupčanicima.

To će biti sljedeće što ću učiniti kad ga primim: oslanjam se na svoj povezani poštanski sandučić da me obavijesti o svom dolasku!

Korak 8: Neki testovi

Image
Image

Nekoliko napomena:

Ova skica služi samo za oponašanje promjena sati tokom dana kako bi mi omogućila kontrolu položaja serva.

  • Sa SG90: nema dodatnih potreba, može raditi s OUT naponom koji dolazi iz kontrolera baterije.
  • No, s MG 995:

    • Ukupni kut rotacije nije isti (širi): Morao sam koristiti dodatnu funkciju da bih ga smanjio (Servo_Delta ()).
    • Potreban je DC/DC korak za osiguravanje dovoljnog napona za servo … nastavak …

/*

- TESTIRANJE sa SG90: nema dodatnih potreba, može raditi s IZLAZNIM naponom koji dolazi iz kontrolera baterije - ZA MG 995: - upotrijebite funkciju Servo_Delta ()… - Potreban je DC/DC korak pojačajte da biste osigurali dovoljan napon servo … do nastavak: */ #include bool Logs = true; Servo myservo; #define PIN_SERVO D2 // servo položaj za: 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 old; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Zapisnici) Serial.println ("Položaj servo za 7 heura"); 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 (Zapisi) Serial.println (indeks); if (Zapisnici) Serial.print ("Prilagođena vrijednost:"); if (Zapisnici) Serial.println (Servo_Delta (indeks)); kašnjenje (200); //myservo.write(Servo_Delta(index)); myservo.write (index); } kašnjenje (15); myservo.write (Arr_Servo_Pos [i-7]); // ponovo upisuje zadnju vrijednost kako bi se izbjegli trzaji pri datach myservo.detach (); }}} kašnjenje (2000); }} int Servo_Delta (int vrijednost) {int Temp_val; Temp_val = (vrijednost*0,80) +9; return Temp_val; }

Korak 9: Mala kuća

Mala kuća
Mala kuća
Mala kuća
Mala kuća
Mala kuća
Mala kuća

Kao što sam već rekao, nisam dobio 3D štampač. Pa sam odlučio koristiti stari sanduk za povrće …

Možda neće izdržati dugo, ali do tada bih imao vremena razmisliti o drugom rješenju (ili prijatelju koji posjeduje 3D printer): kako bih zaštitio drvo, svuda sam dodao puno laka …

Možete vidjeti "lijepe zavjese" … To se događa kada zamolite svoju ženu da obavi posao ^^

Korak 10: Skica

U tijeku … Ali čini se da je stabilan

Još uvijek radim na kodu: kako ovo nije konačna verzija, vaši komentari / savjeti su dobrodošli;-)

Neke napomene:

  • Mnogo je kašnjenja () u kodu: ovo je kako bi se izbjeglo puno rušenja Lolina, posebno dok se zaustavlja pokretanje mreže …
  • Nisam pronašao jednostavan i pouzdan način za dobijanje azimuta sunca: zato sam popravio vrijednost serva u funkciji onoga što sam primijetio … Imam dobar (i jednostavan) način da to dobijem, zanima me! Možda staza za učenje ovdje, čak i ako više volim internetski API, daje mi azimut izravno prema datumu, satu i geografskom položaju …
  • O tehnici spavanja: budući da je Lolin 32-bitni Tensilica procesor, njegova maksimalna vrijednost za 32-bitni cijeli broj bez znaka je 4294967295 … tada daje maksimalno 71 minutu za interval dubokog sna. Zato spavam l'ESP mnogo puta po 60 minuta …

EDIT - 10.08.2018:

Otkrio sam da servo ima dosta trzavih pokreta, posebno prije attachment (), detach () i svaki put kada se Lolin probudi iz deepSleep ().

Proučavajući malo više podatkovnih listova, shvatio sam dvije stvari:

  • Na podatkovnom listu Lolin, izlaz D4 je već povezan s BUILTIN_LED…
  • Na podatkovnom listu ESP8266ex saznajemo da se D4 izlaz koristi kao UART 1/U 1 TXD (univerzalni asinhroni odašiljač -odašiljač). Takođe je navedeno da se ovaj UART1 koristi za štampanje dnevnika.

Čitajući ove informacije, shvatio sam da izlaz D4 nije dobra ideja, pogotovo za upravljanje servo motorom!

Dakle, sada je izlaz koji se koristi za upravljanje servomotorom D2, donji kod je ažuriran u skladu s tim.

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

Kreiranje datuma: 08/Datum početka i proizvodnje: 08/Verzija: 0.9.4 Verzija IDE Arduino: 1.8.6 Brzina prijenosa: 921600 Vrsta de carte d'l'idea: "LOLIN (WEMOS) D1 R2 & mini" Zaposlenici: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Jezik funkcije ESP-8266 Jezik upotrebe PIN-a ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analogni ulaz, max 3.3V ulaz A0 Dodatak zatezanja D0 IO GPIO16 Povezivanje R RST (u dubokom snu) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo motor D3 IO, 10 k Izvlačenje GPIO0 D4 IO, 10 klizno podizanje, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reedleve D6 IO, MISO GPIO12 Reed lett D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k pull-down, SS GPIO15 G Uzemljenje GND 5V 5V-3V3 3.3V 3.3V RST Resetiraj RST Connecté na D0 (uliti duboko.sleep) ****************************************/ #include bool Logs = true; // wifi const char* ssid = "LOL"; const char* lozinka = "LOL"; IPAddress ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress gateway (192, 168, 000, 000); Podmreža IPAddress (255, 255, 000, 000); WiFiClient klijent; // Servo #include #define PIN_SERVO D2 Servo myservo; // servo položaj za: 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}; // Reed #define PIN_SWITCH_OUT D5 byte Old_Switch_State_OUT; bajt Switch_State_OUT; #define PIN_SWITCH_IN_PARCEL D6 byte Old_Switch_State_IN_PARCEL; bajt Switch_State_IN_PARCEL; #define PIN_SWITCH_IN_LETTER D7 byte Old_Switch_State_IN_LETTER; bajt Switch_State_IN_LETTER; unsigned long switchPressTime; const unsigned long DEBOUCE_TIME = 200; // Analogno #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Vaša MQTT adresa"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (klijent); char MQTT_Poruka_poruke [70]; String MQTT_Pub_String; // Tension float vcc; // NTP #include time_t tnow; int Old_Time = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; void setup () {Serial.begin (115200); mreža (istina); pinMode (PIN_SWITCH_OUT, INPUT_PULLUP); Stari_Switch_State_OUT = digitalno čitanje (PIN_SWITCH_OUT); pinMode (PIN_SWITCH_IN_LETTER, INPUT_PULLUP); Stari_Switch_State_IN_LETTER = digitalno čitanje (PIN_SWITCH_IN_LETTER); pinMode (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Stari_Switch_State_IN_PARCEL = digitalno čitanje (PIN_SWITCH_IN_PARCEL); SendBatteryLevel (); mreža (lažno); // NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Podniz (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Podniz (14, 16).toInt (); // Spavanje preko noći ako (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("minute)"); sleep (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Podniz (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Podniz (14, 16).toInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Podniz (11, 13)); //Serial.println (String (ctime (& tnow)). Podniz (11, 13).toInt ()); // Servo upravljanje if (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Zapisnici) Serial.println ("Položaj servo za 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 (Zapisi) Serial.printl indeks); kašnjenje (200); myservo.write (index); } kašnjenje (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // ponovo upisuje posljednju vrijednost kako bi se izbjegli trzaji pri odvajanju myservo.detach (); } mreža (istina); SendBatteryLevel (); mreža (lažno); }}} // Duboko spava ako je subota nakon 13h if ((String (ctime (& tnow)). Substring (0, 3) == "Sat") && (Int_Heures> = 13)) {if (Zapisnici) Serial.print ("Spavanje za isti period april midi ("); if (Zapisi) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Zapisi) Serial.println ("minute)"); sleep (Int_Sleep_Duration - Int_Minutes); } // Duboko spava ako je nedjelja 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 (Dnevnici) Serial.println ("minute)"); sleep (Int_Sleep_Duration - Int_Minutes); } // Upravljanje trskom 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 ("pouzdan kurir!"); mreža (istina); kašnjenje (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); kašnjenje (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); kašnjenje (5000); mreža (lažno); }} Old_Switch_State_OUT = Switch_State_OUT; } Switch_State_IN_LETTER = digitalno čitanje (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 ("kurir stiže!"); mreža (istina); kašnjenje (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); kašnjenje (5000); mreža (lažno); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalno čitanje (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é!"); mreža (istina); kašnjenje (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); kašnjenje (5000); mreža (lažno); }} Stari_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Zapisnici) Serial.println ("\ tTension relevée:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); kašnjenje (5000); } void sleep (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void network (bool UpDown) {if (UpDown) {Serial.print ("Početak mreže"); WiFi.forceSleepWake (); kašnjenje (1); // init WIFI WiFi.config (ip, dns, gateway, podmreža); WiFi.begin (ssid, lozinka); while (WiFi.status ()! = WL_CONNECTED) {odgoda (500); Serial.print ("."); } kašnjenje (5000); Serial.println ("."); Serial.print ("\ tConnected - IP adresa:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Pokretanje 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 (vrijeme (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 (" / tPokušaj MQTT veze… "); // Pokušaj povezivanja if (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" connected ");} else {Serial.print (" failed, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("pokušajte ponovo za 5 sekundi"); // Pričekajte 5 sekundi prije ponovnog pokušaja kašnjenja (5000);}}} void MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) reconnect (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tPoslati informacije MQTT …"); MQTT_Pub_String = "{" idx / ":" + String (Int_IDX) + ", \" Baterija / ":" + String (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue / ": \" " + S_Value +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

Korak 11: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

U Domoticzu:

Za opštu upotrebu:

  • Napravite dvije "lažne (ne radi ništa, koristite za virtualne prekidače)":

    1. Prvo za slova…
    2. Drugi za paket …
  • Za svaku od njih personalizirajte obavijesti;
  • Naravno, morate postaviti svoj Togegram token.

Opciono:

Možete dodati "Utility senzor" za nadzor nivoa napunjenosti baterije.

Savjeti: ovdje možete pronaći mnogo besplatnih prilagođenih ikona …

Korak 12: Zaključak

Zaključak
Zaključak
Zaključak
Zaključak

Nadam se da će vam ovaj Instructable pomoći:

  • da li da napravite vlastiti povezani poštanski sandučić;
  • ili samo da vam dam neke ideje za svoje projekte!

Ako imate ideje za poboljšanja, slušam!

PS: oprostite na mom engleskom, Google prevod mi puno pomaže, ali vjerovatno nije savršen;-)

Preporučuje se: