From a2f0cafc5c92c1a2f02093e4484146d22d2a5371 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 24 Jul 2023 18:51:38 +0200 Subject: [PATCH 1/3] update packages --- interface/package.json | 2 +- interface/yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/package.json b/interface/package.json index 64a6a026e..3ccea6708 100644 --- a/interface/package.json +++ b/interface/package.json @@ -69,7 +69,7 @@ "prettier": "^3.0.0", "rollup-plugin-visualizer": "^5.9.2", "terser": "^5.19.2", - "vite": "^4.4.6", + "vite": "^4.4.7", "vite-plugin-svgr": "^3.2.0", "vite-tsconfig-paths": "^4.2.0" }, diff --git a/interface/yarn.lock b/interface/yarn.lock index baa56f00e..ecc9e1226 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -2010,7 +2010,7 @@ __metadata: terser: ^5.19.2 typesafe-i18n: ^5.25.1 typescript: ^5.1.6 - vite: ^4.4.6 + vite: ^4.4.7 vite-plugin-svgr: ^3.2.0 vite-tsconfig-paths: ^4.2.0 languageName: unknown @@ -6764,9 +6764,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^4.4.6": - version: 4.4.6 - resolution: "vite@npm:4.4.6" +"vite@npm:^4.4.7": + version: 4.4.7 + resolution: "vite@npm:4.4.7" dependencies: esbuild: ^0.18.10 fsevents: ~2.3.2 @@ -6800,7 +6800,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 121144e8e9f95a3ec159dde072fefddc076cbf516bcc2078032c63b4f5b9babe760cf0cbc0c4808e02e568e8e7b1d74b742fcf4546fe2e148c4a84fb42a9089a + checksum: f0cd995ffd6d0311af98fa28a5ed8502c29d3aa4b3a12c812030e688f327ec17a95db0994e569bfddd6cfa602608b6892fc18d2944cbc1150d75c1ab3299bc5c languageName: node linkType: hard From 2e829b560d02bd8e8104c02818c0831e6d6a0da0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 24 Jul 2023 19:03:44 +0200 Subject: [PATCH 2/3] thermostat cooling state --- src/devices/thermostat.cpp | 2 ++ src/devices/thermostat.h | 1 + src/locale_translations.h | 1 + 3 files changed, 4 insertions(+) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index a7233fc36..786b78193 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -976,6 +976,7 @@ void Thermostat::process_RC300Monitor(std::shared_ptr telegram) } has_update(telegram, hc->targetflowtemp, 4); has_update(telegram, hc->curroominfl, 27); + has_update(telegram, hc->coolingon, 32); add_ha_climate(hc); } @@ -4194,6 +4195,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrreducetemp, DeviceValueType::INT, FL_(reducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_reducetemp)); register_device_value(tag, &hc->wwprio, DeviceValueType::BOOL, FL_(wwprio), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwprio)); register_device_value(tag, &hc->cooling, DeviceValueType::BOOL, FL_(hpcooling), DeviceValueUOM::NONE, MAKE_CF_CB(set_cooling)); + register_device_value(tag, &hc->coolingon, DeviceValueType::BOOL, FL_(coolingOn), DeviceValueUOM::NONE); register_device_value(tag, &hc->hpmode, DeviceValueType::ENUM, FL_(enum_hpmode), FL_(hpmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_hpmode)); register_device_value(tag, &hc->dewoffset, DeviceValueType::UINT, FL_(dewoffset), DeviceValueUOM::K, MAKE_CF_CB(set_dewoffset), 2, 10); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 6196b41b9..d98c100f5 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -95,6 +95,7 @@ class Thermostat : public EMSdevice { uint8_t hpminflowtemp; uint8_t hpmode; uint8_t cooling; + uint8_t coolingon; uint8_t hc_num() const { return hc_num_; diff --git a/src/locale_translations.h b/src/locale_translations.h index 43d4bfc8e..578b1c4af 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -365,6 +365,7 @@ MAKE_TRANSLATION(auxElecHeatNrgConsPool, "auxelecheatnrgconspool", "aux elec. he MAKE_TRANSLATION(hpCompOn, "hpcompon", "hp compressor", "WP Kompressor", "WP compressor", "VP Kompressor", "sprężarka pompy ciepła", "vp kompressor", "compresseur pompe à chaleur", "", "compressore pompa calore") MAKE_TRANSLATION(hpHeatingOn, "hpheatingon", "hp heating", "WP Heizen", "WP verwarmingsbedrijf", "VP Uppvärmning", "pompa ciepła, ogrzewanie", "vp oppvarmning", "chauffe pompe à chaleur", "riscaldamento pompa calore") MAKE_TRANSLATION(hpCoolingOn, "hpcoolingon", "hp cooling", "WP Kühlen", "WP koelbedrijf", "VP Kyla", "pompa ciepła, chłodzenie", "vp kjøling", "refroidissement pompe à chaleur", "raffreddamento pompa calore") +MAKE_TRANSLATION(coolingOn, "coolingon", "cooling", "Kühlen", "koelbedrijf", "Kyla", "chłodzenie", "kjøling", "refroidissement", "calore") MAKE_TRANSLATION(hpWwOn, "hpwwon", "hp dhw", "WP Warmwasser", "WP warmwaterbedrijf", "VP Varmvatten", "pompa ciepła, c.w.u.", "vp varmvatten", "eau chaude pompe à chaleur", "acqua calda pompa calore") MAKE_TRANSLATION(hpPoolOn, "hppoolon", "hp pool", "WP Pool", "WP zwembadbedrijf", "VP Pool", "pompa ciepła, podgrzewanie basenu", "vp basseng", "pompe à chaleur piscine", "pompa calore piscina") MAKE_TRANSLATION(hpBrinePumpSpd, "hpbrinepumpspd", "brine pump speed", "Solepumpen-Geschw.", "Snelheid pekelpomp", "Hastighet Brine-pump", "wysterowanie pompy glikolu", "hastighet brine-pumpe", "vitesse pompe à saumure", "", "velocità pompa sbrinamento") From 01060574aba16414c1b07ce2f23a46736d2bad08 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 24 Jul 2023 19:56:07 +0200 Subject: [PATCH 3/3] mqtt on_message: make char * conversion more clear --- src/mqtt.cpp | 16 +++++++--------- src/mqtt.h | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index fd52b7626..f497c0c1b 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -203,7 +203,7 @@ void Mqtt::show_mqtt(uuid::console::Shell & shell) { // simulate receiving a MQTT message, used only for testing void Mqtt::incoming(const char * topic, const char * payload) { if (payload != nullptr) { - on_message(topic, payload, strlen(payload)); + on_message(topic, (const uint8_t *) payload, strlen(payload)); } } #endif @@ -211,15 +211,13 @@ void Mqtt::incoming(const char * topic, const char * payload) { // received an MQTT message that we subscribed too // topic is the full path // payload is json or a single string and converted to a json with key 'value' -void Mqtt::on_message(const char * topic, const char * payload, size_t len) const { - // the payload is not terminated correctly, so make a copy +void Mqtt::on_message(const char * topic, const uint8_t * payload, size_t len) const { + // the payload is not terminated // convert payload to a null-terminated char string + // see https://www.emelis.net/espMqttClient/#code-samples char message[len + 1]; - if (payload != nullptr) { - strlcpy(message, payload, len + 1); - } else { - message[0] = '\0'; - } + memcpy(message, payload, len); + message[len] = '\0'; #if defined(EMSESP_DEBUG) if (len) { @@ -390,7 +388,7 @@ void Mqtt::start() { EMSESP::esp8266React.onMessage( [this](const espMqttClientTypes::MessageProperties & properties, const char * topic, const uint8_t * payload, size_t len, size_t index, size_t total) { - on_message(topic, (const char *)payload, len); // receiving mqtt + on_message(topic, payload, len); // receiving mqtt }); } diff --git a/src/mqtt.h b/src/mqtt.h index 1748496ce..8a02c0903 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -230,7 +230,7 @@ class Mqtt { static void queue_unsubscribe_message(const std::string & topic); void on_publish(uint16_t packetId) const; - void on_message(const char * topic, const char * payload, size_t len) const; + void on_message(const char * topic, const uint8_t * payload, size_t len) const; // function handlers for MQTT subscriptions struct MQTTSubFunction {