diff --git a/src/config/settings.h b/src/config/settings.h index ba36c1db..4b58673b 100644 --- a/src/config/settings.h +++ b/src/config/settings.h @@ -139,6 +139,7 @@ typedef struct { typedef struct { char monitor_url[ZEXPORT_ADDR_LEN]; char json_path[ZEXPORT_ADDR_LEN]; + uint8_t query_device; // 0 - Shelly, 1 - Tibber, 2 - other (rs232?) uint8_t Iv; // saves the inverter that is used for regulation bool enabled; float power_avg; @@ -464,6 +465,7 @@ class settings { mCfg.plugin.zexport.count_avg = 10; mCfg.plugin.zexport.lastTime = millis(); // do not change! + mCfg.plugin.zexport.query_device = 0; // Standard shelly mCfg.plugin.zexport.power_avg = 10; mCfg.plugin.zexport.Iv = 0; mCfg.plugin.zexport.max_power = 600; // Max 600W to stay safe @@ -691,6 +693,7 @@ class settings { obj[F("json_path")] = mCfg.plugin.zexport.json_path; obj[F("Iv")] = mCfg.plugin.zexport.Iv; obj[F("power_avg")] = mCfg.plugin.zexport.power_avg; + obj[F("query_device")] = mCfg.plugin.zexport.query_device; obj[F("count_avg")] = mCfg.plugin.zexport.count_avg; obj[F("max_power")] = mCfg.plugin.zexport.max_power; obj[F("total_power")] = mCfg.plugin.zexport.total_power; @@ -709,6 +712,7 @@ class settings { getVal(obj, F("max_power"), &mCfg.plugin.zexport.max_power); getVal(obj, F("power_avg"), &mCfg.plugin.zexport.power_avg); + getVal(obj, F("query_device"), &mCfg.plugin.zexport.query_device); getVal(obj, F("total_power"), &mCfg.plugin.zexport.total_power); } diff --git a/src/platformio.ini b/src/platformio.ini index e7c87979..51066ad3 100644 --- a/src/platformio.ini +++ b/src/platformio.ini @@ -145,6 +145,7 @@ build_flags = ${env.build_flags} -DARDUINO_USB_MODE=1 monitor_filters = esp32_exception_decoder, colorize +lib_deps = olliiiver/SML Parser @ ^0.28 [env:opendtufusion-dev] platform = espressif32@6.4.0 diff --git a/src/web/RestApi.h b/src/web/RestApi.h index 58399968..03334add 100644 --- a/src/web/RestApi.h +++ b/src/web/RestApi.h @@ -521,6 +521,7 @@ class RestApi { obj[F("max_power")] = (double)mConfig->plugin.zexport.max_power; obj[F("Iv")] = (uint8_t)mConfig->plugin.zexport.Iv; obj[F("power_avg")] = (float)mConfig->plugin.zexport.power_avg; + obj[F("query_device")] = (float)mConfig->plugin.zexport.query_device; obj[F("total_power")] = (double)mConfig->plugin.zexport.total_power; //obj[F("device")] = (uint8_t)mCfg.plugin.zexport.device; } diff --git a/src/web/html/setup.html b/src/web/html/setup.html index 2c0270e2..c89f9697 100644 --- a/src/web/html/setup.html +++ b/src/web/html/setup.html @@ -301,6 +301,10 @@
Enable zero export
+

Please select your favorite query interface:

+ Shelly
+ Tibber
+ Volkszähler
diff --git a/src/web/web.h b/src/web/web.h index 022e8e43..9a119e67 100644 --- a/src/web/web.h +++ b/src/web/web.h @@ -565,6 +565,7 @@ class Web { mConfig->plugin.zexport.count_avg = request->arg("count_avg").toInt(); mConfig->plugin.zexport.max_power = request->arg("max_power").toDouble(); mConfig->plugin.zexport.power_avg = request->arg("power_avg").toFloat(); + mConfig->plugin.zexport.query_device = request->arg("query_device").toInt(); mConfig->plugin.zexport.total_power = request->arg("total_power").toDouble(); if (request->arg("monitor_url") != "") {