Merge branch 'dev' into dev2

This commit is contained in:
MichaelDvP
2023-11-21 11:24:04 +01:00
13 changed files with 131 additions and 123 deletions

View File

@@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.6.3] November 18 2023
## **IMPORTANT! BREAKING CHANGES**
Writeable Text entities have moved from type `sensor` to `text` in Home Assistant to make them also editable within an HA dashboard. Examples are `datetime`, `holidays`, `switchtime`, `vacations`, `maintenancedate`... You will need to manually remove any old discovery topics from your MQTT broker using an application like MQTT Explorer.
## Added
- humidity for ventilation devices
- telegrams for RC100H, hc2, etc. (seen on discord, not tested)
- names for BC400, GB192i.2, read temperatures for low loss header and heatblock [#1317](https://github.com/emsesp/EMS-ESP32/discussions/1317)
- option for `forceheatingoff` [#1262](https://github.com/emsesp/EMS-ESP32/issues/1262)
- remote thermostat emulation RC100H for RC3xx [#1278](https://github.com/emsesp/EMS-ESP32/discussions/1278)
- shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329)
- HA discovery for writeable text entities [#1337](https://github.com/emsesp/EMS-ESP32/pull/1377)
- autodetect board_profile, store in nvs, add telnet command option, add E32V2
- heat pump high res energy counters [#1348, #1349. #1350](https://github.com/emsesp/EMS-ESP32/issues/1348)
- optional bssid in network settings
- extension module EM100 [#1315](https://github.com/emsesp/EMS-ESP32/discussions/1315)
- digital_out with new options for polarity and startup state
- added 'system allvalues' command that dumps all the EMS device values, plus sensors and any custom entities
## Fixed
- remove command `remoteseltemp`, thermostat accept it only from remote thermostat
- shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329)
- fixed helper text in Web Device Entity dialog box for numerical ranges
- MQTT base with paths not working in HA [#1393](https://github.com/emsesp/EMS-ESP32/issues/1393)
## Changed
- update to platform 6.4.0, arduino 2.0.14 / idf 4.4.6
- small changes for arduino 3.0.0 / idf 5.1 compatibility (not backward compatible to platform 6.3.2 and before)
- AP start after 10 sec, stay until station/eth connected
- tested wifi-all-channel-scan (3.6.3-dev4 a-e), removed again because of connect issues
- mqtt disconnect stops queue
## [3.6.2] October 1 2023 ## [3.6.2] October 1 2023
## **IMPORTANT! BREAKING CHANGES** ## **IMPORTANT! BREAKING CHANGES**

View File

@@ -1,37 +1,13 @@
# Changelog # Changelog
## [3.6.3] ## [3.6.4]
## **IMPORTANT! BREAKING CHANGES** ## **IMPORTANT! BREAKING CHANGES**
Writeable Text entities have moved from type `sensor` to `text` in Home Assistant to make them also editable within an HA dashboard. Examples are `datetime`, `holidays`, `switchtime`, `vacations`, `maintenancedate`... You will need to manually remove any old discovery topics from your MQTT broker using an application like MQTT Explorer.
## Added ## Added
- humidity for ventilation devices - thermostat boost mode and boost time
- telegrams for RC100H, hc2, etc. (seen on discord, not tested)
- names for BC400, GB192i.2, read temperatures for low loss header and heatblock [#1317](https://github.com/emsesp/EMS-ESP32/discussions/1317)
- option for `forceheatingoff` [#1262](https://github.com/emsesp/EMS-ESP32/issues/1262)
- remote thermostat emulation RC100H for RC3xx [#1278](https://github.com/emsesp/EMS-ESP32/discussions/1278)
- shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329)
- HA discovery for writeable text entities [#1337](https://github.com/emsesp/EMS-ESP32/pull/1377)
- autodetect board_profile, store in nvs, add telnet command option, add E32V2
- heat pump high res energy counters [#1348, #1349. #1350](https://github.com/emsesp/EMS-ESP32/issues/1348)
- optional bssid in network settings
- extension module EM100 [#1315](https://github.com/emsesp/EMS-ESP32/discussions/1315)
- digital_out with new options for polarity and startup state
- added 'system allvalues' command that dumps all the EMS device values, plus sensors and any custom entities
## Fixed ## Fixed
- remove command `remoteseltemp`, thermostat accept it only from remote thermostat
- shower_data MQTT payload contains the timestamp [#1329](https://github.com/emsesp/EMS-ESP32/issues/1329)
- fixed helper text in Web Device Entity dialog box for numerical ranges
## Changed ## Changed
- update to platform 6.4.0, arduino 2.0.14 / idf 4.4.6
- small changes for arduino 3.0.0 / idf 5.1 compatibility (not backward compatible to platform 6.3.2 and before)
- AP start after 10 sec, stay until station/eth connected
- tested wifi-all-channel-scan (3.6.3-dev4 a-e), removed again because of connect issues
- mqtt disconnect stops queue

View File

@@ -42,7 +42,7 @@ DEFINES += -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DAR
DEFINES += -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__ -DEMC_RX_BUFFER_SIZE=1500 DEFINES += -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__ -DEMC_RX_BUFFER_SIZE=1500
DEFINES += $(ARGS) DEFINES += $(ARGS)
DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.0-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.3-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\"
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# Sources & Files # Sources & Files

View File

@@ -29,7 +29,7 @@
"@table-library/react-table-library": "4.1.7", "@table-library/react-table-library": "4.1.7",
"@types/imagemin": "^8.0.4", "@types/imagemin": "^8.0.4",
"@types/lodash-es": "^4.17.11", "@types/lodash-es": "^4.17.11",
"@types/node": "^20.9.1", "@types/node": "^20.9.2",
"@types/react": "^18.2.37", "@types/react": "^18.2.37",
"@types/react-dom": "^18.2.15", "@types/react-dom": "^18.2.15",
"@types/react-router-dom": "^5.3.3", "@types/react-router-dom": "^5.3.3",
@@ -55,7 +55,7 @@
"@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/eslint-plugin": "^6.11.0",
"@typescript-eslint/parser": "^6.11.0", "@typescript-eslint/parser": "^6.11.0",
"concurrently": "^8.2.2", "concurrently": "^8.2.2",
"eslint": "^8.53.0", "eslint": "^8.54.0",
"eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-airbnb-typescript": "^17.1.0",
"eslint-config-prettier": "^9.0.0", "eslint-config-prettier": "^9.0.0",

View File

@@ -498,8 +498,8 @@ function createStructureReader(structure, firstId) {
key === '__proto__' key === '__proto__'
? '__proto_:r()' ? '__proto_:r()'
: validName.test(key) : validName.test(key)
? key + ':r()' ? key + ':r()'
: '[' + JSON.stringify(key) + ']:r()' : '[' + JSON.stringify(key) + ']:r()'
) )
.join(',') + .join(',') +
'})}' '})}'

View File

@@ -5,7 +5,6 @@ import viteImagemin from 'vite-plugin-imagemin';
import { visualizer } from 'rollup-plugin-visualizer'; import { visualizer } from 'rollup-plugin-visualizer';
export default defineConfig(({ command, mode }) => { export default defineConfig(({ command, mode }) => {
// standalone build for development - runs the server
if (command === 'serve') { if (command === 'serve') {
console.log('Preparing for standalone build with server, mode=' + mode); console.log('Preparing for standalone build with server, mode=' + mode);
return { return {
@@ -30,9 +29,17 @@ export default defineConfig(({ command, mode }) => {
}; };
} }
if (command === 'build' && mode === 'hosted') {
return {
plugins: [preact(), viteTsconfigPaths()],
build: {
chunkSizeWarningLimit: 1024
}
};
}
// production build, both for hosted and building the firmware // production build, both for hosted and building the firmware
if (command === 'build') { if (command === 'build') {
console.log('Preparing for production build, mode is ' + mode);
return { return {
plugins: [ plugins: [
preact(), preact(),
@@ -79,11 +86,7 @@ export default defineConfig(({ command, mode }) => {
build: { build: {
// target: 'es2022', // target: 'es2022',
outDir: 'dist',
reportCompressedSize: false,
chunkSizeWarningLimit: 1024, chunkSizeWarningLimit: 1024,
sourcemap: false,
manifest: false,
minify: 'terser', minify: 'terser',
terserOptions: { terserOptions: {
compress: { compress: {
@@ -109,16 +112,6 @@ export default defineConfig(({ command, mode }) => {
nameCache: null, nameCache: null,
safari10: false, safari10: false,
toplevel: false toplevel: false
},
rollupOptions: {
// Ignore "use client" waning since we are not using SSR
onwarn(warning, warn) {
if (warning.code === 'MODULE_LEVEL_DIRECTIVE' && warning.message.includes(`"use client"`)) {
return;
}
warn(warning);
}
} }
} }
}; };

View File

@@ -746,10 +746,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint/js@npm:8.53.0": "@eslint/js@npm:8.54.0":
version: 8.53.0 version: 8.54.0
resolution: "@eslint/js@npm:8.53.0" resolution: "@eslint/js@npm:8.54.0"
checksum: a372d55aa2bbe0d9399acc8de3c892dcfe507fd914d29fde6826ae54a13452619be626aa7eb70b1ec4d4da5302b6ed8e8ac9bf1f830003f15c0ad56c30b4f520 checksum: 4d491ff234cd94b54499428cb3435623270ff8cc59950e13e6e1ac2fa350ec60502dac7bfd4f486523fee65ad7a358034570fe776b81b14dbfe5525d1e26e1d8
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1478,12 +1478,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/node@npm:^20.9.1": "@types/node@npm:^20.9.2":
version: 20.9.1 version: 20.9.2
resolution: "@types/node@npm:20.9.1" resolution: "@types/node@npm:20.9.2"
dependencies: dependencies:
undici-types: "npm:~5.26.4" undici-types: "npm:~5.26.4"
checksum: b2b3f9ee31db63ccd3d48e5597d359c3385879679f37a749e473b47068aae181d0e280f39f153d75ce704640b3ec09d029aecd2a686e5658fb866254dc7e781b checksum: 8bab2870bfc02efc988c53dfb0149634f8feb824132cc7f20b36f3d55d89ef893e3a43d545524a5cb3a284f4ce68ae4181d75a4a39cee6b79c586d719e6b7461
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1745,7 +1745,7 @@ __metadata:
"@table-library/react-table-library": "npm:4.1.7" "@table-library/react-table-library": "npm:4.1.7"
"@types/imagemin": "npm:^8.0.4" "@types/imagemin": "npm:^8.0.4"
"@types/lodash-es": "npm:^4.17.11" "@types/lodash-es": "npm:^4.17.11"
"@types/node": "npm:^20.9.1" "@types/node": "npm:^20.9.2"
"@types/react": "npm:^18.2.37" "@types/react": "npm:^18.2.37"
"@types/react-dom": "npm:^18.2.15" "@types/react-dom": "npm:^18.2.15"
"@types/react-router-dom": "npm:^5.3.3" "@types/react-router-dom": "npm:^5.3.3"
@@ -1754,7 +1754,7 @@ __metadata:
alova: "npm:^2.13.1" alova: "npm:^2.13.1"
async-validator: "npm:^4.2.5" async-validator: "npm:^4.2.5"
concurrently: "npm:^8.2.2" concurrently: "npm:^8.2.2"
eslint: "npm:^8.53.0" eslint: "npm:^8.54.0"
eslint-config-airbnb: "npm:^19.0.4" eslint-config-airbnb: "npm:^19.0.4"
eslint-config-airbnb-typescript: "npm:^17.1.0" eslint-config-airbnb-typescript: "npm:^17.1.0"
eslint-config-prettier: "npm:^9.0.0" eslint-config-prettier: "npm:^9.0.0"
@@ -3842,14 +3842,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"eslint@npm:^8.53.0": "eslint@npm:^8.54.0":
version: 8.53.0 version: 8.54.0
resolution: "eslint@npm:8.53.0" resolution: "eslint@npm:8.54.0"
dependencies: dependencies:
"@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/eslint-utils": "npm:^4.2.0"
"@eslint-community/regexpp": "npm:^4.6.1" "@eslint-community/regexpp": "npm:^4.6.1"
"@eslint/eslintrc": "npm:^2.1.3" "@eslint/eslintrc": "npm:^2.1.3"
"@eslint/js": "npm:8.53.0" "@eslint/js": "npm:8.54.0"
"@humanwhocodes/config-array": "npm:^0.11.13" "@humanwhocodes/config-array": "npm:^0.11.13"
"@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/module-importer": "npm:^1.0.1"
"@nodelib/fs.walk": "npm:^1.2.8" "@nodelib/fs.walk": "npm:^1.2.8"
@@ -3886,7 +3886,7 @@ __metadata:
text-table: "npm:^0.2.0" text-table: "npm:^0.2.0"
bin: bin:
eslint: bin/eslint.js eslint: bin/eslint.js
checksum: e305a71ce2b9a8631b293266fe53e346c76f28bc8d004af33f10e537cf133db1fb87af3599376e70ed6e0f89a78be10c4f08ddd0c1c9c0c497cd143b4a270420 checksum: 379827964fd7885a4d48611a5237cf5c534eff0ad3d0c1a1d6a14d52ac6758f4efdccd924c9bb3a9aa4dc80a3446d48dc49f61733cd5bd5f74419d0240970e7b
languageName: node languageName: node
linkType: hard linkType: hard

View File

@@ -324,7 +324,7 @@ security_settings = {
] ]
}; };
const features = { const features = {
version: 'v3.6.0-demo', version: 'v3.6.3-demo',
// platform: 'ESP32' // platform: 'ESP32'
platform: 'ESP32-S3' platform: 'ESP32-S3'
}; };
@@ -353,6 +353,54 @@ const EMSESP_RESET_CUSTOMIZATIONS_ENDPOINT = REST_ENDPOINT_ROOT + 'resetCustomiz
const EMSESP_WRITE_SCHEDULE_ENDPOINT = REST_ENDPOINT_ROOT + 'schedule'; const EMSESP_WRITE_SCHEDULE_ENDPOINT = REST_ENDPOINT_ROOT + 'schedule';
const EMSESP_WRITE_ENTITIES_ENDPOINT = REST_ENDPOINT_ROOT + 'entities'; const EMSESP_WRITE_ENTITIES_ENDPOINT = REST_ENDPOINT_ROOT + 'entities';
const emsesp_info = {
System: {
version: '3.6.3',
uptime: '001+06:40:34.018',
'uptime (seconds)': 110434,
freemem: 131,
'reset reason': 'Software reset CPU / Software reset CPU',
'Sensor sensors': 3
},
Network: {
connection: 'Ethernet',
hostname: 'ems-esp',
MAC: 'A8:03:2A:62:64:CF',
'IPv4 address': '192.168.1.134/255.255.255.0',
'IPv4 gateway': '192.168.1.1',
'IPv4 nameserver': '192.168.1.1'
},
Status: {
'bus status': 'connected',
'bus protocol': 'Buderus',
'telegrams received': 84986,
'read requests sent': 14748,
'write requests sent': 3,
'incomplete telegrams': 8,
'tx fails': 0,
'rx line quality': 100,
'tx line quality': 100,
MQTT: 'connected',
'MQTT publishes': 46336,
'MQTT publish fails': 0,
'Sensor reads': 22086,
'Sensor fails': 0
},
Devices: [
{
type: 'Boiler',
name: 'Nefit GBx72/Trendline/Cerapur/Greenstar Si/27i (DeviceID:0x08 ProductID:123, Version:06.01)',
handlers:
'0x10 0x11 0xC2 0x14 0x15 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA'
},
{
type: 'Thermostat',
name: 'RC20/Moduline 300 (DeviceID:0x17, ProductID:77, Version:03.03)',
handlers: '0xA3 0x06 0xA2 0x12 0x91 0xA8'
}
]
};
settings = { settings = {
locale: 'en', locale: 'en',
tx_mode: 4, tx_mode: 4,
@@ -2638,53 +2686,6 @@ rest_server.get(EMSESP_BOARDPROFILE_ENDPOINT, (req, res) => {
}); });
// EMS-ESP API specific // EMS-ESP API specific
const emsesp_info = {
System: {
version: '3.6.2',
uptime: '001+06:40:34.018',
'uptime (seconds)': 110434,
freemem: 131,
'reset reason': 'Software reset CPU / Software reset CPU',
'Sensor sensors': 3
},
Network: {
connection: 'Ethernet',
hostname: 'ems-esp',
MAC: 'A8:03:2A:62:64:CF',
'IPv4 address': '192.168.1.134/255.255.255.0',
'IPv4 gateway': '192.168.1.1',
'IPv4 nameserver': '192.168.1.1'
},
Status: {
'bus status': 'connected',
'bus protocol': 'Buderus',
'telegrams received': 84986,
'read requests sent': 14748,
'write requests sent': 3,
'incomplete telegrams': 8,
'tx fails': 0,
'rx line quality': 100,
'tx line quality': 100,
MQTT: 'connected',
'MQTT publishes': 46336,
'MQTT publish fails': 0,
'Sensor reads': 22086,
'Sensor fails': 0
},
Devices: [
{
type: 'Boiler',
name: 'Nefit GBx72/Trendline/Cerapur/Greenstar Si/27i (DeviceID:0x08 ProductID:123, Version:06.01)',
handlers:
'0x10 0x11 0xC2 0x14 0x15 0x1C 0x18 0x19 0x1A 0x35 0x16 0x33 0x34 0x26 0x2A 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA'
},
{
type: 'Thermostat',
name: 'RC20/Moduline 300 (DeviceID:0x17, ProductID:77, Version:03.03)',
handlers: '0xA3 0x06 0xA2 0x12 0x91 0xA8'
}
]
};
rest_server.post(API_ENDPOINT_ROOT, (req, res) => { rest_server.post(API_ENDPOINT_ROOT, (req, res) => {
console.log('Generic API POST'); console.log('Generic API POST');

View File

@@ -83,8 +83,8 @@ extra_scripts = scripts/rename_fw.py
board = esp32dev board = esp32dev
board_build.partitions = esp32_partition_4M.csv board_build.partitions = esp32_partition_4M.csv
board_build.extra_flags = -DBOARD_HAS_PSRAM board_build.extra_flags = -DBOARD_HAS_PSRAM
build_flags = ${common.build_flags}
build_unflags = ${common.unbuild_flags} build_unflags = ${common.unbuild_flags}
build_flags = ${common.build_flags}
[env:ci_s3] [env:ci_s3]
extends = espressi32_base extends = espressi32_base
@@ -93,10 +93,11 @@ board = lolin_s3
board_build.f_cpu = 240000000L board_build.f_cpu = 240000000L
board_upload.flash_size = 16MB board_upload.flash_size = 16MB
board_build.partitions = esp32_partition_16M.csv board_build.partitions = esp32_partition_16M.csv
build_unflags = ${common.unbuild_flags}
build_flags = build_flags =
${common.build_flags} ${common.build_flags}
-O2 -O2
build_unflags = ${common.unbuild_flags} '-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"'
[env:esp32_4M] [env:esp32_4M]
extends = espressi32_base_tasmota extends = espressi32_base_tasmota
@@ -171,7 +172,7 @@ platform = native
build_flags = build_flags =
-DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0 -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0
-DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__ -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__
-DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.0-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\" -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.6.3-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32\"
-lpthread -lpthread
-std=gnu++11 -Og -ggdb -std=gnu++11 -Og -ggdb
build_src_flags = build_src_flags =

View File

@@ -1,7 +1,7 @@
sonar.organization=emsesp sonar.organization=emsesp
sonar.projectKey=emsesp_EMS-ESP32 sonar.projectKey=emsesp_EMS-ESP32
sonar.projectName=EMS-ESP32 sonar.projectName=EMS-ESP32
sonar.projectVersion=3.6.0 sonar.projectVersion=3.6.3
sonar.sources=./src sonar.sources=./src
sonar.cfamily.build-wrapper-output=bw-output sonar.cfamily.build-wrapper-output=bw-output
sonar.sourceEncoding=UTF-8 sonar.sourceEncoding=UTF-8

View File

@@ -1023,13 +1023,12 @@ void Thermostat::process_RC300Set(std::shared_ptr<const Telegram> telegram) {
// has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual // has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual
telegram->read_value(hc->mode_new, 21); // 0-off, 1-manual, 2-auto telegram->read_value(hc->mode_new, 21); // 0-off, 1-manual, 2-auto
if (hc->mode_new <= 2) { if (Helpers::hasValue(hc->mode_new)) {
has_update(hc->mode, hc->mode_new); has_update(hc->mode, hc->mode_new);
} else { } else {
uint8_t mode = hc->mode == 2 ? 0xFF : 0; // auto : manual uint8_t mode = hc->mode == 2 ? 0xFF : 0; // auto : manual
if (telegram->read_value(mode, 0)) { telegram->read_value(mode, 0);
has_update(hc->mode, mode == 0xFF ? 2 : 1); has_update(hc->mode, mode == 0xFF ? 2 : 1);
}
} }
has_update(telegram, hc->daytemp, 2); // is * 2 has_update(telegram, hc->daytemp, 2); // is * 2
has_update(telegram, hc->nighttemp, 4); // is * 2 has_update(telegram, hc->nighttemp, 4); // is * 2
@@ -2455,8 +2454,9 @@ bool Thermostat::set_mode(const char * value, const int8_t id) {
// check for the mode being a full string name or single digit // check for the mode being a full string name or single digit
if (!Helpers::value2enum(value, enum_index, mode_list)) { if (!Helpers::value2enum(value, enum_index, mode_list)) {
mode_list = FL_(enum_mode_ha); mode_list = FL_(enum_mode_ha);
if (Mqtt::ha_enabled() && !Helpers::value2enum(value, enum_index, mode_list)) { if (!Mqtt::ha_enabled() || !Helpers::value2enum(value, enum_index, mode_list)) {
LOG_WARNING("wrong mode: %s", value); // We have logging on fail in command.cpp
// LOG_WARNING("wrong mode: %s", value);
return false; // not found return false; // not found
} }
} }
@@ -2597,7 +2597,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) {
if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC10) { if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC10) {
hc->mode = set_mode_value >> 1; hc->mode = set_mode_value >> 1;
} else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) { } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) {
hc->mode = set_mode_value ? 1 : 0; hc->mode = Helpers::hasValue(hc->mode_new) ? set_mode_value : set_mode_value == 0xFF ? 2 : 1;
} else if (model_ == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { } else if (model_ == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
hc->mode = set_mode_value - 1; hc->mode = set_mode_value - 1;
} else { } else {

View File

@@ -1099,7 +1099,7 @@ bool System::check_upgrade(bool factory_settings) {
missing_version = (settingsVersion.empty() || (settingsVersion.length() < 5)); missing_version = (settingsVersion.empty() || (settingsVersion.length() < 5));
if (missing_version) { if (missing_version) {
LOG_WARNING("No version information found (%s)", settingsVersion.c_str()); LOG_WARNING("No version information found (%s)", settingsVersion.c_str());
settingsVersion = "3.6.2"; // this was the last stable version settingsVersion = "3.6.3"; // this was the last stable version
} }
} }

View File

@@ -1 +1 @@
#define EMSESP_APP_VERSION "3.6.3-dev.10a" #define EMSESP_APP_VERSION "3.6.4-dev.0a"