diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index e06823acc..20d49d7b4 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -194,6 +194,11 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i EMSESP::send_read_request(EMS_TYPE_RCTime, device_id); EMSESP::send_read_request(0x12, device_id); // read last error (only published on errors) EMSESP::send_read_request(0xA2, device_id); // read errorCode (only published on errors) + +#if defined(EMSESP_STANDALONE_DUMP) + // if we're just dumping out values, create a single dummy hc + register_device_values_hc(std::make_shared(1, 0)); // hc=1, no flags +#endif } // returns the heating circuit object based on the hc number diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 4d3cc0dd4..f89dcd66f 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -1067,6 +1067,10 @@ void EMSdevice::getCustomEntities(std::vector & entity_ids) { // device name,device type,product_id,shortname,fullname,type [(enum values) | (min/max)],uom,writeable,discovery_entityid void EMSdevice::dump_value_info() { for (auto & dv : devicevalues_) { + if (dv.fullname == nullptr) { + break; // ignore entities that don't have a fullname, like the thermostat climate thingy + } + Serial.print(name_); Serial.print(','); Serial.print(device_type_name().c_str()); diff --git a/src/emsdevicevalue.cpp b/src/emsdevicevalue.cpp index efa0b7ec1..12299d999 100644 --- a/src/emsdevicevalue.cpp +++ b/src/emsdevicevalue.cpp @@ -63,7 +63,7 @@ DeviceValue::DeviceValue(uint8_t device_type, // set the min/max set_custom_minmax(); -/* + /* #ifdef EMSESP_STANDALONE // only added for debugging Serial.print(COLOR_BRIGHT_RED_BACKGROUND); diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 63f2a3c00..8ebcc22db 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -320,7 +320,14 @@ void EMSESP::dump_all_values(uuid::console::Shell & shell) { // go through each device type so they are sorted for (const auto & device : device_library_) { if (device_class.first == device.device_type) { - emsdevices.push_back(EMSFactory::add(device.device_type, 0, device.product_id, "1.0", device.name, device.flags, EMSdevice::Brand::NO_BRAND)); + uint8_t device_id = 0; + // Mixer class looks at device_id to determine type, so fixing to 0x28 which will give all the settings except flowSetTemp + if ((device.device_type == DeviceType::MIXER) && (device.flags == EMSdevice::EMS_DEVICE_FLAG_MMPLUS)) { + device_id = 0x28; // hard code + } + + emsdevices.push_back( + EMSFactory::add(device.device_type, device_id, device.product_id, "1.0", device.name, device.flags, EMSdevice::Brand::NO_BRAND)); emsdevices.back()->dump_value_info(); // dump all the entity information } }