INHOUDSOPGAWE:

Aangeslote briefbus sonkrag: 12 stappe (met foto's)
Aangeslote briefbus sonkrag: 12 stappe (met foto's)

Video: Aangeslote briefbus sonkrag: 12 stappe (met foto's)

Video: Aangeslote briefbus sonkrag: 12 stappe (met foto's)
Video: 220v AC van 12v 90 Ampère Auto Dynamo 1000W DIY 2024, November
Anonim
Aangeslote briefbus sonkrag
Aangeslote briefbus sonkrag
Aangeslote briefbus sonkrag
Aangeslote briefbus sonkrag

Vir my tweede Ible beskryf ek u my werke oor my gekoppelde briewekas.

Nadat ek hierdie Instructable (+ baie ander een) gelees het, en omdat my posbus nie naby my huis was nie, wou ek my inspireer uit die werke van Open Green Energy om my posbus aan my Domoticz -bediener te koppel.

Doelwitte

  • Word deur Telegram ingelig wanneer briewe kom;
  • Word deur Telegram ingelig wanneer 'n pakkie kom;
  • Kyk of die letters / pakkies opgetel is.

My belangrikste beperking

Die posbus is relatief ver van die huis af, en dit was onmoontlik om 'n elektriese kabel daarheen te trek om enigiets aan te dryf.

Ek moes 'n ander oplossing vind: sonkrag was 'n goeie oplossing!

Die BOM

  • Framboos Pi (om MQTT- en Domoticz -onderdele aan te bied - word nie hier beskryf nie)
  • 'N Telegram Bot -rekening
  • Lolin D1 mini (of Wemos …)
  • Insteekskroefaansluitblok-aansluiting
  • TP4056 Litium battery laai bord
  • 6V 2W fotovoltaïese sonpaneel
  • Li-Ion 18650 battery
  • Li-ion batteryhouer
  • PCB DIY soldeer koper prototipe printplaat
  • Analoog Servo SG90
  • 3 rietskakelaars (een vir letters, een vir pakkies en een vir afhandeling)
  • Magnete
  • Sommige drade
  • Houtkrat: Omdat ek geen 3D -drukker gekry het nie, het ek my eie huisie met hout gekry om elektroniese onderdele te ontvang …
  • Reserve Ethernet -kabel
  • RJ45 Ethernet Connector Breakout Board

  • J-B Weld
  • 'N Paar kogellagers
  • Skroewe, moere, ringe

Stap 1: Globale skema

Globale skema
Globale skema
Globale skema
Globale skema

Pragtige tekeninge is altyd beter as lang toesprake;-)

Maar 'n paar uitlegte oor MQTT, Domoticz en Telegram is altyd welkom!

MQTT (Message Queuing Telemetry Transport), is 'n boodskapprotokol wat gebruik word om data tussen toestelle en ander stelsels in die wêreld van die IoT (Internet of Things) te stuur.

Sonder om te veel besonderhede in te gaan, is die werking daarvan gebaseer op die beginsel van kliënte wat met 'n bediener skakel. In MQTT word kliënte Abonnee of Uitgewer genoem, en die bediener word Makelaar genoem.

In hierdie instruksies gebruik ek slegs een uitgewer, die Lolin wat aan my briewekas gekoppel is: as briewe of pakkies opgespoor word deur die rietkontakte wat in die posbus geïnstalleer is (stap 1 in skematiek), stuur dit 'n MQTT -boodskap via WIFI na die makelaar (stap 2).

Die Broker -deel word gedoen deur Mosquitto, wat op die Raspberry Pi (stap 3) geïnstalleer is.

Oor Domoticz:

Soos op die bronblad beskryf, is Domoticz 'n 'tuis -outomatiseringstelsel' waarmee u verskillende toestelle kan beheer en insette kan ontvang van verskillende protokolle: MQTT is een van die ondersteunde protokolle …

Sodra inligting hom bereik (Stap 4), kan u gebeurtenisse definieer: In die geval van die posbus het ek gekies om 'n Telegram -kennisgewing te stuur (stap 5).

Uiteindelik is die Telegram -kliënt op my telefoon gekonfigureer (en ook my vrou! - Stap 6): die einddoel is bereik …

Stap 2: Skematiese / bedrading

Skematies / bedrading
Skematies / bedrading
Skematies / bedrading
Skematies / bedrading
Skematies / bedrading
Skematies / bedrading
Skematies / bedrading
Skematies / bedrading

Een woord oor die analoog lees:

Eerstens het ek na 'n paar ondersoeke opgemerk dat Lolin mini D1 (soos die ou Wemos) 'n spanningsverdeler vir pin A0 ingebou het (met inagneming van 220KΩ vir R1 en 100KΩ vir R2 - sien regs van die gekoppelde datablad), wat 3.2 volt toelaat as maksimum analoog ingangsspanning.

Aangesien die maksimum uitgangsspanning van die battery 4, 2v (beperk deur die laaibord) is, en teoreties, hoef u slegs 'n eksterne resitor (in serie met R1) by te voeg om die maksimum ingangsspanningsreeks te verhoog. As u dan 100K in serie met R1 byvoeg, het u die volgende resultaat:

Vin * R1/(R1+R2) = Vout

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

In my kring het ek gekies om die waarde daarvan aan te pas, daarom het ek verkies om 'n verstelbare weerstand in my stroombaan te gebruik: miskien is dit nutteloos vir u, maar in my situasie stel ek die waarde daarvan op ongeveer 10KΩ om te hê 'n samehangende waarde in Domoticz …

Let daarop dat die A0 -pen 'n resolusie van 10 bis het: dit beteken dat u analooglesing in u skets 'n waarde tussen 0 en 1024 sal gee.

Aangesien ek 'n persentasiewaarde na Domoticz wil stuur, moet ek die analoog leesresultaat met 10, 24 deel.

Stap 3: Power Management

Kragbestuur
Kragbestuur
Kragbestuur
Kragbestuur

Ek wil natuurlik hê dat die posbus outonoom moet wees. Om my doel te bereik, gebruik ek hierdie elemente:

  • 'n Li-Ion 18650-battery van 4000mAh;
  • 'n sonpaneel wat 6V / 2W kan lewer;
  • 'n TP4056 -litiumbattery -laaibord.

Om die geskikste sonpaneel te kies, kyk ek na 'n paar voorbeelde, waaronder hierdie: in hierdie voorbeeld word 'n 5.5V / 0.66W sonpaneel gebruik, en is waarskynlik voldoende vir die doel. In my geval, en aangesien die ESP8266 gedurende die dag AAN moet bly en 'n servomotor moet kan laat loop om die huis teen die son te hou, het ek 'n kragtiger model van die sonpaneel gekies (6V / 2W) - dit laat my ook toe om donker winterperiodes en bewolkte dae te verwag;-)

Om die energieverbruik tot die maksimum te verminder, het ek die volgende scenario's gekies:

  • wetende dat die posman eers tussen 07:00 en 20:00 verby is, word ESP die res van die nag in DeepSleep geplaas;
  • Die faktor gaan nie tussen Saterdagmiddag en Maandagoggend oor nie: die ESP word ook gedurende hierdie tydperk in die DeepSleep -modus geplaas.
  • Vir die tydperk tussen 7:00 en 20:00, en om die kragverbruik te verminder, deaktiveer ek eenvoudig die netwerk -koppelvlak van die ESP: netwerk word eers herlaai by die aankoms van 'n pakkie of 'n brief, net genoeg tyd om die inligting na Domoticz. Ik hoef nie onmiddellik gewaarsku te word nie en die paar ekstra sekondes wat nodig is om die netwerk -koppelvlak te herlaai, is nie skadelik nie!

'N Bietjie waarde oor verbruik in verskillende modusse wat ek vir die Lolin gebruik - kyk na die datablad, p18:

  • In die normale modus (met RF -werking) kan die kragverbruik tot 170mA styg! Aangesien my posbus ongeveer 50 meter van my huis af is (en op die grens van die WIFI -sein …
  • In Modem-slaap daal die kragverbruik tot 15mA. Maar soos u in die datablad kan sien, het dit die modem nie heeltemal gestop nie, aangesien die ESP ''n Wi-Fi-verbinding onderhou sonder datatransmissie' '.
  • In diepe slaap daal die krag na 20uA.

Om seker te maak dat die wifi nie onnodig aktief bly nie, het ek verkies om dit uit te skakel met die volgende opdragte. Let op die oproep met baie vertragings () … Sonder hulle val die ESP in:

WiFi. Ontkoppel ();

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

Oor die algemeen lyk dit asof dit na 'n paar dae se werking werk en veral om korrek te laai:

  • Dit laat my toe om die servomotor elke uur te hardloop om die huis in die rigting van die son te plaas;
  • Ek kan myself ook elke uur toelaat om die netwerk -koppelvlak weer te aktiveer om die laaivlak na Domoticz te stuur.

Stap 4: Installeer magnete en riete -kontakte

Installeer magnete en riete -kontakte
Installeer magnete en riete -kontakte
Installeer magnete en riete -kontakte
Installeer magnete en riete -kontakte
Installeer magnete en riete -kontakte
Installeer magnete en riete -kontakte

Soos gewoonlik het ek my Proxxon gebruik om die plek van die riet in 'n stuk hout te vorm.

Om die rietkontak in sy gat vas te maak, het ek 'n bietjie J-B-sweislas gebruik.

Vir die pakkie en die uitvoer, 'n klein stuk band, 'n bietjie ystersaag, en die doel is bereik!

Die voordeel van my posbus is dat dit metaal is, wat die posisionering van magnete vergemaklik sodat dit behoorlik in wisselwerking is met rietkontakte.

Stap 5: Koppel aan My Little House

Koppel aan My Little House
Koppel aan My Little House
Koppel aan My Little House
Koppel aan My Little House

Om die kabel wat na die rietkontakte gaan, van die posbus na die huis maklik te kan koppel en te ontkoppel, het ek gekies om 'n Ethernet -aansluiting te gebruik.

U kan hierdie model gebruik of, net soos ek, 'n ou Arduino Ethernet -skild wat in my laaie hang: hy het nie gely nie, hy was dapper voor die saag, sy dood was vinnig ^^

Net 'n woord oor hierdie Arduino Ethernet -skild: moenie verwag dat daar 8 aparte bestuurders sal wees nie … Kabels word met 2 binne -in die skild gekoppel … Dit het my te lank gek gemaak !!!

Stap 6: In die huis …

In die huis…
In die huis…
In die huis…
In die huis…

Net genoeg plek om die batteryhouer reg te stel, die servo in te stel en die RJ45 female aansluiting.

Stap 7: Laat dit draai …

Laat dit draai …
Laat dit draai …
Laat dit draai …
Laat dit draai …
Laat dit draai …
Laat dit draai …
Laat dit draai …
Laat dit draai …

Die doel is om dit teen die son te hou …

Om die draaibaarheid te laat gebruik, gebruik ek 'n lang skroef as as, met 'n paar moere en twee kogellagers …

Tot nou toe gebruik ek SG90 servo (wringkrag: 1.8kg/cm by 4.8v).

Om die huis te draai (en die paar gram) is genoeg. Aan die ander kant is ek nie seker of sy plastiekratte lankal weerstand bied teen die gereelde rukwinde in my omgewing nie.

Ek bestel nog een (MG995 wringkrag: 9.4kg/cm by 4.8v), ook nie baie duur nie, maar met metaal ratte.

Dit sal die volgende ding wees om te doen wanneer ek dit ontvang het: ek vertrou op my gekoppelde briewe om my in kennis te stel van sy aankoms!

Stap 8: 'n Paar toetse

Image
Image

'N Paar aantekeninge:

Hierdie skets is slegs om ure gedurende die dag na te boots, sodat ek die posisie van die servo kan beheer.

  • Met SG90: geen ekstra behoeftes nie, kan dit werk met die OUT -spanning van die batterybeheerder.
  • Maar, met MG 995:

    • Die totale draaihoek is nie dieselfde nie (wyer): ek moes 'n ekstra funksie gebruik om dit te verminder (Servo_Delta ()).
    • Benodig 'n DC/DC Step up om genoeg spanning aan die servo te verskaf … om voort te gaan …

/*

- TOETS met SG90: geen ekstra behoeftes nie, dit kan werk met die OUT -spanning van die batterykontroleerder - VIR MG 995: - gebruik die Servo_Delta () -funksie … - Benodig 'n DC/DC Step up om genoeg spanning aan die servo te verskaf … om word vervolg: */ #sluit bool in Logs = true; Servo myservo; #define PIN_SERVO D2 // servoposisie vir: 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 oud; int pos; int ek; ongeldige opstelling () {Serial.begin (115200); } leemte lus () {vir (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); as (Logs) Serial.print ("Aangepaste waarde:"); as (Logs) Serial.println (Servo_Delta (indeks)); vertraging (200); //myservo.write(Servo_Delta(index)); myservo.write (indeks); } vertraging (15); myservo.write (Arr_Servo_Pos [i-7]); // skryf weer die laaste waarde om rukbewegings te vermy wanneer myservo.detach (); }}} vertraging (2000); }} int Servo_Delta (int waarde) {int Temp_val; Temp_val = (waarde*0,80) +9; terugkeer Temp_val; }

Stap 9: Die huisie

Die Klein Huisie
Die Klein Huisie
Die Klein Huisie
Die Klein Huisie
Die Klein Huisie
Die Klein Huisie

Soos ek vroeër gesê het, het ek geen 3D -drukker gekry nie. Dus besluit ek om 'n ou groentekrat te gebruik …

Miskien hou dit nie lank nie, maar dan sou ek tyd hê om 'n ander oplossing te oorweeg (of 'n vriend wat 'n 3D -drukker besit): om die hout te beskerm, het ek oral baie vernis bygevoeg …

U kan die 'mooi gordyne' sien … Dit is wat gebeur as u u vrou vra om die werk te doen ^^

Stap 10: Die skets

Aan die gang… Maar dit blyk stabiel te wees

Ek werk nog steeds aan die kode: aangesien dit nie 'n definitiewe weergawe is nie, is u kommentaar / advies welkom;-)

Enkele opmerkings:

  • Dit bevat baie vertragings () in die kode: dit is om die botsing van die Lolin te voorkom, veral as u 'n aanvangsnetwerk stop …
  • Ek het nie 'n maklike en betroubare manier gevind om die son asimut te kry nie: daarom het ek die servo waarde vasgestel in ooreenstemming met wat ek waargeneem het … Ek het 'n goeie (en eenvoudige) manier om dit te kry, ek stel belang! 'n baan om hier te studeer, selfs al verkies ek 'n aanlyn API, gee ek die azimut direk volgens die datum, uur en geografiese ligging …
  • Oor die slaaptegniek: aangesien die Lolin 'n 32-bis Tensilica-verwerker is, is die maksimum waarde vir 'n 32-bis ongetekende heelgetal 4294967295 … dan gee dit ongeveer 71 minute vir die diep slaapinterval. Daarom slaap ek ongeveer 60 minute lank l'ESP …

EDIT - 2018-10-08:

Ek het ontdek dat die servo baie rukbewegings het, veral voor die aanhegting (), losmaak () en elke keer as die Lolin wakker word van deepSleep ().

Terwyl ek 'n bietjie meer gegewensblaaie bestudeer het, het ek twee dinge besef:

  • Op die Lolin -datablad is die D4 -uitvoer reeds gekoppel aan die BUILTIN_LED …
  • Op die ESP8266ex -datablad leer ons dat die D4 -uitset gebruik word as UART 1/U 1 TXD (Universele asynchrone ontvanger -sender). Daar word ook gespesifiseer dat hierdie UART1 gebruik word om logboek te druk.

Deur hierdie inligting te lees, het ek besef dat die D4 -uitset nie 'n goeie idee was nie, veral om 'n servomotor te bestuur!

Dus, nou is die uitset wat gebruik word om die servomotor te beheer D2; die onderstaande kode is dienooreenkomstig opgedateer.

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

Datum création: 08/Date mise en prod: 08/Version: 0.9.4 Version IDE Arduino: 1.8.6 Upload speed: 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) Speldfunksie ESP-8266 Pin Utilization locale ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analoog ingang, maksimum 3.3V ingang 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 Reset RST Connecté à D0 (giet diep.sleep) ***************************************/ #include bool Logs = true; // wifi const char* ssid = "LOL"; const char* wagwoord = "LOL"; IPAddress ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress -gateway (192, 168, 000, 000); IPAddress -subnet (255, 255, 000, 000); WiFiClient -kliënt; // Servo #insluit #definieer PIN_SERVO D2 Servo myservo; // servoposisie vir: 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; #definieer PIN_SWITCH_IN_PARCEL D6 greep Old_Switch_State_IN_PARCEL; byte Switch_State_IN_PARCEL; #defineer PIN_SWITCH_IN_LETTER D7 greep Old_Switch_State_IN_LETTER; byte Switch_State_IN_LETTER; ongetekende lang skakelaar PressTime; konst ongetekende lang DEBOUCE_TIME = 200; // Analoog #definieer PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Your MQTT address"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (kliënt); char MQTT_Message_Buff [70]; String MQTT_Pub_String; // Spanningsvlot vcc; // NTP #sluit time_t tnow in; int Ou_Tyd = 0; int Int_Heures = 0; int Int_Minutes = 0; int Int_Sleep_Duration = 63; ongeldige opstelling () {Serial.begin (115200); netwerk (waar); 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 (); netwerk (vals); // NTP stel tnow = tyd (nullptr); Int_Heures = String (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Substring (14, 16).toInt (); // Slaap die nag in as (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("minute")); slaap (Int_Sleep_Duration - Int_Minutes); }} leemte lus () {// NTP stel tnow = tyd (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)). Substring (11, 13)); //Serial.println (String (ctime (& tnow)). Substring (11, 13).toInt ()); // Servobestuur as (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); vertraging (200); myservo.write (indeks); } vertraging (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // skryf weer die laaste waarde om rukbewegings te vermy wanneer myservo.detach losgemaak word (); } netwerk (waar); SendBatteryLevel (); netwerk (vals); }}}} // Slaap weer as Saterdag na 13 uur as ((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" "); slaap (Int_Sleep_Duration - Int_Minutes); } // Deepsleep as Sondag as (String (ctime (& tnow)). Substring (0, 3) == "Sun") {if (Logs) Serial.print ("Sleep pour le dimanche ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); as (Logs) Serial.println ("minute)"); slaap (Int_Sleep_Duration - Int_Minutes); } // Rietbestuur 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 == HOOG) {Serial.println ("courrier relevanté!"); netwerk (waar); vertraging (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); vertraging (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); vertraging (5000); netwerk (vals); }} 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 (); as (Switch_State_IN_LETTER == HOOG) {Serial.println ("courrier arrivé!"); netwerk (waar); vertraging (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); vertraging (5000); netwerk (vals); }} Old_Switch_State_IN_LETTER = Skakel_Staat_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 (); as (Switch_State_IN_PARCEL == HOOG) {Serial.println ("colis arrivé!"); netwerk (waar); vertraging (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); vertraging (5000); netwerk (vals); }} Old_Switch_State_IN_PARCEL = Skakel_Staat_IN_PARCEL; }} nietig SendBatteryLevel () {vertraging (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)); vertraging (5000); } nietige slaap (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } ongeldig netwerk (bool UpDown) {if (UpDown) {Serial.print ("Netwerk begin"); WiFi.forceSleepWake (); vertraging (1); // init WIFI WiFi.config (ip, dns, gateway, subnet); WiFi.begin (ssid, wagwoord); terwyl (WiFi.status ()! = WL_CONNECTED) {vertraging (500); Serial.print ("."); } vertraging (5000); Serial.println ("."); Serial.print ("\ tConnected - IP Address:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Eerste 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 ("."); Vertraging (100);} Serial.println (".");} Anders {Serial.println ("Netwerkstop."); WiFi.disconnect (); vertraging (1000); WiFi.mode (WIFI_OFF); vertraging (1000); WiFi.forceSleepBegin (); vertraging (1);}} ongeldig herkoppel () {terwyl (! ClientMQTT.connected ()) {Serial.print (" / tPoging tot MQTT -verbinding … "); // Poging om aan te sluit as (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" verbind ");} anders {Serial.print (" misluk, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("probeer weer oor 5 sekondes"); // Wag 5 sekondes voordat die vertraging weer probeer (5000);}}} void MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {as (! ClientMQTT.connected ()) heraansluit (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tStuur inligting na MQTT …"); MQTT_Pub_String = "{" idx / ":" + string (Int_IDX) + ", \" Battery / ":" + String (vcc, 0) + ", \" nwaarde / ":" + N_Waarde + ", \" svalue / ": \" " + S_Waarde +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

Stap 11: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

In Domoticz:

Vir algemene gebruik:

  • Skep twee "Dummy (doen niks, gebruik vir virtuele skakelaars)":

    1. Die eerste vir letters …
    2. Die tweede vir pakkie …
  • Pas kennisgewings vir elkeen van hulle aan;
  • U moet natuurlik u Tegegram -token opstel.

Opsioneel:

U kan 'n 'Utility sensor' byvoeg om u battery se laaivlak te monitor.

Wenke: hier vind u baie gratis pasgemaakte ikone …

Stap 12: Gevolgtrekking

Afsluiting
Afsluiting
Afsluiting
Afsluiting

Hoop dat hierdie instruksies u kan help:

  • of u u eie gekoppelde briewerkas moet maak;
  • of net om u 'n paar idees vir u projekte te gee!

As u idees het vir verbeterings, luister ek!

PS: jammer vir my Engels, Google vertaling help my baie, maar is waarskynlik nie perfek nie;-)

Aanbeveel: