From ee5b1b8c346c08ed61e4c6899a9bd756271f6940 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 30 Apr 2021 15:15:54 +0200 Subject: [PATCH] add dallassensors to api-info --- src/dallassensor.cpp | 16 ++++++++++++---- src/emsesp.cpp | 21 +++++++++++++++++++++ src/system.cpp | 5 +++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/dallassensor.cpp b/src/dallassensor.cpp index a1dd07fb9..273502208 100644 --- a/src/dallassensor.cpp +++ b/src/dallassensor.cpp @@ -308,10 +308,18 @@ bool DallasSensor::command_info(const char * value, const int8_t id, JsonObject for (const auto & sensor : sensors_) { char sensorID[10]; // sensor{1-n} snprintf_P(sensorID, 10, PSTR("sensor%d"), i++); - JsonObject dataSensor = json.createNestedObject(sensorID); - dataSensor["id"] = sensor.to_string(); - if (Helpers::hasValue(sensor.temperature_c)) { - dataSensor["temp"] = (float)(sensor.temperature_c) / 10; + if (id == 0) { + if (Mqtt::dallas_format() == Mqtt::Dallas_Format::SENSORID && Helpers::hasValue(sensor.temperature_c)) { + json[sensor.to_string()] = (float)(sensor.temperature_c) / 10; + } else if (Helpers::hasValue(sensor.temperature_c)) { + json[sensorID] = (float)(sensor.temperature_c) / 10; + } + } else { + JsonObject dataSensor = json.createNestedObject(sensorID); + dataSensor["id"] = sensor.to_string(); + if (Helpers::hasValue(sensor.temperature_c)) { + dataSensor["temp"] = (float)(sensor.temperature_c) / 10; + } } } diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 9972933e1..c82795507 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -553,6 +553,27 @@ bool EMSESP::get_device_value_info(JsonObject & root, const char * cmd, const in return emsdevice->get_value_info(root, cmd, id); } } + + if (devicetype == DeviceType::DALLASSENSOR) { + uint8_t i = 1; + for (const auto & sensor : EMSESP::sensor_devices()) { + char sensorID[10]; + snprintf_P(sensorID, 10, PSTR("sensor%d"), i++); + if ((strcmp(cmd, sensorID) == 0) || (strcmp(cmd, Helpers::toLower(sensor.to_string()).c_str()) == 0)) { + root["name"] = sensor.to_string(); + if (Helpers::hasValue(sensor.temperature_c)) { + root["value"] = (float)(sensor.temperature_c) / 10; + } + root["type"] = F_(number); + root["min"] = -55; + root["max"] = 125; + root["unit"] = EMSdevice::uom_to_string(DeviceValueUOM::DEGREES); + root["writeable"] = false; + return true; + } + } + } + return false; } diff --git a/src/system.cpp b/src/system.cpp index c0ea30677..7fd51c67c 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -921,6 +921,11 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & json } } } + if (EMSESP::sensor_devices().size()) { + JsonObject obj = devices2.createNestedObject(); + obj["type"] = F("Dallassensor"); + obj["name"] = F("Dallassensor"); + } return true; }