Indholdsfortegnelse:

Connected Letterbox Solar Powered: 12 trin (med billeder)
Connected Letterbox Solar Powered: 12 trin (med billeder)
Anonim
Tilsluttet brevkasse Solar Powered
Tilsluttet brevkasse Solar Powered
Tilsluttet brevkasse Solar Powered
Tilsluttet brevkasse Solar Powered

For min anden Ible vil jeg beskrive dig mine værker om min tilsluttede brevkasse.

Efter at have læst denne Instructable (+ mange andre), og da min brevkasse ikke er i nærheden af mit hus, ville jeg inspirere mig til Open Green Energy's værker til at forbinde min brevkasse til min Domoticz -server.

Mål

  • Få råd fra Telegram, når der kommer breve;
  • Få råd fra Telegram, når en pakke kommer;
  • Tjek om bogstaverne / pakkerne er hentet.

Min største begrænsning

Postkassen er relativt langt fra huset, og det var umuligt at trække et elektrisk kabel op til det for at drive noget.

Jeg var nødt til at finde en anden løsning: solenergi var en god løsning!

Styklisten

  • Raspberry Pi (til at være vært for MQTT og Domoticz dele - ikke beskrevet her)
  • En Telegram Bot -konto
  • Lolin D1 mini (eller Wemos …)
  • Plug-In Skrue Terminal Block Connector
  • TP4056 Lithium Battery Charging Board
  • 6V 2W fotovoltaisk solcellepanel
  • Li-Ion 18650 batteri
  • Li-ion batteriholder
  • PCB DIY lodning kobber prototype printkort
  • Analog Servo SG90
  • 3 Reed Switchs (en til bogstaver, en til pakke og en til checkout)
  • Magneter
  • Nogle ledninger
  • Trækasse: Da jeg ikke fik nogen 3D -printer, indså jeg mit eget lille hus med træ til at modtage elektroniske dele …
  • Reserve Ethernet -kabel
  • RJ45 Ethernet Connector Breakout Board

  • J-B Weld
  • Nogle kuglelejer
  • Skruer, møtrikker, skiver

Trin 1: Global ordning

Global ordning
Global ordning
Global ordning
Global ordning

Smukke tegninger er altid bedre end lange taler;-)

Men et par forklaringer om MQTT, Domoticz og Telegram er altid velkomne!

MQTT (Message Queuing Telemetry Transport), er en meddelelsesprotokol, der bruges til at sende data mellem enheder og andre systemer i IoT (tingenes internet) verden.

Uden at gå ind for mange detaljer, er dens drift baseret på princippet om klienter, der opretter forbindelse til en server. I MQTT kaldes klienter Abonnent eller Publisher, og serveren kaldes Broker.

I denne instruktionsbog bruger jeg kun en udgiver, Lolin koblet til min brevkasse: når breve eller pakke registreres via rørkontakterne installeret i brevkassen (trin 1 i skematisk), sender den MQTT -besked over WIFI til mægleren (trin 2).

Broker -delen udføres af Mosquitto, som er installeret på Raspberry Pi (trin 3).

Om Domoticz:

Som beskrevet på kildesiden er Domoticz et "hjemmeautomatiseringssystem", der giver dig mulighed for at styre forskellige enheder og modtage input fra forskellige protokoller: MQTT er en af de understøttede protokoller …

Så snart oplysninger når ham (trin 4), kan du definere begivenheder: I tilfælde af brevkassen valgte jeg at sende en Telegram -meddelelse (trin 5).

Endelig er Telegram -klienten konfigureret på min telefon (og min kones også! - Trin 6): slutmålet er nået …

Trin 2: Skematisk / ledningsføring

Skematisk / ledningsføring
Skematisk / ledningsføring
Skematisk / ledningsføring
Skematisk / ledningsføring
Skematisk / ledningsføring
Skematisk / ledningsføring
Skematisk / ledningsføring
Skematisk / ledningsføring

Et ord om den analoge læser:

Først og fremmest bemærkede jeg efter nogle undersøgelser, at Lolin mini D1 (som den gamle Wemos), har indbygget en spændingsdeler til pin A0 (i betragtning af 220KΩ for R1 og 100KΩ for R2 - se til højre for det sammenkædede datablad), hvilket tillader 3,2 volt som maksimal analog indgangsspænding.

I betragtning af maksimal udgangsspænding fra batteriet er 4, 2v (begrænset af opladningskortet) og teoretisk set behøver du kun at tilføje en ekstern resitor (i serie med R1) for at øge det maksimale indgangsspændingsområde. Hvis du derefter tilføjer 100K i serie med R1, får du dette resultat:

Vin * R1/(R1+R2) = Vout

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

I mit kredsløb valgte jeg at være i stand til at justere dens værdi, derfor har jeg foretrukket at bruge en justerbar modstand i mit kredsløb: måske vil det være ubrugeligt for dig, men i min situation satte jeg dens værdi til omkring 10KΩ at have en sammenhængende værdi i Domoticz …

Bemærk, at A0 -stiften har 10 bit opløsning: dette betyder, at din analoge læsning i din skitse vil returnere en værdi mellem 0 og 1024.

Da jeg vil sende en procentværdi til Domoticz, skal jeg dividere det analoge læseresultat med 10, 24.

Trin 3: Strømstyring

Strømstyring
Strømstyring
Strømstyring
Strømstyring

Selvfølgelig ønsker jeg, at brevkassen skal være autonom. For at nå mit mål bruger jeg disse elementer:

  • et Li-Ion 18650 batteri på 4000mAh;
  • et solpanel, der kan levere 6V / 2W;
  • et TP4056 litiumbatteri opladningstavle.

For at vælge det mest egnede solpanel tog jeg et kig på nogle eksempler, herunder dette: I dette eksempel bruges et 5,5V / 0,66W solpanel og er sandsynligvis tilstrækkeligt til formålet. I mit tilfælde, og da ESP8266 skal forblive Tændt i løbet af dagen og skal kunne køre en servomotor for at holde huset ansigtet mod solen, valgte jeg en mere kraftfuld solcellepanelmodel (6V / 2W) - Det tillader mig også at foregribe mørke vinterperioder og overskyede dage;-)

Og for at reducere energiforbruget til det maksimale har jeg valgt følgende scenarier:

  • vel vidende, at postbudet kun var forbi mellem kl. 7 og 20, placeres ESP i DeepSleep resten af natten;
  • Faktoren passerer ikke mellem lørdag middag og mandag morgen: ESP er også placeret i DeepSleep -tilstand i denne periode.
  • I perioden mellem kl. 7 og 20, og for at reducere strømforbruget, deaktiverer jeg simpelthen ESP's netværksgrænseflade: netværket genstarter først ved ankomsten af en pakke eller et brev, lige nok tid til at sende oplysningerne til Domoticz. I behøver ikke at blive advaret med det samme, og de få ekstra sekunder, der er nødvendige for at genstarte netværksgrænsefladen, er ikke skadelige!

En vis værdi om forbrug i forskellige tilstande, som jeg bruger til Lolin - se på databladet, p18:

  • I normal tilstand (med RF -arbejde) kan strømforbruget stige til 170mA! Da min brevkasse er omkring 50 meter fra mit hus (og ved grænsen for WIFI -signalet …) formoder jeg, at strømmen, der bruges til at opretholde forbindelsen, er på sit maksimum …
  • I Modem-sleep falder strømforbruget til 15mA. Men som du kan se i databladet, stoppede det ikke helt modemet, da ESP "opretholder en Wi-Fi-forbindelse uden datatransmission".
  • I dyb søvn falder strømmen til 20uA.

For at være sikker på, at wifi ikke forbliver aktiv unødigt, foretrak jeg at deaktivere det med følgende kommandoer. Bemærk de mange forsinkelser () opkald … Uden dem, ESP nedbrud:

WiFi.disconnect ();

forsinkelse (1000); WiFi.mode (WIFI_OFF); forsinkelse (1000); WiFi.forceSleepBegin (); forsinkelse (1);

Generelt ser det ud til, at det efter flere dages drift virker og især at indlæse korrekt:

  • dette giver mig mulighed for at køre servomotoren hver time for at placere huset mod solen;
  • Jeg kan også tillade mig selv at genaktivere netværksgrænsefladen hver time for også at sende batteriopladningsniveauet til Domoticz.

Trin 4: Installation af magneter og sivkontakter

Installation af magneter og sivkontakter
Installation af magneter og sivkontakter
Installation af magneter og sivkontakter
Installation af magneter og sivkontakter
Installation af magneter og sivkontakter
Installation af magneter og sivkontakter

Som sædvanlig brugte jeg min Proxxon til at forme sivets sted i et stykke træ.

For at fikse rørkontakten i sit hul brugte jeg en lille smule J-B svejsning.

Til pakken og output, et lille stykke tape, en lille smule hacksav, og målet er nået!

Fordelen ved min brevkasse er, at det er metal, som letter placeringen af magneter, så det interagerer korrekt med sivkontakter.

Trin 5: Opret forbindelse til My Little House

Opret forbindelse til My Little House
Opret forbindelse til My Little House
Opret forbindelse til My Little House
Opret forbindelse til My Little House

For let at kunne tilslutte og frakoble kablet, der går til rørkontakterne fra brevkassen til huset, valgte jeg at bruge et Ethernet -stik.

Du kan bruge denne model eller, ligesom jeg, bruge et gammelt Arduino Ethernet -skjold, der hænger i mine skuffer: Han led ikke, han var modig foran saven, hans død var hurtig ^^

Bare et ord om dette Arduino Ethernet -skjold: forvent ikke at have 8 separate drivere … Kabler er parret med 2 inde i skjoldet … Det gjorde mig tosset for længe !!!

Trin 6: I huset …

I huset …
I huset …
I huset …
I huset …

Lige nok sted til at reparere batteriholderen, indstille servoen og RJ45 femalstikket.

Trin 7: Lad det drejeskive …

Lad det drejeskive …
Lad det drejeskive …
Lad det drejeskive …
Lad det drejeskive …
Lad det drejeskive …
Lad det drejeskive …
Lad det drejeskive …
Lad det drejeskive …

Målet er at holde det vendt mod solen …

For at lade evnen til at være drejelig brugte jeg en lang skrue som en aksel, med nogle møtrikker og to kuglelejer …

Indtil nu har jeg brugt SG90 servo (drejningsmoment: 1,8 kg/cm ved 4,8 v).

At vende huset (og dets få gram) er nok. På den anden side er jeg ikke sikker på, at dets plastgear i lang tid modstår de hyppige vindstød, der er i min region.

Jeg bestilte en anden (MG995 drejningsmoment: 9,4 kg/cm ved 4,8 v), heller ikke særlig dyrt, men med metalgear.

Det vil være den næste ting at gøre, når jeg har modtaget den: Jeg stoler på min tilsluttede brevkasse for at underrette mig om hans ankomst!

Trin 8: Nogle tests

Image
Image

Et par noter:

Denne skitse er kun for at efterligne ændringer af timer i løbet af dagen, så jeg kan styre servoens position.

  • Med SG90: ingen ekstra behov, kan den fungere med OUT -spændingen fra batteristyringen.
  • Men med MG 995:

    • Den samlede rotationsvinkel er ikke den samme (bredere): Jeg var nødt til at bruge en ekstra funktion for at reducere den (Servo_Delta ()).
    • Har brug for en DC/DC Step up for at levere nok spænding til servoen … for at blive fortsat …

/*

- TEST med SG90: ingen ekstra behov, den kan fungere med OUT -spændingen fra batteristyringen - TIL MG 995: - brug Servo_Delta () -funktionen … - Har brug for en DC/DC Step up for at levere nok spænding til servoen … for at fortsættes: */ #include bool Logs = true; Servo myservo; #define PIN_SERVO D2 // servoposition for: 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 gamle; int pos; int i; ugyldig opsætning () {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 (indeks); hvis (Logs) Serial.print ("Justeret værdi:"); hvis (Logs) Serial.println (Servo_Delta (indeks)); forsinkelse (200); //myservo.write(Servo_Delta(index)); myservo.write (indeks); } forsinkelse (15); myservo.write (Arr_Servo_Pos [i-7]); // skriv igen den sidste værdi for at undgå rykvise bevægelser, når datach myservo.detach (); }}} forsinkelse (2000); }} int Servo_Delta (int værdi) {int Temp_val; Temp_val = (værdi*0,80) +9; returnere Temp_val; }

Trin 9: Det lille hus

Det lille hus
Det lille hus
Det lille hus
Det lille hus
Det lille hus
Det lille hus

Som jeg fortalte før, fik jeg ingen 3D -printer. Så jeg beslutter mig for at bruge en gammel grøntsagskasse …

Måske holder det ikke længe, men på det tidspunkt ville jeg have tid til at overveje en anden løsning (eller en ven, der ejer en 3D -printer): For at beskytte træet tilføjede jeg en masse lak overalt …

Du kan se de "smukke gardiner" … Det er det, der sker, når du beder din kone om at gøre jobbet ^^

Trin 10: Skitsen

I gang… Men synes at være stabil

Jeg arbejder stadig på koden: da dette ikke er en endelig version, er dine kommentarer / råd velkomne;-)

Nogle bemærkninger:

  • De er mange forsinkelser () i koden: dette er for at undgå meget nedbrud af Lolin, især når man stopper et startnetværk …
  • Jeg fandt ikke en let og pålidelig måde at få solasimuten på: Det er derfor, jeg fikseret servoværdien i funktion af det, jeg observerede … Jeg har en god (og enkel) måde at få det på, jeg er interesseret! Måske et spor at studere her, selvom jeg foretrækker en online API, giver mig azimuten direkte i henhold til dato, time og geografisk position …
  • Om søvnteknikken: da Lolin er en 32-bit Tensilica-processor, er dens maksimale værdi for et 32-bit usigneret heltal 4294967295 … så giver det cirka max 71 minutter for det dybe søvninterval. Derfor laver jeg l'ESP mange gange i cirka 60 minutter …

EDIT - 2018-10-08:

Jeg opdagede, at servoen har mange rykkende bevægelser, især før vedhæftningen (), løsnes () og hver gang Lolin vågner fra deepSleep ().

Mens jeg studerede lidt flere datablade, indså jeg to ting:

  • På Lolin -databladet er D4 -udgangen allerede forbundet med BUILTIN_LED …
  • På databladet ESP8266ex lærer vi, at D4 -udgangen bruges som UART 1/U 1 TXD (Universal Asynchronous Receiver Transmitter). Det er også specificeret, at denne UART1 bruges til udskrivning af log.

Ved at læse disse oplysninger indså jeg, at D4 -udgangen ikke var en god idé, især ikke at styre en servomotor!

Så nu er udgangen, der bruges til at styre servomotoren, D2, nedenstående kode er blevet opdateret i overensstemmelse hermed.

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

Dato oprettelse: 08/Dato mise en prod: 08/Version: 0.9.4 Version IDE Arduino: 1.8.6 Uploadhastighed: 921600 Type de carte dans l'IDE: "LOLIN (WEMOS) D1 R2 & mini" Carte physique employée: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Pin-funktion ESP-8266 Pin-udnyttelsesområde ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analog indgang, maks. 3.3V input A0 Tension d'alimentaion D0 IO GPIO16 Connecté à RST (pour le deep.sleep) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servomotor 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 Nulstil RST Connecté à D0 (hæld dybt.sleep) ****************************************/ #include bool Logs = true; // wifi const char* ssid = "LOL"; const char* password = "LOL"; IPAddress ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress -gateway (192, 168, 000, 000); IPAddress -undernet (255, 255, 000, 000); WiFiClient -klient; // Servo #include #define PIN_SERVO D2 Servo myservo; // servoposition for: 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; byte 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; usigneret lang switchPressTime; const usigneret lang DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Din MQTT -adresse"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (klient); char MQTT_Message_Buff [70]; String MQTT_Pub_String; // Tension float vcc; // NTP #include time_t tnow; int Old_Time = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; ugyldig opsætning () {Serial.begin (115200); netværk (sandt); 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 (); netværk (falsk); // NTP sæt tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Substring (14, 16).toInt (); // Deepsleep for natten hvis (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("minutter)"); sleep (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP sæt tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Substring (14, 16).toInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Delstreng (11, 13)); //Serial.println (String (ctime (& tnow)). Substring (11, 13).toInt ()); // Servostyring hvis (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 (indeks); forsinkelse (200); myservo.write (indeks); } forsinkelse (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // skriv igen den sidste værdi for at undgå rykvise bevægelser, når du fjerner myservo.detach (); } netværk (sandt); SendBatteryLevel (); netværk (falsk); }}}} // Deepsleep hvis lørdag efter 13h 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); if (Logs) Serial.println ("minutes)"); sleep (Int_Sleep_Duration - Int_Minutes); } // Deepsleep if søndag hvis (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 ("minutter)"); sleep (Int_Sleep_Duration - Int_Minutes); } // Reeds management Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); hvis (Switch_State_OUT! = Old_Switch_State_OUT) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); hvis (Switch_State_OUT == HIGH) {Serial.println ("courrier relevant!"); netværk (sandt); forsinkelse (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); forsinkelse (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); forsinkelse (5000); netværk (falsk); }} Old_Switch_State_OUT = Switch_State_OUT; } Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); hvis (Switch_State_IN_LETTER! = Old_Switch_State_IN_LETTER) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); hvis (Switch_State_IN_LETTER == HIGH) {Serial.println ("courrier arrivé!"); netværk (sandt); forsinkelse (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); forsinkelse (5000); netværk (falsk); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); hvis (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); hvis (Switch_State_IN_PARCEL == HIGH) {Serial.println ("colis arrivé!"); netværk (sandt); forsinkelse (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); forsinkelse (5000); netværk (falsk); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} ugyldig SendBatteryLevel () {forsinkelse (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Logs) Serial.println ("\ tTension relevant:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); forsinkelse (5000); } ugyldig søvn (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } ugyldigt netværk (bool UpDown) {if (UpDown) {Serial.print ("Netværksstart"); WiFi.forceSleepWake (); forsinkelse (1); // init WIFI WiFi.config (ip, dns, gateway, subnet); WiFi.begin (ssid, adgangskode); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } forsinkelse (5000); Serial.println ("."); Serial.print ("\ tConnected - IP Address:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Init NTP Serial.print ("\ tTids Synk."); 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 (".");} Ellers {Serial.println ("Netværksstop."); WiFi.disconnect (); forsinkelse (1000); WiFi.mode (WIFI_OFF); forsinkelse (1000); WiFi.forceSleepBegin (); forsinkelse (1);}} ugyldig forbindelse igen () {while (! ClientMQTT.connected ()) {Serial.print (" / tForsøg om MQTT -forbindelse … "); // Forsøg på at oprette forbindelse, hvis (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" tilsluttet ");} ellers {Serial.print (" mislykkedes, rc = "); Seriel.print (ClientMQTT.state ()); Serial.println ("prøv igen om 5 sekunder"); // Vent 5 sekunder før forsinkelse igen (5000);}}} ugyldig MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {hvis (! ClientMQTT.connected ()) tilslutter igen (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tSend oplysninger til MQTT …"); MQTT_Pub_String = "{" idx / ":" + streng (Int_IDX) + ", \" Batteri / ":" + streng (vcc, 0) + ", \" nværdi / ":" + N_Værdi + ", \" svalue / ": \" " + S_Value +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

Trin 11: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

I Domoticz:

Til almindelig brug:

  • Opret to "Dummy (gør ingenting, brug til virtuelle switches)":

    1. Den første til bogstaver …
    2. Den anden til pakke …
  • Tilpas meddelelser for hver af dem;
  • Selvfølgelig skal du konfigurere dit Tegegram -token.

Valgfrit:

Du kan tilføje en "Utility -sensor" til at overvåge dit batteriets opladningsniveau.

Tips: her kan du finde en masse gratis tilpassede ikoner …

Trin 12: Konklusion

Konklusion
Konklusion
Konklusion
Konklusion

Håber, at denne instruks kan hjælpe dig:

  • om du skal lave din egen tilsluttede brevkasse;
  • eller bare for at give dig nogle ideer til dine projekter!

Hvis du har ideer til forbedringer, lytter jeg!

PS: undskyld mit engelsk, Google oversættelse hjælper mig meget, men er nok ikke perfekt;-)

Anbefalede: