fix MQTT topic

This commit is contained in:
proddy
2020-09-21 09:43:51 +02:00
parent 98ac027d7a
commit 6763bb2832

View File

@@ -288,7 +288,7 @@ bool Sensor::export_values(JsonObject & output) {
for (const auto & device : devices_) { for (const auto & device : devices_) {
char s[7]; char s[7];
char sensorID[20]; // sensor{1-n} char sensorID[20]; // sensor{1-n}
strlcpy(sensorID, "sensor_data", 20); strlcpy(sensorID, "sensor", 20);
strlcat(sensorID, Helpers::itoa(s, i), 20); strlcat(sensorID, Helpers::itoa(s, i), 20);
JsonObject dataSensor = output.createNestedObject(sensorID); JsonObject dataSensor = output.createNestedObject(sensorID);
dataSensor["id"] = device.to_string(); dataSensor["id"] = device.to_string();
@@ -308,16 +308,15 @@ void Sensor::publish_values() {
return; return;
} }
// if we're not using nested JSON, send each sensor out seperately as sensor1, sensor2 etc... // single mode as e.g. ems-esp/sensor_28-EA41-9497-0E03-5F = {"temp":20.2}
// e.g. sensor_data1 = {"temp":20.2}
if (mqtt_format_ == MQTT_format::SINGLE) { if (mqtt_format_ == MQTT_format::SINGLE) {
StaticJsonDocument<100> doc; StaticJsonDocument<100> doc;
for (const auto & device : devices_) { for (const auto & device : devices_) {
char s[7]; // sensorrange -55.00 to 125.00 char topic[60];
doc["temp"] = Helpers::render_value(s, device.temperature_c, 1); strlcpy(topic, "sensor_", 50);
char topic[60]; // sensors{1-n}
strlcpy(topic, "sensor_data", 50); // create topic, e.g. home/ems-esp/sensor_28-EA41-9497-0E03-5F
strlcat(topic, device.to_string().c_str(), 60); strlcat(topic, device.to_string().c_str(), 60);
char s[7]; // to support -55.00 to 125.00
doc["temp"] = Helpers::render_value(s, device.temperature_c, 1);
Mqtt::publish(topic, doc.as<JsonObject>()); Mqtt::publish(topic, doc.as<JsonObject>());
doc.clear(); // clear json doc so we can reuse the buffer again doc.clear(); // clear json doc so we can reuse the buffer again
} }
@@ -335,7 +334,7 @@ void Sensor::publish_values() {
} else if ((mqtt_format_ == MQTT_format::NESTED) || (mqtt_format_ == MQTT_format::HA)) { } else if ((mqtt_format_ == MQTT_format::NESTED) || (mqtt_format_ == MQTT_format::HA)) {
// e.g. sensor_data = {"sensor1":{"id":"28-EA41-9497-0E03-5F","temp":"23.30"},"sensor2":{"id":"28-233D-9497-0C03-8B","temp":"24.0"}} // e.g. sensor_data = {"sensor1":{"id":"28-EA41-9497-0E03-5F","temp":"23.30"},"sensor2":{"id":"28-233D-9497-0C03-8B","temp":"24.0"}}
char sensorID[20]; // sensor{1-n} char sensorID[20]; // sensor{1-n}
strlcpy(sensorID, "sensor_data", 20); strlcpy(sensorID, "sensor", 20);
strlcat(sensorID, Helpers::itoa(s, i), 20); strlcat(sensorID, Helpers::itoa(s, i), 20);
JsonObject dataSensor = doc.createNestedObject(sensorID); JsonObject dataSensor = doc.createNestedObject(sensorID);
dataSensor["id"] = device.to_string(); dataSensor["id"] = device.to_string();