implemented "patrix/json2"
Some checks failed
OpenDTU Build / Gather Environments (push) Has been cancelled
cpplint / build (push) Has been cancelled
Yarn Linting / build (push) Has been cancelled
Yarn Prettier / build (push) Has been cancelled
OpenDTU Build / Build Environments (push) Has been cancelled
OpenDTU Build / Create Release (push) Has been cancelled
Some checks failed
OpenDTU Build / Gather Environments (push) Has been cancelled
cpplint / build (push) Has been cancelled
Yarn Linting / build (push) Has been cancelled
Yarn Prettier / build (push) Has been cancelled
OpenDTU Build / Build Environments (push) Has been cancelled
OpenDTU Build / Create Release (push) Has been cancelled
This commit is contained in:
parent
c0eae1862b
commit
52e2b1cffb
@ -20,6 +20,11 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void loop();
|
void loop();
|
||||||
|
|
||||||
|
static void patrixSend(const std::shared_ptr<InverterAbstract>& inv);
|
||||||
|
|
||||||
|
static double patrixGetField(const std::shared_ptr<InverterAbstract>& inv, const ChannelType_t type, const ChannelNum_t channel, const FieldId_t fieldId);
|
||||||
|
|
||||||
void publishField(std::shared_ptr<InverterAbstract> inv, const ChannelType_t type, const ChannelNum_t channel, const FieldId_t fieldId);
|
void publishField(std::shared_ptr<InverterAbstract> inv, const ChannelType_t type, const ChannelNum_t channel, const FieldId_t fieldId);
|
||||||
|
|
||||||
Task _loopTask;
|
Task _loopTask;
|
||||||
|
|||||||
@ -8,6 +8,8 @@ public:
|
|||||||
MqttHandleInverterTotalClass();
|
MqttHandleInverterTotalClass();
|
||||||
void init(Scheduler& scheduler);
|
void init(Scheduler& scheduler);
|
||||||
|
|
||||||
|
static void patrixSend();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void loop();
|
void loop();
|
||||||
|
|
||||||
|
|||||||
@ -107,12 +107,44 @@ void MqttHandleInverterClass::loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
patrixSend(inv);
|
||||||
}
|
}
|
||||||
|
|
||||||
yield();
|
yield();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MqttHandleInverterClass::patrixSend(const std::shared_ptr<InverterAbstract>& inv) {
|
||||||
|
const auto totalKWh = patrixGetField(inv, TYPE_INV, CH0, FLD_YT);
|
||||||
|
const auto totalW = patrixGetField(inv, TYPE_AC, CH0, FLD_PAC);
|
||||||
|
|
||||||
|
const auto string0KWh = patrixGetField(inv, TYPE_DC, CH0, FLD_YT);
|
||||||
|
const auto string0W = patrixGetField(inv, TYPE_DC, CH0, FLD_PDC);
|
||||||
|
|
||||||
|
const auto string1KWh = patrixGetField(inv, TYPE_DC, CH1, FLD_YT);
|
||||||
|
const auto string1W = patrixGetField(inv, TYPE_DC, CH1, FLD_PDC);
|
||||||
|
|
||||||
|
char buffer[300];
|
||||||
|
snprintf(buffer, sizeof buffer, R"({"inverter": "%s", "timestamp": %ld, "totalKWh": %s, "totalW": %s, "string0KWh": %s, "string0W": %s, "string1KWh": %s, "string1W": %s})",
|
||||||
|
inv->serialString().c_str(),
|
||||||
|
std::time(nullptr),
|
||||||
|
isnan(totalKWh) ? "null" : String(totalKWh).c_str(),
|
||||||
|
isnan(totalW) ? "null" : String(totalW).c_str(),
|
||||||
|
isnan(string0KWh) ? "null" : String(string0KWh).c_str(),
|
||||||
|
isnan(string0W) ? "null" : String(string0W).c_str(),
|
||||||
|
isnan(string1KWh) ? "null" : String(string1KWh).c_str(),
|
||||||
|
isnan(string1W) ? "null" : String(string1W).c_str()
|
||||||
|
);
|
||||||
|
MqttSettings.publish("patrix/json2", buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
double MqttHandleInverterClass::patrixGetField(const std::shared_ptr<InverterAbstract>& inv, const ChannelType_t type, const ChannelNum_t channel, const FieldId_t fieldId) {
|
||||||
|
if (inv->Statistics()->getAssignmentByChannelField(type, channel, fieldId) == nullptr) {
|
||||||
|
return NAN;
|
||||||
|
}
|
||||||
|
return inv->Statistics()->getChannelFieldValue(type, channel, fieldId);
|
||||||
|
}
|
||||||
|
|
||||||
void MqttHandleInverterClass::publishField(std::shared_ptr<InverterAbstract> inv, const ChannelType_t type, const ChannelNum_t channel, const FieldId_t fieldId)
|
void MqttHandleInverterClass::publishField(std::shared_ptr<InverterAbstract> inv, const ChannelType_t type, const ChannelNum_t channel, const FieldId_t fieldId)
|
||||||
{
|
{
|
||||||
const String topic = getTopic(inv, type, channel, fieldId);
|
const String topic = getTopic(inv, type, channel, fieldId);
|
||||||
|
|||||||
@ -32,14 +32,7 @@ void MqttHandleInverterTotalClass::loop()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
float power = Datastore.getTotalAcPowerEnabled();
|
patrixSend();
|
||||||
float energy = Datastore.getTotalAcYieldTotalEnabled();
|
|
||||||
if (!isnan(power) && !isnan(energy)) {
|
|
||||||
char buffer[200];
|
|
||||||
snprintf(buffer, sizeof buffer, R"({"timestamp": %ld, "energyProducedKWh": %f, "powerW": %f})", std::time(nullptr), energy, power);
|
|
||||||
MqttSettings.publish("patrix/json", buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
MqttSettings.publish("ac/power", String(Datastore.getTotalAcPowerEnabled(), Datastore.getTotalAcPowerDigits()));
|
MqttSettings.publish("ac/power", String(Datastore.getTotalAcPowerEnabled(), Datastore.getTotalAcPowerDigits()));
|
||||||
MqttSettings.publish("ac/yieldtotal", String(Datastore.getTotalAcYieldTotalEnabled(), Datastore.getTotalAcYieldTotalDigits()));
|
MqttSettings.publish("ac/yieldtotal", String(Datastore.getTotalAcYieldTotalEnabled(), Datastore.getTotalAcYieldTotalDigits()));
|
||||||
MqttSettings.publish("ac/yieldday", String(Datastore.getTotalAcYieldDayEnabled(), Datastore.getTotalAcYieldDayDigits()));
|
MqttSettings.publish("ac/yieldday", String(Datastore.getTotalAcYieldDayEnabled(), Datastore.getTotalAcYieldDayDigits()));
|
||||||
@ -48,3 +41,13 @@ void MqttHandleInverterTotalClass::loop()
|
|||||||
MqttSettings.publish("dc/irradiation", String(Datastore.getTotalDcIrradiation(), 3));
|
MqttSettings.publish("dc/irradiation", String(Datastore.getTotalDcIrradiation(), 3));
|
||||||
MqttSettings.publish("dc/is_valid", String(Datastore.getIsAllEnabledReachable()));
|
MqttSettings.publish("dc/is_valid", String(Datastore.getIsAllEnabledReachable()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MqttHandleInverterTotalClass::patrixSend() {
|
||||||
|
const auto power = Datastore.getTotalAcPowerEnabled();
|
||||||
|
const auto energy = Datastore.getTotalAcYieldTotalEnabled();
|
||||||
|
if (!isnan(power) && !isnan(energy)) {
|
||||||
|
char buffer[200];
|
||||||
|
snprintf(buffer, sizeof buffer, R"({"timestamp": %ld, "energyProducedKWh": %f, "powerW": %f})", std::time(nullptr), energy, power);
|
||||||
|
MqttSettings.publish("patrix/json", buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user