ESP8266 Klingel MQTT - Batterie dauernd alle

OP (Firma: Privat) #6299079
Lesenswert?
• ▲
▼
Hi,

ich bin Microcontroller Neuling und habe diese Schaltung ESP Klingel 
hier nachgebaut, Anbindung an Fritzbox und MQTT:

https://www.reichelt.de/magazin/how-to/smarte-tuerklingel/

oder in etwas wie hier:

https://github.com/tIsGoud/Doorbell-via-Wemos-and-optocoupler/blob/master/README.md

Die Spannungsversorgung des D1 macht eine 3,6 Volt Batterie.

Die Klingel macht das was Sie soll, leider geht der D1 irgendwie nicht 
in den deep sleep und meine Batterie ist nach kurzer Zeit leer.
Habe den D1 schon ausgetauscht und auch mit der Original Firmware 
geflasht.

Ich habe versucht mein Messgerät zwichen die Batterie und dem D1 zu 
hängen, leider sind die Messergebnisse irgendwie alle mist, eventuell 
mache ich da etwas falsch, ist schon eine weile her das ich mich mit 
Elektronik beschäfftigt habe.

Wie messe ich den Srom richtig und was muss ich dabei beachten ?
Warum geht der D! nicht in den deep sleep ?

Gruß
HDM

Hier einmal der Sketch den ich verwendet habe:

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <tr064.h>
#include <WiFiClient.h>

const char WIFI_SSID[] = "";   // <-- ändern
const char WIFI_PASSWORD[] = ""; // <-- ändern
const char USER[] = ""; // <-- Fritzbox User
const char PASSWORD[] = ""; // Fritzbox User Kennwort <-- ändern
const char FRITZBOX_IP[] = "";
const int FRITZBOX_PORT = 49000;
const char* IOBROKER = ""; // <-- ändern auf ioBroker-IP
const int IOBROKER_PORT = 8087;
String IOBROKER_DP = "/set/javascript.0.ESP_Klingel?value=";
int KLINGELDAUER = 10;                                // wieviel 
Sekunden sollen die Telefone klingeln

TR064 tr064_connection(FRITZBOX_PORT, FRITZBOX_IP, USER, PASSWORD);

const IPAddress STATIC_IP(192, 168, 168, 140);
const IPAddress GATEWAY(192, 168, 168, 1);
const IPAddress SUBNET(255, 255, 255, 0);
const IPAddress DNS(GATEWAY);

const char DEVICE_NAME[] = "ESP-Klingel";

void setup() {
  WiFi.hostname(DEVICE_NAME);
  WiFi.config(STATIC_IP, SUBNET, GATEWAY, DNS);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  WiFi.mode(WIFI_STA);

  while (WiFi.status() != WL_CONNECTED) {
   delay(50);
  }

  tr064_connection.init();

  String tr064_service = "urn:dslforum-org:service:X_VoIP:1";

  // Die Telefonnummer **9 ist der Fritzbox-Rundruf.
  String call_params[][2] = {{"NewX_AVM-DE_PhoneNumber", "**612"}};
  tr064_connection.action(tr064_service, "X_AVM-DE_DialNumber", 
call_params, 1);

   //ioB-Part Datenpunkt per Simple-API setzen##############
   // Use WiFiClient class to create TCP connections
      WiFiClient client;
      if (!client.connect(IOBROKER, IOBROKER_PORT)) {
         Serial.println("connection failed");
      return;
      }
  client.print(String("GET ") + IOBROKER_DP + "true HTTP/1.1\r\n" +
               "Host: " + IOBROKER + "\r\n" +
               "Connection: close\r\n\r\n");

  client.stop();
  //#######################################################

  // Warte x Sekunden bis zum auflegen
  delay(KLINGELDAUER*1000);
  tr064_connection.action(tr064_service, "X_AVM-DE_DialHangup");

  //ioB-DP löschen
  client.connect(IOBROKER, IOBROKER_PORT);
  if (!client.connect(IOBROKER, IOBROKER_PORT)) {
     Serial.println("connection failed");
  return;
  }
  client.print(String("GET ") + IOBROKER_DP + "false HTTP/1.1\r\n" +
           "Host: " + IOBROKER + "\r\n" +
           "Connection: close\r\n" +
           "\r\n"
          );
  client.stop();

  ESP.deepSleep(0);
}

void loop() {}
Gast #6299187
Lesenswert?
• ▲
▼
> void loop() {}

Da würde ich auch ein ESP.deepSleep(0); reinsetzen.

Warum? Wenn du oben einmal per "Connection failed" aus der Setup 
springst, läuft die Loop bis die Batterie leer ist.

Ansonsten: Ruhestromaufnahme von deinem ESP-Modul gemessen? Ist da eine 
LED oder ein Linearregler mit 5mA Iq drauf?
#6299698
Lesenswert?
• ▲
▼
Damit der DeepSleep Fehlerfrei funktioniert wird ein delay(100); danach 
empfohlen. Irgendwie braucht der ESP das.

Der D1 Mini ansich verbraucht sehr viel Ruhestrom durch den nicht 
optimalen verbauten Spannungsregler und der USB-UART Wandeler. 
Hardwareanpassung hilft da Strom zu sparen.

Sehr empfehlenswerte Seite in Sachen ESP8266:
http://stefanfrings.de/esp8266/index.html#deepsleep

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.