publish discovery once at each MQTT connection with retain flag set true (#507)
* publish discovery once at each MQTT connection with retain flag set to true #448
This commit is contained in:
1 parent
3948a14db9
commit
ae33ea7458
3 files changed
+18
-23
No files matched your search
+1
-1
@@ -1173,7 +1173,7 @@ void haRoomPresence(JsonObject &HomePresence)
|
||||
trc(F("BLE DISTANCE :"));
|
||||
trc(distance);
|
||||
String topic = String(Base_Topic) + "home_presence/" + String(gateway_name);
|
||||
pub_custom_topic((char *)topic.c_str(), HomePresence);
|
||||
pub_custom_topic((char *)topic.c_str(), HomePresence, false);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
+1
-16
@@ -113,7 +113,7 @@ void createDiscovery(char *sensor_type,
|
||||
sensor.set("device", device); //device sensor is connected to
|
||||
}
|
||||
String topic = String(discovery_Topic) + "/" + String(sensor_type) + "/" + String(unique_id) + "/config";
|
||||
pub_custom_topic((char *)topic.c_str(), sensor);
|
||||
pub_custom_topic((char *)topic.c_str(), sensor, true);
|
||||
}
|
||||
|
||||
void pubMqttDiscovery()
|
||||
@@ -323,21 +323,6 @@ void pubMqttDiscovery()
|
||||
0, "", "", true, "");
|
||||
#endif
|
||||
|
||||
#ifdef ZgatewayRF315
|
||||
// Sensor to display RF received value
|
||||
trc(F("gatewayRF315Discovery"));
|
||||
char *gatewayRF315[8] = {"sensor", "gatewayRF315", "", "", "{{ value_json.value }}", "", "", ""};
|
||||
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
|
||||
|
||||
trc(F("CreateDiscoverySensor"));
|
||||
trc(gatewayRF315[1]);
|
||||
createDiscovery(gatewayRF315[0],
|
||||
subjectRF315toMQTT, gatewayRF315[1], (char *)getUniqueId(gatewayRF315[1], gatewayRF315[2]).c_str(),
|
||||
will_Topic, gatewayRF315[3], gatewayRF315[4],
|
||||
gatewayRF315[5], gatewayRF315[6], gatewayRF315[7],
|
||||
0, "", "", true, "");
|
||||
#endif
|
||||
|
||||
#ifdef ZgatewayRFM69
|
||||
// Sensor to display RF received value
|
||||
trc(F("gatewayRFM69Discovery"));
|
||||
|
||||
+16
-6
@@ -385,7 +385,7 @@ void pub(char *topicori, char *payload)
|
||||
}
|
||||
}
|
||||
|
||||
void pub_custom_topic(char *topicori, JsonObject &data)
|
||||
void pub_custom_topic(char *topicori, JsonObject &data, boolean retain)
|
||||
{
|
||||
if (client.connected())
|
||||
{
|
||||
@@ -394,7 +394,7 @@ void pub_custom_topic(char *topicori, JsonObject &data)
|
||||
trc(topicori);
|
||||
data.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
|
||||
trc(JSONmessageBuffer);
|
||||
pubMQTT(topicori, JSONmessageBuffer);
|
||||
pubMQTT(topicori, JSONmessageBuffer, retain);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -402,14 +402,20 @@ void pub_custom_topic(char *topicori, JsonObject &data)
|
||||
}
|
||||
}
|
||||
|
||||
void pubMQTT(char *topic, char *payload)
|
||||
// Low level MQTT functions
|
||||
void pubMQTT(char * topic, char * payload)
|
||||
{
|
||||
client.publish(topic, payload);
|
||||
client.publish(topic, payload);
|
||||
}
|
||||
|
||||
void pubMQTT(String topic, char *payload)
|
||||
void pubMQTT(char * topicori, char * payload, bool retainFlag)
|
||||
{
|
||||
client.publish((char *)topic.c_str(), payload);
|
||||
client.publish(topicori, payload, retainFlag);
|
||||
}
|
||||
|
||||
void pubMQTT(String topic, char * payload)
|
||||
{
|
||||
client.publish((char *)topic.c_str(),payload);
|
||||
}
|
||||
|
||||
void pubMQTT(char *topic, unsigned long payload)
|
||||
@@ -1085,6 +1091,10 @@ void loop()
|
||||
// MQTT loop
|
||||
connectedOnce = true;
|
||||
lastMQTTReconnectAttempt = 0;
|
||||
|
||||
#ifdef ZmqttDiscovery
|
||||
if(!connectedOnce) pubMqttDiscovery(); // at first connection we publish the discovery payloads
|
||||
#endif
|
||||
client.loop();
|
||||
|
||||
#if defined(ESP8266) || defined(ESP32)
|
||||
|
||||
Reference in new issue
Block a user