Kazalo:

Povezan nabiralnik na sončno energijo: 12 korakov (s slikami)
Povezan nabiralnik na sončno energijo: 12 korakov (s slikami)

Video: Povezan nabiralnik na sončno energijo: 12 korakov (s slikami)

Video: Povezan nabiralnik na sončno energijo: 12 korakov (s slikami)
Video: Терренс Дикон раскрывает скрытую связь: сознание и энтропия 2024, Julij
Anonim
Povezani nabiralnik na sončno energijo
Povezani nabiralnik na sončno energijo
Povezani nabiralnik na sončno energijo
Povezani nabiralnik na sončno energijo

Za moj drugi Ible vam bom opisal svoja dela o svojem nabiralniku.

Ko sem prebral ta Instructable (in številne druge) in ker moj poštni nabiralnik ni blizu moje hiše, sem želel navdihniti dela Open Green Energy za povezavo mojega nabiralnika s strežnikom Domoticz.

Cilji

  • Telegram vas obvesti, ko prihajajo pisma;
  • Telegram vas obvesti, ko pride paket;
  • Preverite, ali so črke / paketi pobrani.

Moja glavna omejitev

Nabiralnik je relativno daleč od hiše in do njega ni bilo mogoče potegniti električnega kabla, da bi karkoli napajal.

Moral sem najti drugo rešitev: sončna energija je bila dobra rešitev!

BOM

  • Raspberry Pi (za gostovanje delov MQTT in Domoticz - tukaj ni opisano)
  • Račun za Telegram Bot
  • Lolin D1 mini (ali Wemos …)
  • Vtični priključni vijačni priključek
  • TP4056 plošča za polnjenje litijevih baterij
  • 6V 2W fotovoltaična sončna plošča
  • Li-Ion 18650 baterija
  • Držalo za litij-ionsko baterijo
  • PCB DIY spajkanje bakrenega prototipa tiskanega vezja
  • Analogni servo SG90
  • 3 Reed stikala (eno za pisma, eno za paket in eno za odjavo)
  • Magneti
  • Nekaj žic
  • Leseni zaboj: Ker nisem dobil nobenega 3D tiskalnika, sem spoznal svojo hišico z lesom do prejetih elektronskih delov …
  • Rezervni kabel Ethernet
  • Prekinitvena plošča priključka RJ45 Ethernet

  • J-B zvar
  • Nekaj krogličnih ležajev
  • Vijaki, matice, podložke

1. korak: Globalna shema

Globalna shema
Globalna shema
Globalna shema
Globalna shema

Lepe risbe so vedno boljše od dolgih govorov;-)

Nekaj razlag o MQTT, Domoticzu in Telegramu pa je vedno dobrodošlo!

MQTT (Message Queuing Telemetry Transport) je protokol za pošiljanje sporočil, ki se uporablja za pošiljanje podatkov med napravami in drugimi sistemi v svetu IoT (internet stvari).

Ne da bi se spuščali v preveč podrobnosti, njegovo delovanje temelji na načelu povezovanja odjemalcev s strežnikom. V MQTT se odjemalci imenujejo naročnik ali založnik, strežnik pa posrednik.

V tem navodilu uporabljam samo enega založnika, Lolin, ki je povezan z nabiralnikom: ko so črke ali paketi zaznani preko trstičnih stikov, nameščenih v nabiralniku (1. korak v shematični shemi), pošlje posredniku sporočilo MQTT prek WIFI (2. korak).

Del posrednika opravi Mosquitto, ki je nameščen na Raspberry Pi (korak 3).

O Domoticzu:

Kot je opisano na izvorni strani, je Domoticz "sistem za avtomatizacijo doma", ki vam omogoča nadzor nad različnimi napravami in sprejemanje vnosa iz različnih protokolov: MQTT je eden od podprtih protokolov …

Takoj, ko mu pridejo informacije (4. korak), lahko določite dogodke: V primeru nabiralnika sem se odločil poslati obvestilo Telegram (5. korak).

Končno je odjemalec Telegram konfiguriran na mojem telefonu (in tudi moja žena! - 6. korak): končni cilj je dosežen …

2. korak: Shematsko / ožičenje

Shematsko / ožičenje
Shematsko / ožičenje
Shematski / ožičenje
Shematski / ožičenje
Shematsko / ožičenje
Shematsko / ožičenje
Shematski / ožičenje
Shematski / ožičenje

Ena beseda o analognem se glasi:

Najprej sem po nekaj raziskavah opazil, da je Lolin mini D1 (kot stari Wemos) vgradil delilnik napetosti za pin A0 (glede na 220KΩ za R1 in 100KΩ za R2 - glej na desni strani podatkovnega lista), ki omogoča 3,2 volta kot največja analogna vhodna napetost.

Glede na to, da je največja izhodna napetost akumulatorja 4, 2 V (omejena s polnilno ploščo), teoretično pa morate dodati le zunanji upor (zaporedno z R1), da povečate območje največje vhodne napetosti. Če dodate 100K zaporedno z R1, boste dobili ta rezultat:

Vin * R1/(R1+R2) = Vout

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

V svojem vezju sem se odločil, da lahko prilagodim njegovo vrednost, zato sem v svojem vezju raje uporabil nastavljiv upor: morda bo za vas neuporaben, toda v moji situaciji sem njegovo vrednost nastavil na približno 10KΩ skladna vrednost v Domoticzu …

Upoštevajte, da ima pin A0 10 -bitno ločljivost: to pomeni, da bo v skici vaše analogno branje vrnilo vrednost med 0 in 1024.

Ker želim poslati odstotno vrednost Domoticzu, moram analogni rezultat branja razdeliti na 10, 24.

3. korak: Upravljanje napajanja

Upravljanje moči
Upravljanje moči
Upravljanje moči
Upravljanje moči

Seveda želim, da je nabiralnik avtonomen. Za dosego svojega cilja uporabljam te elemente:

  • Li-Ion 18650 baterija 4000mAh;
  • sončna plošča, ki lahko odda 6V / 2W;
  • plošča za polnjenje litijeve baterije TP4056.

Za izbiro najprimernejšega solarnega panela sem si ogledal nekaj primerov, med drugim tudi tega: v tem primeru se uporablja sončna plošča 5,5 V / 0,66 W, ki verjetno zadostuje za ta namen. V mojem primeru in ker mora biti ESP8266 podnevi vklopljen in mora imeti možnost zagona servo motorja, da bo hiša obrnjena proti soncu, sem se odločil za močnejši model sončne celice (6V / 2W) - omogoča mi tudi predvideti temna zimska obdobja in oblačne dni;-)

Prav tako sem, da bi čim bolj zmanjšal porabo energije, izbral naslednje scenarije:

  • vedoč, da je poštar pretekel le med 7. in 20. uro, je ESP do konca noči postavljen v DeepSleep;
  • Dejavnik ne prehaja med soboto opoldne in ponedeljek zjutraj: ESP je v tem obdobju tudi v načinu DeepSleep.
  • Za obdobje med 7. in 20. uro in za zmanjšanje porabe energije preprosto onemogočim omrežni vmesnik ESP: omrežje se znova zažene šele ob prihodu paketa ali pisma, ravno toliko časa, da se informacije pošljejo Domoticz. Ni me treba takoj opozoriti in nekaj dodatnih sekund, potrebnih za ponovni zagon omrežnega vmesnika, niso škodljive!

Nekaj vrednosti glede porabe v različnih načinih, ki jih uporabljam za Lolin - poglejte podatkovni list, str18:

  • V normalnem načinu (z RF delovanjem) se lahko poraba energije poveča na 170 mA! Ker je moj nabiralnik približno 50 metrov od moje hiše (in na meji signala WIFI …), predvidevam, da je moč, ki se uporablja za vzdrževanje povezave, največja …
  • V modemskem načinu spanja se poraba energije zmanjša na 15 mA. Kot lahko vidite v podatkovnem listu, modem ni popolnoma ustavil, saj ESP "vzdržuje povezavo Wi-Fi brez prenosa podatkov".
  • V globokem spanju moč pade na 20uA.

Da bi bili prepričani, da wifi po nepotrebnem ne ostane aktiven, sem ga raje onemogočil z naslednjimi ukazi. Upoštevajte številne klice delay () … Brez njih se ESP zruši:

WiFi.disconnect ();

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

Na splošno se zdi, da po večdnevnem delovanju deluje, še posebej pa se pravilno naloži:

  • to mi omogoča, da vsako uro poganjam servomotor, da hišo postavim proti soncu;
  • Dovolim si lahko tudi, da vsako uro znova aktiviram omrežni vmesnik in pošljem v Domoticz raven napolnjenosti baterije.

4. korak: Namestitev magnetov in trstičnih stikov

Namestitev magnetov in trstičnih stikov
Namestitev magnetov in trstičnih stikov
Namestitev magnetov in trstičnih stikov
Namestitev magnetov in trstičnih stikov
Namestitev magnetov in trstičnih stikov
Namestitev magnetov in trstičnih stikov

Kot ponavadi sem s svojim Proxxonom oblikoval kraj trstike v kosu lesa.

Za pritrditev trstičnega kontakta v luknjo sem uporabil malo zvara J-B.

Za paket in izpisek, majhen kos traku, malo žage in cilj je dosežen!

Prednost mojega nabiralnika je v tem, da je kovinski, kar olajša pozicioniranje magnetov, tako da lahko pravilno komunicira s trstičnimi kontakti.

5. korak: Povežite se z mojo hišo

Povežite se z mojo hišo
Povežite se z mojo hišo
Povežite se z mojo hišo
Povežite se z mojo hišo

Da bi lahko enostavno povezal in odklopil kabel, ki gre do trstičnih kontaktov od nabiralnika do hiše, sem se odločil za uporabo priključka Ethernet.

Lahko uporabite ta model ali, tako kot jaz, uporabite star Arduino Ethernet ščit, ki mi visi v predalih: Ni trpel, pogumen je bil pred žago, njegova smrt je bila hitra ^^

Samo nekaj besed o tem Arduino Ethernet ščitu: ne pričakujte, da boste imeli 8 ločenih gonilnikov … Kabla sta v ščitu seznanjena z 2 … Predolgo me je zmešalo !!!

6. korak: V hiši …

V hiši …
V hiši …
V hiši …
V hiši …

Ravno dovolj prostora za pritrditev držala za baterijo, nastavitev servo in ženskega konektorja RJ45.

7. korak: Naj bo gramofon …

Naj bo gramofon…
Naj bo gramofon…
Naj bo gramofon…
Naj bo gramofon…
Naj bo gramofon…
Naj bo gramofon…
Naj bo gramofon…
Naj bo gramofon…

Cilj je, da je obrnjen proti soncu …

Da bi omogočil vrtenje, sem kot os uporabil dolg vijak z nekaj maticami in dvema krogličnima ležajema …

Do sedaj sem uporabljal servo SG90 (navor: 1,8 kg/cm pri 4,8 V).

Za obračanje hiše (in njenih nekaj gramov) je dovolj. Po drugi strani pa nisem prepričan, da se plastični zobniki dolgo časa upirajo pogostim sunkom vetra v moji regiji.

Naročil sem še enega (navor MG995: 9,4 kg/cm pri 4,8 V), tudi sicer ne preveč drag, vendar s kovinskimi zobniki.

Naslednja stvar, ki jo bom naredil, ko jo bom prejel: zanašam se na svoj povezani nabiralnik, da me obvesti o svojem prihodu!

8. korak: Nekaj testov

Image
Image

Nekaj opomb:

Ta skica je namenjena le posnemanju urnih sprememb čez dan, kar mi omogoča nadzor položaja servomotorja.

  • S SG90: brez dodatnih potreb, lahko deluje z izhodno napetostjo, ki prihaja iz krmilnika baterije.
  • Toda pri MG 995:

    • Skupni kot vrtenja ni enak (širši): za zmanjšanje sem moral uporabiti dodatno funkcijo (Servo_Delta ()).
    • Potrebujete DC/DC korak navzgor, da zagotovite dovolj napetosti servo … nadaljevanje …

/*

- TEST z SG90: brez dodatnih potreb, lahko deluje z izhodno napetostjo, ki prihaja iz krmilnika baterije - ZA MG 995: - uporabite funkcijo Servo_Delta () … - Potrebujete DC/DC korak navzgor, da zagotovite dovolj napetosti servo … se nadaljuje: */ #include bool Logs = true; Servo myservo; #define PIN_SERVO D2 // položaj servo za: 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 star; int pos; int i; void setup () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Dnevniki) 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 (Dnevniki) Serial.println (indeks); if (Dnevniki) Serial.print ("Prilagojena vrednost:"); if (Dnevniki) Serial.println (Servo_Delta (indeks)); zamuda (200); //myservo.write(Servo_Delta(index)); myservo.write (indeks); } zamuda (15); myservo.write (Arr_Servo_Pos [i-7]); // ponovno zapišemo zadnjo vrednost, da se izognemo sunkovitim premikom pri datach myservo.detach (); }}} zamuda (2000); }} int Servo_Delta (vrednost int) {int Temp_val; Temp_val = (vrednost*0,80) +9; vrnitev Temp_val; }

9. korak: Mala hiša

Mala hiša
Mala hiša
Mala hiša
Mala hiša
Mala hiša
Mala hiša

Kot sem že povedal, nisem dobil nobenega 3D tiskalnika. Zato sem se odločil za uporabo starega zaboja za zelenjavo …

Morda ne bo trajalo dolgo, toda do takrat bi imel čas, da razmislim o drugi rešitvi (ali prijatelju, ki ima 3D tiskalnik): za zaščito lesa sem povsod dodal veliko laka …

Vidite lahko "lepe zavese" … To se zgodi, ko ženo prosite, naj opravi delo ^^

10. korak: Skica

V teku … Ampak zdi se, da je stabilen

Še vedno delam na kodi: ker to ni dokončna različica, so vaši komentarji / nasveti dobrodošli;-)

Nekaj pripomb:

  • V kodi je veliko zamud (): s tem se izognemo številnim sesutjem Lolina, zlasti ob ustavitvi zagonskega omrežja …
  • Nisem našel enostavnega in zanesljivega načina za doseganje azimuta sonca: zato sem popravil vrednost servo v funkciji tega, kar sem opazil … Imam dober (in preprost) način, da to dobim, zanima me! Mogoče skladba za študij tukaj, tudi če imam raje spletni API, mi daje azimut neposredno glede na datum, uro in geografski položaj …
  • O tehniki spanja: ker je Lolin 32-bitni procesor Tensilica, je njegova največja vrednost za 32-bitno nepodpisano celo število 4294967295… potem pa za interval globokega spanja daje približno 71 minut. Zato velikokrat spim l'ESP približno 60 minut …

UREDI - 10.08.2018:

Odkril sem, da ima servo veliko sunkovitih gibov, zlasti pred attachment (), detach () in vsakič, ko se Lolin prebudi iz deepSleep ().

Med preučevanjem malo več podatkovnih listov sem spoznal dve stvari:

  • Na podatkovnem listu Lolin je izhod D4 že povezan z BUILTIN_LED …
  • Na podatkovnem listu ESP8266ex smo izvedeli, da se izhod D4 uporablja kot UART 1/U 1 TXD (univerzalni asinhronski sprejemni oddajnik). Določeno je tudi, da se ta UART1 uporablja za tiskanje dnevnika.

Ko sem prebral te informacije, sem spoznal, da izhod D4 ni dobra ideja, zlasti za upravljanje servo motorja!

Tako je zdaj izhod za krmiljenje servomotorja D2, spodnja koda je bila ustrezno posodobljena.

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

Ustvarjanje datuma: 08/Datum objave: 08/Različica: 0.9.4 Različica IDE Arduino: 1.8.6 Hitrost nalaganja: 921600 Vrsta de carte d'l'IDE: "LOLIN (WEMOS) D1 R2 & mini" Zaposleni pri fiziki: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Podatkovna funkcija ESP-8266 Področje uporabe pin ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analogni vhod, največ 3,3 V vhod A0 Napenjanje napetosti D0 IO GPIO16 Connecté à RST (vlijemo globoko. Spanje) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo motor D3 IO, 10k izvlečni GPIO0 D4 IO, 10k izvleka, 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 5V 5V-3V3 3.3V 3.3V RST Reset RST Connecté à D0 (pour le deep.sleep) ****************************************/ #include bool Logs = true; // wifi const char* ssid = "LOL"; const char* geslo = "LOL"; IP -naslov ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); Prehod IPAddress (192, 168, 000, 000); Podomrežje IPAddress (255, 255, 000, 000); Odjemalec WiFiClient; // Servo #include #define PIN_SERVO D2 Servo myservo; // položaj servo za: 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; bajta Switch_State_OUT; #define PIN_SWITCH_IN_PARCEL D6 byte Old_Switch_State_IN_PARCEL; bajta Switch_State_IN_PARCEL; #define PIN_SWITCH_IN_LETTER D7 byte Old_Switch_State_IN_LETTER; bajta Switch_State_IN_LETTER; nepodpisano dolgo stikaloPressTime; const unsigned long DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Vaš naslov MQTT"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (odjemalec); char MQTT_Muss_Buff [70]; Niz MQTT_Pub_String; // Napetostni plovec 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); omrežje (res); pinMode (PIN_SWITCH_OUT, INPUT_PULLUP); Old_Switch_State_OUT = digitalno branje (PIN_SWITCH_OUT); pinMode (PIN_SWITCH_IN_LETTER, INPUT_PULLUP); Old_Switch_State_IN_LETTER = digitalno branje (PIN_SWITCH_IN_LETTER); pinMode (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Old_Switch_State_IN_PARCEL = digitalno branje (PIN_SWITCH_IN_PARCEL); SendBatteryLevel (); omrežje (napačno); // NTP niz tnow = čas (nullptr); Int_Heures = Niz (ctime (& tnow)). Podniz (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Podniz (14, 16).toInt (); // Nočno spanje, če (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("minute)"); spanje (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = Niz (ctime (& tnow)). Podniz (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Podniz (14, 16).toInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Podniz (11, 13)); //Serial.println (String (ctime (& tnow)). Podniz (11, 13).toInt ()); // Servo upravljanje if (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Dnevniki) 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 (Dnevniki) Serial.print indeks); zamuda (200); myservo.write (indeks); } zamuda (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // ponovno zapišite zadnjo vrednost, da se izognete sunkovitim premikom, ko ločite myservo.detach (); } omrežje (res); SendBatteryLevel (); omrežje (napačno); }}} // Deepleep if sobota po 13h if ((String (ctime (& tnow)). Substring (0, 3) == "Sat") && (Int_Heures> = 13)) {if (Dnevniki) Serial.print ("Sleep pour le samedi aprés midi ("); if (Zapisi) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Zapisniki) Serial.println ("minute)"); spanje (Int_Sleep_Duration - Int_Minutes); } // Deepsleep if sunday if (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 (Dnevniki) Serial.println ("minute)"); spanje (Int_Sleep_Duration - Int_Minutes); } // Upravljanje trstike 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 ("obvestilo o kurirju!"); omrežje (res); zamuda (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); zamuda (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); zamuda (5000); omrežje (napačno); }} Old_Switch_State_OUT = Switch_State_OUT; } Switch_State_IN_LETTER = digitalno branje (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 ("kurir prispe!"); omrežje (res); zamuda (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); zamuda (5000); omrežje (napačno); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalno branje (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é!"); omrežje (res); zamuda (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); zamuda (5000); omrežje (napačno); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {delay (5000); vcc = analogno branje (PIN_ANALOG) /10.24; if (Dnevniki) Serial.println ("\ tTension relevée:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); zamuda (5000); } void sleep (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void network (bool UpDown) {if (UpDown) {Serial.print ("Network start"); WiFi.forceSleepWake (); zamuda (1); // init WIFI WiFi.config (ip, dns, prehod, podomrežje); WiFi.begin (ssid, geslo); while (WiFi.status ()! = WL_CONNECTED) {zamuda (500); Serial.print ("."); } zakasnitev (5000); Serial.println ("."); Serial.print ("\ tConnected - naslov IP:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Init NTP Serial.print ("\ tTime Synch."); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0/3 ", 0); while (čas (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 (" / tPoskus povezave MQTT … "); // Poskus povezave, če (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" povezan ");} else {Serial.print (" ni uspelo, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("poskusite znova čez 5 sekund"); // Počakajte 5 sekund, preden poskusite znova zamuditi (5000);}}} void MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) reconnect (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tPošlji podatke v MQTT…"); MQTT_Pub_String = "{" idx / ":" + Niz (Int_IDX) + ", \" Baterija / ":" + Niz (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue / ": \" " + S_Value +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

11. korak: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

V Domoticzu:

Za splošno uporabo:

  • Ustvarite dve "Dummy (Ne dela nič, uporabite za virtualna stikala)":

    1. Prva za črke …
    2. Drugi za paket …
  • Za vsakega od njih prilagodite obvestila;
  • Seveda morate nastaviti žeton Tegegram.

Izbirno:

Dodate lahko "senzor uporabnosti" za nadzor ravni napolnjenosti baterije.

Nasveti: tukaj lahko najdete veliko brezplačnih ikon po meri …

12. korak: Zaključek

Zaključek
Zaključek
Zaključek
Zaključek

Upam, da vam bo ta navodila pomagala:

  • ali želite ustvariti svoj povezani poštni predal;
  • ali samo zato, da vam predstavim nekaj idej za svoje projekte!

Če imate ideje za izboljšave, vas poslušam!

PS: oprostite za angleščino, Google mi zelo pomaga, vendar verjetno ni popoln;-)

Priporočena: