From aef78962fb63b3fc62545ea424acf35480900f47 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Thu, 23 Jan 2020 18:47:02 +0100 Subject: [PATCH] Some modifications to reduce power consumption i AP mode --- lib/HanConfigAp/src/HanConfigAp.cpp | 7 ++++--- src/AmsToMqttBridge.ino | 12 ++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/HanConfigAp/src/HanConfigAp.cpp b/lib/HanConfigAp/src/HanConfigAp.cpp index 8cfeef96..daa09dda 100644 --- a/lib/HanConfigAp/src/HanConfigAp.cpp +++ b/lib/HanConfigAp/src/HanConfigAp.cpp @@ -28,8 +28,8 @@ void HanConfigAp::setup(int accessPointButtonPin, Stream* debugger) // Assign pin for boot as AP pinMode(accessPointButtonPin, INPUT_PULLUP); - // Test if we're holding down the AP pin, over 5 seconds - int time = millis() + 5000; + // Test if we're holding down the AP pin, over 1 second + int time = millis() + 1000; print("Press the AP button now to boot as access point"); while (millis() < time) { @@ -55,8 +55,9 @@ void HanConfigAp::setup(int accessPointButtonPin, Stream* debugger) WiFi.mode(WIFI_OFF); delay(2000); - WiFi.softAP(AP_SSID); WiFi.mode(WIFI_AP); + WiFi.setOutputPower(0); + WiFi.softAP(AP_SSID); /* Setup the DNS server redirecting all the domains to this IP */ dnsServer.setErrorReplyCode(DNSReplyCode::NoError); diff --git a/src/AmsToMqttBridge.ino b/src/AmsToMqttBridge.ino index 0160c227..9f0c56e7 100644 --- a/src/AmsToMqttBridge.ino +++ b/src/AmsToMqttBridge.ino @@ -73,13 +73,16 @@ void setup() { while (!debugger); debugger->println(""); debugger->println("Started..."); + debugger->print("Voltage: "); + debugger->print(ESP.getVcc()); + debugger->println("mV"); } if (ESP.getVcc() < 3300) { if(debugger) { debugger->print("Voltage is too low: "); debugger->print(ESP.getVcc()); - debugger->println("v"); + debugger->println("mV"); } ESP.deepSleep(5000000); //Deep sleep for 5 seconds to allow output cap to charge up } @@ -138,8 +141,11 @@ void loop() else { // Continously flash the LED when AP mode - if (millis() / 1000 % 2 == 0) led_on(); + if (millis() / 50 % 64 == 0) led_on(); else led_off(); + + // Make sure there is enough power to run + delay(max(10, 3500-ESP.getVcc())); } ws.loop(); } @@ -229,6 +235,7 @@ void readHanPort() json["id"] = WiFi.macAddress(); json["up"] = millis(); json["t"] = time; + json["vcc"] = ((double) ESP.getVcc()) / 1000; // Add a sub-structure to the json object, // to keep the data from the meter itself @@ -372,6 +379,7 @@ void sendMqttData(String data) json["id"] = WiFi.macAddress(); json["up"] = millis(); json["data"] = data; + json["vcc"] = ((double) ESP.getVcc()) / 1000; // Stringify the json String msg;