info request
This commit is contained in:
parent
3e7d3041f2
commit
2430b43f77
|
@ -65,10 +65,12 @@ void ESPMegaIoT::mqttCallback(char *topic, byte *payload, unsigned int length)
|
|||
components[i]->publishReport();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
// Check for global summary request
|
||||
if (!strcmp(topic_without_base,"requestinfo")) {
|
||||
this->publishSystemSummary();
|
||||
return;
|
||||
}
|
||||
// Call the respective card's mqtt callback
|
||||
// Note that after the base topic, there should be the card id
|
||||
|
@ -393,6 +395,18 @@ void ESPMegaIoT::publish(const char *topic, const char *payload)
|
|||
mqtt.publish(topic, payload);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Publish a message to a topic
|
||||
*
|
||||
* @param topic The topic to publish to
|
||||
* @param payload The payload to publish
|
||||
* @param length The length of the payload
|
||||
*/
|
||||
void ESPMegaIoT::publish(const char *topic, const char *payload, unsigned int length)
|
||||
{
|
||||
mqtt.publish(topic, (const uint8_t *)payload, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Register a callback for MQTT messages
|
||||
*
|
||||
|
@ -416,7 +430,7 @@ void ESPMegaIoT::unregisterMqttCallback(uint16_t handler)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief Subscribe to all components's topics
|
||||
* @brief Subscribe to all components's topics and all other topics
|
||||
*/
|
||||
void ESPMegaIoT::mqttSubscribe()
|
||||
{
|
||||
|
@ -436,6 +450,9 @@ void ESPMegaIoT::mqttSubscribe()
|
|||
mqtt.loop();
|
||||
}
|
||||
}
|
||||
// Global topics
|
||||
this->subscribeRelative("requeststate");
|
||||
this->subscribeRelative("requestinfo");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -531,6 +548,21 @@ void ESPMegaIoT::publishRelative(const char *topic, const char *payload)
|
|||
mqtt.loop();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Publish a message relative to the base topic
|
||||
*
|
||||
* @param topic The topic to publish to
|
||||
* @param payload The payload to publish
|
||||
* @param length The length of the payload
|
||||
*/
|
||||
void ESPMegaIoT::publishRelative(const char *topic, const char *payload, unsigned int length)
|
||||
{
|
||||
char absolute_topic[100];
|
||||
sprintf(absolute_topic, "%s/%s", this->mqtt_config.base_topic, topic);
|
||||
mqtt.publish(absolute_topic, (const uint8_t *)payload, length);
|
||||
mqtt.loop();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Subscribe to a topic relative to the base topic
|
||||
*
|
||||
|
@ -857,14 +889,7 @@ void ESPMegaIoT::publishSystemSummary() {
|
|||
StaticJsonDocument<1024> doc;
|
||||
JsonObject root = doc.to<JsonObject>();
|
||||
root["ip"] = this->getIp().toString();
|
||||
root["mac"] = this->getMac();
|
||||
root["mqtt_connected"] = this->mqttConnected();
|
||||
root["network_connected"] = this->networkConnected();
|
||||
root["mqtt_server"] = this->mqtt_config.mqtt_server;
|
||||
root["mqtt_port"] = this->mqtt_config.mqtt_port;
|
||||
root["hostname"] = this->network_config.hostname;
|
||||
root["firmware"] = SW_VERSION;
|
||||
root["idf_version"] = esp_get_idf_version();
|
||||
root["sdk_version"] = SDK_VESRION;
|
||||
root["board_model"] = BOARD_MODEL;
|
||||
JsonArray cards = root.createNestedArray("cards");
|
||||
|
@ -878,5 +903,7 @@ void ESPMegaIoT::publishSystemSummary() {
|
|||
}
|
||||
}
|
||||
serializeJson(doc, payload);
|
||||
this->publishRelative("info", payload);
|
||||
ESP_LOGD("ESPMegaIoT", "Publishing system summary: %s", payload);
|
||||
mqtt.loop();
|
||||
this->publishRelative("info", payload, strlen(payload));
|
||||
}
|
|
@ -83,6 +83,7 @@ public:
|
|||
void publishCard(uint8_t card_id);
|
||||
// Publish topic appended with base topic
|
||||
void publishRelative(const char *topic, const char *payload);
|
||||
void publishRelative(const char *topic, const char *payload, unsigned int length);
|
||||
// Subscribe topic appended with base topic
|
||||
void subscribeRelative(const char *topic);
|
||||
void subscribe(const char *topic);
|
||||
|
@ -107,6 +108,7 @@ public:
|
|||
bool mqttConnected();
|
||||
void disconnectFromMqtt();
|
||||
void publish(const char *topic, const char *payload);
|
||||
void publish(const char *topic, const char *payload, unsigned int length);
|
||||
uint16_t registerMqttCallback(std::function<void(char *, char *)> callback);
|
||||
void unregisterMqttCallback(uint16_t handler);
|
||||
uint16_t registerRelativeMqttCallback(std::function<void(char *, char *)> callback);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
// #define FRAM_DEBUG
|
||||
// #define MQTT_DEBUG
|
||||
#define WRITE_DEFAULT_NETCONF
|
||||
//#define CLIMATE_CARD_ENABLE
|
||||
#define CLIMATE_CARD_ENABLE
|
||||
#define MQTT_CARD_REGISTER
|
||||
#define DISPLAY_ENABLE
|
||||
#define WEB_SERVER_ENABLE
|
||||
|
@ -236,6 +236,7 @@ void setup()
|
|||
ct.bindFRAM(&espmega.fram, 7000);
|
||||
ct.loadEnergy();
|
||||
ct.setEnergyAutoSave(true);
|
||||
espmega.iot->registerCard(3);
|
||||
#endif
|
||||
#ifdef SMART_VARIABLE_ENABLE
|
||||
ESP_LOGI("Initializer", "Initializing smart variable");
|
||||
|
|
Loading…
Reference in New Issue