diff --git a/src/console.cpp b/src/console.cpp index 5d6c68b59..c0c61053f 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -235,7 +235,7 @@ void Console::load_standard_commands(unsigned int context) { } // trace logic - if (level == uuid::log::Level::TRACE) { + if (level == uuid::log::Level::TRACE || level == uuid::log::Level::DEBUG) { watch_id = LOG_TRACE_WATCH_NONE; // no watch ID set if (arguments.size() > 1) { // next argument is raw or full @@ -243,6 +243,8 @@ void Console::load_standard_commands(unsigned int context) { emsesp::EMSESP::trace_raw(true); } else if (arguments[1] == read_flash_string(F_(full))) { emsesp::EMSESP::trace_raw(false); + } else { + emsesp::EMSESP::trace_watch_id(Helpers::hextoint(arguments[1].c_str())); } // get the watch_id if its set diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 567b12c4f..1db79d3d2 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -228,7 +228,7 @@ std::string EMSdevice::telegram_type_name(std::shared_ptr telegr } for (const auto & tf : telegram_functions_) { - if (tf.telegram_type_id_ == (telegram->type_id && ((telegram->type_id & 0xF0) != 0xF0))) { + if ((tf.telegram_type_id_ == telegram->type_id) && ((telegram->type_id & 0x0F0) != 0xF0)) { return uuid::read_flash_string(tf.telegram_type_name_); } } diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 851b3626c..ce89b6c45 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -247,6 +247,7 @@ std::string EMSESP::pretty_telegram(std::shared_ptr telegram) { // get the type name, any match will do if (type_name.empty()) { type_name = emsdevice->telegram_type_name(telegram); + } } } @@ -362,14 +363,12 @@ void EMSESP::process_version(std::shared_ptr telegram) { uint8_t product_id = telegram->message_data[offset]; // product ID // get version as XX.XX - char buf[6] = {0}, - buf1[6] = {0}; std::string version(5, '\0'); snprintf_P(&version[0], version.capacity() + 1, - PSTR("%s.%s"), - Helpers::smallitoa(buf, telegram->message_data[offset + 1]), - Helpers::smallitoa(buf1, telegram->message_data[offset + 2])); + PSTR("%02d.%02d"), + telegram->message_data[offset + 1], + telegram->message_data[offset + 2]); // some devices store the protocol type (HT3, Buderus) in the last byte uint8_t brand; @@ -569,6 +568,7 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { //LOG_TRACE(F("Rx: %s"), Helpers::data_to_hex(data, length).c_str()); uint8_t first_value = data[0]; if (((first_value & 0x7F) == txservice_.ems_bus_id()) && (length > 1)) { + rxservice_.add(data, length); // just for logging return; // it's an echo } diff --git a/src/helpers.cpp b/src/helpers.cpp index 4a0380358..2350f53e1 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -279,6 +279,8 @@ uint32_t Helpers::hextoint(const char * hex) { byte = byte - 'a' + 10; else if (byte >= 'A' && byte <= 'F') byte = byte - 'A' + 10; + else + return 0; // error // shift 4 to make space for new digit, and add the 4 bits of the new digit val = (val << 4) | (byte & 0xF); } diff --git a/src/mqtt.cpp b/src/mqtt.cpp index a082903de..e14acc1b8 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -726,7 +726,7 @@ void Mqtt::console_commands(Shell & shell, unsigned int context) { } reconnect(); }); - + EMSESPShell::commands->add_command(ShellContext::MQTT, CommandFlags::ADMIN, flash_string_vector{F_(set), F_(port)}, diff --git a/src/sensors.cpp b/src/sensors.cpp index 7c502e482..554c005d5 100644 --- a/src/sensors.cpp +++ b/src/sensors.cpp @@ -277,7 +277,7 @@ void Sensors::publish_values() { if (mqtt_format_ == Settings::MQTT_format::CUSTOM) { char s[5]; doc[device.to_string()] = Helpers::render_value(s, device.temperature_c_, 2); - } else { + } else { char sensorID[10]; // sensor{1-n} strlcpy(sensorID, "sensor", 10); char s[5]; diff --git a/src/thermostat.cpp b/src/thermostat.cpp index bb57ff86d..faa76608c 100644 --- a/src/thermostat.cpp +++ b/src/thermostat.cpp @@ -470,8 +470,8 @@ void Thermostat::publish_values() { // go through all the heating circuits for (const auto & hc : heating_circuits_) { // if ((hc->setpoint_roomTemp == EMS_VALUE_SHORT_NOTSET) || (hc->curr_roomTemp == EMS_VALUE_SHORT_NOTSET)) { - if (hc->heatingtype == 0) { - break; // skip this HC + if (hc->setpoint_roomTemp == EMS_VALUE_SHORT_NOTSET) { + break; // skip this HC } has_data = true; diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index 9d939c0f2..c45d79362 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -63,7 +63,7 @@ void IRAM_ATTR EMSuart::emsuart_rx_intr_handler(void * para) { if (length < EMS_MAXBUFFERSIZE) { rxbuf[length++] = rx; } else { - drop_next_rx = true; // we have a overflow + drop_next_rx = true; // we have a overflow } } if ((!drop_next_rx) && ((length == 2) || (length > 4))) {