Browse Source

Shelly Topic MQTT checker - powermeter.h

pull/1638/head
DanielR92 11 months ago
committed by GitHub
parent
commit
dd164f5236
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 21
      src/plugins/zeroExport/powermeter.h

21
src/plugins/zeroExport/powermeter.h

@ -190,15 +190,28 @@ class powermeter {
for (uint8_t group = 0; group < ZEROEXPORT_MAX_GROUPS; group++) {
if (!mCfg->groups[group].enabled) continue;
if (!mCfg->groups[group].pm_type == zeroExportPowermeterType_t::Mqtt) continue;
if (!strcmp(mCfg->groups[group].pm_src, "")) continue;
if (strcmp(mCfg->groups[group].pm_src, String(topic).c_str())) continue;
float power = 0.0;
power = (uint16_t)obj["val"];
//TODO: datajson 100 enough?
// this if-statement need to check if value contains a json object.
// is it so, then deserialize it and get the values (Shelly GEN2)
DynamicJsonDocument datajson(100);
if (!deserializeJson(datajson, obj["val"]))
{
switch (mCfg->groups[group].pm_target) {
case 0: power = datajson["a_act_power"]; break;
case 1: power = datajson["b_act_power"]; break;
case 2: power = datajson["c_act_power"]; break;
case 3: power = datajson["total_act_power"]; break;
}
} else {
//TODO: check if parse is possible here? Is that right?
power = (uint16_t)obj["val"];
}
bufferWrite(power, group);

Loading…
Cancel
Save