From a098614ca64cb6e05816325947c5f02312675f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Fri, 13 Jan 2017 11:27:50 +0100 Subject: [PATCH] Adding current, voltage, apparent and reactive power reports to Sonoff POW --- code/espurna/config/sensors.h | 10 +++- code/espurna/data/index.html.gz | Bin 3250 -> 3547 bytes code/espurna/data/script.js.gz | Bin 37874 -> 37889 bytes code/espurna/espurna.ino | 2 - code/espurna/pow.ino | 101 ++++++++++++++++++++++++-------- code/espurna/web.ino | 50 +++++++++++----- code/html/custom.js | 3 + code/html/index.html | 50 +++++++++++++++- code/platformio.ini | 4 +- 9 files changed, 173 insertions(+), 47 deletions(-) diff --git a/code/espurna/config/sensors.h b/code/espurna/config/sensors.h index 338a9913..18d67bc9 100644 --- a/code/espurna/config/sensors.h +++ b/code/espurna/config/sensors.h @@ -61,5 +61,11 @@ #define POW_VOLTAGE_R_UP ( 5 * 470000 ) // Real: 2280k #define POW_VOLTAGE_R_DOWN ( 1000 ) // Real 1.009k #define POW_POWER_TOPIC "/power" -#define POW_UPDATE_INTERVAL 10000 -#define POW_REPORT_EVERY 6 +#define POW_CURRENT_TOPIC "/current" +#define POW_VOLTAGE_TOPIC "/voltage" +#define POW_APOWER_TOPIC "/apower" +#define POW_RPOWER_TOPIC "/rpower" +#define POW_PFACTOR_TOPIC "/pfactor" +#define POW_ENERGY_TOPIC "/energy" +#define POW_UPDATE_INTERVAL 5000 +#define POW_REPORT_EVERY 12 diff --git a/code/espurna/data/index.html.gz b/code/espurna/data/index.html.gz index 2e18235ddda36ee699d17020c779c5483490db45..0f4ed80475d5713134ac395ef4e32060d9b5a39c 100644 GIT binary patch literal 3547 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 literal 3250 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 diff --git a/code/espurna/data/script.js.gz b/code/espurna/data/script.js.gz index 777cb0539f51a4d15e4e9b403012de077b7447b7..c85032e77d6fee678630a890a4b121411e412cfe 100644 GIT binary patch delta 36229 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 F0RUQTB?15d delta 36234 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 Ky*k4(t^ok;#4))5 diff --git a/code/espurna/espurna.ino b/code/espurna/espurna.ino index 0031b9dc..bca34abf 100644 --- a/code/espurna/espurna.ino +++ b/code/espurna/espurna.ino @@ -175,6 +175,4 @@ void loop() { powerMonitorLoop(); #endif - yield(); - } diff --git a/code/espurna/pow.ino b/code/espurna/pow.ino index f6865728..0b2d6910 100644 --- a/code/espurna/pow.ino +++ b/code/espurna/pow.ino @@ -11,6 +11,8 @@ Copyright (C) 2016-2017 by Xose PĂ©rez #include +#define POW_USE_INTERRUPTS 1 + HLW8012 hlw8012; // ----------------------------------------------------------------------------- @@ -28,17 +30,19 @@ void hlw8012_cf_interrupt() { } void powAttachInterrupts() { - //attachInterrupt(POW_CF1_PIN, hlw8012_cf1_interrupt, CHANGE); + attachInterrupt(POW_CF1_PIN, hlw8012_cf1_interrupt, CHANGE); attachInterrupt(POW_CF_PIN, hlw8012_cf_interrupt, CHANGE); DEBUG_MSG("[POW] Enabled\n"); } void powDettachInterrupts() { - //detachInterrupt(POW_CF1_PIN); + detachInterrupt(POW_CF1_PIN); detachInterrupt(POW_CF_PIN); DEBUG_MSG("[POW] Disabled\n"); } +// ----------------------------------------------------------------------------- + void powSaveCalibration() { setSetting("powPowerMult", hlw8012.getPowerMultiplier()); setSetting("powCurrentMult", hlw8012.getCurrentMultiplier()); @@ -76,6 +80,13 @@ void powSetExpectedVoltage(unsigned int voltage) { } } +void powReset() { + hlw8012.resetMultipliers(); + powSaveCalibration(); +} + +// ----------------------------------------------------------------------------- + unsigned int getActivePower() { return hlw8012.getActivePower(); } @@ -84,6 +95,10 @@ unsigned int getApparentPower() { return hlw8012.getApparentPower(); } +unsigned int getReactivePower() { + return hlw8012.getReactivePower(); +} + double getCurrent() { return hlw8012.getCurrent(); } @@ -96,6 +111,8 @@ unsigned int getPowerFactor() { return (int) (100 * hlw8012.getPowerFactor()); } +// ----------------------------------------------------------------------------- + void powSetup() { // Initialize HLW8012 @@ -104,7 +121,11 @@ void powSetup() { // * currentWhen is the value in sel_pin to select current sampling // * set use_interrupts to true to use interrupts to monitor pulse widths // * leave pulse_timeout to the default value, recommended when using interrupts - hlw8012.begin(POW_CF_PIN, POW_CF1_PIN, POW_SEL_PIN, POW_SEL_CURRENT, false, 1000000); + #if POW_USE_INTERRUPTS + hlw8012.begin(POW_CF_PIN, POW_CF1_PIN, POW_SEL_PIN, POW_SEL_CURRENT, true); + #else + hlw8012.begin(POW_CF_PIN, POW_CF1_PIN, POW_SEL_PIN, POW_SEL_CURRENT, false, 1000000); + #endif // These values are used to calculate current, voltage and power factors as per datasheet formula // These are the nominal values for the Sonoff POW resistors: @@ -113,25 +134,13 @@ void powSetup() { // * The VOLTAGE_RESISTOR_DOWNSTREAM is the 1kOhm resistor in the voltage divider that feeds the V2P pin in the HLW8012 hlw8012.setResistors(POW_CURRENT_R, POW_VOLTAGE_R_UP, POW_VOLTAGE_R_DOWN); + // Retrieve calibration values powRetrieveCalibration(); - /* - static WiFiEventHandler e1 = WiFi.onStationModeDisconnected([](const WiFiEventStationModeDisconnected& event) { - powDettachInterrupts(); - }); - - static WiFiEventHandler e2 = WiFi.onSoftAPModeStationDisconnected([](const WiFiEventSoftAPModeStationDisconnected& event) { - powDettachInterrupts(); - }); - - static WiFiEventHandler e3 = WiFi.onStationModeConnected([](const WiFiEventStationModeConnected& event) { - powAttachInterrupts(); - }); - - static WiFiEventHandler e4 = WiFi.onSoftAPModeStationConnected([](const WiFiEventSoftAPModeStationConnected& event) { + // Attach interrupts + #if POW_USE_INTERRUPTS powAttachInterrupts(); - }); - */ + #endif } @@ -140,20 +149,66 @@ void powLoop() { static unsigned long last_update = 0; static unsigned char report_count = POW_REPORT_EVERY; + static unsigned long power_sum = 0; + static double current_sum = 0; + static unsigned long voltage_sum = 0; + if ((millis() - last_update > POW_UPDATE_INTERVAL) || (last_update == 0 )){ + last_update = millis(); unsigned int power = getActivePower(); - - char buffer[100]; - sprintf_P(buffer, PSTR("{\"powVisible\": 1, \"powActivePower\": %d}"), power); - wsSend(buffer); + unsigned int voltage = getVoltage(); + double current = getCurrent(); + unsigned int apparent = getApparentPower(); + unsigned int factor = getPowerFactor(); + unsigned int reactive = getReactivePower(); + + power_sum += power; + current_sum += current; + voltage_sum += voltage; + + DynamicJsonBuffer jsonBuffer; + JsonObject& root = jsonBuffer.createObject(); + + root["powVisible"] = 1; + root["powActivePower"] = power; + root["powCurrent"] = current; + root["powVoltage"] = voltage; + root["powApparentPower"] = apparent; + root["powReactivePower"] = reactive; + root["powPowerFactor"] = factor; + + String output; + root.printTo(output); + wsSend((char *) output.c_str()); if (--report_count == 0) { + + power = power_sum / POW_REPORT_EVERY; + current = current_sum / POW_REPORT_EVERY; + voltage = voltage_sum / POW_REPORT_EVERY; + apparent = current * voltage; + reactive = (apparent > power) ? sqrt(apparent * apparent - power * power) : 0; + factor = (apparent > 0) ? 100 * power / apparent : 100; + mqttSend(getSetting("powPowerTopic", POW_POWER_TOPIC).c_str(), String(power).c_str()); + mqttSend(getSetting("powCurrentTopic", POW_CURRENT_TOPIC).c_str(), String(current).c_str()); + mqttSend(getSetting("powVoltageTopic", POW_VOLTAGE_TOPIC).c_str(), String(voltage).c_str()); + mqttSend(getSetting("powAPowerTopic", POW_APOWER_TOPIC).c_str(), String(apparent).c_str()); + mqttSend(getSetting("powRPowerTopic", POW_RPOWER_TOPIC).c_str(), String(reactive).c_str()); + mqttSend(getSetting("powPFactorTopic", POW_PFACTOR_TOPIC).c_str(), String(factor).c_str()); + + power_sum = current_sum = voltage_sum = 0; report_count = POW_REPORT_EVERY; + } + // Toggle between current and voltage monitoring + #if POW_USE_INTERRUPTS == 0 + hlw8012.toggleMode(); + #endif + } } diff --git a/code/espurna/web.ino b/code/espurna/web.ino index 072ae3d1..d0aa13e6 100644 --- a/code/espurna/web.ino +++ b/code/espurna/web.ino @@ -80,7 +80,7 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { // Let the HTTP request return and disconnect after 100ms deferred.once_ms(100, wifiDisconnect); - + } if (action.equals("on")) relayStatus(relayID, true); if (action.equals("off")) relayStatus(relayID, false); @@ -93,8 +93,9 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { JsonArray& config = root["config"]; DEBUG_MSG("[WEBSOCKET] Parsing configuration data\n"); - bool dirty = false; - bool dirtyMQTT = false; + bool save = false; + bool changed = false; + bool changedMQTT = false; bool apiEnabled = false; #if ENABLE_FAUXMO bool fauxmoEnabled = false; @@ -112,15 +113,28 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { if (key == "powExpectedPower") { powSetExpectedActivePower(value.toInt()); - continue; + changed = true; } - #else + if (key == "powExpectedVoltage") { + powSetExpectedVoltage(value.toInt()); + changed = true; + } + + if (key == "powExpectedCurrent") { + powSetExpectedCurrent(value.toInt()); + changed = true; + } - if (key.startsWith("pow")) continue; + if (key == "powExpectedReset") { + powReset(); + changed = true; + } #endif + if (key.startsWith("pow")) continue; + #if ENABLE_DOMOTICZ if (key == "dczIdx") { @@ -185,8 +199,8 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { if (value != getSetting(key)) { //DEBUG_MSG("[WEBSOCKET] Storing %s = %s\n", key.c_str(), value.c_str()); setSetting(key, value); - dirty = true; - if (key.startsWith("mqtt")) dirtyMQTT = true; + save = changed = true; + if (key.startsWith("mqtt")) changedMQTT = true; } } @@ -194,12 +208,12 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { // Checkboxes if (apiEnabled != (getSetting("apiEnabled").toInt() == 1)) { setSetting("apiEnabled", apiEnabled); - dirty = true; + save = changed = true; } #if ENABLE_FAUXMO if (fauxmoEnabled != (getSetting("fauxmoEnabled").toInt() == 1)) { setSetting("fauxmoEnabled", fauxmoEnabled); - dirty = true; + save = changed = true; } #endif @@ -213,7 +227,7 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { } for (int i = network; i 0) { - dirty = true; + save = changed = true; } delSetting("ssid" + String(i)); delSetting("pass" + String(i)); @@ -224,7 +238,7 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { } // Save settings - if (dirty) { + if (save) { saveSettings(); wifiConfigure(); @@ -243,16 +257,15 @@ void _wsParse(uint32_t client_id, uint8_t * payload, size_t length) { #endif // Check if we should reconfigure MQTT connection - if (dirtyMQTT) { + if (changedMQTT) { mqttDisconnect(); } + } + if (changed) { ws.text(client_id, "{\"message\": \"Changes saved\"}"); - } else { - ws.text(client_id, "{\"message\": \"No changes detected\"}"); - } } @@ -345,6 +358,11 @@ void _wsStart(uint32_t client_id) { #if ENABLE_POW root["powVisible"] = 1; root["powActivePower"] = getActivePower(); + root["powApparentPower"] = getApparentPower(); + root["powReactivePower"] = getReactivePower(); + root["powVoltage"] = getVoltage(); + root["powCurrent"] = getCurrent(); + root["powPowerFactor"] = getPowerFactor(); #endif root["maxNetworks"] = WIFI_MAX_NETWORKS; diff --git a/code/html/custom.js b/code/html/custom.js index c6a2791a..cae8fc19 100644 --- a/code/html/custom.js +++ b/code/html/custom.js @@ -36,6 +36,9 @@ function doUpdate() { var data = $("#formSave").serializeArray(); websock.send(JSON.stringify({'config': data})); $(".powExpected").val(0); + $("input[name='powExpectedReset']") + .prop("checked", false) + .iphoneStyle("refresh"); } return false; } diff --git a/code/html/index.html b/code/html/index.html index ee8ab0c2..e7a7a5bc 100644 --- a/code/html/index.html +++ b/code/html/index.html @@ -136,10 +136,35 @@

+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
@@ -363,7 +388,28 @@
 
-
If you are using a pure resistive load like a bulb this will be writen on it, otherwise use a socket multimeter to get this value.
+
In Watts (W). If you are using a pure resistive load like a bulb this will be writen on it, otherwise use a socket multimeter to get this value.
+ + +
+ + +
 
+
In Volts (V). Enter your the nominal AC voltage for your household or facility, or use multimeter to get this value.
+
+ +
+ + +
 
+
In Ampers (A). If you are using a pure resistive load like a bulb this will the ratio between the two previous values, i.e. power / voltage. You can also use a current clamp around one fo the power wires to get this value.
+
+ +
+
+
+
 
+
Move this switch to ON and press "Update" to revert to factory values.
diff --git a/code/platformio.ini b/code/platformio.ini index b8044901..97c03780 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -17,7 +17,7 @@ lib_deps = OneWire DallasTemperature https://bitbucket.org/xoseperez/justwifi.git - HLW8012 + https://bitbucket.org/xoseperez/hlw8012.git https://bitbucket.org/xoseperez/fauxmoesp.git https://bitbucket.org/xoseperez/nofuss.git https://bitbucket.org/xoseperez/emonliteesp.git @@ -127,7 +127,7 @@ extra_script = pio_hooks.py build_flags = -g -Wl,-Tesp8266.flash.1m128.ld -DDEBUG_PORT=Serial -DSONOFF_POW upload_speed = 115200 upload_port = "192.168.4.1" -upload_flags = --auth=fibonacci --port 8266 +upload_flags = --auth=Algernon1 --port 8266 [env:sonoff-dual-debug] platform = espressif8266