Taula de continguts:

Bústia connectada alimentada per energia solar: 12 passos (amb imatges)
Bústia connectada alimentada per energia solar: 12 passos (amb imatges)

Vídeo: Bústia connectada alimentada per energia solar: 12 passos (amb imatges)

Vídeo: Bústia connectada alimentada per energia solar: 12 passos (amb imatges)
Vídeo: 5 УДИВИТЕЛЬНЫХ ЖИЗНЕННЫХ ХАКОВ # 2 2024, Juliol
Anonim
Bústia connectada alimentada per energia solar
Bústia connectada alimentada per energia solar
Bústia connectada alimentada per energia solar
Bústia connectada alimentada per energia solar

Per al meu segon Ible, us descriuré les meves obres sobre la meva bústia connectada.

Després de llegir aquest Manual d’instruccions (+ molts altres), i com que la meva bústia no és a prop de casa, volia inspirar-me en les obres d’Open Green Energy per connectar la meva bústia al servidor Domoticz.

Metes

  • Deixeu-vos avisar per Telegram quan arribin les cartes;
  • Telegram us avisarà quan arribi un paquet;
  • Comproveu si s’han recollit les cartes / paquets.

La meva principal restricció

La bústia està relativament lluny de casa i era impossible tirar-hi un cable elèctric per alimentar res.

Vaig haver de trobar una altra solució: l'energia solar era una bona solució!

El BOM

  • Raspberry Pi (per allotjar parts MQTT i Domoticz - no descrit aquí)
  • Un compte de Telegram Bot
  • Lolin D1 mini (o Wemos …)
  • Connector de bloc de borns de cargol endollable
  • Taula de càrrega de bateria de liti TP4056
  • Panell solar fotovoltaic de 6V 2W
  • Bateria Li-Ion 18650
  • Suport de bateria Li-Ion
  • Circuit imprès de prototip de coure de soldadura de bricolatge PCB
  • Servo analògic SG90
  • 3 interruptors Reed (un per a cartes, un per a paquet i un per a caixa)
  • Imants
  • Alguns cables
  • Caixa de fusta: com que no aconseguia cap impressora 3D, em vaig adonar de la meva caseta amb fusta per rebre peces electròniques …
  • Cable Ethernet de recanvi
  • Taula de separació del connector Ethernet RJ45

  • Soldadura J-B
  • Alguns rodaments de boles
  • Cargols, femelles, volanderes

Pas 1: Esquema global

Esquema global
Esquema global
Esquema global
Esquema global

Els bells dibuixos sempre són millors que els llargs discursos;-)

Però algunes explicacions sobre MQTT, Domoticz i Telegram són sempre benvingudes.

MQTT (Message Queuing Telemetry Transport), és un protocol de missatgeria, que s’utilitza per enviar dades entre dispositius i altres sistemes del món de l’IoT (Internet de les coses).

Sense entrar en massa detalls, el seu funcionament es basa en el principi de la connexió de clients a un servidor. A MQTT, els clients s’anomenen subscriptor o editor i el servidor s’anomena intermediari.

En aquest manual d’instruccions, només faig servir un editor, el Lolin, connectat a la meva bústia: quan es detecten cartes o paquets mitjançant els contactes reed instal·lats a la bústia (pas 1 a l’esquema), s’envia un missatge MQTT per WIFI al corredor (pas 2)).

La part Broker la fa Mosquitto, que s’instal·la al Raspberry Pi (pas 3).

Quant a Domoticz:

Tal com es descriu a la pàgina d'origen, Domoticz és un "sistema domòtic" que us permet controlar diversos dispositius i rebre l'entrada de diversos protocols: MQTT és un dels protocols compatibles …

Tan aviat com li arribi la informació (pas 4), podeu definir els esdeveniments: en el cas de la bústia, he triat enviar una notificació de Telegram (pas 5).

Finalment, el client de Telegram està configurat al meu telèfon (i a la meva dona també! - Pas 6): s’arriba a l’objectiu final …

Pas 2: Shematic / Cablejat

Shematic / Cablejat
Shematic / Cablejat
Shematic / Cablejat
Shematic / Cablejat
Shematic / Cablejat
Shematic / Cablejat
Shematic / Cablejat
Shematic / Cablejat

Una paraula sobre l'analògic deia:

Primer de tot, després d’algunes investigacions, vaig notar que Lolin mini D1 (com l’antic Wemos), incorporava un divisor de tensió per al pin A0 (tenint en compte 220KΩ per a R1 i 100KΩ per a R2 - vegeu a la dreta del full de dades enllaçat), permetent 3,2 volts com a tensió d’entrada analògica màxima.

Tenint en compte que la tensió màxima de sortida de la bateria és de 4, 2 v (limitada per la placa de càrrega) i, teòricament, només cal afegir un resitor extern (en sèrie amb R1) per augmentar el rang de tensió màxima d’entrada. A continuació, si afegiu 100K en sèrie amb R1, obtindreu aquest resultat:

Vin * R1 / (R1 + R2) = Vout

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

Al meu circuit, vaig optar per ajustar-ne el valor, per això he preferit utilitzar una resistència ajustable al meu circuit: potser no us servirà de res, però en la meva situació, vaig establir el seu valor a uns 10KΩ per tenir un valor coherent a Domoticz …

Tingueu en compte que el pin A0 té una resolució de 10 bits: això vol dir que al vostre esbós, la lectura analògica retornarà un valor entre 0 i 1024.

Com que vull enviar un valor percentual a Domoticz, he de dividir el resultat de lectura analògica per 10, 24.

Pas 3: Gestió de l'energia

Gestió d'energia
Gestió d'energia
Gestió d'energia
Gestió d'energia

Per descomptat, vull que la bústia sigui autònoma. Per assolir el meu objectiu, faig servir aquests elements:

  • una bateria Li-Ion 18650 de 4000 mAh;
  • un panell solar que pot subministrar 6V / 2W;
  • una placa de càrrega de la bateria de liti TP4056.

Per triar el panell solar més adequat, vaig fer una ullada a alguns exemples, inclòs aquest: en aquest exemple, s’utilitza un panell solar de 5,5 V / 0,66 W i probablement sigui suficient per a la finalitat. En el meu cas, i com que l’ESP8266 ha de romandre engegat durant el dia i ha de poder fer funcionar un servomotor per mantenir la casa cara al sol, he escollit un model de panell solar més potent (6V / 2W) - També em permet anticipar períodes foscos d’hivern i dies ennuvolats;-)

A més, i per tal de reduir al màxim la despesa energètica, he seleccionat els següents escenaris:

  • sabent que el carter només va passar entre les 7 del matí i les 8 del vespre, l'ESP es col·loca a DeepSleep la resta de la nit;
  • El factor no passa entre dissabte al migdia i dilluns al matí: l'ESP també es col·loca en mode DeepSleep durant aquest període.
  • Per al període comprès entre les 7 del matí i les 8 del vespre, i per tal de reduir el consum d’energia, simplement desactivo la interfície de xarxa de l’ESP: la xarxa només es reinicia a l’arribada d’un paquet o una carta, el temps suficient per enviar la informació a Domoticz. No necessito ser avisat immediatament i els pocs segons addicionals necessaris per reiniciar la interfície de xarxa no són perjudicials.

Alguns valors sobre el consum en diferents modes que faig servir per a Lolin: mireu el full de dades, p18:

  • En mode normal (amb funcionament de RF), el consum d'energia pot augmentar fins a 170 mA. Com que la meva bústia és a uns 50 metres de casa (i al límit del senyal WIFI …) suposo que la potència utilitzada per mantenir la connexió és màxima …
  • A Modem-sleep, el consum d'energia baixa fins a 15 mA. Però, com podeu veure al full de dades, no va aturar completament el mòdem, ja que l'ESP "manté una connexió Wi-Fi sense transmissió de dades".
  • En son profund, la potència cau a 20uA.

Per estar segur que el wifi no es manté actiu innecessàriament, he preferit desactivar-lo amb les ordres següents. Tingueu en compte les moltes trucades delay () … Sense elles, el bloqueig ESP:

WiFi.disconnect ();

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

En general, després de diversos dies de funcionament, sembla que funciona i sobretot carregar correctament:

  • això em permet fer funcionar el servomotor cada hora per situar la casa cap al sol;
  • També em puc permetre reactivar la interfície de xarxa cada hora per enviar a Domoticz el nivell de càrrega de la bateria.

Pas 4: Instal·lació de contactes d’imants i canyes

Instal·lació de contactes d’imants i canyes
Instal·lació de contactes d’imants i canyes
Instal·lació de contactes d’imants i canyes
Instal·lació de contactes d’imants i canyes
Instal·lació de contactes d’imants i canyes
Instal·lació de contactes d’imants i canyes

Com de costum, he utilitzat el meu Proxxon per donar forma al lloc de la canya en un tros de fusta.

Per fixar el contacte de canya al seu forat, he utilitzat una mica de soldadura J-B.

Per al paquet i la sortida, un tros de cinta, una mica de serra mecànica, i l'objectiu s'ha assolit.

L’avantatge de la meva bústia és que és metàl·lic, cosa que facilita el posicionament dels imants perquè interactuï correctament amb els contactes de canyes.

Pas 5: connecteu-vos a My Little House

Connecteu-vos a My Little House
Connecteu-vos a My Little House
Connecteu-vos a My Little House
Connecteu-vos a My Little House

Per poder connectar i desconnectar fàcilment el cable que va als contactes reed de la bústia a la casa, vaig optar per utilitzar un connector Ethernet.

Podeu utilitzar aquest model o, com jo, fer servir un vell escut Ethernet Arduino que penja als meus calaixos: no patia, era valent davant de la serra, la seva mort va ser ràpida ^^

Només una paraula sobre aquest blindatge Arduino Ethernet: no espereu tenir 8 controladors separats … Els cables estan emparellats per 2 a l'interior del blindatge … Em va tornar boig durant massa temps !!!

Pas 6: a la casa …

A la casa …
A la casa …
A la casa …
A la casa …

El lloc suficient per fixar el suport de la bateria, configurar el servo i el connector femal RJ45.

Pas 7: deixeu que el plat giratori …

Let It Turntable …
Let It Turntable …
Let It Turntable …
Let It Turntable …
Let It Turntable …
Let It Turntable …
Let It Turntable …
Let It Turntable …

L'objectiu és mantenir-la cara al sol …

Per deixar girar, vaig utilitzar un cargol llarg com a eix, amb unes femelles i dos coixinets de boles …

Fins ara, utilitzava el servo SG90 (parell: 1,8 kg / cm a 4,8 v).

Per girar la casa (i els seus pocs grams) n’hi ha prou. D’altra banda, no estic segur que els seus engranatges de plàstic resistin durant molt de temps a les freqüents ràfegues de vent que hi ha a la meva regió.

En vaig demanar un altre (parell MG995: 9,4 kg / cm a 4,8 v), tampoc molt car, però amb engranatges metàl·lics.

Serà el següent que heu de fer quan el rebi: confio en la meva bústia de correus connectada per avisar-me de la seva arribada.

Pas 8: algunes proves

Image
Image

Algunes notes:

Aquest esbós només serveix per emular canvis d'hores durant el dia per permetre'm controlar la posició del servo.

  • Amb SG90: no hi ha necessitats addicionals, pot funcionar amb la tensió de sortida provinent del controlador de la bateria.
  • Però, amb MG 995:

    • L’angle total de rotació no és el mateix (més ampli): havia de fer servir una funció addicional per reduir-lo (Servo_Delta ()).
    • Necessiteu un pas CC / CC per proporcionar suficient voltatge al servo … per continuar …

/*

- PROVA amb SG90: no hi ha necessitats addicionals, pot funcionar amb la tensió OUT que surt del controlador de bateria - PER A MG 995: - utilitzeu la funció Servo_Delta () … - Necessiteu un pas CC / CC per proporcionar suficient voltatge al servo … continuar: * / #include bool Logs = true; Servo miservo; #define PIN_SERVO D2 // servo servo 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 vell; int pos; int i; configuració nul·la () {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 (índex); if (Registres) Serial.print ("Valor ajustat:"); if (Registres) Serial.println (Servo_Delta (índex)); retard (200); //myservo.write(Servo_Delta(index)); myservo.write (índex); } retard (15); myservo.write (Arr_Servo_Pos [i-7]); // torneu a escriure l'últim valor per evitar moviments bruscs quan datach myservo.detach (); }}} delay (2000); }} int Servo_Delta (valor int) {int Temp_val; Temp_val = (valor * 0,80) +9; torna Temp_val; }

Pas 9: La petita casa

La casa petita
La casa petita
La casa petita
La casa petita
La casa petita
La casa petita

Com he dit abans, no vaig aconseguir cap impressora 3D. Així que decideixo utilitzar una caixa vegetal antiga …

Potser no durarà molt temps, però per aleshores tindria temps de plantejar-me una altra solució (o un amic que tingui una impressora 3D): per protegir la fusta, he afegit molt de vernís a tot arreu …

Es poden veure les "boniques cortines" … Això és el que passa quan demanes a la teva dona que faci la feina ^^

Pas 10: l'esbós

En curs … Però sembla estar estable

Encara estic treballant en el codi: com que no és una versió definitiva, els vostres comentaris / consells són benvinguts;-)

Algunes observacions:

  • Hi ha molts retards () en el codi: es tracta d’evitar molts accidents del Lolin, sobretot mentre s’atura una xarxa d’arrencada …
  • No vaig trobar una manera fàcil i fiable d'obtenir l'azimut solar: per això vaig fixar el valor del servo en funció del que vaig observar … Tinc una bona (i senzilla) manera d'aconseguir-ho, m'interessa! Potser una pista per estudiar aquí, fins i tot si prefereixo una API en línia, em dóna l'azimut directament segons la data, l'hora i la posició geogràfica …
  • Quant a la tècnica del son: com que el Lolin és un processador Tensilica de 32 bits, el seu valor màxim per a un enter sense signar de 32 bits és 4294967295 … donat aproximadament 71 minuts per a l'interval de son profund. És per això que faig dormir l'ESP moltes vegades durant uns 60 minuts …

EDITAR - 2018-10-08:

Vaig descobrir que el servo té molts moviments sacsejats, sobretot abans de la fixació (), desprendre () i cada vegada que el Lolin es desperta de deepSleep ().

Mentre estudiava una mica més de fulls de dades, em vaig adonar de dues coses:

  • Al full de dades de Lolin, la sortida D4 ja està connectada amb el BUILTIN_LED …
  • Al full de dades ESP8266ex, aprenem que la sortida D4 s’utilitza com a UART 1 / U 1 TXD (transmissor de receptor asíncron universal). També s’especifica que aquest UART1 s’utilitza per imprimir registres.

En llegir aquestes informacions, em vaig adonar que la sortida D4 no era una bona idea, sobretot per gestionar un servomotor.

Per tant, ara la sortida utilitzada per controlar el servomotor és D2, el codi següent s’ha actualitzat en conseqüència.

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

Data de creació: 08 / Data de creació: 08 / Versió: 0.9.4 Versió IDE Arduino: 1.8.6 Velocitat de càrrega: 921600 Tipus de carta a l'IDE: "LOLIN (WEMOS) D1 R2 & mini" Carte physique employée: LOLIN (WEMOS) D1 R2 i mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Pin Function ESP-8266 Pin Utilization locale ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Entrada analògica, entrada màxima de 3,3 V. 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 (pour le deep.sleep) **************************************** / #include bool Logs = true; // wifi const char * ssid = "LOL"; const char * password = "LOL"; Adreça IP IP (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); Passarel·la IPAddress (192, 168, 000, 000); Subxarxa IPAddress (255, 255, 000, 000); Client WiFiClient; // Servo #include #define PIN_SERVO D2 Servo myservo; // posició servo durant: 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; interruptor llarg sense signar PressTime; const unsigned long DEBOUCE_TIME = 200; // Analògic #define PIN_ANALOG A0 // MQTT #include const char * MQTT_Server_IP = "La vostra adreça MQTT"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (client); char MQTT_Message_Buff [70]; Cadena MQTT_Pub_String; // Tensió float vcc; // NTP #include time_t tnow; int Old_Time = 0; int_Heures = 0; int_Minutes = 0; int Int_Sleep_Duration = 63; configuració nul·la () {Serial.begin (115200); xarxa (veritable); 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 = Llegir digital (PIN_SWITCH_IN_LETTER); pinMode (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Old_Switch_State_IN_PARCEL = DigitalRead (PIN_SWITCH_IN_PARCEL); SendBatteryLevel (); xarxa (fals); // NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Substring (14, 16).toInt (); // Deepsleep for the night if (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("minuts"); sleep (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set 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)). Subcadena (11, 13)); //Serial.println (String (ctime (& tnow)). Substring (11, 13).toInt ()); // Gestió de servos si (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 (índex); retard (200); myservo.write (índex); } retard (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // torneu a escriure l'últim valor per evitar moviments bruscs quan desmunteu myservo.detach (); } xarxa (cert); SendBatteryLevel (); xarxa (fals); }}} // Deepsleep if dissabte després de les 13h if ((String (ctime (& tnow)). Substring (0, 3) == "Sat") && (Int_Heures> = 13)) {if (Logs) Serial.print ("Sleep for the 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 diumenge 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 (Logs) Serial.println ("minuts"); sleep (Int_Sleep_Duration - Int_Minutes); } // Gestió de canyes 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 ("courrier relevé!"); xarxa (veritable); retard (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); retard (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); retard (5000); xarxa (fals); }} 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 ("courrier arrivé!"); xarxa (veritable); retard (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); retard (5000); xarxa (fals); }} 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 arribé!"); xarxa (veritable); retard (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); retard (5000); xarxa (fals); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Logs) Serial.println ("\ tTension relevée:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); retard (5000); } void sleep (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } void network (bool UpDown) {if (UpDown) {Serial.print ("Inici de la xarxa"); WiFi.forceSleepWake (); retard (1); // init WIFI WiFi.config (ip, dns, passarel·la, subxarxa); WiFi.begin (ssid, contrasenya); while (WiFi.status ()! = WL_CONNECTED) {demora (500); Serial.print ("."); } retard (5000); Serial.println ("."); Serial.print ("\ tConnected - Adreça IP:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Iniciar NTP Serial.print ("\ tTemporització de sincronització."); 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 (".");} Else {Serial.println ("Parada de xarxa"); WiFi.disconnect (); delay (1000); WiFi.mode (WIFI_OFF); delay (1000); WiFi.forceSleepBegin (); delay (1);}} void reconnect () {while (! ClientMQTT.connected ()) {Serial.print (" / t Intent de connexió MQTT … "); // Intent de connexió si (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" connectat ");} else {Serial.print (" fallen, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("torneu a provar-ho en 5 segons"); // Espereu 5 segons abans de tornar a provar el retard (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 ("\ tEnviar informació a MQTT …"); MQTT_Pub_String = "{" idx / ":" + String (Int_IDX) + ", \" Battery / ":" + String (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 (); }

Pas 11: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

A Domoticz:

Per a ús general:

  • Creeu dos "Dummy (no fa res, utilitzeu-los per a commutadors virtuals)":

    1. El primer per a lletres …
    2. El segon per al paquet …
  • Per a cadascun d’ells, personalitzeu les notificacions;
  • Per descomptat, heu de configurar el vostre testimoni Tegegram.

Opcionalment:

Podeu afegir un "sensor d'utilitat" per supervisar el nivell de càrrega de la bateria.

Consells: aquí podeu trobar moltes icones personalitzades gratuïtes …

Pas 12: Conclusió

Conclusió
Conclusió
Conclusió
Conclusió

Espero que aquest instructiu us ajudi:

  • si voleu crear la vostra pròpia bústia de lletres connectada;
  • o simplement per donar-vos algunes idees per als vostres projectes!

Si teniu idees per millorar, us estic escoltant.

PD: perdó pel meu anglès, la traducció de Google m'ajuda molt, però probablement no sigui perfecta;-)

Recomanat: