Turinys:
- 1 žingsnis: pasaulinė schema
- 2 žingsnis: „Shematic“/ laidai
- 3 žingsnis: energijos valdymas
- 4 žingsnis: magnetų ir nendrių kontaktų montavimas
- 5 žingsnis: prisijunkite prie „Mano mažo namo“
- 6 žingsnis: namuose …
- 7 žingsnis: leiskite jam pasukti…
- 8 žingsnis: kai kurie bandymai
- 9 žingsnis: Mažas namas
- 10 žingsnis: eskizas
- 11 žingsnis: Domoticz
- 12 žingsnis: Išvada
Video: Prijungta „Letterbox“saulės energija: 12 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
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
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
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
Ž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
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“
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 …
Pakanka vietos pritvirtinti akumuliatoriaus laikiklį, nustatyti servo ir RJ45 moterišką jungtį.
7 žingsnis: leiskite jam pasukti…
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
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
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 mieste:
Bendram naudojimui:
-
Sukurkite du „Dummy (nieko nedaro, naudokite virtualiems jungikliams)“:
- Pirmasis laiškams…
- 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
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:
Saulės energija apšviestas terariumas: 15 žingsnių (su nuotraukomis)
Saulės energija apšviestas terariumas: Klausimas: Ką jūs gaunate, kai kerta naktinį šviesoforą su iškarpų albumu? A: Saulės energija apšviestas terariumas! Aš sukūriau sulaužytą saulės energija varomų sodo žibintų rinkinį, kad sukurtų šią mini terariumo sceną . Jame pavaizduota kajutė, kurią su vaikinu išsinuomojome
Saulės energija varomas robotas: 17 žingsnių (su nuotraukomis)
Saulės energija varomas robotas: Prieš kurį laiką sukūriau dešimtis robotų, kuriuos didžiąja dalimi įkvėpė „BEAM Robotics“. Tiems, kurie nepažįsta, BEAM iš esmės yra specialus robotų kūrimo metodas, kuriame pabrėžiama biologija, elektronika, estetika ir mechanika (taigi akronė
Saulės energija varomas širdies blinky LED pakabukas: 11 žingsnių (su nuotraukomis)
Saulės energija varomas širdies blinky LED pakabukas: Šis nurodymas skirtas saulės energija varomai širdžiai su pulsuojančiu raudonu šviesos diodu. Jis matuoja apie 2 " iki 1,25 ", įskaitant USB skirtuką. Lentos viršuje yra viena skylė, todėl lengva pakabinti. Nešiokite kaip karolius, auskarus, užriškite ant smeigtuko
Saulės energija varoma „WiFi“oro stotis V1.0: 19 žingsnių (su nuotraukomis)
Saulės energija varoma „WiFi“oro stotis V1.0: Šioje instrukcijoje aš jums parodysiu, kaip sukurti saulės energija varomą „WiFi“oro stotį su „Wemos“plokšte. „Wemos D1 Mini Pro“turi nedidelį formos koeficientą ir platų „plug-and-play“skydų asortimentą, todėl jis yra idealus sprendimas norint greitai gauti
SAULĖS MAITINIMO GENERATORIUS - Energija nuo saulės iki kasdienių buitinių prietaisų: 4 žingsniai
SAULĖS MAITINIMO GENERATORIUS | Energija nuo saulės iki kasdienių buitinių prietaisų naudojimo: Tai labai paprastas mokslo projektas, pagrįstas saulės energijos konvertavimu į naudojamą elektros energiją. Jis naudoja įtampos reguliatorių ir nieko kito. Pasirinkite visus komponentus ir pasiruoškite nuostabiam projektui, kuris padės jums