Tartalomjegyzék:

Csatlakoztatott levélszekrény napenergiával: 12 lépés (képekkel)
Csatlakoztatott levélszekrény napenergiával: 12 lépés (képekkel)

Videó: Csatlakoztatott levélszekrény napenergiával: 12 lépés (képekkel)

Videó: Csatlakoztatott levélszekrény napenergiával: 12 lépés (képekkel)
Videó: Элон Маск: Элон Маск: Человек, создавший Tesla, SpaceX, SolarCity... 2024, Július
Anonim
Csatlakoztatott levélszekrény napenergiával
Csatlakoztatott levélszekrény napenergiával
Csatlakoztatott levélszekrény napenergiával
Csatlakoztatott levélszekrény napenergiával

Második Ible -mben leírom nektek a csatlakoztatott levélszekrényemmel kapcsolatos munkáimat.

Miután elolvastam ezt az utasítást (és még sok más), és mivel a levélszekrényem nincs a házam közelében, szerettem volna inspirálni az Open Green Energy munkáiból, hogy összekapcsoljam a levélszekrényemet a Domoticz szerverrel.

Célok

  • Tájékoztassa a Telegrammal, amikor levelek érkeznek;
  • A Telegram értesíti, ha csomag érkezik;
  • Ellenőrizze, hogy a leveleket / csomagokat felvette -e.

A fő korlátozásom

A postafiók viszonylag messze van a háztól, és lehetetlen volt felhúzni hozzá egy elektromos kábelt, hogy bármit is táplálhasson.

Más megoldást kellett találnom: a napelem jó megoldás volt!

A BOM

  • Raspberry Pi (az MQTT és a Domoticz részek házigazdája - itt nincs leírva)
  • Telegram Bot fiók
  • Lolin D1 mini (vagy Wemos…)
  • Plug-in csavaros sorkapocs-csatlakozó
  • TP4056 lítium akkumulátor töltőlap
  • 6V 2W fotovoltaikus napelem
  • Li-Ion 18650 akkumulátor
  • Li-ion akkumulátor tartó
  • NYÁK DIY forrasztó réz prototípus nyomtatott áramkör
  • Analóg szervo SG90
  • 3 Reed kapcsoló (egy a levelekhez, egy a csomaghoz és egy a fizetéshez)
  • Mágnesek
  • Néhány vezeték
  • Fából készült láda: Mivel nem kaptam 3D nyomtatót, rájöttem, hogy saját kis házam van fával az elektronikai alkatrészek fogadására…
  • Tartalék Ethernet kábel
  • RJ45 Ethernet csatlakozó megszakító kártya

  • J-B hegesztés
  • Néhány golyóscsapágy
  • Csavarok, anyák, alátétek

1. lépés: Globális rendszer

Globális séma
Globális séma
Globális séma
Globális séma

A gyönyörű rajzok mindig jobbak, mint a hosszú beszédek;-)

De néhány magyarázatot az MQTT -ről, a Domoticz -ról és a Telegramról mindig szívesen fogadunk!

Az MQTT (Message Queuing Telemetry Transport) egy üzenetküldési protokoll, amelyet adatok küldésére használnak az eszközök és más rendszerek között az IoT (Internet of Things) világában.

Anélkül, hogy túl sok részletbe esne, működése azon az elven alapul, hogy az ügyfelek szerverhez csatlakoznak. Az MQTT -ben az ügyfeleket előfizetőnek vagy kiadónak, a szervert pedig brókernek hívják.

Ebben az utasításban csak egy kiadót használok, a Lolin -t a postaládámhoz: ha betűket vagy csomagot észlel a levélszekrénybe telepített nádas érintkezőkön keresztül (1. lépés a sematikus változatban), az MQTT üzenetet küld a WIFI -n keresztül a közvetítőnek (2. lépés).

A Bróker részt a Mosquitto végzi, amely a Raspberry Pi -re van telepítve (3. lépés).

A Domoticzról:

Amint azt a forrásoldalon leírtuk, a Domoticz egy "otthoni automatizálási rendszer", amely lehetővé teszi különböző eszközök vezérlését és különböző protokollokból származó adatok fogadását: Az MQTT az egyik támogatott protokoll …

Amint az információ eléri őt (4. lépés), meghatározhatja az eseményeket: A levélszekrény esetében a Telegram értesítés küldését választottam (5. lépés).

Végül a Telegram kliens konfigurálva van a telefonomon (és a feleségem is! - 6. lépés): a végső cél elérve…

2. lépés: Shematic / huzalozás

Shematic / huzalozás
Shematic / huzalozás
Shematic / huzalozás
Shematic / huzalozás
Shematic / huzalozás
Shematic / huzalozás
Shematic / huzalozás
Shematic / huzalozás

Egy szó az analógról:

Először is, néhány kutatás után észrevettem, hogy a Lolin mini D1 (mint a régi Wemos) beépített feszültségmegosztót tartalmaz az A0 érintkezőhöz (figyelembe véve a 220KΩ -ot az R1 -nél és 100KΩ -ot az R2 -nél - lásd a linkelt adatlap jobb oldalán), ami 3,2 V -ot tesz lehetővé mint maximális analóg bemeneti feszültség.

Figyelembe véve, hogy az akkumulátor maximális kimeneti feszültsége 4, 2 V (a töltőkártya korlátozza), és elméletileg csak egy külső rezidenst kell hozzáadnia (az R1 sorozattal) a maximális bemeneti feszültségtartomány növeléséhez. Ezután, ha 100K -t ad hozzá sorozatosan az R1 -hez, akkor ez az eredmény lesz:

Vin * R1/(R1+R2) = Vout

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

Az áramkörömben úgy döntöttem, hogy beállíthatom az értékét, ezért inkább az állítható ellenállást használtam az áramkörben: talán haszontalan lesz az Ön számára, de az én helyzetemben körülbelül 10 KΩ -ra állítottam be az értéket koherens érték a Domoticzban…

Ne feledje, hogy az A0 érintkező 10 bites felbontással rendelkezik: ez azt jelenti, hogy a vázlatban az analóg leolvasás 0 és 1024 közötti értéket ad vissza.

Mivel százalékos értéket akarok küldeni a Domoticz -nak, el kell osztanom az analóg olvasási eredményt 10, 24 -gyel.

3. lépés: Energiagazdálkodás

Energiagazdálkodás
Energiagazdálkodás
Energiagazdálkodás
Energiagazdálkodás

Természetesen azt akarom, hogy a levélszekrény önálló legyen. A cél eléréséhez ezeket az elemeket használom:

  • Li-Ion 18650 akkumulátor, 4000 mAh;
  • 6V / 2W teljesítményű napelem;
  • egy TP4056 lítium akkumulátor töltőlap.

A legmegfelelőbb napelem kiválasztásához néztem néhány példát, beleértve ezt is: ebben a példában 5,5 V / 0,66 W -os napelemet használnak, és valószínűleg elegendő a célra. Esetemben, és mivel az ESP8266 -nak napközben bekapcsolt állapotban kell maradnia, és képesnek kell lennie szervomotor működtetésére, hogy a ház a nap felé nézzen, egy erősebb napelemes modellt választottam (6V / 2W) - Ez lehetővé teszi számomra számítani a sötét téli időszakokra és a felhős napokra;-)

Továbbá, és az energiafelhasználás maximális csökkentése érdekében a következő forgatókönyveket választottam:

  • tudva, hogy a postás csak reggel 7 és este 8 óra között múlt, az ESP az éjszaka többi részében a DeepSleep -be kerül;
  • A tényező nem múlik el szombat dél és hétfő reggel között: az ESP is DeepSleep üzemmódba kerül ebben az időszakban.
  • Reggel 7 és este 8 között, és az energiafogyasztás csökkentése érdekében egyszerűen letiltom az ESP hálózati interfészét: a hálózat csak egy csomag vagy levél érkezésekor indul újra, csak annyi idő, hogy elküldje az információt a Domoticz. Nem kell azonnal figyelmeztetnem, és a hálózati interfész újraindításához szükséges néhány másodperc nem ártalmas!

Néhány érték a fogyasztásról a különböző módokban, amelyeket a Lolin esetében használok - nézze meg az adatlapot, 18. o.:

  • Normál üzemmódban (rádiófrekvenciás működéssel) az áramfogyasztás 170 mA -re nőhet! Mivel a levélszekrényem körülbelül 50 méterre van a házamtól (és a WIFI jel határán…), feltételezem, hogy a kapcsolat fenntartásához felhasznált teljesítmény a maximális …
  • Modem-alvó üzemmódban az áramfogyasztás 15 mA-re csökken. De amint az adatlapon is látható, nem állította le teljesen a modemet, mivel az ESP "Wi-Fi kapcsolatot tart fenn adatátvitel nélkül".
  • Mély alvás esetén a teljesítmény 20uA-ra csökken.

Annak biztosítására, hogy a wifi nem marad szükségtelenül aktív, inkább letiltottam a következő parancsokkal. Jegyezze meg a sok késleltető () hívást … Ezek nélkül az ESP összeomlik:

WiFi.disconnect ();

késleltetés (1000); WiFi.mód (WIFI_OFF); késleltetés (1000); WiFi.forceSleepBegin (); késleltetés (1);

Összességében többnapos működés után úgy tűnik, hogy működik, és különösen helyesen töltődik be:

  • ez lehetővé teszi, hogy óránként futtassam a szervomotort, hogy a házat a nap felé pozícionáljam;
  • Azt is megengedhetem magamnak, hogy óránként újra aktiváljam a hálózati interfészt, hogy elküldjem a Domoticznak az akkumulátor töltöttségi szintjét.

4. lépés: Mágnesek és nádas érintkezők felszerelése

Mágnesek és nádas érintkezők telepítése
Mágnesek és nádas érintkezők telepítése
Mágnesek és nádas érintkezők telepítése
Mágnesek és nádas érintkezők telepítése
Mágnesek és nádas érintkezők telepítése
Mágnesek és nádas érintkezők telepítése

A szokásos módon a Proxxonom segítségével alakítottam ki a Nád helyét egy fadarabban.

A nádérintkező rögzítéséhez a lyukba egy kis J-B hegesztést használtam.

A csomagra és a kimenetre egy kis darab szalag, egy kis fűrész, és a cél megvalósult!

A levelesládám előnye, hogy fém, ami megkönnyíti a mágnesek pozícionálását, így megfelelően kölcsönhatásba lép a nádas érintkezőkkel.

5. lépés: Csatlakozz a My Little House -hoz

Csatlakozz a My Little House -hoz
Csatlakozz a My Little House -hoz
Csatlakozz a My Little House -hoz
Csatlakozz a My Little House -hoz

Annak érdekében, hogy könnyen lehessen csatlakoztatni és leválasztani a kábelt, amely a nádas érintkezőkhöz megy a levélszekrényből a házba, úgy döntöttem, hogy Ethernet -csatlakozót használok.

Használhatja ezt a modellt, vagy hozzám hasonlóan egy régi Arduino Ethernet pajzsot, amely a fiókjaimban lóg: Nem szenvedett, bátor volt a fűrész előtt, gyors volt a halála ^^

Csak néhány szó erről az Arduino Ethernet pajzsról: ne számítson arra, hogy 8 külön illesztőprogramja lesz … A kábeleket kettő párosítja a pajzson belül … Túl sokáig őrjítettem meg !!!

6. lépés: A házban…

A házban …
A házban …
A házban …
A házban …

Elég hely az elemtartó rögzítéséhez, a szervó beállításához és az RJ45 femal csatlakozóhoz.

7. lépés: Hagyja, hogy a lemezjátszó…

Legyen forgóasztal…
Legyen forgóasztal…
Legyen forgóasztal…
Legyen forgóasztal…
Legyen forgóasztal…
Legyen forgóasztal…
Legyen forgóasztal…
Legyen forgóasztal…

A cél az, hogy a nap felé nézzen…

Annak érdekében, hogy elfordítható legyen, tengelyként hosszú csavart használtam, néhány anyával és két golyóscsapággyal…

Eddig SG90 szervót használtam (nyomaték: 1,8 kg/cm 4,8 V -nál).

A ház (és annak néhány grammja) megfordításához elegendő. Másrészt nem vagyok biztos abban, hogy műanyag fogaskerekei sokáig ellenállnak a régiómban tapasztalt gyakori széllökéseknek.

Rendeltem egy másikat (MG995 nyomaték: 9,4 kg/cm 4,8 V -nál), nem is túl drága, de fém fogaskerekekkel.

Ez lesz a következő teendő, amikor megkapom: a csatlakoztatott levélszekrényemre támaszkodva értesítem az érkezéséről!

8. lépés: Néhány teszt

Image
Image

Néhány megjegyzés:

Ez a vázlat csak a napközbeni órák változásának utánozására szolgál, hogy lehetővé tegyem a szervó helyzetének szabályozását.

  • SG90 esetén: nincs szükség további igényekre, működhet az akkumulátor vezérlőből érkező OUT feszültséggel.
  • De az MG 995 esetében:

    • A teljes elfordulási szög nem azonos (szélesebb): extra funkciót kellett használnom annak csökkentésére (Servo_Delta ()).
    • Szükség van egy DC/DC fokozásra, hogy elegendő feszültséget biztosítson a szervónak… folytatás…

/*

- TESZT az SG90 -el: nincs szükség további igényekre, képes működni az akkumulátor vezérlőből érkező OUT feszültséggel - MG 995 esetén: - használja a Servo_Delta () funkciót … - DC/DC szükséges, hogy elegendő feszültséget biztosítson a szervónak folytatás: */ #include bool Logs = true; Szervo myservo; #define PIN_SERVO D2 // szervo pozíció: 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 régi; 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 (index); if (Logs) Serial.print ("Korrigált érték:"); if (Logs) Serial.println (Servo_Delta (index)); késleltetés (200); //myservo.write(Servo_Delta(index)); myservo.write (index); } késleltetés (15); myservo.write (Arr_Servo_Pos [i-7]); // írja újra az utolsó értéket, hogy elkerülje a rángatózó mozgásokat, amikor a datach myservo.detach (); }}} késleltetés (2000); }} int Servo_Delta (int érték) {int Temp_val; Temp_val = (érték*0,80) +9; return Temp_val; }

9. lépés: A kis ház

A kis ház
A kis ház
A kis ház
A kis ház
A kis ház
A kis ház

Mint korábban mondtam, nem kaptam 3D nyomtatót. Ezért úgy döntök, hogy régi zöldségládát használok …

Lehet, hogy nem tart sokáig az időjárás, de addigra lenne időm egy másik megoldáson (vagy egy barátomon, akinek van 3D nyomtatója) gondolkodnom: a fa védelme érdekében mindenhol sok lakkot tettem fel…

Láthatja a "szép függönyöket" … Ez történik, amikor megkéri a feleségét, hogy végezze el a munkát ^^

10. lépés: A vázlat

Folyamatban … De úgy tűnik, stabil

Továbbra is dolgozom a kódon: mivel ez nem végleges verzió, az észrevételeit / tanácsait szívesen fogadjuk;-)

Néhány megjegyzés:

  • Számos késleltetés () van a kódban: ez azért van, hogy elkerüljük a Lolin sok összeomlását, különösen az indító hálózat leállításakor …
  • Nem találtam egyszerű és megbízható módszert a nap -azimut megszerzésére: ezért rögzítettem a szervoértéket a megfigyeltek függvényében … Jó (és egyszerű) módja van, hogy megkapja, érdekel! Talán az itt tanulható pálya, még akkor is, ha az online API -t részesítem előnyben, közvetlenül megadja az azimutot a dátum, az óra és a földrajzi helyzet szerint…
  • Az alvástechnikáról: mivel a Lolin egy 32 bites Tensilica processzor, a 32 bites előjel nélküli egész szám maximális értéke 4294967295… akkor körülbelül 71 percet ad a mély alvás intervallumra. Ezért sokszor alszom l'ESP -t körülbelül 60 percig …

SZERKESZTÉS - 2018.10.08.:

Felfedeztem, hogy a szervónak sok rángatózó mozdulata van, különösen a csatolás (), leválás () előtt, és minden alkalommal, amikor a Lolin felébred a deepSleep -ből ().

Kicsit több adatlap tanulmányozása során két dologra jöttem rá:

  • A Lolin adatlapján a D4 kimenet már csatlakoztatva van a BUILTIN_LED -hez…
  • Az ESP8266ex adatlapon megtudjuk, hogy a D4 kimenet UART 1/U 1 TXD (Universal Asynchronous Receiver Transmitter). Azt is megadtuk, hogy ezt az UART1 -et használják napló nyomtatásához.

Ezen információk elolvasásával rájöttem, hogy a D4 kimenet nem jó ötlet, különösen egy szervomotor kezeléséhez!

Tehát most a szervomotor vezérléséhez használt kimenet D2, az alábbi kód ennek megfelelően frissült.

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

Dátum: 08/Dátum mise en prod: 08/Változat: 0.9.4 IDE verzió Arduino: 1.8.6 Feltöltési sebesség: 921600 Típus de carte dans l'IDE: "LOLIN (WEMOS) D1 R2 & mini" Carte physique alkalmazottak: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Tűs funkció ESP-8266 Pin Utilization locale ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analóg bemenet, max. 3.3V bemenet A0 Tension d'alimentaion D0 IO GPIO16 Connecté à RST (pour le deep.sleep) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k Pull-up GPIO0 D4 IO, 10k pull-up, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reed reléve D6 IO, MISO GPIO12 Reed lettre D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k pull-down, SS GPIO15 G Ground GND 5V 5V-3V3 3.3V 3.3V RST Reset RST Connecté à D0.alvás) *******************************************; // wifi const char* ssid = "LOL"; const char* password = "LOL"; IPAdd ip (192, 168, 000, 000); IPAddns dns (192, 168, 000, 000); IPAddress gateway (192, 168, 000, 000); IPAddress alhálózat (255, 255, 000, 000); WiFiClient kliens; // Servo #include #define PIN_SERVO D2 Servo myservo; // szervo pozíció: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h int Arr_Servo_Pos = {179, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 1, 1, 1}; // Reeds #define PIN_SWITCH_OUT D5 byte Old_Switch_State_OUT; bájt Switch_State_OUT; #define PIN_SWITCH_IN_PARCEL D6 byte Old_Switch_State_IN_PARCEL; byte Switch_State_IN_PARCEL; #define PIN_SWITCH_IN_LETTER D7 byte Old_Switch_State_IN_LETTER; byte Switch_State_IN_LETTER; előjel nélküli hosszú kapcsoló PressTime; const unsigned long DEBOUCE_TIME = 200; // Analóg #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Az Ön MQTT címe"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (kliens); char MQTT_Message_Buff [70]; Karakterlánc MQTT_Pub_String; // Feszültség úszó 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); hálózat (igaz); 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 (); hálózat (hamis); // NTP set tnow = time (nullptr); Int_Heures = Karakterlánc (ctime (& tnow)). Sztring (11, 13).toInt (); Int_Minutes = Karakterlánc (ctime (& tnow)). Allánc (14, 16).toInt (); // Mély alvás éjszakára, ha (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Soros. println ("perc)"); alvás (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = Karakterlánc (ctime (& tnow)). Sztring (11, 13).toInt (); Int_Minutes = Karakterlánc (ctime (& tnow)). Allánc (14, 16). ToInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + Karakterlánc (ctime (& tnow)). Allánc (11, 13)); //Serial.println (Karakterlánc (ctime (& tnow))). Sztring (11, 13).toInt ()); // Szervókezelés 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 (index); késleltetés (200); myservo.write (index); } késleltetés (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // írja újra az utolsó értéket, hogy elkerülje a rángatózó mozgásokat, amikor leválasztja a myservo.detach (); } hálózat (igaz); SendBatteryLevel (); hálózat (hamis); }}} // Mélyen alszik, ha szombat 13 óra után, ha ((Karakterlánc (ctime (& tnow))). Sztring (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)"); alvás (Int_Sleep_Duration - Int_Minutes); } // Mélyen alszik, ha vasárnap, ha (karakterlánc (ctime (& tnow))). Sztring (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)"); alvás (Int_Sleep_Duration - Int_Minutes); } // Nádkezelés 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 ("futár releváns!"); hálózat (igaz); késleltetés (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); késleltetés (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); késleltetés (5000); hálózat (hamis); }} 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 ("futár érkezik!"); hálózat (igaz); késleltetés (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Futár"); késleltetés (5000); hálózat (hamis); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); if (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); if (Switch_State_IN_PARCEL == HIGH) {Serial.println ("colis arrivé!"); hálózat (igaz); késleltetés (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); késleltetés (5000); hálózat (hamis); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Naplók) Serial.println ("\ tFeszültség releváns:" + Karakterlánc (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); késleltetés (5000); } üres alvás (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void network (bool UpDown) {if (UpDown) {Serial.print ("Hálózat indítása"); WiFi.forceSleepWake (); késleltetés (1); // init WIFI WiFi.config (ip, dns, átjáró, alhálózat); WiFi.begin (ssid, jelszó); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Soros.nyomtatás ("."); } késleltetés (5000); Soros.println ("."); Serial.print ("\ tConnected - IP -cím:"); 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 (time (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 (" / tMQTT kapcsolat megkísérlése… "); // Csatlakozási kísérlet, ha (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" connected ");} else {Serial.print (" failed, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("próbálja újra 5 másodperc múlva"); // Várjon 5 másodpercet, mielőtt újra próbálkozik a késleltetéssel (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 / ":" + String (Int_IDX) + ", \" Battery / ":" + String (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue / ": \" " + S_érték +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

11. lépés: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

Domoticzban:

Általános használatra:

  • Hozzon létre két "Dummy (nem csinál semmit, használjon virtuális kapcsolókat)":

    1. Az első a levelekhez…
    2. A második csomaghoz…
  • Mindegyikhez személyre szabhatja az értesítéseket;
  • Természetesen be kell állítania a Tegegram tokent.

Opcionálisan:

Hozzáadhat egy "segédprogram -érzékelőt" az akkumulátor töltöttségi szintjének felügyeletéhez.

Tippek: itt sok ingyenes egyéni ikont talál…

12. lépés: Következtetés

Következtetés
Következtetés
Következtetés
Következtetés

Reméljük, hogy ez az utasítás segít Önnek:

  • hogy létrehozza -e saját csatlakoztatott levélszekrényét;
  • vagy csak ötleteket adni a projektekhez!

Ha van ötletetek a fejlesztésre, szívesen hallgatom!

PS: sajnálom az angolomat, a Google fordítása sokat segít nekem, de valószínűleg nem tökéletes;-)

Ajánlott: