From 895eddd8d2012feebb0a159422b6abc0065dafd9 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 5 Oct 2023 17:50:49 +0200 Subject: [PATCH 1/3] update packages --- interface/package.json | 10 +-- interface/yarn.lock | 168 ++++++++++++++++++++++------------------- 2 files changed, 97 insertions(+), 81 deletions(-) diff --git a/interface/package.json b/interface/package.json index 94fc65eed..e14ed9cd0 100644 --- a/interface/package.json +++ b/interface/package.json @@ -22,13 +22,13 @@ "@alova/adapter-xhr": "^1.0.1", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.14.11", - "@mui/material": "^5.14.11", + "@mui/icons-material": "^5.14.12", + "@mui/material": "^5.14.12", "@table-library/react-table-library": "4.1.7", "@types/lodash-es": "^4.17.9", "@types/node": "^20.8.2", - "@types/react": "^18.2.24", - "@types/react-dom": "^18.2.8", + "@types/react": "^18.2.25", + "@types/react-dom": "^18.2.10", "@types/react-router-dom": "^5.3.3", "alova": "^2.13.1", "async-validator": "^4.2.5", @@ -69,7 +69,7 @@ "prettier": "^3.0.3", "rollup-plugin-visualizer": "^5.9.2", "terser": "^5.21.0", - "vite": "^4.4.10", + "vite": "^4.4.11", "vite-plugin-svgr": "^4.1.0", "vite-tsconfig-paths": "^4.2.1" }, diff --git a/interface/yarn.lock b/interface/yarn.lock index 451dd1143..209be2f3d 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -347,7 +347,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.22.15, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.7": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.7": version: 7.22.15 resolution: "@babel/runtime@npm:7.22.15" dependencies: @@ -356,6 +356,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.23.1": + version: 7.23.1 + resolution: "@babel/runtime@npm:7.23.1" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: e57ab1436d4845efe67c3f76d578508bb584173690ecfeac105bc4e09d64b2aa6a53c1e03bca3c97cc238e5390a804e5a4ded211e6350243b735905ca45a4822 + languageName: node + linkType: hard + "@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5": version: 7.22.15 resolution: "@babel/template@npm:7.22.15" @@ -896,14 +905,14 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-beta.17": - version: 5.0.0-beta.17 - resolution: "@mui/base@npm:5.0.0-beta.17" +"@mui/base@npm:5.0.0-beta.18": + version: 5.0.0-beta.18 + resolution: "@mui/base@npm:5.0.0-beta.18" dependencies: - "@babel/runtime": ^7.22.15 + "@babel/runtime": ^7.23.1 "@floating-ui/react-dom": ^2.0.2 - "@mui/types": ^7.2.4 - "@mui/utils": ^5.14.11 + "@mui/types": ^7.2.5 + "@mui/utils": ^5.14.12 "@popperjs/core": ^2.11.8 clsx: ^2.0.0 prop-types: ^15.8.1 @@ -914,22 +923,22 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 7d0b67a279f9b63e88cd74426153fae129b3bbe670ccc06ba293357edb5466df01e8f953d86944a1ba500a8cf7cb2c2f3af0691b62b1a8e983dfbe19abc93717 + checksum: 0d8f3743a69508b5259d7cd595acc3717f4ad60e1606bd7e1c58b82886ae74747151f6492a14f994ef5f88698fb02f95c84bf94a72dc71160f79965920f490bd languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^5.14.11": - version: 5.14.11 - resolution: "@mui/core-downloads-tracker@npm:5.14.11" - checksum: 206e74991d1fb1ce83f915d8761d08e793462a98213f433368a085b4715292580efcd4df5368266d7da1a2f7cc851e6f3762db27f24958d214aedbae6e562abd +"@mui/core-downloads-tracker@npm:^5.14.12": + version: 5.14.12 + resolution: "@mui/core-downloads-tracker@npm:5.14.12" + checksum: 0cfd7e96f39b585cf58f98476e21240f92cd0a3b2b70e027d5483e1a10593426a05573f1802e9d8dc7723c54ce322a9496b2765987aaf0d5ab37b55787bfa512 languageName: node linkType: hard -"@mui/icons-material@npm:^5.14.11": - version: 5.14.11 - resolution: "@mui/icons-material@npm:5.14.11" +"@mui/icons-material@npm:^5.14.12": + version: 5.14.12 + resolution: "@mui/icons-material@npm:5.14.12" dependencies: - "@babel/runtime": ^7.22.15 + "@babel/runtime": ^7.23.1 peerDependencies: "@mui/material": ^5.0.0 "@types/react": ^17.0.0 || ^18.0.0 @@ -937,20 +946,20 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: f956b48b8ac83318a8e5e93a084f4f62ce82694e591a611e40d35c7c41d6395339bbde0416d0b80927e1ed3a051d4984076a090c2f8655046ac281bc5ca6466e + checksum: 06e63cdcb1ca9aa66d4d0c1d31d4e10135b9a342997e9e1da29cde529ceff5fb2471f20892769bf6163ae934d941e494bdd769a622c7d0ed7474728b4ce45e2b languageName: node linkType: hard -"@mui/material@npm:^5.14.11": - version: 5.14.11 - resolution: "@mui/material@npm:5.14.11" +"@mui/material@npm:^5.14.12": + version: 5.14.12 + resolution: "@mui/material@npm:5.14.12" dependencies: - "@babel/runtime": ^7.22.15 - "@mui/base": 5.0.0-beta.17 - "@mui/core-downloads-tracker": ^5.14.11 - "@mui/system": ^5.14.11 - "@mui/types": ^7.2.4 - "@mui/utils": ^5.14.11 + "@babel/runtime": ^7.23.1 + "@mui/base": 5.0.0-beta.18 + "@mui/core-downloads-tracker": ^5.14.12 + "@mui/system": ^5.14.12 + "@mui/types": ^7.2.5 + "@mui/utils": ^5.14.12 "@types/react-transition-group": ^4.4.6 clsx: ^2.0.0 csstype: ^3.1.2 @@ -970,16 +979,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: 53b5ba0732cee87c82c16a64c3bc145f1fd88ae014c5d1dab9f84c24a212375f75cf1cb44b0ceca80135e009ec4f1fe13a8a3ca2079a55bbe5a15f22a706429c + checksum: 65c868b1fc9b73e2afa17c12f4e9b410dccb9f5ac21b6d37f913811ec19e84c50bc724b40c67a51bbfeb699550ad10c7f8b265c2518d846dfe8056cb0203ec1c languageName: node linkType: hard -"@mui/private-theming@npm:^5.14.11": - version: 5.14.11 - resolution: "@mui/private-theming@npm:5.14.11" +"@mui/private-theming@npm:^5.14.12": + version: 5.14.12 + resolution: "@mui/private-theming@npm:5.14.12" dependencies: - "@babel/runtime": ^7.22.15 - "@mui/utils": ^5.14.11 + "@babel/runtime": ^7.23.1 + "@mui/utils": ^5.14.12 prop-types: ^15.8.1 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -987,15 +996,15 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: e9b96b86355685a9dcbf95e617f3d86b33c502e005a5c6cd9b9cc64d102742b00b960560666d49b0ef0c4f4dac2d7a17f81ca6a745ff893b64e22515b53bd8fc + checksum: dbd24ffd3ff0d514c44b043c3fa34035403fdb9ccf459efb5c15fff127d6cc01471b7e748798c37c324ff20fd985f5923807271a5e3b857254c2e51a39ab8e4f languageName: node linkType: hard -"@mui/styled-engine@npm:^5.14.11": - version: 5.14.11 - resolution: "@mui/styled-engine@npm:5.14.11" +"@mui/styled-engine@npm:^5.14.12": + version: 5.14.12 + resolution: "@mui/styled-engine@npm:5.14.12" dependencies: - "@babel/runtime": ^7.22.15 + "@babel/runtime": ^7.23.1 "@emotion/cache": ^11.11.0 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -1008,19 +1017,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: b71cf3d9d0377bc5cdba01f4f72153147310b4d054fb10b6e5899b5307d05cc44770bcd8ba61069806c35bd367e5241328fbce7a7e91c7ec11e483fdb79fbc49 + checksum: 55e4b7a0990a5f92248e2e1e622ca6306decb42757e8aa1abe2687e2b46b8ee1d7fbfcef402ea705ac286efaf085d1aed526af6aa346ae5048d8376bb696aa3d languageName: node linkType: hard -"@mui/system@npm:^5.14.11": - version: 5.14.11 - resolution: "@mui/system@npm:5.14.11" +"@mui/system@npm:^5.14.12": + version: 5.14.12 + resolution: "@mui/system@npm:5.14.12" dependencies: - "@babel/runtime": ^7.22.15 - "@mui/private-theming": ^5.14.11 - "@mui/styled-engine": ^5.14.11 - "@mui/types": ^7.2.4 - "@mui/utils": ^5.14.11 + "@babel/runtime": ^7.23.1 + "@mui/private-theming": ^5.14.12 + "@mui/styled-engine": ^5.14.12 + "@mui/types": ^7.2.5 + "@mui/utils": ^5.14.12 clsx: ^2.0.0 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -1036,28 +1045,28 @@ __metadata: optional: true "@types/react": optional: true - checksum: 3677dce2b1c010d5679f96a8c9cd54d803558b9ac881e4adec480ae7c3136b54895f5850131abf31b7d16493964a048d5261128332cecf2e3944c9dd58814bf1 + checksum: 93f77c7a0673a116efe92d3f290886033278d915386c5aa29056c4a4557540db2865c4405140e669c7be801d6cba3dd3ddea2bb63bfc7eedd18e5b829a13ab80 languageName: node linkType: hard -"@mui/types@npm:^7.2.4": - version: 7.2.4 - resolution: "@mui/types@npm:7.2.4" +"@mui/types@npm:^7.2.5": + version: 7.2.5 + resolution: "@mui/types@npm:7.2.5" peerDependencies: - "@types/react": "*" + "@types/react": ^17.0.0 || ^18.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 17411effd184eff34d6a1a55b2249c7e1ef195bb30c48154f0b16fdce428ff55be4ec5dde8b4a556c01eda2d34e3dcc18d925f8fdee606f5bc15f91167f0ecbc + checksum: df381cb230b1335d46315517da3535fa362bb53388a9d6e87964ee77991685442a6cb5a8f39cbd878d89176a152fe699aa6ecc681957ecf4695b85db0d2abe83 languageName: node linkType: hard -"@mui/utils@npm:^5.14.11": - version: 5.14.11 - resolution: "@mui/utils@npm:5.14.11" +"@mui/utils@npm:^5.14.12": + version: 5.14.12 + resolution: "@mui/utils@npm:5.14.12" dependencies: - "@babel/runtime": ^7.22.15 - "@types/prop-types": ^15.7.5 + "@babel/runtime": ^7.23.1 + "@types/prop-types": ^15.7.7 prop-types: ^15.8.1 react-is: ^18.2.0 peerDependencies: @@ -1066,7 +1075,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 21048b65e482e2f4279bf2b0e1619f026ed605bfe71818f6373b6362abc5062ea293ab7791691da1275de2d72b16cc5dafca70c2169359eca0b1c46c52aba879 + checksum: 1204e6699ddc508a3d46ec86b0cb31abea59cf41ce3bcbff18f651731783ced0217b7274452662ec7bf4a230c9b1bebd184b34a8729e43ceb3a6a0e50e72bcdf languageName: node linkType: hard @@ -1482,19 +1491,26 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*, @types/prop-types@npm:^15.7.5": +"@types/prop-types@npm:*": version: 15.7.7 resolution: "@types/prop-types@npm:15.7.7" checksum: 26d565ebae8c28dede71547d687367ce74eeccc645fdbef2d38478fe293996be24784fa6190586ba303ccd274aa94d8a631d36a5d9b8e0c08f5647ff3244d72c languageName: node linkType: hard -"@types/react-dom@npm:^18.2.8": - version: 18.2.8 - resolution: "@types/react-dom@npm:18.2.8" +"@types/prop-types@npm:^15.7.7": + version: 15.7.8 + resolution: "@types/prop-types@npm:15.7.8" + checksum: 706b3de6faa5c1a4763fc90069f25ddc54108e8b43e9724e22f510b103c418571bf14b34b241fcacd6875650959c8374af7f4633f80ec6e33e7525cb42ef6a30 + languageName: node + linkType: hard + +"@types/react-dom@npm:^18.2.10": + version: 18.2.10 + resolution: "@types/react-dom@npm:18.2.10" dependencies: "@types/react": "*" - checksum: a2afa9f626751f2314ddbecb5503122912ff646827b1c81b7b230ce04083c43b71c82b02244526eb88c1795019033364a4afee0f7f719e46116a51ca8e287613 + checksum: ac4056c3b8ba5461a58a7933e1f98d772e877f275a1b4169a936391900aec8f3c8e6125ccbbda530842cd9d108a2be8c994c7f48bfd801f89702e2de9064d834 languageName: node linkType: hard @@ -1539,14 +1555,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.2.24": - version: 18.2.24 - resolution: "@types/react@npm:18.2.24" +"@types/react@npm:^18.2.25": + version: 18.2.25 + resolution: "@types/react@npm:18.2.25" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: a83c7ae0010b265012ef038e3e00e4708c27c523f0aa0631e44f934e9c5338a51b6db1901f91d8ba10d3dc292a3a200b2cb5e47430cde58fbf988969866fe75a + checksum: 17559ab8e9a3347b466eb782e21fe45f841e0e39d3f656e4711693cb6d193f948a9913c9e96b64bc4700eb24b34c47f15adbddcc39c596b4b3b79c99619b83bf languageName: node linkType: hard @@ -1694,16 +1710,16 @@ __metadata: "@babel/core": ^7.23.0 "@emotion/react": ^11.11.1 "@emotion/styled": ^11.11.0 - "@mui/icons-material": ^5.14.11 - "@mui/material": ^5.14.11 + "@mui/icons-material": ^5.14.12 + "@mui/material": ^5.14.12 "@preact/compat": ^17.1.2 "@preact/preset-vite": ^2.5.0 "@table-library/react-table-library": 4.1.7 "@types/babel__core": ^7 "@types/lodash-es": ^4.17.9 "@types/node": ^20.8.2 - "@types/react": ^18.2.24 - "@types/react-dom": ^18.2.8 + "@types/react": ^18.2.25 + "@types/react-dom": ^18.2.10 "@types/react-router-dom": ^5.3.3 "@typescript-eslint/eslint-plugin": ^6.7.4 "@typescript-eslint/parser": ^6.7.4 @@ -1738,7 +1754,7 @@ __metadata: terser: ^5.21.0 typesafe-i18n: ^5.26.2 typescript: ^5.2.2 - vite: ^4.4.10 + vite: ^4.4.11 vite-plugin-svgr: ^4.1.0 vite-tsconfig-paths: ^4.2.1 languageName: unknown @@ -6262,9 +6278,9 @@ react@latest: languageName: node linkType: hard -"vite@npm:^4.4.10": - version: 4.4.10 - resolution: "vite@npm:4.4.10" +"vite@npm:^4.4.11": + version: 4.4.11 + resolution: "vite@npm:4.4.11" dependencies: esbuild: ^0.18.10 fsevents: ~2.3.2 @@ -6298,7 +6314,7 @@ react@latest: optional: true bin: vite: bin/vite.js - checksum: d1359f147eb84aad9922460848184f14295e76f335ab03f90a585886ff070e1a7c74996022b3bb07da0a3130c9829565b5556e6eb1d0db12a8aad26f3694d445 + checksum: 550af0f67b600f603d0c129b74ac18dfa674d19e2b7dba28f4214d5edeba217a91fb7b8f4f47037aa0297f142d22360780a0a4533b27dbaacd2894030f61e5f4 languageName: node linkType: hard From 5e53689a813fe1bfa72ea27ccb46816d4fa6702f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 5 Oct 2023 17:56:52 +0200 Subject: [PATCH 2/3] add temperatures for low loss header and heatblock, add names BC400/GB192i, #1317 --- CHANGELOG_LATEST.md | 5 +++-- src/device_library.h | 4 ++-- src/devices/boiler.cpp | 14 ++++++++++++++ src/devices/boiler.h | 2 ++ src/locale_translations.h | 2 ++ 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 10af112ae..29795b514 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -7,11 +7,12 @@ ## Added - humidity for ventilation devices -- telegrams for RC100H, hc2 +- telegrams for RC100H, hc2 (seen on discord) +- names for BC400, GB192i, read temperatures for low loss header and heatblock [#1317](https://github.com/emsesp/EMS-ESP32/discussions/1317) ## Fixed ## Changed -- update to arduion 2.0.13 / idf 4.4.6 +- update to arduino 2.0.14 / idf 4.4.6 - small changes for arduino 3.0.0 / idf 5.1 compatibility diff --git a/src/device_library.h b/src/device_library.h index 84bc0fa66..6f35b79e7 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -42,7 +42,7 @@ {170, DeviceType::BOILER, "Logano GB212", DeviceFlags::EMS_DEVICE_FLAG_NONE}, {172, DeviceType::BOILER, "Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i/WSW196i", DeviceFlags::EMS_DEVICE_FLAG_HEATPUMP}, {173, DeviceType::BOILER, "Geo 5xx", DeviceFlags::EMS_DEVICE_FLAG_HEATPUMP}, -{195, DeviceType::BOILER, "Condens 5000i/Greenstar 8000/GC9800IW", DeviceFlags::EMS_DEVICE_FLAG_NONE}, +{195, DeviceType::BOILER, "Condens 5000i/Greenstar 8000/GC9800IW/GB192i.2", DeviceFlags::EMS_DEVICE_FLAG_NONE}, {203, DeviceType::BOILER, "Logamax U122/Cerapur", DeviceFlags::EMS_DEVICE_FLAG_NONE}, {206, DeviceType::BOILER, "Ecomline Excellent", DeviceFlags::EMS_DEVICE_FLAG_NONE}, {208, DeviceType::BOILER, "Logamax Plus/GB192/Condens GC9000/Greenstar ErP", DeviceFlags::EMS_DEVICE_FLAG_NONE}, @@ -81,7 +81,7 @@ {203, DeviceType::THERMOSTAT, "EasyControl CT200", DeviceFlags::EMS_DEVICE_FLAG_EASY | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE}, // 0x18, cannot write // Thermostat - Buderus/Nefit/Bosch specific - 0x17 / 0x10 / 0x18 / 0x19-0x1B for hc2-4 / 0x38 -{ 4, DeviceType::THERMOSTAT, "UI800", DeviceFlags::EMS_DEVICE_FLAG_RC300}, // 0x10 +{ 4, DeviceType::THERMOSTAT, "UI800/BC400", DeviceFlags::EMS_DEVICE_FLAG_RC300}, // 0x10 { 65, DeviceType::THERMOSTAT, "RC10", DeviceFlags::EMS_DEVICE_FLAG_RC20_N},// 0x17 { 67, DeviceType::THERMOSTAT, "RC30", DeviceFlags::EMS_DEVICE_FLAG_RC30_N},// 0x10 - based on RC35 { 77, DeviceType::THERMOSTAT, "RC20/Moduline 300", DeviceFlags::EMS_DEVICE_FLAG_RC20},// 0x17 diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index e601d3d96..7bfa5b89b 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -156,6 +156,18 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueNumOp::DV_NUMOP_DIV10, FL_(exhaustTemp), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &heatblock_, + DeviceValueType::USHORT, + DeviceValueNumOp::DV_NUMOP_DIV10, + FL_(heatblock), + DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &headertemp_, + DeviceValueType::USHORT, + DeviceValueNumOp::DV_NUMOP_DIV10, + FL_(headertemp), + DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &burnGas_, DeviceValueType::BOOL, FL_(burnGas), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &burnGas2_, DeviceValueType::BOOL, FL_(burnGas2), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &flameCurr_, DeviceValueType::USHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(flameCurr), DeviceValueUOM::UA); @@ -1158,6 +1170,8 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram has_update(telegram, sysPress_, 21); //has_update(telegram, temperatur_, 13); // unknown temperature + has_update(telegram, heatblock_, 23); // see #1317 + has_update(telegram, headertemp_, 25); // see #1317 //has_update(telegram, temperatur_, 27); // unknown temperature has_update(telegram, exhaustTemp_, 31); diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 3f99acbee..de18b68e3 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -145,6 +145,8 @@ class Boiler : public EMSdevice { uint16_t serviceCodeNumber_; // error/service code uint8_t emergencyOps_; uint8_t emergencyTemp_; + uint16_t headertemp_; // see #1317 + uint16_t heatblock_; // see #1317 // info uint32_t upTimeControl_; // Operating time control diff --git a/src/locale_translations.h b/src/locale_translations.h index c8cb83a74..8ff6e15cc 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -336,6 +336,8 @@ MAKE_TRANSLATION(maintenanceTime, "maintenancetime", "time to next maintenance", MAKE_TRANSLATION(emergencyOps, "emergencyops", "emergency operation", "Notoperation", "Noodoperatie", "Nöddrift", "praca w trybie awaryjnym", "nøddrift", "opération d'urgence", "acil durum çalışması", "operazione di emergenza") MAKE_TRANSLATION(emergencyTemp, "emergencytemp", "emergency temperature", "Nottemperatur", "Noodtemperatuur", "Nöddrift temperatur", "temperatura w trybie awaryjnym", "nødtemperatur", "température d'urgence", "acil durum sıcaklığı", "temperatura di emergenza") MAKE_TRANSLATION(pumpMode, "pumpmode", "boiler pump mode", "Kesselpumpen Modus", "Ketelpomp modus", "", "tryb pracy pompy kotła", "pumpemodus", "", "pompa modu", "modalità pompa caldaia") // TODO translate +MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "", "", "", " bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.") // TODO translate +MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "", "", "", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.") // TODO translate // heatpump/compress specific MAKE_TRANSLATION(upTimeControl, "uptimecontrol", "total operating time heat", "Betriebszeit Heizen gesamt", "Totale bedrijfstijd", "Total tid uppvärmning", "łączny czas generowania ciepła", "total driftstid", "durée totale de fonctionnement chauffage", "ısınma toplam işletme süresi", "Tempo di funzionamento totale riscaldamento") From ac4eba5b722e548bb4c99500f10450714dfe9dd3 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 7 Oct 2023 15:19:04 +0200 Subject: [PATCH 3/3] add `forceheatingoff` --- CHANGELOG_LATEST.md | 1 + interface/package.json | 6 +-- interface/src/i18n/de/index.ts | 1 + interface/src/i18n/en/index.ts | 1 + interface/src/i18n/fr/index.ts | 1 + interface/src/i18n/it/index.ts | 1 + interface/src/i18n/nl/index.ts | 1 + interface/src/i18n/no/index.ts | 1 + interface/src/i18n/pl/index.ts | 1 + interface/src/i18n/sv/index.ts | 1 + interface/src/i18n/tr/index.ts | 1 + interface/src/project/SettingsApplication.tsx | 5 ++ interface/src/project/types.ts | 1 + interface/yarn.lock | 40 +++++++-------- src/default_settings.h | 4 ++ src/devices/boiler.cpp | 49 ++++++++++++++++--- src/devices/boiler.h | 7 ++- src/locale_translations.h | 1 + src/web/WebSettingsService.cpp | 6 ++- src/web/WebSettingsService.h | 1 + 20 files changed, 98 insertions(+), 32 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 29795b514..cc8ecfb8d 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -9,6 +9,7 @@ - humidity for ventilation devices - telegrams for RC100H, hc2 (seen on discord) - names for BC400, GB192i, 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) ## Fixed diff --git a/interface/package.json b/interface/package.json index e14ed9cd0..971fa141a 100644 --- a/interface/package.json +++ b/interface/package.json @@ -26,9 +26,9 @@ "@mui/material": "^5.14.12", "@table-library/react-table-library": "4.1.7", "@types/lodash-es": "^4.17.9", - "@types/node": "^20.8.2", + "@types/node": "^20.8.3", "@types/react": "^18.2.25", - "@types/react-dom": "^18.2.10", + "@types/react-dom": "^18.2.11", "@types/react-router-dom": "^5.3.3", "alova": "^2.13.1", "async-validator": "^4.2.5", @@ -53,7 +53,7 @@ "@types/babel__core": "^7", "@typescript-eslint/eslint-plugin": "^6.7.4", "@typescript-eslint/parser": "^6.7.4", - "eslint": "^8.50.0", + "eslint": "^8.51.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-prettier": "^9.0.0", diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 52c149107..011ca2b14 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -126,6 +126,7 @@ const de: Translation = { BYPASS_TOKEN: 'Zugriffstoken-Autorisierung bei API-Aufrufen umgehen', READONLY: 'Nur-Lese-Modus aktivieren (blockiert alle ausgehenden EMS Tx Write-Befehle)', UNDERCLOCK_CPU: 'CPU-Geschwindigkeit untertakten', + HEATINGOFF: 'Heizen ausschalten beim EMS-ESP Start', ENABLE_SHOWER_TIMER: 'Duschtimer aktivieren', ENABLE_SHOWER_ALERT: 'Duschalarm aktivieren', TRIGGER_TIME: 'Auslösezeit', diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index bbf506d57..61a14cf1e 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -126,6 +126,7 @@ const en: Translation = { BYPASS_TOKEN: 'Bypass Access Token authorization on API calls', READONLY: 'Enable read-only mode (blocks all outgoing EMS Tx Write commands)', UNDERCLOCK_CPU: 'Underclock CPU speed', + HEATINGOFF: 'Start boiler with forced heating off', ENABLE_SHOWER_TIMER: 'Enable Shower Timer', ENABLE_SHOWER_ALERT: 'Enable Shower Alert', TRIGGER_TIME: 'Trigger Time', diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index d7af38ef0..69784aadd 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -126,6 +126,7 @@ const fr: Translation = { BYPASS_TOKEN: 'Contourner l\'autorisation du jeton d\'accès sur les appels API', READONLY: 'Activer le mode lecture uniquement (bloque toutes les commandes EMS sortantes en écriture Tx)', UNDERCLOCK_CPU: 'Underclock du CPU', + HEATINGOFF: 'Start boiler with forced heating off', // TODO translate ENABLE_SHOWER_TIMER: 'Activer la minuterie de la douche', ENABLE_SHOWER_ALERT: 'Activer les alertes de durée de douche', TRIGGER_TIME: 'Durée avant déclenchement', diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts index 238f18347..6a1a433f2 100644 --- a/interface/src/i18n/it/index.ts +++ b/interface/src/i18n/it/index.ts @@ -128,6 +128,7 @@ const it: Translation = { BYPASS_TOKEN: 'Ignora autorizzazione del token di accesso sulle chiamate API', READONLY: 'Abilita modalità sola-lettura (blocca tutti i comandi di scrittura EMS Tx in uscita)', UNDERCLOCK_CPU: 'Abbassa velocità della CPU', + HEATINGOFF: 'Avviamento caldaia con riscaldamento forzato spento', ENABLE_SHOWER_TIMER: 'Abilita timer doccia', ENABLE_SHOWER_ALERT: 'Abilita avviso doccia', TRIGGER_TIME: 'Tempo di avvio', diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index c28555ae9..3007ba17b 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -126,6 +126,7 @@ const nl: Translation = { BYPASS_TOKEN: 'API Access Token authenticatie uitschakelen', READONLY: 'Activeer read-only modus (blokkeert alle outgaande EMS Tx schrijf commandos)', UNDERCLOCK_CPU: 'Underclock CPU snelheid', + HEATINGOFF: 'Start boiler with forced heating off', // TODO translate ENABLE_SHOWER_TIMER: 'Activeer Douche Timer (tijdmeting)', ENABLE_SHOWER_ALERT: 'Activeer Douchemelding', TRIGGER_TIME: 'Trigger tijd', diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index a14df03e4..404e31978 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -126,6 +126,7 @@ const no: Translation = { BYPASS_TOKEN: 'Utelat Aksess Token authorisering av API kall', READONLY: 'Aktiver read-only modus (blokker all EMS Tx Skriving)', UNDERCLOCK_CPU: 'Underklokking av prosessorhastighet', + HEATINGOFF: 'Start boiler with forced heating off', // TODO translate ENABLE_SHOWER_TIMER: 'Aktiver Dusjtimer', ENABLE_SHOWER_ALERT: 'Aktiver Dusj-varsling', TRIGGER_TIME: 'Aktiveringstid', diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index 5a4f1d170..4d073f702 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -126,6 +126,7 @@ const pl: BaseTranslation = { BYPASS_TOKEN: 'Pomiń autoryzację tokenem w wywołaniach API', READONLY: 'Tryb pracy "tylko do odczytu" (blokuje wszystkie komendy zapisu na magistralę EMS)', UNDERCLOCK_CPU: 'Obniż taktowanie CPU', + HEATINGOFF: 'Start boiler with forced heating off', // TODO translate ENABLE_SHOWER_TIMER: 'Aktywuj minutnik prysznica', ENABLE_SHOWER_ALERT: 'Aktywuj alarm prysznica', TRIGGER_TIME: 'Wyzwalaj po czasie', diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index 90e5dc265..881fc728f 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -126,6 +126,7 @@ const sv: Translation = { BYPASS_TOKEN: 'Inaktivera Token-autensiering för API-anrop', READONLY: 'Aktivera read-only (blockerar alla utgående skrivkommandon mot EMS-bussen)', UNDERCLOCK_CPU: 'Nedklocka Processorhastighet', + HEATINGOFF: 'Start boiler with forced heating off', // TODO translate ENABLE_SHOWER_TIMER: 'Aktivera Dusch-timer', ENABLE_SHOWER_ALERT: 'Aktivera Dusch-varning', TRIGGER_TIME: 'Aktiveringstid', diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts index a9464d2a3..ee03575c8 100644 --- a/interface/src/i18n/tr/index.ts +++ b/interface/src/i18n/tr/index.ts @@ -126,6 +126,7 @@ const tr: Translation = { BYPASS_TOKEN: 'API bağlantılarında Erişim Jeton onaylamasını geç', READONLY: 'Salt okunur modu devreye al (bütün giden EMS Tx Yazma komutlarını engeller)', UNDERCLOCK_CPU: 'İşlemci hızını düşür', + HEATINGOFF: 'Start boiler with forced heating off', // TODO translate ENABLE_SHOWER_TIMER: 'Duş Sayacını Devreye Al', ENABLE_SHOWER_ALERT: 'Duş Alarmını Devreye Al', TRIGGER_TIME: 'Tetikleme Zamanı', diff --git a/interface/src/project/SettingsApplication.tsx b/interface/src/project/SettingsApplication.tsx index 8ac035068..1f145af17 100644 --- a/interface/src/project/SettingsApplication.tsx +++ b/interface/src/project/SettingsApplication.tsx @@ -425,6 +425,11 @@ const SettingsApplication: FC = () => { label={LL.UNDERCLOCK_CPU()} disabled={saving} /> + } + label={LL.HEATINGOFF()} + disabled={saving} + /> } diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts index 611dbc7fd..74f0dded6 100644 --- a/interface/src/project/types.ts +++ b/interface/src/project/types.ts @@ -7,6 +7,7 @@ export interface Settings { syslog_mark_interval: number; syslog_host: string; syslog_port: number; + boiler_heatingoff: boolean; shower_timer: boolean; shower_alert: boolean; shower_alert_coldshot: number; diff --git a/interface/yarn.lock b/interface/yarn.lock index 209be2f3d..b2b675036 100644 --- a/interface/yarn.lock +++ b/interface/yarn.lock @@ -769,10 +769,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.50.0": - version: 8.50.0 - resolution: "@eslint/js@npm:8.50.0" - checksum: 92cb0a823869e85f287bd172f14a6a20d7d65c3f4db886a0356a9efebfe8fe519e9ead84a5687bd18f45eca417bdcce96e3b83fe3feae8baf0f8f44d14073bae +"@eslint/js@npm:8.51.0": + version: 8.51.0 + resolution: "@eslint/js@npm:8.51.0" + checksum: c126d15213d938c72062b8f04388c084ba778771f2409ce508aa4b78152bf57e442b4c7996f632577b642101da5b41df101aece775fcc213a3159f55bcc4bdee languageName: node linkType: hard @@ -1477,10 +1477,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.8.2": - version: 20.8.2 - resolution: "@types/node@npm:20.8.2" - checksum: e9952db222dd3e1cca1107d1b2aaec4e93b4af8b4fc32b42dd4fac3719f98c14edb8c591829c972d2f6e2b527bbb34af53608f6a7973f4a7dbd1d3bc929bbe8d +"@types/node@npm:^20.8.3": + version: 20.8.3 + resolution: "@types/node@npm:20.8.3" + checksum: 83511d7c310100f3fddbbf3a28f0049d60da6ffc4255231845b2e2189d7ff104727647d2b05d2a29b0af2ad61b529a4897056b3798e0cba027c629f3b13d7e82 languageName: node linkType: hard @@ -1505,12 +1505,12 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.2.10": - version: 18.2.10 - resolution: "@types/react-dom@npm:18.2.10" +"@types/react-dom@npm:^18.2.11": + version: 18.2.11 + resolution: "@types/react-dom@npm:18.2.11" dependencies: "@types/react": "*" - checksum: ac4056c3b8ba5461a58a7933e1f98d772e877f275a1b4169a936391900aec8f3c8e6125ccbbda530842cd9d108a2be8c994c7f48bfd801f89702e2de9064d834 + checksum: 3ba42df0dc1e8a26baed9668b9e2b5aea7c8e28289cf5baa656c1a07c6f83cd3c3360a374e00f96c01ce914950105d14d3ecd59be75cf215b8d3657b0b5d7785 languageName: node linkType: hard @@ -1717,15 +1717,15 @@ __metadata: "@table-library/react-table-library": 4.1.7 "@types/babel__core": ^7 "@types/lodash-es": ^4.17.9 - "@types/node": ^20.8.2 + "@types/node": ^20.8.3 "@types/react": ^18.2.25 - "@types/react-dom": ^18.2.10 + "@types/react-dom": ^18.2.11 "@types/react-router-dom": ^5.3.3 "@typescript-eslint/eslint-plugin": ^6.7.4 "@typescript-eslint/parser": ^6.7.4 alova: ^2.13.1 async-validator: ^4.2.5 - eslint: ^8.50.0 + eslint: ^8.51.0 eslint-config-airbnb: ^19.0.4 eslint-config-airbnb-typescript: ^17.1.0 eslint-config-prettier: ^9.0.0 @@ -3088,14 +3088,14 @@ eslint-plugin-prettier@alpha: languageName: node linkType: hard -"eslint@npm:^8.50.0": - version: 8.50.0 - resolution: "eslint@npm:8.50.0" +"eslint@npm:^8.51.0": + version: 8.51.0 + resolution: "eslint@npm:8.51.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.6.1 "@eslint/eslintrc": ^2.1.2 - "@eslint/js": 8.50.0 + "@eslint/js": 8.51.0 "@humanwhocodes/config-array": ^0.11.11 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -3131,7 +3131,7 @@ eslint-plugin-prettier@alpha: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 91629528cb240bc61b25480574d35cd54ed444cb61a70fa76f7d5ab26af2b637b94bf8fba94403c9052c1baa944a169b6ab9cc8070496e925f7eeef730ff9038 + checksum: b534962c60cb2ad219d20a33f93c80e8ea5dd89f390f7bab44c80df32134db0a87e73e7ccd2928d87498c0595128ee29b4dba8a1f1abbbb3da9c3fb0418ecdcc languageName: node linkType: hard diff --git a/src/default_settings.h b/src/default_settings.h index 009a5f25e..92ae49a8e 100644 --- a/src/default_settings.h +++ b/src/default_settings.h @@ -61,6 +61,10 @@ #define EMSESP_DEFAULT_TRACELOG_RAW false #endif +#ifndef EMSESP_DEFAULT_BOILER_HEATINGOFF +#define EMSESP_DEFAULT_BOILER_HEATINGOFF false +#endif + #ifndef EMSESP_DEFAULT_SHOWER_TIMER #define EMSESP_DEFAULT_SHOWER_TIMER false #endif diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 7bfa5b89b..7e016ae8d 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -119,7 +119,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const // reset is a command uses a dummy variable which is always zero, shown as blank, but provides command enum options register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &reset_, DeviceValueType::CMD, FL_(enum_reset), FL_(reset), DeviceValueUOM::NONE, MAKE_CF_CB(set_reset)); has_update(reset_, 0); - + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &forceHeatingOff_, + DeviceValueType::BOOL, + FL_(forceHeatingOff), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_forceHeatingOff)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatingActive_, DeviceValueType::BOOL, FL_(heatingActive), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &tapwaterActive_, DeviceValueType::BOOL, FL_(tapwaterActive), DeviceValueUOM::NONE); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &selFlowTemp_, DeviceValueType::UINT, FL_(selFlowTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_flow_temp)); @@ -963,6 +968,11 @@ void Boiler::check_active() { EMSESP::tap_water_active(b); // let EMS-ESP know, used in the Shower class } + if (!Helpers::hasValue(forceHeatingOff_, EMS_VALUE_BOOL)) { + EMSESP::webSettingsService.read([&](WebSettings & settings) { forceHeatingOff_ = (settings.boiler_heatingoff || selFlowTemp_ == 0) ? 1 : 0; }); + has_update(&forceHeatingOff_); + } + // calculate energy for boiler 0x08 from stored modulation an time in units of 0.01 Wh if (model() != EMS_DEVICE_FLAG_HEATPUMP) { // remember values from last call @@ -1220,6 +1230,11 @@ void Boiler::process_UBAMonitorSlow(std::shared_ptr telegram) { has_update(telegram, burn2WorkMin_, 16, 3); // force to 3 bytes has_update(telegram, heatWorkMin_, 19, 3); // force to 3 bytes has_update(telegram, heatStarts_, 22, 3); // force to 3 bytes + + if (forceHeatingOff_ == EMS_VALUE_BOOL_ON && telegram->dest == 0) { + uint8_t data[] = {0, 0, 0, 0}; + write_command(EMS_TYPE_UBASetPoints, 0, data, sizeof(data), 0); + } } /* @@ -1250,6 +1265,11 @@ void Boiler::process_UBAMonitorSlowPlus(std::shared_ptr telegram has_update(telegram, heatStarts_, 22, 3); // force to 3 bytes has_update(telegram, heatingPumpMod_, 25); // temperature measurements at 4, see #620 + + if (forceHeatingOff_ == EMS_VALUE_BOOL_ON && telegram->dest == 0) { + uint8_t data[] = {0, 0, 0, 0}; + write_command(EMS_TYPE_UBASetPoints, 0, data, sizeof(data), 0); + } } /* @@ -1499,6 +1519,12 @@ void Boiler::process_UBASetPoints(std::shared_ptr telegram) { has_update(telegram, setFlowTemp_, 0); // boiler set temp from thermostat has_update(telegram, setBurnPow_, 1); // max burner power in % has_update(telegram, wwSetPumpPower_, 2); // ww pump speed/power? + + // overwrite other settings on receive? + if (forceHeatingOff_ == EMS_VALUE_BOOL_ON && telegram->dest == 0x08) { + uint8_t data[] = {0, 0, 0, 0}; + write_command(EMS_TYPE_UBASetPoints, 0, data, sizeof(data), 0); + } } #pragma GCC diagnostic push @@ -2049,9 +2075,6 @@ bool Boiler::set_ww_chargeOptimization(const char * value, const int8_t id) { return true; } - - - // set dhw max power bool Boiler::set_ww_maxpower(const char * value, const int8_t id) { int v; @@ -2360,12 +2383,10 @@ bool Boiler::set_reset(const char * value, const int8_t id) { } else if (num == 1) { // LOG_INFO("Reset boiler maintenance message"); write_command(0x05, 0x08, 0xFF, 0x1C); - has_update(&reset_); return true; } else if (num == 2) { // LOG_INFO("Reset boiler error message"); write_command(0x05, 0x00, 0x5A); // error reset - has_update(&reset_); return true; } return false; @@ -2768,6 +2789,22 @@ bool Boiler::set_wwAltOpPrio(const char * value, const int8_t id) { return false; } +bool Boiler::set_forceHeatingOff(const char * value, const int8_t id) { + bool v; + if (Helpers::value2bool(value, v)) { + has_update(forceHeatingOff_, v); + if (!v && Helpers::hasValue(heatingTemp_)) { + uint8_t data[] = {heatingTemp_, + (Helpers::hasValue(burnMaxPower_) ? burnMaxPower_ : (uint8_t)100), + (Helpers::hasValue(pumpModMax_) ? pumpModMax_ : (uint8_t)0), + 0}; + write_command(EMS_TYPE_UBASetPoints, 0, data, sizeof(data), 0); + } + return true; + } + return false; +} + // energy counters. Setting an invalid value does not update, but trigger a store. bool Boiler::set_nrgHeat(const char * value, const int8_t id) { float v; diff --git a/src/devices/boiler.h b/src/devices/boiler.h index de18b68e3..26bbc8ce1 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -88,7 +88,6 @@ class Boiler : public EMSdevice { uint32_t wwWorkM_; // DHW minutes int8_t wwHystOn_; int8_t wwHystOff_; - uint8_t wwTapActivated_; // maintenance-mode to switch DHW off uint16_t wwMixerTemp_; // mixing temperature uint16_t wwCylMiddleTemp_; // Cyl middle temperature (TS3) uint16_t wwSolarTemp_; @@ -96,6 +95,10 @@ class Boiler : public EMSdevice { uint8_t wwAltOpPrioHeat_; // alternating operation, prioritize heat time uint8_t wwAltOpPrioWw_; // alternating operation, prioritize dhw time + // special function + uint8_t forceHeatingOff_; + uint8_t wwTapActivated_; // maintenance-mode to switch DHW off + // main uint8_t reset_; // for reset command uint8_t heatingActive_; // Central heating is on/off @@ -470,6 +473,8 @@ class Boiler : public EMSdevice { inline bool set_wwAltOpPrioWw(const char * value, const int8_t id) { return set_wwAltOpPrio(value, 3); } + bool set_forceHeatingOff(const char * value, const int8_t id); + /* bool set_hybridStrategy(const char * value, const int8_t id); bool set_switchOverTemp(const char * value, const int8_t id); diff --git a/src/locale_translations.h b/src/locale_translations.h index 8ff6e15cc..e8add620b 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -283,6 +283,7 @@ MAKE_TRANSLATION(haclimate, "haclimate", "Discovery current room temperature", " // Entity translations: tag, mqtt, en, de, nl, sv, pl, no, fr, tr, it // Boiler +MAKE_TRANSLATION(forceHeatingOff, "heatingoff", "force heating off", "Heizen abschalten", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(wwtapactivated, "wwtapactivated", "turn on/off", "Durchlauferhitzer aktiv", "zet aan/uit", "på/av", "system przygotowywania", "Varmtvann active", "ecs activée", "aç/kapa", "commuta on/off") MAKE_TRANSLATION(reset, "reset", "reset", "Reset", "Reset", "Nollställ", "kasowanie komunikatu", "nullstill", "reset", "Sıfırla", "Reset") MAKE_TRANSLATION(oilPreHeat, "oilpreheat", "oil preheating", "Ölvorwärmung", "Olie voorverwarming", "Förvärmning olja", "podgrzewanie oleju", "oljeforvarming", "préchauffage de l'huile", "Yakıt Ön ısıtma devrede", "preriscaldamento olio") diff --git a/src/web/WebSettingsService.cpp b/src/web/WebSettingsService.cpp index 73db24fb3..8aa6a1fa3 100644 --- a/src/web/WebSettingsService.cpp +++ b/src/web/WebSettingsService.cpp @@ -46,6 +46,7 @@ void WebSettings::read(WebSettings & settings, JsonObject & root) { root["syslog_mark_interval"] = settings.syslog_mark_interval; root["syslog_host"] = settings.syslog_host; root["syslog_port"] = settings.syslog_port; + root["boiler_heatingoff"] = settings.boiler_heatingoff; root["shower_timer"] = settings.shower_timer; root["shower_alert"] = settings.shower_alert; root["shower_alert_coldshot"] = settings.shower_alert_coldshot; @@ -273,8 +274,9 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) settings.trace_raw = root["trace_raw"] | EMSESP_DEFAULT_TRACELOG_RAW; EMSESP::trace_raw(settings.trace_raw); - settings.notoken_api = root["notoken_api"] | EMSESP_DEFAULT_NOTOKEN_API; - settings.solar_maxflow = root["solar_maxflow"] | EMSESP_DEFAULT_SOLAR_MAXFLOW; + settings.notoken_api = root["notoken_api"] | EMSESP_DEFAULT_NOTOKEN_API; + settings.solar_maxflow = root["solar_maxflow"] | EMSESP_DEFAULT_SOLAR_MAXFLOW; + settings.boiler_heatingoff = root["boiler_heatingoff"] | EMSESP_DEFAULT_BOILER_HEATINGOFF; settings.fahrenheit = root["fahrenheit"]; EMSESP::system_.fahrenheit(settings.fahrenheit); diff --git a/src/web/WebSettingsService.h b/src/web/WebSettingsService.h index 0e892328e..c887cdf09 100644 --- a/src/web/WebSettingsService.h +++ b/src/web/WebSettingsService.h @@ -33,6 +33,7 @@ class WebSettings { String locale; uint8_t tx_mode; uint8_t ems_bus_id; + bool boiler_heatingoff; bool shower_timer; bool shower_alert; uint8_t shower_alert_trigger;