Mundarija:

Quyosh energiyasi bilan bog'langan pochta qutisi: 12 qadam (rasmlar bilan)
Quyosh energiyasi bilan bog'langan pochta qutisi: 12 qadam (rasmlar bilan)

Video: Quyosh energiyasi bilan bog'langan pochta qutisi: 12 qadam (rasmlar bilan)

Video: Quyosh energiyasi bilan bog'langan pochta qutisi: 12 qadam (rasmlar bilan)
Video: Faqat dahogina buni 15 soniyada yechishi mumkin! O'zingizni sinab ko'ring!!! 2024, Noyabr
Anonim
Quyosh energiyasi bilan bog'langan pochta qutisi
Quyosh energiyasi bilan bog'langan pochta qutisi
Quyosh energiyasi bilan bog'langan pochta qutisi
Quyosh energiyasi bilan bog'langan pochta qutisi

Ikkinchi Ible uchun men sizga o'zim ulangan pochta qutisi haqidagi ishlarimni tasvirlab beraman.

Bu ko'rsatmalarni o'qib chiqqandan so'ng (va boshqalar) va mening pochta qutim uyim yonida bo'lmaganligi sababli, men pochta qutisini Domoticz serverimga ulash uchun Open Green Energy ishlaridan ilhom olmoqchi edim.

Maqsadlar

  • Xatlar kelganda Telegramdan xabardor bo'ling;
  • Posilka kelganda Telegramdan xabar oling;
  • Xatlar / posilkalar qabul qilinganligini tekshiring.

Mening asosiy cheklovim

Pochta qutisi uydan ancha uzoqda va biror narsani quvvatlantirish uchun unga elektr simini tortib bo'lmaydi.

Men boshqa echim topishga majbur bo'ldim: quyosh energiyasi yaxshi echim edi!

BOM

  • Raspberry Pi (MQTT va Domoticz qismlarini joylashtirish uchun - bu erda ko'rsatilmagan)
  • Telegram Bot hisob qaydnomasi
  • Lolin D1 mini (yoki Wemos …)
  • Plug-in vintli terminal blokli ulagichi
  • TP4056 lityum batareyani zaryadlovchi taxtasi
  • 6V 2W fotovoltaik quyosh paneli
  • Li-Ion 18650 batareyasi
  • Li-Ion batareyasi ushlagichi
  • PCB DIY lehimleme mis prototipi bosilgan elektron platasi
  • Analog Servo SG90
  • 3 ta qamish kalitlari (bittasi harflar, bittasi posilka va bittasi to'lov uchun)
  • Magnitlar
  • Ba'zi simlar
  • Yog'ochdan yasalgan sandiq: 3D -printerga ega bo'lmagani uchun, men o'zimning yog'ochdan yasalgan kichik uyimni, elektron qismlarni qabul qila boshladim.
  • Ethernet zaxira kabeli
  • RJ45 Ethernet ulagichining uzilish taxtasi

  • J-B Weld
  • Ba'zi bilyalı rulmanlar
  • Vintlar, yong'oqlar, yuvish mashinalari

1 -qadam: Global sxema

Global sxema
Global sxema
Global sxema
Global sxema

Chiroyli chizmalar har doim uzun nutqlardan yaxshiroq;-)

Lekin MQTT, Domoticz va Telegram haqida bir nechta tushuntirishlar har doim xush kelibsiz!

MQTT (Message Queuing Telemetry Transport) - bu xabarlar almashish protokoli bo'lib, ma'lumotlar dunyosidagi qurilmalar va boshqa tizimlar (Internet Internet) o'rtasida yuboriladi.

Tafsilotlarni aytmasdan, uning ishlashi mijozlarga serverga ulanish tamoyiliga asoslanadi. MQTTda mijozlar Obunachi yoki Nashriyotchi, server esa Broker deb ataladi.

Bu yo'riqnomada men faqat bitta noshirni ishlataman, Lolin pochta qutisiga ulangan: pochta qutisiga o'rnatilgan qamish kontaktlari orqali xat yoki posilka aniqlanganda (1 -qadam shematik), u MQTT xabarini WIFI orqali Brokerga yuboradi (2 -qadam)).

Broker qismi Raspberry Pi -ga o'rnatilgan Mosquitto tomonidan amalga oshiriladi (3 -qadam).

Domoticz haqida:

Manba sahifasida tasvirlanganidek, Domoticz "uyni avtomatlashtirish tizimi" bo'lib, u sizga turli xil qurilmalarni boshqarishga va har xil protokollardan ma'lumotlarni qabul qilishga imkon beradi: MQTT - qo'llab -quvvatlanadigan protokollardan biri …

Ma'lumot unga etib kelishi bilan (4 -qadam), siz voqealarni belgilashingiz mumkin: pochta qutisi bo'lsa, men Telegram xabarnomasini yuborishni tanladim (5 -qadam).

Nihoyat, mening telefonimda Telegram mijozi sozlangan (va mening xotinim ham! - 6 -qadam): oxirgi maqsadga erishildi …

2 -qadam: simli / simli

Shematik / simli
Shematik / simli
Shematik / simli
Shematik / simli
Shematik / simli
Shematik / simli
Shematik / simli
Shematik / simli

Analog haqida bitta so'z o'qiladi:

Birinchidan, men ba'zi tadqiqotlardan so'ng, Lolin mini D1 (eski Wemos kabi) A0 pin uchun kuchlanish bo'luvchi o'rnatilganini (R1 uchun 220KΩ va R2 uchun 100KO ni hisobga olgan holda - bog'langan ma'lumotlar varag'ining o'ng tomonida qarang) 3,2 voltli kuchlanish o'rnatilganligini payqadim. Maksimal analog kirish voltaji sifatida.

Batareyadan maksimal chiqish voltaji 4, 2v (zaryadlovchi paneli bilan cheklangan) va nazariy jihatdan maksimal kirish voltaj diapazonini oshirish uchun faqat tashqi rezistorni (R1 bilan ketma -ket) qo'shish kerak. Keyin, agar siz R1 bilan ketma -ket 100K qo'shsangiz, bu natijaga ega bo'lasiz:

Vin * R1/(R1+R2) = Vout

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

Men o'z davramda uning qiymatini sozlashni tanladim, shuning uchun men o'z davrimda sozlanishi rezistorni ishlatishni afzal ko'rdim: ehtimol bu siz uchun befoyda bo'lishi mumkin, lekin mening vaziyatimda uning qiymatini taxminan 10KΩ ga o'rnatdim. Domoticzda izchil qiymat …

E'tibor bering, A0 pinining 10 bitli aniqligi bor: bu sizning eskizingizda analog o'qishingiz 0 dan 1024 gacha bo'lgan qiymatni qaytaradi.

Men Domoticzga foiz qiymatini yubormoqchi bo'lganim uchun, analog o'qish natijasini 10, 24 ga bo'lishim kerak.

3 -qadam: quvvatni boshqarish

Quvvat boshqaruvi
Quvvat boshqaruvi
Quvvat boshqaruvi
Quvvat boshqaruvi

Albatta, men pochta qutisi avtonom bo'lishini xohlayman. Maqsadimga erishish uchun men quyidagi elementlardan foydalanaman:

  • Li-Ion 18650 batareyasi 4000 mA / soat;
  • 6V / 2 Vt quvvatga ega quyosh paneli;
  • TP4056 lityum batareyali zaryadlovchi paneli.

Eng maqbul quyosh panelini tanlash uchun men bir nechta misollarni ko'rib chiqdim, shu jumladan: bu misolda 5,5V / 0,66Vt quvvatli quyosh paneli ishlatiladi va bu maqsad uchun etarlidir. Mening holatimda va ESP8266 kunduzi yoniq bo'lishi kerak va uyni quyoshda ushlab turish uchun servo dvigatelni ishga tushirishi kerak bo'lgani uchun men quyosh panelining kuchliroq modelini tanladim (6V / 2W) - Bu menga ham imkon beradi. qorong'u qish davrlarini va bulutli kunlarni oldindan bilish;-)

Shuningdek, energiya sarfini maksimal darajada kamaytirish uchun men quyidagi stsenariylarni tanladim:

  • pochtachining ertalab soat 7 dan kechki 8gacha bo'lganini bilib, ESP tun bo'yi DeepSleep -ga joylashtirilgan;
  • Bu omil shanba kuni tushdan dushanba kuni ertalabgacha o'tmaydi: ESP ham bu vaqtda DeepSleep rejimiga o'tkaziladi.
  • Ertalabki 7 dan kechki 8gacha va energiya sarfini kamaytirish uchun men ESP tarmoq interfeysini o'chirib qo'yaman: tarmoq faqat posilka yoki xat kelganida qayta ishga tushiriladi, ma'lumotni yuborish uchun etarli vaqt. Domoticz. I darhol ogohlantirishga hojat yo'q va tarmoq interfeysini qayta ishga tushirish uchun zarur bo'lgan bir necha soniya ham zararli emas!

Lolin uchun ishlatadigan turli xil rejimlarda iste'mol qilishning ba'zi qiymati - ma'lumotlar jadvaliga qarang, p18:

  • Oddiy rejimda (RF ishlashi bilan) quvvat sarfi 170mA ga oshishi mumkin! Pochta qutisi uyimdan taxminan 50 metr uzoqlikda bo'lgani uchun (va WIFI signalining chegarasida …), menimcha, ulanishni saqlash uchun maksimal quvvat sarflanadi …
  • Modem-uyqu rejimida quvvat sarfi 15mAgacha pasayadi. Ma'lumotlar jadvalida ko'rib turganingizdek, bu modemni to'liq to'xtatmadi, chunki ESP "ma'lumotlar uzatishsiz Wi-Fi ulanishini saqlaydi".
  • Uyqu holatida quvvat 20uA ga tushadi.

Wi -Fi keraksiz faol qolmasligiga ishonch hosil qilish uchun uni quyidagi buyruqlar yordamida o'chirib qo'yishni ma'qul ko'rdim. Ko'p kechikish () qo'ng'irog'iga e'tibor bering … Ularsiz ESP buziladi:

WiFi.disconnect ();

kechikish (1000); WiFi rejimi (WIFI_OFF); kechikish (1000); WiFi.forceSleepBegin (); kechikish (1);

Umuman olganda, bir necha kunlik operatsiyadan so'ng, u ishlaydi va ayniqsa to'g'ri yuklanadi:

  • bu menga uyni quyosh tomon yo'naltirish uchun servomotorni har soatda ishga tushirishga imkon beradi;
  • Men Domoticz -ga batareyaning zaryadlanish darajasini yuborish uchun har soatda tarmoq interfeysini qayta yoqishga ruxsat bera olaman.

4 -qadam: Magnit va qamish kontaktlarini o'rnatish

Magnit va qamish kontaktlarini o'rnatish
Magnit va qamish kontaktlarini o'rnatish
Magnit va qamish kontaktlarini o'rnatish
Magnit va qamish kontaktlarini o'rnatish
Magnit va qamish kontaktlarini o'rnatish
Magnit va qamish kontaktlarini o'rnatish

Odatdagidek, men Proxxonim yordamida qamishning o'rnini yog'ochdan yasadim.

Qamish kontaktini uning teshigiga mahkamlash uchun men ozgina J-B payvandidan foydalandim.

Paket va chiqish uchun, ozgina lenta, ozgina arra va maqsadga erishiladi!

Pochta qutimning afzalligi shundaki, bu metall, bu magnitlarning joylashishini osonlashtiradi, shunda u qamish kontaktlari bilan to'g'ri aloqa qiladi.

5 -qadam: Mening kichkina uyimga ulaning

Mening kichkina uyimga ulaning
Mening kichkina uyimga ulaning
Mening kichkina uyimga ulaning
Mening kichkina uyimga ulaning

Xat qutisidan uyga qamish kontaktlariga o'tadigan kabelni osongina ulash va uzish uchun men Ethernet ulagichidan foydalanishni tanladim.

Siz bu modelni ishlatishingiz mumkin, yoki men kabi tortmalarimda osilgan eski Arduino Ethernet qalqonidan foydalanishingiz mumkin: U azob chekmagan, arra oldida jasur edi, uning o'limi tez edi ^^

Bu Arduino Ethernet qalqoni haqida bir necha so'z: 8 ta alohida haydovchiga ega bo'lishni kutmang … Kabellar qalqon ichida 2 ta ulangan … Bu meni aqldan ozdirdi !!!

6 -qadam: Uyda …

Uyda …
Uyda …
Uyda …
Uyda …

Batareya ushlagichini, servo va RJ45 ulagichini o'rnatish uchun etarli joy.

7 -qadam: aylanuvchi stol bo'lsin …

Aylansin
Aylansin
Aylansin
Aylansin
Aylansin
Aylansin
Aylansin
Aylansin

Maqsad, uni quyoshga qaratish …

Qaytish qobiliyatiga ega bo'lish uchun men o'q sifatida uzun vintni ishlatardim, ozgina yong'oq va ikkita bilya rulmanli …

Hozirgacha men SG90 servosidan foydalanardim (moment: 4,8 V da 1,8 kg/sm).

Uyni (va uning bir necha grammini) aylantirish kifoya. Boshqa tomondan, men uning plastmassa tishli qutilari uzoq vaqt davomida mening mintaqamda tez -tez esayotgan shamollarga qarshilik ko'rsatishiga amin emasman.

Men boshqasini buyurtma qildim (MG995 moment: 9,4 kg/sm 4.8v), unchalik qimmat emas, lekin metall tishli.

Men buni qabul qilganimdan keyin nima qilishim kerak: men uning kelganini xabar berish uchun ulangan pochta qutimga tayanaman!

8 -qadam: Ba'zi testlar

Image
Image

Bir nechta eslatmalar:

Bu eskiz faqat servo holatini boshqarishga ruxsat berish uchun kunduzi soatlarning o'zgarishiga taqlid qilish uchun.

  • SG90 bilan: qo'shimcha ehtiyojlar yo'q, u batareya boshqaruvchisidan keladigan OUT kuchlanish bilan ishlashi mumkin.
  • Ammo, MG 995 bilan:

    • Burilishning umumiy burchagi bir xil emas (kengroq): Men uni kamaytirish uchun qo'shimcha funktsiyadan foydalanishim kerak edi (Servo_Delta ()).
    • Servoga etarlicha kuchlanishni ta'minlash uchun DC/DC bosqichi kerak … davom ettirish…

/*

- SG90 bilan TEST: qo'shimcha ehtiyojlar yo'q, u batareyani nazorat qilish moslamasidan chiquvchi kuchlanish bilan ishlashi mumkin - MG 995 uchun: - Servo_Delta () funktsiyasidan foydalaning … - Servoga etarli kuchlanishni ta'minlash uchun shahar/shaharga o'tish kerak. davom ettiriladi: */ #include bool Logs = true; Xizmat ko'rsatish xizmati; #define PIN_SERVO D2 // servo holat: 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 eski; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Jurnallar) 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 (indeks); if (Logs) Serial.print ("Moslashtirilgan qiymat:"); if (Jurnallar) Serial.println (Servo_Delta (indeks)); kechikish (200); //myservo.write(Servo_Delta(indeks)); myservo.write (indeks); } kechiktirish (15); myservo.write (Arr_Servo_Pos [i-7]); // datach myservo.detach () chayqalishidan saqlanish uchun oxirgi qiymatni yana yozing; }}} kechikish (2000); }} int Servo_Delta (int qiymati) {int Temp_val; Temp_val = (qiymati*0,80) +9; qaytish Temp_val; }

9 -qadam: Kichik uy

Kichik uy
Kichik uy
Kichik uy
Kichik uy
Kichik uy
Kichik uy

Yuqorida aytib o'tganimdek, menda 3D printer yo'q edi. Men eski sabzavotli sandiqdan foydalanishga qaror qildim …

Balki bu uzoq ob -havoga chiday olmaydi, lekin o'sha paytga kelib men boshqa echimni (yoki 3D -printerga ega bo'lgan do'stimni) ko'rib chiqishga vaqt topardim: yog'ochni himoya qilish uchun men hamma joyga ko'p lak qo'shdim …

Siz "chiroyli pardalar" ni ko'rishingiz mumkin … Xotiningizdan ishni bajarishni so'raganingizda shunday bo'ladi ^^

10 -qadam: eskiz

Davom etmoqda … Lekin barqaror ko'rinadi

Men hali ham kod ustida ishlayapman: chunki bu aniq versiya emas, sizning sharhlaringiz / maslahatlaringiz xush kelibsiz;-)

Ba'zi izohlar:

  • Bu kodda juda ko'p kechikishlar (): bu Lolinning qulab tushishiga yo'l qo'ymaslik uchun, ayniqsa boshlang'ich tarmoqni to'xtatishda …
  • Men quyosh azimutini olishning oson va ishonchli usulini topa olmadim: shuning uchun men o'zim kuzatganimga muvofiq servo qiymatini o'rnatdim … Sizda buni olishning yaxshi (va oddiy) usuli bor, qiziqaman! Balki. bu erda o'qish uchun trek, hatto men onlayn API -ni afzal ko'rsam ham, menga sana, soat va geografik joylashuvga ko'ra azimut beradi …
  • Uyqu texnikasi haqida: Lolin 32 bitli Tensilica protsessori bo'lgani uchun, uning 32 bitli belgisiz tamsayı uchun maksimal qiymati 4294967295 … keyin, chuqur uyqu oralig'iga maksimal 71 daqiqa vaqt beradi. Shuning uchun men ko'p marta 60 daqiqa uxlayman.

Tahrir qilish - 10.08.2018:

Men servoda juda ko'p jo'shqin harakatlar borligini aniqladim, ayniqsa biriktirishdan oldin (), detach () va har safar Lolin deepSleep () dan uyg'onganidan oldin.

Bir oz ko'proq ma'lumotlar jadvalini o'rganayotganda, men ikkita narsani angladim:

  • Lolin ma'lumotlar sahifasida D4 chiqishi allaqachon BUILTIN_LED bilan ulangan …
  • ESP8266ex ma'lumotlar jadvalida biz D4 chiqishi UART 1/U 1 TXD (universal asenkron qabul qiluvchi uzatuvchi) sifatida ishlatilishini bilib olamiz. Bundan tashqari, ushbu UART1 jurnalni chop etish uchun ishlatilgan.

Ushbu ma'lumotni o'qib, men D4 chiqishi, ayniqsa servo dvigatelni boshqarish yaxshi emasligini angladim!

Shunday qilib, endi servomotorni boshqarish uchun ishlatiladigan chiqish D2, quyida keltirilgan kod mos ravishda yangilandi.

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

Sanani yaratish sanasi: 08/Sana mise prod: 08/Versiya: 0.9.4 IDE Arduino versiyasi: 1.8.6 Yuklash tezligi: 921600 "LOLIN (WEMOS) D1 R2 va mini" Carte physique ishga: LOLIN (WEMOS) D1 R2 mini -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analog kirish, maksimal 3.3V kirish A0 taranglik D0 IO GPIO16 Connecté à RST (uyquga to'kish) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k tortish GPIO0 D4 IO, 10k tortish, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Reed releve 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 RST ulanishini tiklash.sleep) ************************************/ #incolle bool Logs = true; // wifi const char* ssid = "LOL"; const char* parol = "LOL"; IPAddress ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IP -manzil shlyuzi (192, 168, 000, 000); IPAddress pastki tarmog'i (255, 255, 000, 000); WiFiClient mijozi; // Servo #include #define PIN_SERVO D2 Servo myservo; // servo pozitsiyasi: 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 #PIN_SWITCH_OUT D5 baytini belgilang Old_Switch_State_OUT; bayt Switch_State_OUT; #PIN_SWITCH_IN_PARCEL D6 baytini belgilang Old_Switch_State_IN_PARCEL; bayt Switch_State_IN_PARCEL; #PIN_SWITCH_IN_LETTERni belgilang D7 bayt Old_Switch_State_IN_LETTER; bayt Switch_State_IN_LETTER; imzosiz uzun switchPressTime; const imzosiz uzoq DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Sizning MQTT manzilingiz"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (mijoz); char MQTT_Message_Buff [70]; MQTT_Pub_String qatori; // kuchlanish suzuvchi vcc; // NTP #vaqtni o'z ichiga olmaydi; int Old_Time = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; void setup () {Serial.begin (115200); tarmoq (haqiqiy); pinMod (PIN_SWITCH_OUT, INPUT_PULLUP); Old_Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); pinMod (PIN_SWITCH_IN_LETTER, INPUT_PULLUP); Old_Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); pinMod (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Old_Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); SendBatteryLevel (); tarmoq (noto'g'ri); // NTP ni sozlash tnow = vaqt (nullptr); Int_Heures = String (ctime (& tnow)). Pastki satr (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Pastki satr (14, 16).toInt (); // Kechasi uxlab qoling, agar (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("daqiqa")); uyqu (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Pastki satr (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Pastki satr (14, 16).toInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Pastki satr (11, 13)); //Serial.println (String (ctime (& tnow)). Pastki satr (11, 13).toInt ()); // Servo boshqaruvi, agar (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Jurnallar) 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 (Jurnallar) Serial.println (indeks); kechikish (200); myservo.write (indeks); } kechiktirish (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // myservo.detach () ni ajratganda, chayqalib ketmaslik uchun oxirgi qiymatni yana yozing; } tarmoq (haqiqiy); SendBatteryLevel (); tarmoq (noto'g'ri); }}} // Agar uxlasa, shanba kuni 13 soatdan keyin if ((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); agar (Jurnallar) Serial.println ("daqiqa)"); uyqu (Int_Sleep_Duration - Int_Minutes); } // Agar uxlasangiz, yakshanba if (String (ctime (& tnow)). Substring (0, 3) == "Quyosh") {if (Jurnallar) Serial.print ("Kutish to'kib tashlang dimanj ("); agar (jurnallar) Serial.print (Int_Sleep_Duration - Int_Minutes); agar (jurnallar) Serial.println ("daqiqa")); uxlash (Int_Sleep_Duration - Int_Minutes); } // Qamishlarni boshqarish 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 ("kurer aloqadorligi!"); tarmoq (haqiqiy); kechikish (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); kechikish (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); kechikish (5000); tarmoq (noto'g'ri); }} 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 ("kurer kelsa!"); tarmoq (haqiqiy); kechikish (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Kuryer"); kechikish (5000); tarmoq (noto'g'ri); }} 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é!"); tarmoq (haqiqiy); kechikish (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); kechikish (5000); tarmoq (noto'g'ri); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {kechiktirish (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Jurnallar) Serial.println ("\ tTensionensionée:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); kechikish (5000); } bo'sh uyqu (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void tarmoq (bool UpDown) {if (UpDown) {Serial.print ("Tarmoqni ishga tushirish"); WiFi.forceSleepWake (); kechikish (1); // WIFI WiFi.config boshlang'ich (ip, dns, shlyuz, pastki tarmoq); WiFi.begin (ssid, parol); while (WiFi.status ()! = WL_CONNECTED) {kechiktirish (500); Serial.print ("."); } kechikish (5000); Serial.println ("."); Serial.print ("\ tConnected - IP -manzil:"); Serial.println (WiFi.localIP ()); // boshlang'ich MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // NTP Serial.print -ni ishga tushiring ("\ tTime Synch."); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0/3 ", 0); while (vaqt (nullptr)) <= 100000) {Serial.print ("."); Kechiktirish (100);} Serial.println (".");} Boshqa {Serial.println ("Tarmoq to'xtashi."); WiFi.disconnect (); kechikish (1000); WiFi.mode (WIFI_OFF); kechiktirish (1000); WiFi.forceSleepBegin (); kechiktirish (1);}} bekor qayta ulanish () {while (! ClientMQTT.connected ()) {Serial.print (" / tMQTT ulanishi urinilmoqda… "); // Ulanish urinishi, agar (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" ulangan ");} boshqa {Serial.print (" muvaffaqiyatsiz, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("5 soniyadan keyin yana urinib ko'ring"); // Kechiktirishni qayta urinishdan oldin 5 soniya kuting (5000);}}} bo'sh MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) qayta ulanish (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tMQTTga ma'lumot yuborish …"); MQTT_Pub_String = "{" idx / ":" + String (Int_IDX) + ", \" Batareya / ":" + String (vcc, 0) + ", \" n qiymat / ":" + N_Value + ", \" bahosi / ": \" " + S_Value +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

11 -qadam: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

Domoticzda:

Umumiy foydalanish uchun:

  • Ikkita "qo'g'irchoq (hech narsa qilmaydi, virtual kalitlarga ishlating") yarating:

    1. Harflar uchun birinchi…
    2. Paket uchun ikkinchi…
  • Ularning har biri uchun bildirishnomalarni shaxsiylashtirish;
  • Albatta, siz Tegegram tokenini sozlashingiz kerak.

Majburiy emas:

Batareyaning zaryadlanish darajasini nazorat qilish uchun "Utility sensor" ni qo'shishingiz mumkin.

Maslahatlar: bu erda siz ko'plab bepul maxsus ikonkalarni topishingiz mumkin …

12 -qadam: Xulosa

Xulosa
Xulosa
Xulosa
Xulosa

Umid qilamanki, bu ko'rsatma sizga yordam beradi:

  • o'zingiz bog'langan pochta qutisini qilishingiz kerakmi;
  • yoki faqat sizning loyihalaringiz uchun ba'zi g'oyalarni berish uchun!

Agar sizda takomillashtirish bo'yicha fikrlaringiz bo'lsa, men tinglayman!

PS: ingliz tilim uchun uzr, Google tarjimasi menga juda yordam beradi, lekin, ehtimol, mukammal emas;-)

Tavsiya: