Turinys:

Prijungta „Letterbox“saulės energija: 12 žingsnių (su nuotraukomis)
Prijungta „Letterbox“saulės energija: 12 žingsnių (su nuotraukomis)

Video: Prijungta „Letterbox“saulės energija: 12 žingsnių (su nuotraukomis)

Video: Prijungta „Letterbox“saulės energija: 12 žingsnių (su nuotraukomis)
Video: LED juosta prijungta prie žemų dažnių kolonėlės (BASS) (LED strip blue) 2024, Liepa
Anonim
Prijungta „Letterbox“saulės energija
Prijungta „Letterbox“saulės energija
Prijungta „Letterbox“saulės energija
Prijungta „Letterbox“saulės energija

Antrajam „Ible“aprašysiu savo darbus apie prijungtą pašto dėžutę.

Perskaitęs šią instrukciją (ir daug kitų) ir kadangi mano pašto dėžutė nėra šalia mano namų, norėjau įkvėpti mane „Open Green Energy“darbams, kad galėčiau prijungti savo pašto dėžutę prie „Domoticz“serverio.

Tikslai

  • Būkite informuoti telegrama, kai ateina laiškai;
  • Informuokite „Telegram“, kai ateina siuntinys;
  • Patikrinkite, ar laiškai / siuntiniai buvo paimti.

Mano pagrindinis suvaržymas

Pašto dėžutė yra palyginti toli nuo namų, ir nebuvo įmanoma iki jo ištraukti elektros kabelio, kad būtų galima bet ką maitinti.

Turėjau rasti kitą sprendimą: saulės energija buvo geras sprendimas!

BOM

  • „Raspberry Pi“(MQTT ir „Domoticz“dalių priėmimui - čia nenurodyta)
  • „Telegram Bot“paskyra
  • „Lolin D1 mini“(arba „Wemos“)
  • Įkišamas varžto gnybtų bloko jungtis
  • TP4056 ličio baterijų įkrovimo plokštė
  • 6V 2W fotovoltinė saulės baterija
  • Li-Ion 18650 baterija
  • Ličio jonų akumuliatoriaus laikiklis
  • PCB „pasidaryk pats“litavimo vario prototipo spausdintinė plokštė
  • Analoginė servo SG90
  • 3 nendrių jungikliai (vienas raidėms, vienas siuntiniui ir vienas atsiskaitymui)
  • Magnetai
  • Kai kurie laidai
  • Medinė dėžė: Kadangi negavau jokio 3D spausdintuvo, supratau savo namelį su medžiu, kad galėčiau priimti elektronikos dalis …
  • Atsarginis eterneto kabelis
  • RJ45 Ethernet jungčių pertraukimo plokštė

  • J-B suvirinimas
  • Kai kurie rutuliniai guoliai
  • Varžtai, veržlės, poveržlės

1 žingsnis: pasaulinė schema

Pasaulinė schema
Pasaulinė schema
Pasaulinė schema
Pasaulinė schema

Gražūs piešiniai visada geriau nei ilgos kalbos;-)

Tačiau visada laukiami keli paaiškinimai apie MQTT, „Domoticz“ir „Telegram“!

MQTT (Message Queuing Telemetry Transport) yra pranešimų siuntimo protokolas, naudojamas duomenims siųsti tarp įrenginių ir kitų daiktų interneto (daiktų interneto) pasaulio sistemų.

Nesigilinant į detales, jos veikimas grindžiamas klientų prisijungimo prie serverio principu. MQTT klientai vadinami abonentu arba leidėju, o serveris - tarpininku.

Šioje instrukcijoje aš naudoju tik vieną leidėją - „Lolin“prijungtas prie mano pašto dėžutės: kai raidės ar siuntiniai aptinkami per nendrių kontaktus, sumontuotus pašto dėžutėje (1 žingsnis), jis siunčia MQTT pranešimą per WIFI brokeriui (2 veiksmas).

„Broker“dalį atlieka „Mosquitto“, įdiegta „Raspberry Pi“(3 žingsnis).

Apie Domoticz:

Kaip aprašyta šaltinio puslapyje, „Domoticz“yra „namų automatikos sistema“, leidžianti valdyti įvairius įrenginius ir gauti įvestį iš įvairių protokolų: MQTT yra vienas iš palaikomų protokolų …

Kai tik informacija jį pasiekia (4 veiksmas), galite apibrėžti įvykius: pašto dėžutės atveju pasirinkau išsiųsti pranešimą „Telegram“(5 veiksmas).

Galiausiai „Telegram“klientas yra sukonfigūruotas mano telefone (ir mano žmonoje! - 6 veiksmas): galutinis tikslas pasiektas …

2 žingsnis: „Shematic“/ laidai

Shematic / laidai
Shematic / laidai
Shematic / laidai
Shematic / laidai
Shematic / laidai
Shematic / laidai
Shematic / laidai
Shematic / laidai

Vienas žodis apie analogą:

Visų pirma, po kelių tyrimų pastebėjau, kad „Lolin mini D1“(kaip senasis „Wemos“) turi įmontuotą įtampos skirstytuvą A0 kaiščiui (atsižvelgiant į 220KΩ R1 ir 100KΩ R2 - žr. Susietą duomenų lapą dešinėje), leidžiantį 3,2 voltų kaip maksimali analoginė įėjimo įtampa.

Atsižvelgiant į tai, kad maksimali išėjimo iš akumuliatoriaus įtampa yra 4, 2v (ribojama įkrovimo plokštės), ir teoriškai, norint padidinti maksimalią įėjimo įtampos sritį, reikia pridėti tik išorinį rezidentą (nuosekliai su R1). Tada, jei pridėsite 100 000 iš eilės su R1, turėsite tokį rezultatą:

Vin * R1/(R1+R2) = Vout

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

Savo grandinėje pasirinkau galimybę koreguoti jo vertę, todėl aš norėjau savo grandinėje naudoti reguliuojamą rezistorių: galbūt jums tai bus nenaudinga, bet mano situacijoje aš nustatiau jo vertę maždaug 10KΩ nuosekli vertė „Domoticz“…

Atminkite, kad A0 kaištis turi 10 bitų skiriamąją gebą: tai reiškia, kad eskize jūsų analoginis rodinys grąžins reikšmę nuo 0 iki 1024.

Kadangi noriu nusiųsti procentinę vertę į „Domoticz“, analoginį skaitymo rezultatą turiu padalyti iš 10, 24.

3 žingsnis: energijos valdymas

Maitinimo valdymas
Maitinimo valdymas
Maitinimo valdymas
Maitinimo valdymas

Žinoma, noriu, kad pašto dėžutė būtų savarankiška. Norėdami pasiekti savo tikslą, naudoju šiuos elementus:

  • Ličio jonų 18650 akumuliatorius, kurio talpa 4000 mAh;
  • saulės kolektorius, galintis tiekti 6V / 2W;
  • TP4056 ličio baterijos įkrovimo plokštė.

Norėdami išsirinkti tinkamiausią saulės kolektorių, pažvelgiau į keletą pavyzdžių, įskaitant šį: šiame pavyzdyje naudojamas 5,5 V / 0,66 W saulės kolektorius, kurio greičiausiai pakanka. Mano atveju, ir kadangi ESP8266 turi likti įjungtas dienos metu ir turi galėti paleisti servo variklį, kad namas būtų nukreiptas į saulę, pasirinkau galingesnį saulės kolektoriaus modelį (6V / 2W) - tai taip pat leidžia numatyti tamsius žiemos laikotarpius ir debesuotas dienas;-)

Be to, norėdamas maksimaliai sumažinti energijos sąnaudas, pasirinkau šiuos scenarijus:

  • žinodamas, kad paštininkas praeina tik nuo 7 iki 20 val., ESP visą naktį dedamas į „DeepSleep“;
  • Šis veiksnys nepraeina nuo šeštadienio vidurdienio iki pirmadienio ryto: šiuo laikotarpiu ESP taip pat įjungiamas į „DeepSleep“režimą.
  • Laikotarpiui nuo 7 iki 20 val. Ir siekiant sumažinti energijos suvartojimą tiesiog išjungiu ESP tinklo sąsają: tinklas paleidžiamas iš naujo tik gavus siuntinį ar laišką, tik tiek laiko, kad informacija būtų išsiųsta Domoticz. Man nereikia nedelsiant įspėti ir kelios papildomos sekundės, reikalingos tinklo sąsajai paleisti, nėra kenksmingos!

Tam tikra vertė apie vartojimą skirtingais režimais, kuriuos naudoju „Lolin“- pažvelkite į duomenų lapą, p18:

  • Įprastu režimu (kai veikia RF) energijos suvartojimas gali padidėti iki 170 mA! Kadangi mano pašto dėžutė yra maždaug 50 metrų nuo mano namų (ir ties WIFI signalo riba …), manau, kad galia, naudojama ryšiui palaikyti, yra maksimali …
  • Kai veikia modemas, energijos suvartojimas sumažėja iki 15 mA. Tačiau, kaip matote duomenų lape, jis visiškai nesustabdė modemo, nes ESP „palaiko„ Wi-Fi “ryšį be duomenų perdavimo“.
  • Giliai miegant, galia sumažėja iki 20uA.

Norėdami būti tikri, kad „wifi“be reikalo nelieka aktyvus, aš norėjau jį išjungti naudodami šias komandas. Atkreipkite dėmesį į daugybę uždelsto () skambučio … Be jų, ESP gedimas:

„WiFi.disconnect“();

vėlavimas (1000); „WiFi.mode“(WIFI_OFF); vėlavimas (1000); WiFi.forceSleepBegin (); uždelsimas (1);

Apskritai, po kelių darbo dienų atrodo, kad jis veikia ir ypač tinkamai įkeliamas:

  • tai leidžia man kas valandą paleisti servomotorį, kad namas būtų nukreiptas į saulę;
  • Taip pat galiu sau leisti kas valandą iš naujo suaktyvinti tinklo sąsają ir nusiųsti „Domoticz“akumuliatoriaus įkrovos lygį.

4 žingsnis: magnetų ir nendrių kontaktų montavimas

Magnetų ir nendrių kontaktų montavimas
Magnetų ir nendrių kontaktų montavimas
Magnetų ir nendrių kontaktų montavimas
Magnetų ir nendrių kontaktų montavimas
Magnetų ir nendrių kontaktų montavimas
Magnetų ir nendrių kontaktų montavimas

Kaip įprasta, aš naudoju savo „Proxxon“, kad suformuočiau nendrės vietą medžio gabale.

Norėdami pritvirtinti nendrės kontaktą jo skylėje, naudoju šiek tiek J-B suvirinimo siūlės.

Dėl siuntinio ir išvesties - šiek tiek juostos, šiek tiek pjūklo ir tikslas pasiektas!

Mano pašto dėžutės pranašumas yra tai, kad ji yra metalinė, kuri palengvina magnetų išdėstymą taip, kad tinkamai sąveikautų su nendrių kontaktais.

5 žingsnis: prisijunkite prie „Mano mažo namo“

Prisijunkite prie mano mažo namo
Prisijunkite prie mano mažo namo
Prisijunkite prie mano mažo namo
Prisijunkite prie mano mažo namo

Kad galėčiau lengvai prijungti ir atjungti kabelį, einantį į nendrių kontaktus iš pašto dėžutės į namus, pasirinkau naudoti eterneto jungtį.

Galite naudoti šį modelį arba, kaip ir aš, naudoti seną „Arduino Ethernet“skydą, kuris kabo mano stalčiuose: jis nenukentėjo, buvo drąsus prieš pjūklą, jo mirtis buvo greita ^^

Tik žodis apie šį „Arduino Ethernet“skydą: nesitikėkite, kad turėsite 8 atskiras tvarkykles … Kabeliai yra suporuoti su 2 skydelyje… Tai per ilgai mane išprotėjo !!!

6 žingsnis: namuose …

Namuose…
Namuose…
Namuose…
Namuose…

Pakanka vietos pritvirtinti akumuliatoriaus laikiklį, nustatyti servo ir RJ45 moterišką jungtį.

7 žingsnis: leiskite jam pasukti…

Tegul jis pasisuka …
Tegul jis pasisuka …
Tegul jis pasisuka …
Tegul jis pasisuka …
Tegul tai yra patefonas…
Tegul tai yra patefonas…
Tegul jis pasisuka …
Tegul jis pasisuka …

Tikslas yra išlaikyti jį veidu į saulę …

Kad galėčiau būti pasukamas, ašį naudoju ilgą varžtą su keliomis veržlėmis ir dviem rutuliniais guoliais …

Iki šiol naudojau SG90 servo (sukimo momentas: 1,8 kg/cm esant 4,8 V).

Namą (ir jo kelis gramus) apversti pakanka. Kita vertus, nesu tikras, ar jo plastikiniai krumpliaračiai ilgą laiką atsparūs dažniems mano regiono vėjo gūsiams.

Aš užsisakiau kitą (MG995 sukimo momentas: 9,4 kg/cm esant 4,8 V), irgi ne itin brangiai, bet su metalinėmis pavaromis.

Gavęs tai bus kitas dalykas: pasikliausiu prijungta pašto dėžute, kad praneščiau apie jo atvykimą!

8 žingsnis: kai kurie bandymai

Image
Image

Keletas pastabų:

Šis eskizas skirtas tik imituoti valandų pokyčius dienos metu, kad galėčiau kontroliuoti servo padėtį.

  • Su SG90: jokių papildomų poreikių, jis gali veikti su OUT įtampa, gaunama iš akumuliatoriaus valdiklio.
  • Tačiau su MG 995:

    • Bendras sukimosi kampas nėra tas pats (platesnis): norėdamas jį sumažinti, turėjau naudoti papildomą funkciją (Servo_Delta ()).
    • Reikia nuolatinės srovės/nuolatinės srovės, kad būtų pakankamai įtampos servo sistemai… tęsti …

/*

- BANDYMAS su SG90: jokių papildomų poreikių, jis gali veikti su OUT įtampa, gaunama iš akumuliatoriaus valdiklio - FOR MG 995: - naudokite „Servo_Delta“() funkciją… - Reikia nuolatinės/nuolatinės srovės, kad padidėtų servo įtampa. būti tęsiamas: */ #include bool Logs = true; Servo myservo; #define PIN_SERVO D2 // servo padėtis: 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 senas; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Logs) 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 (Logs) Serial.println (indeksas); if (Logs) Serial.print ("Koreguota vertė:"); if (Žurnalai) Serial.println (Servo_Delta (indeksas)); vėlavimas (200); //myservo.write(Servo_Delta(index)); myservo.write (indeksas); } uždelsimas (15); myservo.write (Arr_Servo_Pos [i-7]); // parašykite dar kartą paskutinę reikšmę, kad išvengtumėte trūkčiojančių judesių, kai datach myservo.detach (); }}} uždelsimas (2000); }} int Servo_Delta (int vertė) {int Temp_val; Temp_val = (vertė*0,80) +9; grįžti Temp_val; }

9 žingsnis: Mažas namas

Mažas namas
Mažas namas
Mažas namas
Mažas namas
Mažas namas
Mažas namas

Kaip jau sakiau anksčiau, aš negavau jokio 3D spausdintuvo. Taigi nusprendžiu naudoti seną daržovių dėžę …

Galbūt tai netruks ilgai, bet iki to laiko turėčiau laiko apsvarstyti kitą sprendimą (ar draugą, kuriam priklauso 3D spausdintuvas): norėdamas apsaugoti medieną, visur pridėjau daug lako …

Galite pamatyti „gražias užuolaidas“… Taip atsitinka, kai paprašote žmonos atlikti darbą ^^

10 žingsnis: eskizas

Vykdoma … Bet atrodo, kad stabiliai

Aš vis dar dirbu prie kodo: kadangi tai nėra galutinė versija, jūsų pastabos / patarimai yra laukiami;-)

Kai kurios pastabos:

  • Kode yra daug vėlavimų (): taip išvengsite daug „Lolin“avarijų, ypač sustabdžius paleidžiantį tinklą …
  • Aš neradau lengvo ir patikimo būdo gauti saulės azimutą: todėl aš nustatiau servo vertę pagal tai, ką aš pastebėjau … Turiu gerą (ir paprastą) būdą tai gauti, man įdomu! Galbūt čia mokytis, net jei man labiau patinka internetinė API, man suteikia azimutą tiesiogiai pagal datą, valandą ir geografinę padėtį …
  • Apie miego techniką: kadangi „Lolin“yra 32 bitų „Tensilica“procesorius, jo didžiausia 32 bitų be paraščių sveiko skaičiaus vertė yra 4294967295… tada gilaus miego intervalas suteikia apie 71 min. Štai kodėl aš miegu daug kartų 60 minučių…

REDAGAVIMAS - 2018-10-08:

Aš atradau, kad servo turi daug trūkčiojančių judesių, ypač prieš prijungimą (), atsijungimą () ir kiekvieną kartą, kai „Lolin“atsibunda iš „deepSleep“().

Studijuodamas šiek tiek daugiau duomenų lapų, supratau du dalykus:

  • Lolin duomenų lape D4 išvestis jau prijungta prie BUILTIN_LED…
  • ESP8266ex duomenų lape sužinome, kad D4 išvestis naudojama kaip UART 1/U 1 TXD (universalus asinchroninis imtuvo siųstuvas). Taip pat nurodyta, kad šis UART1 naudojamas žurnalui spausdinti.

Skaitydamas šią informaciją supratau, kad D4 išvestis nebuvo gera idėja, ypač norint valdyti servo variklį!

Taigi, dabar išvestis, naudojama valdyti variklį, yra D2, toliau pateiktas kodas buvo atitinkamai atnaujintas.

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

Data: 08/Data mise en prod: 08/Versija: 0.9.4 Versija IDE „Arduino“: 1.8.6 Įkėlimo greitis: 921600 „Cartoon dans l'IDE“: „LOLIN (WEMOS) D1 R2 & mini“Įrašas pagal fizinę formą: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Smeigtuko funkcija ESP-8266 kaiščio naudojimo lokalė ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analoginis įėjimas, maks. 3.3V įėjimas A0 įtampos D0 IO GPIO16 jungtis prie RST (įpilkite giliai. Miegoti) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo motorius D3 IO, 10k prisitraukimas GPIO0 D4 IO, 10k prisitraukimas, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Nendrių reljevas D6 IO, MISO GPIO12 Nendrių lazdelės D7 IO, MOSI GPIO13 Nendrių kolos D8 IO, 10 k ištraukiamas, SS GPIO15 G įžeminimas GND 5V 5V-3V3 3.3V 3.3V RST Reset RST Connecté à D0 (supilkite giliai.sleep) ***************************************/ #include bool Logs = tiesa; // wifi const char* ssid = "LOL"; const char* slaptažodis = "LOL"; IP adresas ip (192, 168, 000, 000); IP adresas dns (192, 168, 000, 000); „IPAddress“vartai (192, 168, 000, 000); IPAddress potinklis (255, 255, 000, 000); „WiFiClient“klientas; // Servo #include #define PIN_SERVO D2 Servo myservo; // servo padėtis: 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}; // Nendrės #define PIN_SWITCH_OUT D5 baitas Old_Switch_State_OUT; baitas Switch_State_OUT; #define PIN_SWITCH_IN_PARCEL D6 baitas Old_Switch_State_IN_PARCEL; baitas Switch_State_IN_PARCEL; #define PIN_SWITCH_IN_LETTER D7 baitas Old_Switch_State_IN_LETTER; baitas Switch_State_IN_LETTER; nepasirašytas ilgas jungiklis „PressTime“; const unsigned ilgas DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Jūsų MQTT adresas"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; „PubSubClient ClientMQTT“(klientas); anglis MQTT_Message_Buff [70]; Eilutė MQTT_Pub_String; // Įtampos plūdė vcc; // NTP #include time_t tnow; int Senas laikas = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; void setup () {Serial.begin (115200); tinklas (tiesa); 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); SendBatteryLevel (); tinklas (klaidingas); // NTP rinkinys tnow = laikas (nullptr); Int_Heures = Styga (ctime (& tnow)). Antrinė eilutė (11, 13). ToInt (); Int_Minutes = Styga (ctime (& tnow)). Antrinė eilutė (14, 16). ToInt (); // Užmigti naktį, jei (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println („minutės“)); miegas (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP rinkinys tnow = laikas (nullptr); Int_Heures = Styga (ctime (& tnow)). Antrinė eilutė (11, 13). ToInt (); Int_Minutes = Styga (ctime (& tnow)). Antrinė eilutė (14, 16). ToInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + Styga (ctime (& tnow)). Antrinė eilutė (11, 13)); //Serial.println (Styga (ctime (& tnow)). Antrinė eilutė (11, 13). ToInt ()); // Servo valdymas if (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Logs) 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 (Logs) Serial.println (indeksas); vėlavimas (200); myservo.write (indeksas); } uždelsimas (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // dar kartą parašykite paskutinę reikšmę, kad išvengtumėte trūkčiojančių judesių, kai atjungiate myservo.detach (); } tinklas (tiesa); SendBatteryLevel (); tinklas (klaidingas); }}} // Giliai užmigti, jei šeštadienis po 13 val., Jei ((String (ctime (& tnow)).. Substring (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)"); miegas (Int_Sleep_Duration - Int_Minutes); } // Deepsleep if sekmadienis 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 (Logs) Serial.println ("minutes)"); miegas (Int_Sleep_Duration - Int_Minutes); } // Nendrių valdymas Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); if (Switch_State_OUT! = Old_Switch_State_OUT) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = milis (); if (Switch_State_OUT == HIGH) {Serial.println ("kurjeris aktualus!"); tinklas (tiesa); vėlavimas (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); vėlavimas (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); vėlavimas (5000); tinklas (klaidingas); }} 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 ("kurjeris atvyksta!"); tinklas (tiesa); vėlavimas (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, „Kurjeris“); vėlavimas (5000); tinklas (klaidingas); }} 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 = milis (); if (Switch_State_IN_PARCEL == HIGH) {Serial.println ("colis arrivé!"); tinklas (tiesa); vėlavimas (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, „Colis“); vėlavimas (5000); tinklas (klaidingas); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} anuliuoti SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Žurnalai) Serial.println ("\ tTension aktualumas:" + Styga (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); vėlavimas (5000); } tuščias miegas (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } negaliojantis tinklas (bool UpDown) {if (UpDown) {Serial.print ("Tinklo pradžia"); „WiFi.forceSleepWake“(); uždelsimas (1); // init WIFI WiFi.config (ip, dns, gateway, potinklis); WiFi.begin (ssid, slaptažodis); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serijinis atspaudas ("."); } uždelsimas (5000); Serial.println ("."); Serial.print ("\ tPrijungta - IP adresas:"); 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 (laikas (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 (" / tBandomas MQTT ryšys … "); // Bandymas prisijungti, jei (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" connected ");} else {Serial.print (" nepavyko, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("bandykite dar kartą po 5 sekundžių"); // Palaukite 5 sekundes prieš vėl bandydami uždelsti (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 / ":" + eilutė (Int_IDX) + ", \" Baterija / ":" + Styga (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue / ": \" " + S_Vertybė +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

11 žingsnis: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

Domoticz mieste:

Bendram naudojimui:

  • Sukurkite du „Dummy (nieko nedaro, naudokite virtualiems jungikliams)“:

    1. Pirmasis laiškams…
    2. Antrasis siuntiniui…
  • Suasmeninkite kiekvieno iš jų pranešimus;
  • Žinoma, turite nustatyti „Tegegram“žetoną.

Pasirinktinai:

Galite pridėti „Naudingumo jutiklį“, kad prižiūrėtumėte akumuliatoriaus įkrovos lygį.

Patarimai: čia galite rasti daug nemokamų pasirinktinių piktogramų …

12 žingsnis: Išvada

Išvada
Išvada
Išvada
Išvada

Tikimės, kad ši instrukcija jums padės:

  • ar sukurti savo prijungtą pašto dėžutę;
  • arba tiesiog pateikti jums idėjų savo projektams!

Jei turite patobulinimų idėjų, aš klausau!

PS: atsiprašau už anglų kalbą, „Google“vertimas man labai padeda, bet tikriausiai nėra tobulas;-)

Rekomenduojamas: