Innehållsförteckning:

Connected Letterbox Solar Powered: 12 steg (med bilder)
Connected Letterbox Solar Powered: 12 steg (med bilder)

Video: Connected Letterbox Solar Powered: 12 steg (med bilder)

Video: Connected Letterbox Solar Powered: 12 steg (med bilder)
Video: This Solar Powered Boat Could be the Future of Transportation 2024, Juli
Anonim
Ansluten brevlåda Solar Powered
Ansluten brevlåda Solar Powered
Ansluten brevlåda Solar Powered
Ansluten brevlåda Solar Powered

För min andra Ible kommer jag att beskriva mina verk om min anslutna brevlåda.

Efter att ha läst denna instruerbara (+ många andra), och eftersom min brevlåda inte är nära mitt hus, ville jag inspirera mig från Open Green Energys verk för att ansluta min brevlåda till min Domoticz -server.

Mål

  • Underrättas av Telegram när brev kommer;
  • Underrättas av Telegram när ett paket kommer;
  • Kontrollera om bokstäverna / paketen har hämtats.

Min främsta begränsning

Postlådan är relativt långt från huset, och det var omöjligt att dra en elkabel upp till den för att driva något.

Jag var tvungen att hitta en annan lösning: solenergi var en bra lösning!

BOM

  • Raspberry Pi (för att vara värd för MQTT- och Domoticz -delar - beskrivs inte här)
  • Ett Telegram Bot -konto
  • Lolin D1 mini (eller Wemos …)
  • Plug-In Skruv Terminal Block Connector
  • TP4056 Litiumbatteriladdningskort
  • 6V 2W solcellspanel
  • Li-Ion 18650 batteri
  • Li-jon batterihållare
  • PCB DIY Lödning Koppar Prototyp kretskort
  • Analog servo SG90
  • 3 Reed Switches (en för bokstäver, en för paket och en för kassan)
  • Magneter
  • Några ledningar
  • Trälåda: Eftersom jag inte fick någon 3D -skrivare insåg jag mitt eget lilla hus med trä för att ta emot elektronikdelar …
  • Extra Ethernet -kabel
  • RJ45 Ethernet Connector Breakout Board

  • J-B Weld
  • Några kullager
  • Skruvar, muttrar, brickor

Steg 1: Globalt schema

Globalt schema
Globalt schema
Globalt schema
Globalt schema

Vackra teckningar är alltid bättre än långa tal;-)

Men några explantationer om MQTT, Domoticz och Telegram är alltid välkomna!

MQTT (Message Queuing Telemetry Transport), är ett meddelandeprotokoll som används för att skicka data mellan enheter och andra system i IoT (sakernas internet) värld.

Utan att gå in för mycket detaljer är dess funktion baserad på principen om klienter som ansluter till en server. I MQTT kallas klienterna Subscriber eller Publisher, och servern heter Broker.

I denna instruktionsbok använder jag bara en utgivare, Lolin ansluten till min brevlåda: när brev eller paket detekteras via vasskontakterna installerade i brevlådan (steg 1 i schematisk), skickar det MQTT -meddelande över WIFI till mäklaren (steg 2).

Broker -delen görs av Mosquitto, som är installerad på Raspberry Pi (steg 3).

Om Domoticz:

Som beskrivs på källsidan är Domoticz ett "hemautomatiseringssystem", så att du kan styra olika enheter och ta emot inmatning från olika protokoll: MQTT är ett av de protokoll som stöds …

Så snart informationen når honom (steg 4) kan du definiera händelser: När det gäller brevlådan valde jag att skicka ett Telegram -meddelande (steg 5).

Slutligen är Telegram -klienten konfigurerad på min telefon (och min fru också! - Steg 6): slutmålet är uppnått …

Steg 2: Schematisk / kabeldragning

Shematic / Wiring
Shematic / Wiring
Schematisk / kabeldragning
Schematisk / kabeldragning
Shematic / Wiring
Shematic / Wiring
Shematic / Wiring
Shematic / Wiring

Ett ord om den analoga läser:

Först och främst märkte jag efter några undersökningar att Lolin mini D1 (som den gamla Wemos), har inbyggd spänningsdelare för stift A0 (med tanke på 220KΩ för R1 och 100KΩ för R2 - se till höger om länkat datablad), vilket tillåter 3,2 volt som maximal analog ingångsspänning.

Med tanke på maximal utspänning från batteriet är 4, 2v (begränsad av laddningskortet) och teoretiskt sett behöver du bara lägga till en extern resitor (i serie med R1) för att öka det maximala ingångsspänningsområdet. Om du sedan lägger till 100K i serie med R1 får du detta resultat:

Vin * R1/(R1+R2) = Vout

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

I min krets valde jag att kunna justera dess värde, det är därför jag har föredraget att använda ett justerbart motstånd i min krets: kanske är det värdelöst för dig, men i min situation har jag satt dess värde till cirka 10KΩ att ha ett sammanhängande värde i Domoticz …

Observera att A0 -stiftet har 10 bitars upplösning: det betyder att i din skiss kommer din analoga avläsning att returnera ett värde mellan 0 och 1024.

Eftersom jag vill skicka ett procentvärde till Domoticz måste jag dela det analoga läsresultatet med 10, 24.

Steg 3: Strömhantering

Power Management
Power Management
Power Management
Power Management

Naturligtvis vill jag att brevlådan ska vara autonom. För att nå mitt mål använder jag dessa element:

  • ett Li-Ion 18650-batteri på 4000mAh;
  • en solpanel som kan leverera 6V / 2W;
  • en laddningskort för litiumbatteri TP4056.

För att välja den mest lämpliga solpanelen tog jag en titt på några exempel, inklusive det här: i detta exempel används en 5,5V / 0,66W solpanel, och är förmodligen tillräcklig för ändamålet. I mitt fall, och eftersom ESP8266 måste vara PÅ under dagen och måste kunna köra en servomotor för att hålla huset mot solen, valde jag en mer kraftfull solpanelmodell (6V / 2W) - Det tillåter mig också att förutse mörka vinterperioder och molniga dagar;-)

Och för att minska energiförbrukningen till det maximala har jag valt följande scenarier:

  • i vetskap om att brevbäraren bara passerade mellan 7:00 och 20:00, placeras ESP i DeepSleep resten av natten;
  • Faktorn går inte mellan lördag middag och måndag morgon: ESP är också placerad i DeepSleep -läge under denna period.
  • För perioden mellan 7:00 och 20:00, och för att minska energiförbrukningen, inaktiverar jag helt enkelt nätverksgränssnittet för ESP: nätet startas om bara vid ankomsten av ett paket eller ett brev, bara tillräckligt med tid för att skicka informationen till Domoticz. Jag behöver inte varnas omedelbart och några sekunder som behövs för att starta om nätverksgränssnittet är inte skadligt!

Något värde om konsumtion i olika lägen som jag använder för Lolin - titta på databladet, s18:

  • I normalt läge (med RF -arbete) kan strömförbrukningen öka till 170mA! Eftersom min brevlåda ligger cirka 50 meter från mitt hus (och vid gränsen för WIFI -signalen …) antar jag att strömmen som används för att upprätthålla anslutningen är på max …
  • I modemsömn sjunker strömförbrukningen till 15mA. Men som du kan se i databladet stoppade det inte helt modemet, eftersom ESP "upprätthåller en Wi-Fi-anslutning utan dataöverföring".
  • Vid djup sömn sjunker effekten till 20uA.

För att vara säker på att wifi inte förblir aktivt i onödan föredrog jag att inaktivera det med följande kommandon. Lägg märke till det många fördröjningssamtalet () … Utan dem kraschar ESP:

WiFi. Koppla bort ();

fördröjning (1000); WiFi.mode (WIFI_OFF); fördröjning (1000); WiFi.forceSleepBegin (); fördröjning (1);

Sammantaget, efter flera dagars drift, verkar det fungera och särskilt att ladda korrekt:

  • detta gör att jag kan köra servomotorn varje timme för att placera huset mot solen;
  • Jag kan också tillåta mig själv att återaktivera nätverksgränssnittet varje timme för att skicka batteriladdningsnivån till Domoticz.

Steg 4: Installera magneter och vasskontakter

Installera magneter och vasskontakter
Installera magneter och vasskontakter
Installera magneter och vasskontakter
Installera magneter och vasskontakter
Installera magneter och vasskontakter
Installera magneter och vasskontakter

Som vanligt använde jag min Proxxon för att forma Reedens plats i en träbit.

För att fixa vasskontakten i hålet använde jag lite J-B-svets.

För paketet och utmatningen, en liten bit tejp, en liten bensåg, och målet är uppnått!

Fördelen med min brevlåda är att den är metall, vilket underlättar positionering av magneter så att den interagerar korrekt med vasskontakter.

Steg 5: Anslut till My Little House

Anslut till My Little House
Anslut till My Little House
Anslut till My Little House
Anslut till My Little House

För att enkelt kunna ansluta och koppla bort kabeln som går till vasskontakterna från brevlådan till huset valde jag att använda en Ethernet -kontakt.

Du kan använda den här modellen eller, som jag, använda en gammal Arduino Ethernet -sköld som hänger i mina lådor: Han led inte, han var modig framför sågen, hans död var snabb ^^

Bara ett ord om denna Arduino Ethernet -sköld: räkna inte med att ha 8 separata drivrutiner … Kablar är parade med 2 inuti skölden … Det gjorde mig galen för länge !!!

Steg 6: I huset …

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

Lagom plats för att fixa batterihållaren, ställa in servon och RJ45 -honkontakten.

Steg 7: Let It Turntable …

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

Målet är att hålla det mot solen …

För att låta möjligheten att vara vridbar använde jag en lång skruv som en axel, med några muttrar och två kullager …

Fram till nu använde jag SG90 servo (vridmoment: 1,8kg/cm vid 4,8v).

Att vända huset (och dess få gram) är tillräckligt. Å andra sidan är jag inte säker på att dess plastkugghjul motstår länge de frekventa vindbyarna som finns i min region.

Jag beställde en till (MG995 vridmoment: 9,4 kg/cm vid 4,8 v), inte särskilt dyrt heller, men med metallväxlar.

Det kommer att vara nästa sak att göra när jag har fått det: Jag litar på min anslutna brevlåda för att meddela mig om hans ankomst!

Steg 8: Några tester

Image
Image

Några anteckningar:

Denna skiss är bara för att efterlikna förändringar av timmar under dagen så att jag kan styra servos position.

  • Med SG90: inga extra behov kan den fungera med OUT -spänningen från batterikontrollen.
  • Men med MG 995:

    • Den totala rotationsvinkeln är inte densamma (bredare): Jag var tvungen att använda en extra funktion för att minska den (Servo_Delta ()).
    • Behöver en DC/DC Steg upp för att ge tillräckligt med spänning till servon … för att fortsätta …

/*

- TEST med SG90: inga extra behov, det kan fungera med OUT -spänningen som kommer från batterikontrollen - FÖR MG 995: - använd Servo_Delta () -funktionen … - Behöver en DC/DC Steg upp för att ge tillräckligt med spänning till servon … för att fortsätt: */ #include bool Logs = true; Servo myservo; #define PIN_SERVO D2 // servoposition för: 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 gammal; int pos; int i; void setup () {Serial.begin (115200); } void loop () {för (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Loggar) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); för (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 (Loggar) Serial.println (index); if (Loggar) Serial.print ("Justerat värde:"); if (Loggar) Serial.println (Servo_Delta (index)); fördröjning (200); //myservo.write(Servo_Delta(index)); myservo.write (index); } fördröjning (15); myservo.write (Arr_Servo_Pos [i-7]); // skriv igen det sista värdet för att undvika ryckiga rörelser när datach myservo.detach (); }}} fördröjning (2000); }} int Servo_Delta (int värde) {int Temp_val; Temp_val = (värde*0,80) +9; returnera Temp_val; }

Steg 9: Lilla huset

Lilla huset
Lilla huset
Lilla huset
Lilla huset
Lilla huset
Lilla huset

Som jag sa tidigare fick jag ingen 3D -skrivare. Så jag bestämmer mig för att använda gammal grönsakslåda …

Kanske kommer det inte att hålla länge, men då skulle jag ha tid att överväga en annan lösning (eller en vän som äger en 3D -skrivare): för att skydda träet lade jag till mycket lack överallt …

Du kan se de "vackra gardinerna" … Det är vad som händer när du ber din fru att göra jobbet ^^

Steg 10: Skissen

Pågår … Men verkar vara stabilt

Jag arbetar fortfarande med koden: eftersom detta inte är en definitiv version är dina kommentarer / råd välkomna;-)

Några anmärkningar:

  • De är många förseningar () i koden: detta för att undvika mycket krasch av Lolin, särskilt när man stoppar ett startande nätverk …
  • Jag hittade inte ett enkelt och tillförlitligt sätt att få solasimut: det är därför jag fixade servovärdet i funktion av vad jag observerade … Jag har ett bra (och enkelt) sätt att få det, jag är intresserad! Kanske ett spår att studera här, även om jag föredrar ett online -API, ger mig azimuten direkt enligt datum, timme och geografisk position …
  • Om sömntekniken: eftersom Lolin är en 32-bitars Tensilica-processor är dess maximala värde för ett 32-bitars osignerat heltal 4294967295 … då ger det cirka 71 minuter för det djupa sömnintervallet. Därför sover jag l'ESP många gånger i cirka 60 minuter …

EDIT - 2018-10-08:

Jag upptäckte att servon har många ryckiga rörelser, särskilt innan bilagan (), lossas () och varje gång Lolin vaknar från deepSleep ().

När jag studerade lite mer datablad insåg jag två saker:

  • På Lolin -databladet är D4 -utgången redan ansluten till BUILTIN_LED …
  • På databladet ESP8266ex lär vi oss att D4 -utgången används som UART 1/U 1 TXD (Universal Asynchronous Receiver Transmitter). Det är också specificerat att denna UART1 används för utskrift av logg.

Genom att läsa denna information insåg jag att D4 -utgången inte var en bra idé, särskilt för att hantera en servomotor!

Så nu är utgången som används för att styra servomotorn D2, koden nedan har uppdaterats i enlighet därmed.

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

Date 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) Stiftfunktion ESP-8266 stiftanvändningsplats ------- ---------------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 Analog ingång, max 3,3V ingång 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 Återställ RST Connecté à D0 (häll djup.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 -undernät (255, 255, 000, 000); WiFiClient -klient; // Servo #include #define PIN_SERVO D2 Servo myservo; // servoposition för: 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; osignerad lång switchPressTime; const osignerad lång DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #include const char* MQTT_Server_IP = "Din MQTT -adress"; 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]; Sträng 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; void setup () {Serial.begin (115200); nätverk (sant); 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 (); nätverk (falskt); // NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Delsträng (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Delsträng (14, 16).toInt (); // Deepsleep för natten om (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); Serial. println ("minuter)"); sömn (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow)). Delsträng (11, 13).toInt (); Int_Minutes = String (ctime (& tnow)). Delsträng (14, 16).toInt (); //Serial.println(String(ctime(&tnow))); //Serial.println ("Heure:" + String (ctime (& tnow)). Delsträng (11, 13)); //Serial.println (String (ctime (& tnow)). Delsträng (11, 13).toInt ()); // Servohantering om (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Loggar) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); för (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 (Loggar) Serial.println (index); fördröjning (200); myservo.write (index); } fördröjning (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // skriv igen det sista värdet för att undvika ryckiga rörelser när du tar loss myservo.detach (); } nätverk (sant); SendBatteryLevel (); nätverk (falskt); }}}} // Sovs ned om lördag efter 13h if ((String (ctime (& tnow)). Substring (0, 3) == "Sat") && (Int_Heures> = 13)) {if (Loggar) Serial.print ("Sleep pour le samedi aprés midi ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Logs) Serial.println ("minutes" "); sömn (Int_Sleep_Duration - Int_Minutes); } // Deepsleep if söndag om (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 ("minuter)"); sömn (Int_Sleep_Duration - Int_Minutes); } // Vasshantering 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 relevant!"); nätverk (sant); fördröjning (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); fördröjning (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); fördröjning (5000); nätverk (falskt); }} 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é!"); nätverk (sant); fördröjning (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); fördröjning (5000); nätverk (falskt); }} 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 arrivé!"); nätverk (sant); fördröjning (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); fördröjning (5000); nätverk (falskt); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} void SendBatteryLevel () {delay (5000); vcc = analogRead (PIN_ANALOG) /10.24; if (Loggar) Serial.println ("\ tTension relevant:" + String (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); fördröjning (5000); } ogiltig sömn (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } ogiltigt nätverk (bool UpDown) {if (UpDown) {Serial.print ("Nätverksstart"); WiFi.forceSleepWake (); fördröjning (1); // init WIFI WiFi.config (ip, dns, gateway, subnät); WiFi.begin (ssid, lösenord); medan (WiFi.status ()! = WL_CONNECTED) {fördröjning (500); Serial.print ("."); } fördröjning (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 ("\ 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 ("."); Delay (100);} Serial.println (".");} Annars {Serial.println ("Nätverksstopp."); WiFi.disconnect (); delay (1000); WiFi.mode (WIFI_OFF); delay (1000); WiFi.forceSleepBegin (); delay (1);}} void reconnect () {while (! ClientMQTT.connected ()) {Serial.print (" / tAtt försöka MQTT -anslutning … "); // Försök att ansluta om (ClientMQTT.connect (" ESP8266ClientBAL ")) {Serial.println (" ansluten ");} annars {Serial.print (" misslyckades, rc = "); Serial.print (ClientMQTT.state ()); Serial.println ("försök igen om 5 sekunder"); // Vänta 5 sekunder innan försök på nytt försöker (5000);}}} void MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {if (! ClientMQTT.connected ()) återanslut (); vcc = analogRead (PIN_ANALOG) /10.24; Serial.println ("\ tSkicka information till 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 (); }

Steg 11: Domoticz

Domoticz
Domoticz
Domoticz
Domoticz
Domoticz
Domoticz

I Domoticz:

För allmänt bruk:

  • Skapa två "Dummy (gör ingenting, använd för virtuella switchar)":

    1. Den första för bokstäver …
    2. Det andra för paket …
  • Anpassa aviseringar för var och en av dem;
  • Naturligtvis måste du konfigurera din Tegegram -token.

Valfritt:

Du kan lägga till en "Utility -sensor" för att övervaka batterinivån.

Tips: här kan du hitta många gratis anpassade ikoner …

Steg 12: Slutsats

Slutsats
Slutsats
Slutsats
Slutsats

Hoppas att denna instruktör hjälper dig:

  • om du vill skapa din egen anslutna brevlåda;
  • eller bara för att ge dig några idéer för dina projekt!

Om du har idéer till förbättringar lyssnar jag!

PS: förlåt för min engelska, Google-översättning hjälper mig mycket men är förmodligen inte perfekt;-)

Rekommenderad: