Skip to content

Commit

Permalink
VE.Direct MQTT: simplify code
Browse files Browse the repository at this point in the history
the use of a #define is warranted here since it saves a lot of code
duplication and improves code readability.
  • Loading branch information
schlimmchen committed Apr 2, 2024
1 parent 92a7f27 commit 43f553d
Showing 1 changed file with 27 additions and 83 deletions.
110 changes: 27 additions & 83 deletions src/MqttHandleVedirect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,87 +103,31 @@ void MqttHandleVedirectClass::publish_mppt_data(const VeDirectMpptController::da
topic.concat(currentData.SER);
topic.concat("/");

if (_PublishFull || currentData.PID != previousData.PID) {
MqttSettings.publish(topic + "PID", currentData.getPidAsString().data());
}

if (_PublishFull || strcmp(currentData.SER, previousData.SER) != 0) {
MqttSettings.publish(topic + "SER", currentData.SER);
}

if (_PublishFull || strcmp(currentData.FW, previousData.FW) != 0) {
MqttSettings.publish(topic + "FW", currentData.FW);
}

if (_PublishFull || currentData.LOAD != previousData.LOAD) {
MqttSettings.publish(topic + "LOAD", currentData.LOAD ? "ON" : "OFF");
}

if (_PublishFull || currentData.CS != previousData.CS) {
MqttSettings.publish(topic + "CS", currentData.getCsAsString().data());
}

if (_PublishFull || currentData.ERR != previousData.ERR) {
MqttSettings.publish(topic + "ERR", currentData.getErrAsString().data());
}

if (_PublishFull || currentData.OR != previousData.OR) {
MqttSettings.publish(topic + "OR", currentData.getOrAsString().data());
}

if (_PublishFull || currentData.MPPT != previousData.MPPT) {
MqttSettings.publish(topic + "MPPT", currentData.getMpptAsString().data());
}

if (_PublishFull || currentData.HSDS != previousData.HSDS) {
MqttSettings.publish(topic + "HSDS", String(currentData.HSDS));
}

if (_PublishFull || currentData.V != previousData.V) {
MqttSettings.publish(topic + "V", String(currentData.V));
}

if (_PublishFull || currentData.I != previousData.I) {
MqttSettings.publish(topic + "I", String(currentData.I));
}

if (_PublishFull || currentData.P != previousData.P) {
MqttSettings.publish(topic + "P", String(currentData.P));
}

if (_PublishFull || currentData.VPV != previousData.VPV) {
MqttSettings.publish(topic + "VPV", String(currentData.VPV));
}

if (_PublishFull || currentData.IPV != previousData.IPV) {
MqttSettings.publish(topic + "IPV", String(currentData.IPV));
}

if (_PublishFull || currentData.PPV != previousData.PPV) {
MqttSettings.publish(topic + "PPV", String(currentData.PPV));
}

if (_PublishFull || currentData.E != previousData.E) {
MqttSettings.publish(topic + "E", String(currentData.E));
}

if (_PublishFull || currentData.H19 != previousData.H19) {
MqttSettings.publish(topic + "H19", String(currentData.H19));
}

if (_PublishFull || currentData.H20 != previousData.H20) {
MqttSettings.publish(topic + "H20", String(currentData.H20));
}

if (_PublishFull || currentData.H21 != previousData.H21) {
MqttSettings.publish(topic + "H21", String(currentData.H21));
}

if (_PublishFull || currentData.H22 != previousData.H22) {
MqttSettings.publish(topic + "H22", String(currentData.H22));
}

if (_PublishFull || currentData.H23 != previousData.H23) {
MqttSettings.publish(topic + "H23", String(currentData.H23));
}
#define PUBLISH(sm, t, val) \
if (_PublishFull || currentData.sm != previousData.sm) { \
MqttSettings.publish(topic + t, String(val)); \
}

PUBLISH(PID, "PID", currentData.getPidAsString().data());
PUBLISH(SER, "SER", currentData.SER);
PUBLISH(FW, "FW", currentData.FW);
PUBLISH(LOAD, "LOAD", (currentData.LOAD ? "ON" : "OFF"));
PUBLISH(CS, "CS", currentData.getCsAsString().data());
PUBLISH(ERR, "ERR", currentData.getErrAsString().data());
PUBLISH(OR, "OR", currentData.getOrAsString().data());
PUBLISH(MPPT, "MPPT", currentData.getMpptAsString().data());
PUBLISH(HSDS, "HSDS", currentData.HSDS);
PUBLISH(V, "V", currentData.V);
PUBLISH(I, "I", currentData.I);
PUBLISH(P, "P", currentData.P);
PUBLISH(VPV, "VPV", currentData.VPV);
PUBLISH(IPV, "IPV", currentData.IPV);
PUBLISH(PPV, "PPV", currentData.PPV);
PUBLISH(E, "E", currentData.E);
PUBLISH(H19, "H19", currentData.H19);
PUBLISH(H20, "H20", currentData.H20);
PUBLISH(H21, "H21", currentData.H21);
PUBLISH(H22, "H22", currentData.H22);
PUBLISH(H23, "H23", currentData.H23);
#undef PUBLILSH
}

0 comments on commit 43f553d

Please sign in to comment.