Browse Source

#268 Statusausgabe über MQTT realisiert

pull/289/head
Sandner, Denny 2 years ago
parent
commit
96d397e8a9
  1. 37
      tools/esp8266/app.cpp
  2. 5
      tools/esp8266/config.h

37
tools/esp8266/app.cpp

@ -390,7 +390,7 @@ void app::processPayload(bool retransmit) {
// MQTT send out // MQTT send out
if(mMqttActive) { if(mMqttActive) {
record_t<> *recRealtime = iv->getRecordStruct(RealTimeRunData_Debug); record_t<> *recRealtime = iv->getRecordStruct(RealTimeRunData_Debug);
char topic[32 + MAX_NAME_LENGTH], val[10]; char topic[32 + MAX_NAME_LENGTH], val[32];
float total[4]; float total[4];
memset(total, 0, sizeof(float) * 4); memset(total, 0, sizeof(float) * 4);
for (uint8_t id = 0; id < mSys->getNumInverters(); id++) { for (uint8_t id = 0; id < mSys->getNumInverters(); id++) {
@ -411,6 +411,27 @@ void app::processPayload(bool retransmit) {
} }
} }
} }
if(iv->isProducing(mTimestamp, rec)){
snprintf(topic, 32 + MAX_NAME_LENGTH, "%s/available_text", iv->name);
snprintf(val, 32, DEF_MQTT_IV_MESSAGE_INVERTER_AVAIL_AND_PRODUCED);
mMqtt.sendMsg(topic, val);
snprintf(topic, 32 + MAX_NAME_LENGTH, "%s/available", iv->name);
snprintf(val, 32, "2");
mMqtt.sendMsg(topic, val);
} else {
snprintf(topic, 32 + MAX_NAME_LENGTH, "%s/available_text", iv->name);
snprintf(val, 32, DEF_MQTT_IV_MESSAGE_INVERTER_AVAIL_AND_NOT_PRODUCED);
mMqtt.sendMsg(topic, val);
snprintf(topic, 32 + MAX_NAME_LENGTH, "%s/available", iv->name);
snprintf(val, 32, "1");
mMqtt.sendMsg(topic, val);
}
snprintf(topic, 32 + MAX_NAME_LENGTH, "%s/last_success", iv->name);
snprintf(val, 48, "%i", iv->getLastTs(rec) * 1000);
mMqtt.sendMsg(topic, val);
yield(); yield();
} }
} }
@ -446,6 +467,20 @@ void app::processPayload(bool retransmit) {
#endif #endif
} }
} }
if(mMqttActive) {
record_t<> *rec = iv->getRecordStruct(RealTimeRunData_Debug);
char topic[32 + MAX_NAME_LENGTH], val[32];
if (!iv->isAvailable(mTimestamp, rec) && !iv->isProducing(mTimestamp, rec)){
snprintf(topic, 32 + MAX_NAME_LENGTH, "%s/available_text", iv->name);
snprintf(val, 32, DEF_MQTT_IV_MESSAGE_NOT_AVAIL_AND_NOT_PRODUCED);
mMqtt.sendMsg(topic, val);
snprintf(topic, 32 + MAX_NAME_LENGTH, "%s/available", iv->name);
snprintf(val, 32, "0");
mMqtt.sendMsg(topic, val);
}
}
yield(); yield();
} }
} }

5
tools/esp8266/config.h

@ -108,6 +108,11 @@
// default MQTT topic // default MQTT topic
#define DEF_MQTT_TOPIC "inverter" #define DEF_MQTT_TOPIC "inverter"
//default MQTT Message Inverter Status
#define DEF_MQTT_IV_MESSAGE_NOT_AVAIL_AND_NOT_PRODUCED "not available and not producing" // STATUS 0
#define DEF_MQTT_IV_MESSAGE_INVERTER_AVAIL_AND_NOT_PRODUCED "available and not producing" // STATUS 1
#define DEF_MQTT_IV_MESSAGE_INVERTER_AVAIL_AND_PRODUCED "available and producing" // STATUS 2
#if __has_include("config_override.h") #if __has_include("config_override.h")
#include "config_override.h" #include "config_override.h"
#endif #endif

Loading…
Cancel
Save