mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-27 21:26:43 +00:00
Add discovery
This commit is contained in:
parent
50c1e83fa9
commit
9015d6620f
@ -882,6 +882,41 @@ void dispatch_current_state()
|
||||
|
||||
/******************************************* Command Wrapper Functions *********************************/
|
||||
|
||||
// Periodically publish a JSON string indicating system status
|
||||
void dispatch_send_discovery(const char*, const char*)
|
||||
{
|
||||
#if HASP_USE_MQTT > 0
|
||||
|
||||
char data[512];
|
||||
{
|
||||
char buffer[128];
|
||||
|
||||
haspGetVersion(buffer, sizeof(buffer));
|
||||
snprintf_P(data, sizeof(data),
|
||||
PSTR("{\"node\":\"%s\",\"manufacturer\":\"" D_MANUFACTURER
|
||||
"\",\"model\":\"%s\",\"hwid\":\"%s\",\"version\":\"%s\",\"numPages\":%u}"),
|
||||
haspDevice.get_hostname(), haspDevice.get_model(), haspDevice.get_hardware_id(), buffer,
|
||||
haspPages.count());
|
||||
}
|
||||
|
||||
switch(mqtt_send_discovery(data)) {
|
||||
case MQTT_ERR_OK:
|
||||
LOG_TRACE(TAG_MQTT_PUB, F("discovery => %s"), data);
|
||||
break;
|
||||
case MQTT_ERR_PUB_FAIL:
|
||||
LOG_ERROR(TAG_MQTT_PUB, F(D_MQTT_FAILED " discovery => %s"), data);
|
||||
break;
|
||||
case MQTT_ERR_NO_CONN:
|
||||
LOG_ERROR(TAG_MQTT, F(D_MQTT_NOT_CONNECTED));
|
||||
break;
|
||||
default:
|
||||
LOG_ERROR(TAG_MQTT, F(D_ERROR_UNKNOWN));
|
||||
}
|
||||
dispatchLastMillis = millis();
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
// Periodically publish a JSON string indicating system status
|
||||
void dispatch_output_statusupdate(const char*, const char*)
|
||||
{
|
||||
@ -1016,6 +1051,7 @@ void dispatchEverySecond()
|
||||
if(dispatch_setings.teleperiod > 0 && (millis() - dispatchLastMillis) >= dispatch_setings.teleperiod * 1000) {
|
||||
dispatchLastMillis += dispatch_setings.teleperiod * 1000;
|
||||
dispatch_output_statusupdate(NULL, NULL);
|
||||
dispatch_send_discovery(NULL, NULL);
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
@ -30,6 +30,7 @@ void mqttStop();
|
||||
|
||||
int mqtt_send_object_state(uint8_t pageid, uint8_t btnid, const char* payload);
|
||||
int mqtt_send_state(const char* subtopic, const char* payload);
|
||||
int mqtt_send_discovery(const char* payload);
|
||||
int mqttPublish(const char* topic, const char* payload, size_t len, bool retain);
|
||||
|
||||
bool mqttIsConnected();
|
||||
|
@ -148,6 +148,13 @@ int mqtt_send_state(const char* subtopic, const char* payload)
|
||||
return mqttPublish(tmp_topic, payload, false);
|
||||
}
|
||||
|
||||
int mqtt_send_discovery(const char* payload)
|
||||
{
|
||||
char tmp_topic[20];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR(MQTT_PREFIX "/discovery"));
|
||||
return mqttPublish(tmp_topic, payload, false);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Receive incoming messages
|
||||
static void mqtt_message_cb(char* topic, byte* payload, unsigned int length)
|
||||
|
Loading…
x
Reference in New Issue
Block a user