diff --git a/src/plugins/zeroExport/powermeter.h b/src/plugins/zeroExport/powermeter.h index 2611c825..b9817053 100644 --- a/src/plugins/zeroExport/powermeter.h +++ b/src/plugins/zeroExport/powermeter.h @@ -391,6 +391,7 @@ class powermeter { * @param group * @returns true/false * @TODO: Username & Passwort wird mittels base64 verschlüsselt. Dies wird für die Authentizierung benötigt. Wichtig diese im WebUI unkenntlich zu machen und base64 im eeprom zu speichern, statt klartext. + * @TODO: Abfrage Interval einbauen. Info: Datei-Size kann auch mal 0-bytes sein! */ sml_states_t currentState; @@ -448,7 +449,7 @@ class powermeter { http.begin(url); http.addHeader("Authorization", "Basic " + auth); - if (http.GET() == HTTP_CODE_OK) { + if (http.GET() == HTTP_CODE_OK && http.getSize() != 0) { String myString = http.getString(); char floatBuffer[20]; @@ -474,9 +475,7 @@ class powermeter { mCfg->groups[group].pmPowerL3 = _powerMeterTotal / 3; } -// TODO: Ein return an dieser Stelle verhindert das ordnungsgemäße http.end() result = true; -// return true; break; case SML_LISTEND: // check handlers on last received list @@ -487,9 +486,19 @@ class powermeter { } } break; + + default: + logObj["SML_DEFAULT"] = String(smlCurrentState); + break; } } } + else + { + logObj["result"] = String(result); + logObj["http_size"] = String(http.getSize()); + } + http.end(); logObj["P"] = mCfg->groups[group].pmPower; diff --git a/src/plugins/zeroExport/zeroExport.h b/src/plugins/zeroExport/zeroExport.h index ca268094..0ada3cbd 100644 --- a/src/plugins/zeroExport/zeroExport.h +++ b/src/plugins/zeroExport/zeroExport.h @@ -68,48 +68,50 @@ class ZeroExport { continue; } + bool flag = false; + switch (mCfg->groups[group].state) { case zeroExportState::INIT: - if (groupInit(group)) sendLog(); + flag = groupInit(group); break; case zeroExportState::WAIT: - if (groupWait(group)) sendLog(); + flag = groupWait(group); break; case zeroExportState::PUBLISH: - if (groupPublish(group)) sendLog(); + flag = groupPublish(group); break; case zeroExportState::WAITREFRESH: - if (groupWaitRefresh(group)) sendLog(); + flag = groupWaitRefresh(group); break; case zeroExportState::GETINVERTERACKS: - if (groupGetInverterAcks(group)) sendLog(); + flag = groupGetInverterAcks(group); break; case zeroExportState::GETINVERTERDATA: - if (groupGetInverterData(group)) sendLog(); + flag = groupGetInverterData(group); break; case zeroExportState::BATTERYPROTECTION: - if (groupBatteryprotection(group)) sendLog(); + flag = groupBatteryprotection(group); break; case zeroExportState::GETPOWERMETER: - if (groupGetPowermeter(group)) sendLog(); + flag = groupGetPowermeter(group); break; case zeroExportState::CONTROLLER: - if (groupController(group)) sendLog(); + flag = groupController(group); break; case zeroExportState::PROGNOSE: - if (groupPrognose(group)) sendLog(); + flag = groupPrognose(group); break; case zeroExportState::AUFTEILEN: - if (groupAufteilen(group)) sendLog(); + flag = groupAufteilen(group); break; case zeroExportState::SETLIMIT: - if (groupSetLimit(group)) sendLog(); + flag = groupSetLimit(group); break; case zeroExportState::SETPOWER: - if (groupSetPower(group)) sendLog(); + flag = groupSetPower(group); break; case zeroExportState::SETREBOOT: - if (groupSetReboot(group)) sendLog(); + flag = groupSetReboot(group); break; case zeroExportState::FINISH: case zeroExportState::ERROR: @@ -121,6 +123,8 @@ class ZeroExport { } break; } + + if (flag) sendLog(); } } @@ -292,13 +296,19 @@ class ZeroExport { } /** onMqttMessage - * + * Subscribe section */ void onMqttMessage(JsonObject obj) { if ((!mIsInitialized) || (!mCfg->enabled)) { return; } + // MQTT":{"val":0,"path":"zero","cmd":"set","id":0} + if (strcmp(obj["cmd"], "set") != 0 && strcmp(obj["path"], "zero") != 0) + { + mCfg->enabled = (bool)obj["val"]; + } + mLog["MQTT"] = obj; sendLog(); } @@ -460,7 +470,7 @@ class ZeroExport { // mCfg->groups[group].publishPower = false; obj["L1"] = mCfg->groups[group].pmPowerL1; obj["L2"] = mCfg->groups[group].pmPowerL2; - obj["L2"] = mCfg->groups[group].pmPowerL3; + obj["L3"] = mCfg->groups[group].pmPowerL3; obj["Sum"] = mCfg->groups[group].pmPower; mMqtt->publish("zero/state/powermeter/P", doc.as().c_str(), false); doc.clear();