Sadržaj:

Povezani poštanski sandučić na solarni pogon: 12 koraka (sa slikama)
Povezani poštanski sandučić na solarni pogon: 12 koraka (sa slikama)

Video: Povezani poštanski sandučić na solarni pogon: 12 koraka (sa slikama)

Video: Povezani poštanski sandučić na solarni pogon: 12 koraka (sa slikama)
Video: 7 шагов к эмоциональному здоровью и исцелению | Пастор Грегори Дикоу 2024, Srpanj
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 opisat ću vam svoja djela o svom povezanom poštanskom sandučiću.

Nakon što sam pročitao ovaj Instructable (+ mnoge druge), a budući da moj poštanski sandučić nije u blizini moje kuće, htio sam me inspirirati na radove Open Green Energy da povežem svoj poštanski sandučić s mojim Domoticz poslužiteljem.

Ciljevi

  • Telegram vas obavijesti kada stižu pisma;
  • Telegram vas obavijesti kada dolazi pošiljka;
  • Provjerite jesu li slova / paketi podignuti.

Moje glavno ograničenje

Poštanski sandučić relativno je udaljen od kuće i bilo je nemoguće do njega povući električni kabel za bilo što.

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

BOM

  • Raspberry Pi (za smještaj dijelova MQTT i Domoticz - ovdje nije opisano)
  • Račun Telegram Bota
  • Lolin D1 mini (ili Wemos …)
  • Utični konektor s vijčanim priključnim blokom
  • TP4056 ploča za punjenje litijeve baterije
  • 6V 2W fotonaponski solarni panel
  • Li-Ion baterija 18650
  • 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 pisač, shvatio sam svoju kućicu s drvom do primljenih dijelova elektronike …
  • Rezervni Ethernet kabel
  • RJ45 ploča za probijanje Ethernet konektora

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

Korak 1: Globalna shema

Globalna shema
Globalna shema
Globalna shema
Globalna shema

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

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

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

Ne ulazeći u previše detalja, njegov rad temelji se na principu povezivanja klijenata na poslužitelj. 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 od trske instaliranih u poštanski sandučić (korak 1 u shematskom obliku), njegova MQTT poruka šalje se 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 s desne strane povezane podatkovne tablice), dopuštajući 3,2 V kao maksimalni analogni ulazni napon.

S obzirom na to da je maksimalni izlazni napon iz 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 sam krugu odabrao mogućnost podešavanja njegove vrijednosti, 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Ω kako bi imao koherentna vrijednost u Domoticzu …

Imajte na umu da pin A0 ima 10 -bitnu razlučivost: 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 analogni rezultat č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 litijeve baterije TP4056.

Da bih odabrao najprikladniji solarni panel, pogledao sam neke primjere, uključujuć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) - Također mi omogućuje predvidjeti mračna zimska razdoblja i oblačne dane;-)

Također, i 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 smješ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 tijekom tog razdoblja.
  • 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 ponovno 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 u vezi s potrošnjom u različitim načinima koje koristim za Lolin - pogledajte podatkovni list, str.

  • U normalnom načinu rada (uz RF rad), potrošnja energije može se 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 možete vidjeti u podatkovnoj tablici, modem nije potpuno zaustavljen jer ESP "održava Wi-Fi vezu bez prijenosa podataka".
  • U dubokom snu snaga pada na 20uA.

Kako 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, pad sustava ESP:

WiFi.disconnect ();

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

Sveukupno, čini se da nakon nekoliko dana rada radi, a posebno da se ispravno učitava:

  • to mi omogućuje da pokrećem servomotor svakih sat vremena kako bih kuću postavio prema suncu;
  • Također si mogu dopustiti da svaki sat ponovno aktiviram mrežno sučelje kako bih poslao Domoticzu razinu napunjenosti baterije.

Korak 4: Ugradnja kontakata magneta i trske

Ugradnja kontakata magneta i trske
Ugradnja kontakata magneta i trske
Ugradnja kontakata magneta i trske
Ugradnja kontakata magneta i trske
Ugradnja kontakata magneta i trske
Ugradnja kontakata magneta i trske

Kao i obično, svojim sam Proxxonom oblikovao mjesto Trske u komadu drveta.

Za pričvršćivanje kontakta trske u rupu upotrijebio sam malo J-B zavara.

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

Prednost mog 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

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

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, smrt mu 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 priključka 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, koristio sam dugi vijak kao osovinu, s nekim maticama i dva kuglična ležaja …

Do sada sam koristio SG90 servo (okretni 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), također nije jako 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 tijekom dana kako bi mi omogućila kontrolu položaja serva.

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

    • Ukupni kut rotacije nije isti (širi): morao sam upotrijebiti 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 () … - Trebate pojačati DC/DC da biste osigurali dovoljan napon servo … do biti nastavljeno: */ #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 stari; 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 ("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 (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 (indeks); } kašnjenje (15); myservo.write (Arr_Servo_Pos [i-7]); // ponovno upisujemo zadnju vrijednost kako bismo izbjegli trzaje pri datach myservo.detach (); }}} odgoda (2000); }} int Servo_Delta (int vrijednost) {int Temp_val; Temp_val = (vrijednost*0,80) +9; povratak Temp_val; }

Korak 9: Mala kućica

Mala kućica
Mala kućica
Mala kućica
Mala kućica
Mala kućica
Mala kućica

Kao što sam već rekao, nisam dobio 3D pisač. Odlučio sam 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 pisač): kako bih zaštitio drvo, posvuda sam dodao puno laka …

Možete vidjeti "lijepe zavjese" … To se događa kad 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, pogotovo dok se zaustavlja početna mreža …
  • Nisam pronašao jednostavan i pouzdan način za dobivanje 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 proučavanje ovdje, čak i ako više volim internetski API, daje mi azimut izravno prema datumu, satu i zemljopisnom položaju …
  • O tehnici spavanja: budući da je Lolin 32-bitni Tensilica procesor, njegova najveća vrijednost za 32-bitni cijeli broj bez znaka je 4294967295 … tada daje približno 71 minutu za interval dubokog sna. Zato spavam l'ESP više puta po 60 minuta …

EDIT - 10.08.2018:

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

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

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

Čitajući ove podatke, 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 prema tome ažuriran.

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

Kreiranje datuma: 08/Datum mise en prod: 08/Verzija: 0.9.4 Verzija IDE Arduino: 1.8.6 Brzina prijenosa: 921600 Vrsta de carte d'l'IDE: "LOLIN (WEMOS) D1 R2 & mini" Carte physique zaposlenik: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Funkcija PIN-a ESP-8266 Mjesto upotrebe pin-a ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analogni ulaz, max 3.3V ulaz A0 Dodatak zatezanja D0 IO GPIO16 Connecté à RST (ulijevajte duboko.spavanje) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo motor D3 IO, 10 k Izvlačenje GPIO0 D4 IO, 10 klizno navlačenje, IZGRADNJA_LED GPIO2 D5 IO, SCK GPIO14 Reed relève D6 IO, MISO GPIO12 Reed lettre D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k pull-down, SS GPIO15 G Uzemljenje GND 5V 5V-3V3 3.3V 3.3V RST Poništi RST Connecté à D0 (uliti duboko.sleep) ****************************************/ #include bool Logs = true; // wifi const char* ssid = "LOL"; const char* lozinka = "LOL"; IP adresa ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress pristupnik (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; bez potpisa dug switchPressTime; const unsigned long DEBOUCE_TIME = 200; // Analogni #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]; Niz MQTT_Pub_String; // Tension float vcc; // NTP #include time_t tnow; int Staro_Vrijeme = 0; int Int_Heures = 0; int Int_Minute = 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 skup tnow = vrijeme (nullptr); Int_Heures = String (ctime (& tnow)). Podniz (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Podniz (14, 16).toInt (); // Spavanje tijekom 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 ("Pozicija le 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 && Int_Heures = Arr_Servo_Pos [Int_Heures-7]; index-) {if (Zapisi) Serial.print indeks); kašnjenje (200); myservo.write (indeks); } kašnjenje (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // ponovno zapišite posljednju vrijednost kako biste izbjegli trzaje 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 ("Sleep pour le samedi aprés 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 ("poziv na poziv!"); 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); }} Stari_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 ("dolazak kurira!"); mreža (istina); kašnjenje (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); kašnjenje (5000); mreža (lažno); }} Stari_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 = analogno čitanje (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 ("Network start"); WiFi.forceSleepWake (); odgoda (1); // init WIFI WiFi.config (ip, dns, gateway, podmreža); WiFi.započni (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); // Pokreni 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 ponovno za 5 sekundi"); // Pričekajte 5 sekundi prije ponovnog pokušaja odgode (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 ("\ tPošaljite podatke MQTT …"); MQTT_Pub_String = "{" idx / ":" + Niz (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ću uporabu:

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

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

Opcionalno:

Možete dodati "Utility senzor" za nadzor razine 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:

  • hoćete li napraviti 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 engleskom, Google prijevod mi puno pomaže, ali vjerojatno nije savršen;-)

Preporučeni: