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(F("BLE DISTANCE :"));
|
||||||
trc(distance);
|
trc(distance);
|
||||||
String topic = String(Base_Topic) + "home_presence/" + String(gateway_name);
|
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
|
#endif
|
||||||
|
|
||||||
|
|||||||
+1
-16
@@ -113,7 +113,7 @@ void createDiscovery(char *sensor_type,
|
|||||||
sensor.set("device", device); //device sensor is connected to
|
sensor.set("device", device); //device sensor is connected to
|
||||||
}
|
}
|
||||||
String topic = String(discovery_Topic) + "/" + String(sensor_type) + "/" + String(unique_id) + "/config";
|
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()
|
void pubMqttDiscovery()
|
||||||
@@ -323,21 +323,6 @@ void pubMqttDiscovery()
|
|||||||
0, "", "", true, "");
|
0, "", "", true, "");
|
||||||
#endif
|
#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
|
#ifdef ZgatewayRFM69
|
||||||
// Sensor to display RF received value
|
// Sensor to display RF received value
|
||||||
trc(F("gatewayRFM69Discovery"));
|
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())
|
if (client.connected())
|
||||||
{
|
{
|
||||||
@@ -394,7 +394,7 @@ void pub_custom_topic(char *topicori, JsonObject &data)
|
|||||||
trc(topicori);
|
trc(topicori);
|
||||||
data.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
|
data.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
|
||||||
trc(JSONmessageBuffer);
|
trc(JSONmessageBuffer);
|
||||||
pubMQTT(topicori, JSONmessageBuffer);
|
pubMQTT(topicori, JSONmessageBuffer, retain);
|
||||||
}
|
}
|
||||||
else
|
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)
|
void pubMQTT(char *topic, unsigned long payload)
|
||||||
@@ -1085,6 +1091,10 @@ void loop()
|
|||||||
// MQTT loop
|
// MQTT loop
|
||||||
connectedOnce = true;
|
connectedOnce = true;
|
||||||
lastMQTTReconnectAttempt = 0;
|
lastMQTTReconnectAttempt = 0;
|
||||||
|
|
||||||
|
#ifdef ZmqttDiscovery
|
||||||
|
if(!connectedOnce) pubMqttDiscovery(); // at first connection we publish the discovery payloads
|
||||||
|
#endif
|
||||||
client.loop();
|
client.loop();
|
||||||
|
|
||||||
#if defined(ESP8266) || defined(ESP32)
|
#if defined(ESP8266) || defined(ESP32)
|
||||||
|
|||||||
Reference in new issue
Block a user