Satura rādītājs:

Pievienotā pastkastes saules enerģija: 12 soļi (ar attēliem)
Pievienotā pastkastes saules enerģija: 12 soļi (ar attēliem)

Video: Pievienotā pastkastes saules enerģija: 12 soļi (ar attēliem)

Video: Pievienotā pastkastes saules enerģija: 12 soļi (ar attēliem)
Video: Меня вычислили. Поход в дождь. Рыбалка у землянки. Батл. Фонарь KilNex. 2024, Jūlijs
Anonim
Pieslēgta pastkastīte ar saules enerģiju
Pieslēgta pastkastīte ar saules enerģiju
Pieslēgta pastkastīte ar saules enerģiju
Pieslēgta pastkastīte ar saules enerģiju

Otrajā Ible es aprakstīšu jums savus darbus par manu savienoto pastkastīti.

Izlasot šo pamācību (un daudzas citas) un tā kā mana pastkastīte nav manas mājas tuvumā, es vēlējos iedvesmot mani no Open Green Energy darbiem, lai savienotu manu pastkastīti ar savu Domoticz serveri.

Mērķi

  • Telegramma jums paziņo, kad nāk vēstules;
  • Telegram jums jāinformē par piegādi;
  • Pārbaudiet, vai vēstules / pakas ir paņemtas.

Mans galvenais ierobežojums

Pastkastīte atrodas salīdzinoši tālu no mājas, un nebija iespējams līdz tai pavilkt elektrisko kabeli, lai kaut ko barotu.

Man bija jāatrod cits risinājums: saules enerģija bija labs risinājums!

BOM

  • Raspberry Pi (lai uzņemtu MQTT un Domoticz daļas - šeit nav aprakstīts)
  • Telegram Bot konts
  • Lolin D1 mini (vai Wemos …)
  • Plug-In skrūvju spaiļu bloka savienotājs
  • TP4056 litija akumulatora uzlādes panelis
  • 6V 2W fotoelektriskais saules panelis
  • Li-Ion 18650 akumulators
  • Li-Ion akumulatora turētājs
  • PCB DIY lodēšanas vara prototipa iespiedshēmas plate
  • Analogais servo SG90
  • 3 niedru slēdži (viens burtiem, viens paciņai un viens izrakstīšanai)
  • Magnēti
  • Daži vadi
  • Koka kaste: Tā kā man nebija neviena 3D printera, es sapratu savu mazo māju ar koku, lai saņemtu elektronikas detaļas …
  • Rezerves Ethernet kabelis
  • RJ45 Ethernet savienotāja sadalīšanas panelis

  • J-B Weld
  • Daži lodīšu gultņi
  • Skrūves, uzgriežņi, paplāksnes

1. darbība. Globālā shēma

Globālā shēma
Globālā shēma
Globālā shēma
Globālā shēma

Skaisti zīmējumi vienmēr ir labāki par garām runām;-)

Bet daži skaidrojumi par MQTT, Domoticz un Telegram vienmēr ir laipni gaidīti!

MQTT (Message Queuing Telemetry Transport) ir ziņojumapmaiņas protokols, ko izmanto, lai nosūtītu datus starp ierīcēm un citām IoT (lietu interneta) sistēmām.

Neiedziļinoties pārāk daudzās detaļās, tā darbība balstās uz principu, ka klienti izveido savienojumu ar serveri. MQTT klienti tiek saukti par abonentiem vai izdevējiem, bet serveri - par starpniekiem.

Šajā pamācībā es izmantoju tikai vienu izdevēju - Lolin, kas pieslēgts manai pastkastītei: kad vēstules vai pakas tiek atklātas, izmantojot pastkastītē uzstādītos niedru kontaktus (shematisks 1. solis), tā nosūta brokerim MQTT ziņojumu, izmantojot WIFI (2. darbība)).

Brokera daļu veic Mosquitto, kas ir instalēts Raspberry Pi (3. darbība).

Par Domoticz:

Kā aprakstīts avota lapā, Domoticz ir "mājas automatizācijas sistēma", kas ļauj kontrolēt dažādas ierīces un saņemt ievadi no dažādiem protokoliem: MQTT ir viens no atbalstītajiem protokoliem …

Tiklīdz informācija nonāk pie viņa (4. darbība), jūs varat definēt notikumus: Pastkastes gadījumā es izvēlējos nosūtīt paziņojumu par telegrammu (5. darbība).

Visbeidzot, Telegram klients ir konfigurēts manā tālrunī (un arī manai sievai! - 6. darbība): gala mērķis ir sasniegts …

2. solis: Shematic / elektroinstalācija

Shematic / elektroinstalācija
Shematic / elektroinstalācija
Shematic / elektroinstalācija
Shematic / elektroinstalācija
Shematic / elektroinstalācija
Shematic / elektroinstalācija
Shematic / elektroinstalācija
Shematic / elektroinstalācija

Viens vārds par lasīto analogo:

Pirmkārt, pēc dažiem pētījumiem es pamanīju, ka Lolin mini D1 (kā vecais Wemos) ir iebūvēts sprieguma dalītājs tapai A0 (ņemot vērā 220KΩ R1 un 100KΩ R2 - skatiet saites labajā pusē), ļaujot 3,2 volti kā maksimālo analogo ieejas spriegumu.

Ņemot vērā, ka maksimālais izejas spriegums no akumulatora ir 4, 2v (ierobežo lādēšanas panelis), un teorētiski, lai palielinātu maksimālo ieejas sprieguma diapazonu, jums jāpievieno tikai ārējs rezidents (sērijā ar R1). Tad, ja pievienosit 100 000 sērijas ar R1, jums būs šāds rezultāts:

Vin * R1/(R1+R2) = Vout

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

Savā ķēdē es izvēlējos pielāgot tā vērtību, tāpēc es esmu izvēlējies savā ķēdē izmantot regulējamu rezistoru: varbūt tas jums būs bezjēdzīgi, bet manā situācijā es iestatīju tā vērtību aptuveni 10KΩ saskanīga vērtība Domoticzā …

Ņemiet vērā, ka A0 tapai ir 10 bitu izšķirtspēja: tas nozīmē, ka jūsu skicē jūsu analogā nolasītā vērtība atgriezīs vērtību no 0 līdz 1024.

Tā kā es vēlos nosūtīt procentuālo vērtību Domoticz, analogās lasīšanas rezultāts ir jāsadala ar 10, 24.

3. darbība. Enerģijas pārvaldība

Enerģijas pārvaldība
Enerģijas pārvaldība
Enerģijas pārvaldība
Enerģijas pārvaldība

Protams, es vēlos, lai pastkastīte būtu autonoma. Lai sasniegtu savu mērķi, es izmantoju šādus elementus:

  • Li-Ion 18650 akumulators ar 4000 mAh;
  • saules panelis, kas var piegādāt 6V / 2W;
  • TP4056 litija akumulatora uzlādes panelis.

Lai izvēlētos vispiemērotāko saules paneli, es apskatīju dažus piemērus, tostarp šo: šajā piemērā tiek izmantots 5,5 V / 0,66 W saules panelis, kas, iespējams, ir pietiekams šim nolūkam. Manā gadījumā un tā kā ESP8266 ir jāpaliek ieslēgtam dienas laikā un jāspēj darbināt servomotoru, lai māja būtu vērsta pret sauli, es izvēlējos jaudīgāku saules paneļa modeli (6V / 2W) - tas arī ļauj lai sagaidītu tumšos ziemas periodus un mākoņainās dienas;-)

Turklāt, lai maksimāli samazinātu enerģijas patēriņu, esmu izvēlējies šādus scenārijus:

  • zinot, ka pastnieks pagājis tikai no pulksten 7:00 līdz 20:00, ESP tiek ievietots DeepSleep pārējā naktī;
  • Faktors nepāriet no sestdienas pusdienlaika līdz pirmdienas rītam: šajā periodā ESP tiek ieslēgts arī DeepSleep režīmā.
  • Laika posmā no pulksten 7:00 līdz 20:00 un, lai samazinātu enerģijas patēriņu, es vienkārši atspējoju ESP tīkla saskarni: tīkls tiek restartēts tikai pēc pakas vai vēstules ierašanās, tikai pietiekami daudz laika, lai nosūtītu informāciju uz Domoticz. Man nav jābrīdina nekavējoties, un dažas papildu sekundes, kas nepieciešamas tīkla interfeisa restartēšanai, nav kaitīgas!

Dažas vērtības par patēriņu dažādos režīmos, ko izmantoju Lolin - skatiet datu lapu, 18. lpp.

  • Normālā režīmā (strādājot ar RF) enerģijas patēriņš var palielināties līdz 170 mA! Tā kā mana pastkastīte atrodas apmēram 50 metru attālumā no manas mājas (un pie WIFI signāla robežas …), es domāju, ka savienojuma uzturēšanai izmantotā jauda ir maksimālā …
  • Modema miega režīmā enerģijas patēriņš samazinās līdz 15 mA. Bet, kā redzams datu lapā, tas pilnībā neapturēja modemu, jo ESP "uztur Wi-Fi savienojumu bez datu pārraides".
  • Dziļā miegā jauda samazinās līdz 20uA.

Lai būtu pārliecināts, ka wifi nevajadzīgi nepaliek aktīvs, es gribēju to atspējot, izmantojot šādas komandas. Ņemiet vērā daudzos aizkaves () zvanus … Bez tiem ESP avārija:

WiFi.disconnect ();

kavēšanās (1000); WiFi.mode (WIFI_OFF); kavēšanās (1000); WiFi.forceSleepBegin (); kavēšanās (1);

Kopumā pēc vairāku dienu darbības šķiet, ka tas darbojas un jo īpaši pareizi ielādējas:

  • tas ļauj man katru stundu darbināt servomotoru, lai novietotu māju pret sauli;
  • Es varu arī atļauties katru stundu atkārtoti aktivizēt tīkla saskarni, lai nosūtītu Domoticz akumulatora uzlādes līmeni.

4. solis: magnētu un niedru kontaktu uzstādīšana

Magnētu un niedru kontaktu uzstādīšana
Magnētu un niedru kontaktu uzstādīšana
Magnētu un niedru kontaktu uzstādīšana
Magnētu un niedru kontaktu uzstādīšana
Magnētu un niedru kontaktu uzstādīšana
Magnētu un niedru kontaktu uzstādīšana

Kā parasti, es izmantoju savu Proxxon, lai koka gabalā noformētu niedru vietu.

Lai niedru kontaktu nostiprinātu caurumā, es izmantoju nedaudz J-B metinājuma.

Sūtījumam un iznākumam nedaudz lentes, nedaudz zāģa zāģa, un mērķis ir sasniegts!

Manas pastkastītes priekšrocība ir tā, ka tā ir metāla, kas atvieglo magnētu pozicionēšanu, lai tā pareizi mijiedarbotos ar niedru kontaktiem.

5. solis: izveidojiet savienojumu ar manu mazo māju

Pievienojieties manai mazajai mājai
Pievienojieties manai mazajai mājai
Pievienojieties manai mazajai mājai
Pievienojieties manai mazajai mājai

Lai varētu ērti pieslēgt un atvienot kabeli, kas iet uz niedru kontaktiem no pastkastītes uz māju, es izvēlējos izmantot Ethernet savienotāju.

Jūs varat izmantot šo modeli vai, tāpat kā es, izmantot veco Arduino Ethernet vairogu, kas karājas manās atvilktnēs: Viņš necieta, viņš bija drosmīgs zāģa priekšā, viņa nāve bija ātra ^^

Tikai vārds par šo Arduino Ethernet vairogu: negaidiet, ka būs 8 atsevišķi draiveri … Kabeļi ir savienoti pārī ar 2 vairoga iekšpusē … Tas mani pārāk ilgi tracināja !!!

6. darbība: mājā…

Mājā …
Mājā …
Mājā …
Mājā …

Pietiekami daudz vietas, lai nostiprinātu akumulatora turētāju, iestatītu servo un RJ45 femal savienotāju.

7. solis: ļaujiet tam pagriezties …

Ļaujiet tam pagriezties …
Ļaujiet tam pagriezties …
Ļaujiet tam pagriezties …
Ļaujiet tam pagriezties …
Ļaujiet tam pagriezties …
Ļaujiet tam pagriezties …
Ļaujiet tam pagriezties …
Ļaujiet tam pagriezties …

Mērķis ir turēt to pret sauli…

Lai būtu iespēja pagriezties, es kā asi izmantoju garu skrūvi ar dažiem uzgriežņiem un diviem lodīšu gultņiem …

Līdz šim es izmantoju servo SG90 (griezes moments: 1,8 kg/cm pie 4,8 v).

Lai pagrieztu māju (un tās dažus gramus), pietiek. No otras puses, es neesmu pārliecināts, ka tā plastmasas pārnesumi ilgstoši pretojas biežajām vēja brāzmām, kādas ir manā reģionā.

Es pasūtīju vēl vienu (MG995 griezes moments: 9,4 kg/cm pie 4,8 v), arī ne pārāk dārgu, bet ar metāla pārnesumiem.

Tā būs nākamā rīcība, kad es to saņemšu: es paļaujos uz savu pievienoto pastkastīti, lai paziņotu man par viņa ierašanos!

8. solis: daži testi

Image
Image

Dažas piezīmes:

Šī skice ir tikai, lai atdarinātu stundu izmaiņas dienas laikā, lai es varētu kontrolēt servo stāvokli.

  • Ar SG90: bez papildu vajadzībām, tas var darboties ar OUT spriegumu, kas nāk no akumulatora kontrollera.
  • Bet ar MG 995:

    • Kopējais rotācijas leņķis nav vienāds (plašāks): man bija jāizmanto papildu funkcija, lai to samazinātu (Servo_Delta ()).
    • Nepieciešams līdzstrāvas/līdzstrāvas pastiprinājums, lai nodrošinātu pietiekamu spriegumu servo … lai turpinātu …

/*

- TESTS ar SG90: bez papildu vajadzībām, tas var darboties ar OUT spriegumu, kas nāk no akumulatora kontrollera - FOR MG 995: - izmantojiet Servo_Delta () funkciju… - Nepieciešams līdzstrāvas/līdzstrāvas pastiprinājums, lai nodrošinātu pietiekamu spriegumu servo tiek turpināts: */ #include bool Logs = true; Servo myservo; #define PIN_SERVO D2 // servo pozīcija: 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 vecs; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; ja (i == 7) {ja (žurnāli) 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]; indekss 7 && i = Arr_Servo_Pos [i-7]; indekss-) {if (Logs) Serial.println (indekss); ja (žurnāli) Serial.print ("Pielāgotā vērtība:"); ja (žurnāli) Serial.println (Servo_Delta (indekss)); kavēšanās (200); //myservo.write(Servo_Delta(index)); myservo.write (rādītājs); } kavēšanās (15); myservo.write (Arr_Servo_Pos [i-7]); // uzrakstiet vēlreiz pēdējo vērtību, lai izvairītos no saraustītām kustībām, kad datach myservo.detach (); }}} kavēšanās (2000); }} int Servo_Delta (int vērtība) {int Temp_val; Temp_val = (vērtība*0,80) +9; atgriezt Temp_val; }

9. solis: Mazā māja

Mazā māja
Mazā māja
Mazā māja
Mazā māja
Mazā māja
Mazā māja

Kā jau teicu iepriekš, es nesaņēmu nevienu 3D printeri. Tāpēc es nolemju izmantot veco dārzeņu kasti …

Varbūt tas nenotiks ilgi, bet līdz tam man būtu laiks apsvērt citu risinājumu (vai draugu, kuram pieder 3D printeris): lai aizsargātu koksni, es visur pievienoju daudz laku…

Jūs varat redzēt "skaistos aizkarus" … Tas notiek, kad jūs lūdzat sievu paveikt darbu ^^

10. solis: Skice

Notiek… Bet šķiet stabils

Es joprojām strādāju pie koda: tā kā šī nav galīgā versija, jūsu komentāri / padomi ir laipni gaidīti;-)

Dažas piezīmes:

  • Kodā ir daudz kavējumu (): tas ir paredzēts, lai izvairītos no daudzām Lolin avārijām, it īpaši apturot sākuma tīklu …
  • Es neatradu vienkāršu un uzticamu veidu, kā iegūt saules azimutu: tāpēc es noteicu servo vērtību atkarībā no tā, ko es novēroju … Man ir labs (un vienkāršs) veids, kā to iegūt, es esmu ieinteresēts! Varbūt ceļš, ko šeit mācīties, pat ja es dodu priekšroku tiešsaistes API, man azimuts tiek piešķirts tieši atbilstoši datumam, stundai un ģeogrāfiskajam stāvoklim …
  • Par miega tehniku: tā kā Lolin ir 32 bitu Tensilica procesors, tā maksimālā vērtība 32 bitu neparakstītam veselam skaitlim ir 4294967295… tad tas dod apmēram 71 minūti dziļā miega intervālam. Tāpēc es lieku gulēt l'ESP daudzas reizes apmēram 60 minūtes …

EDIT - 08.10.2018.:

Es atklāju, ka servo ir daudz saraustītu kustību, it īpaši pirms piestiprināšanas (), atdalīšanās () un katru reizi, kad Lolin pamostas no deepSleep ().

Studējot nedaudz vairāk datu lapu, es sapratu divas lietas:

  • Lolin datu lapā D4 izeja jau ir savienota ar BUILTIN_LED…
  • ESP8266ex datu lapā mēs uzzinām, ka D4 izeja tiek izmantota kā UART 1/U 1 TXD (universālais asinhronā uztvērēja raidītājs). Ir arī norādīts, ka šis UART1 tiek izmantots žurnāla drukāšanai.

Izlasot šo informāciju, es sapratu, ka D4 izeja nav laba ideja, it īpaši, lai pārvaldītu servomotoru!

Tātad, tagad servomotora vadīšanai izmantotā izeja ir D2, tālāk esošais kods ir attiecīgi atjaunināts.

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

Datums: 08/Datums mise en prod: 08/Versija: 0.9.4 Versija IDE Arduino: 1.8.6 Augšupielādes ātrums: 921600 Veids pēc izvēles: "LOLIN (WEMOS) D1 R2 & mini" Kartes struktūra: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Tapas funkcija ESP-8266 Pin Utilization lokalizācija ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analogā ieeja, maks. 3.3V ieeja A0 Tension d'alimentaion D0 IO GPIO16 Connecté à RST (pour le deep.sleep) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo motors D3 IO, 10k Pull-up GPIO0 D4 IO, 10k pull-up, BUILTIN_LED GPIO2 D5 IO, SCK GPIO14 Niedru reljevs D6 IO, MISO GPIO12 Niedru lēte D7 IO, MOSI GPIO13 Niedru kolonna D8 IO, 10 k izvelkama, SS GPIO15 G Ground 5N 5V-3V3 3.3V 3.3V RST Reset RST Connecté à D0 (ielejiet dziļi.sleep) ***************************************/ #include bool Logs = true; // wifi const char* ssid = "LOL"; const char* parole = "LOL"; IPAdd ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress vārteja (192, 168, 000, 000); IPAddress apakštīkls (255, 255, 000, 000); WiFiClient klients; // Servo #include #define PIN_SERVO D2 Servo myservo; // servo pozīcija: 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}; // Niedres #define PIN_SWITCH_OUT D5 baits Old_Switch_State_OUT; baits Switch_State_OUT; #define PIN_SWITCH_IN_PARCEL D6 baits Old_Switch_State_IN_PARCEL; baits Switch_State_IN_PARCEL; #define PIN_SWITCH_IN_LETTER D7 baits Old_Switch_State_IN_LETTER; baits Switch_State_IN_LETTER; neparakstīts garš slēdzis PressTime; const unsigned long DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Tava MQTT adrese"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (klients); char MQTT_Message_Buff [70]; String MQTT_Pub_String; // Sprieguma pludiņš 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); tīkls (patiess); 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 (); tīkls (nepatiess); // NTP kopa tnow = laiks (nullptr); Int_Heures = String (ctime (& tnow)). Apakšvirkne (11, 13). ToInt (); Int_Minutes = String (ctime (& tnow)). Apakšvirkne (14, 16). ToInt (); // Deepsleep uz nakti, ja (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("minūtes")); gulēt (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP kopa tnow = laiks (nullptr); Int_Heures = String (ctime (& tnow)). Apakšvirkne (11, 13). ToInt (); Int_Minutes = String (ctime (& tnow)). Apakšvirkne (14, 16). ToInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Apakšvirkne (11, 13)); //Serial.println (String (ctime (& tnow)). Apakšvirkne (11, 13).toInt ()); // Servo vadība, ja (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]; indekss 7 && Int_Heures = Arr_Servo_Pos [Int_Heures-7]; index-) {if (Žurnāli) Serial.println (indekss); kavēšanās (200); myservo.write (rādītājs); } kavēšanās (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // uzrakstiet vēlreiz pēdējo vērtību, lai izvairītos no saraustītām kustībām, atvienojot myservo.detach (); } tīkls (patiess); SendBatteryLevel (); tīkls (nepatiess); }}} // Dziļi aizmigt, ja sestdiena pēc pulksten 13, ja ((String (ctime (& tnow)). Apakšvirkne (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)"); gulēt (Int_Sleep_Duration - Int_Minutes); } // Deepsleep if svētdien if Serial.print (Int_Sleep_Duration - Int_Minutes); ja (Logs) Serial.println ("minutes)"); gulēt (Int_Sleep_Duration - Int_Minutes); } // Niedru pārvaldība 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 ("kurjers attiecas!"); tīkls (patiess); kavēšanās (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); kavēšanās (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); kavēšanās (5000); tīkls (nepatiess); }} 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 ("kurjers ierodas!"); tīkls (patiess); kavēšanās (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Kurjers"); kavēšanās (5000); tīkls (nepatiess); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); ja (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); ja (Switch_State_IN_PARCEL == HIGH) {Serial.println ("colis arrivé!"); tīkls (patiess); kavēšanās (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); kavēšanās (5000); tīkls (nepatiess); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG)/10.24; ja (žurnāli) Serial.println ("\ tTension saslimšanas:" + virkne (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); kavēšanās (5000); } tukšs miegs (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } anulēts tīkls (bool UpDown) {if (UpDown) {Serial.print ("Tīkla sākums"); WiFi.forceSleepWake (); kavēšanās (1); // init WIFI WiFi.config (ip, dns, vārteja, apakštīkls); WiFi.begin (ssid, parole); while (WiFi.status ()! = WL_CONNECTED) {kavēšanās (500); Sērijas nospiedums ("."); } kavēšanās (5000); Sērijas.println ("."); Serial.print ("\ tSavienojums - IP adrese:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Init NTP Serial.print ("\ tLaika sinhronizācija."); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0/3 ", 0); while (laiks (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 savienojuma mēģinājums … "); // Mēģināt izveidot savienojumu, ja (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" connected ");} cits {Serial.print (" neizdevās, rc = "); Seriāls.print (ClientMQTT. {if (! ClientMQTT.connected ()) reconnect (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tSend info to MQTT …"); MQTT_Pub_String = "{" idx / ":" + virkne (Int_IDX) + ", \" Battery / ":" + String (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue / ": \" " + S_vērtība +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

11. solis: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

Domoticzā:

Vispārējai lietošanai:

  • Izveidojiet divus "Dummy (nedarīt neko, izmantojiet virtuālajiem slēdžiem)":

    1. Pirmais burtiem …
    2. Otrais par paku…
  • Katram no tiem personalizējiet paziņojumus;
  • Protams, jums ir jāiestata Tegegram marķieris.

Pēc izvēles:

Lai uzraudzītu akumulatora uzlādes līmeni, varat pievienot utilītas sensoru.

Padomi: šeit jūs varat atrast daudz bezmaksas pielāgotu ikonu …

12. solis. Secinājums

Secinājums
Secinājums
Secinājums
Secinājums

Ceru, ka šī pamācība jums palīdzēs:

  • vai izveidot savu savienoto pastkastīti;
  • vai vienkārši, lai sniegtu jums idejas saviem projektiem!

Ja jums ir idejas uzlabojumiem, es klausos!

PS: atvainojiet par manu angļu valodu, Google tulkojums man ļoti palīdz, bet, iespējams, nav ideāls;-)

Ieteicams: