mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
Merge pull request #1426 from proddy/dev
fix bug when traversing ems devices when using cmd allvalues
This commit is contained in:
@@ -817,7 +817,7 @@ std::string EMSdevice::get_value_uom(const std::string & shortname) const {
|
|||||||
return std::string{}; // not found
|
return std::string{}; // not found
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EMSdevice::export_values(uint8_t device_type, JsonObject & output, const int8_t id, const uint8_t output_target) {
|
bool EMSdevice::export_values(uint8_t unique_id, JsonObject & output, const int8_t id, const uint8_t output_target) {
|
||||||
bool has_value = false;
|
bool has_value = false;
|
||||||
uint8_t tag;
|
uint8_t tag;
|
||||||
if (id >= 1 && id <= (1 + DeviceValueTAG::TAG_HS16 - DeviceValueTAG::TAG_HC1)) {
|
if (id >= 1 && id <= (1 + DeviceValueTAG::TAG_HS16 - DeviceValueTAG::TAG_HC1)) {
|
||||||
@@ -830,7 +830,7 @@ bool EMSdevice::export_values(uint8_t device_type, JsonObject & output, const in
|
|||||||
|
|
||||||
if (id > 0 || output_target == EMSdevice::OUTPUT_TARGET::API_VERBOSE) {
|
if (id > 0 || output_target == EMSdevice::OUTPUT_TARGET::API_VERBOSE) {
|
||||||
for (const auto & emsdevice : EMSESP::emsdevices) {
|
for (const auto & emsdevice : EMSESP::emsdevices) {
|
||||||
if (emsdevice && (emsdevice->device_type() == device_type)) {
|
if (emsdevice->unique_id() == unique_id) {
|
||||||
has_value |= emsdevice->generate_values(output, tag, (id < 1), output_target); // use nested for id -1 and 0
|
has_value |= emsdevice->generate_values(output, tag, (id < 1), output_target); // use nested for id -1 and 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -842,7 +842,7 @@ bool EMSdevice::export_values(uint8_t device_type, JsonObject & output, const in
|
|||||||
JsonObject output_hc = output;
|
JsonObject output_hc = output;
|
||||||
bool nest_created = false;
|
bool nest_created = false;
|
||||||
for (const auto & emsdevice : EMSESP::emsdevices) {
|
for (const auto & emsdevice : EMSESP::emsdevices) {
|
||||||
if (emsdevice && (emsdevice->device_type() == device_type)) {
|
if (emsdevice->unique_id() == unique_id) {
|
||||||
if (!nest_created && emsdevice->has_tags(tag)) {
|
if (!nest_created && emsdevice->has_tags(tag)) {
|
||||||
output_hc = output.createNestedObject(EMSdevice::tag_to_mqtt(tag));
|
output_hc = output.createNestedObject(EMSdevice::tag_to_mqtt(tag));
|
||||||
nest_created = true;
|
nest_created = true;
|
||||||
|
|||||||
@@ -112,14 +112,10 @@ bool System::command_allvalues(const char * value, const int8_t id, JsonObject &
|
|||||||
DynamicJsonDocument doc(EMSESP_JSON_SIZE_XXXLARGE);
|
DynamicJsonDocument doc(EMSESP_JSON_SIZE_XXXLARGE);
|
||||||
JsonObject device_output;
|
JsonObject device_output;
|
||||||
|
|
||||||
for (const auto & device_class : EMSFactory::device_handlers()) {
|
|
||||||
for (const auto & emsdevice : EMSESP::emsdevices) {
|
for (const auto & emsdevice : EMSESP::emsdevices) {
|
||||||
if (emsdevice->device_type() == device_class.first) {
|
|
||||||
std::string title = emsdevice->device_type_2_device_name_translated() + std::string(" ") + emsdevice->to_string();
|
std::string title = emsdevice->device_type_2_device_name_translated() + std::string(" ") + emsdevice->to_string();
|
||||||
device_output = output.createNestedObject(title);
|
device_output = output.createNestedObject(title);
|
||||||
emsesp::EMSdevice::export_values(emsdevice->device_type(), device_output, id, EMSdevice::OUTPUT_TARGET::API_VERBOSE);
|
emsesp::EMSdevice::export_values(emsdevice->unique_id(), device_output, id, EMSdevice::OUTPUT_TARGET::API_VERBOSE);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Custom entities
|
// Custom entities
|
||||||
|
|||||||
@@ -37,9 +37,8 @@ bool Test::run_test(const char * command, int8_t id) {
|
|||||||
|
|
||||||
// simulate HansRemmerswaal's setup - see https://github.com/emsesp/EMS-ESP32/issues/859
|
// simulate HansRemmerswaal's setup - see https://github.com/emsesp/EMS-ESP32/issues/859
|
||||||
add_device(0x08, 172); // 176 entities - boiler: Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i
|
add_device(0x08, 172); // 176 entities - boiler: Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i
|
||||||
|
add_device(0x10, 158); // 62 entities - thermostat: RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410
|
||||||
// add_device(0x10, 158); // 62 entities - thermostat: RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410
|
add_device(0x38, 200); // 4 entities - thermostat: RC100H
|
||||||
// add_device(0x38, 200); // 4 entities - thermostat: RC100H
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -47,9 +46,13 @@ bool Test::run_test(const char * command, int8_t id) {
|
|||||||
if (strcmp(command, "general") == 0) {
|
if (strcmp(command, "general") == 0) {
|
||||||
EMSESP::logger().info("Testing general. Adding a Boiler and Thermostat");
|
EMSESP::logger().info("Testing general. Adding a Boiler and Thermostat");
|
||||||
|
|
||||||
|
// System::test_set_all_active(true); // uncomment if we want to show all entities and give them fake values
|
||||||
|
|
||||||
add_device(0x08, 123); // Nefit Trendline
|
add_device(0x08, 123); // Nefit Trendline
|
||||||
add_device(0x18, 157); // Bosch CR100
|
add_device(0x18, 157); // Bosch CR100
|
||||||
|
|
||||||
|
// add_device(0x10, 158); // RC300 - there's no data here
|
||||||
|
|
||||||
// add some data
|
// add some data
|
||||||
// Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25)
|
// Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25)
|
||||||
uart_telegram({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A,
|
uart_telegram({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A,
|
||||||
|
|||||||
Reference in New Issue
Block a user