mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
@@ -9,11 +9,15 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/).
|
||||
- analogsensor types: NTC and RGB-Led
|
||||
- Flag for HMC310 [#2465](https://github.com/emsesp/EMS-ESP32/issues/2465)
|
||||
- boiler auxheatersource [#2489](https://github.com/emsesp/EMS-ESP32/discussions/2489)
|
||||
- thermostat last error for RC100/300 [#2501](https://github.com/emsesp/EMS-ESP32/issues/2501)
|
||||
|
||||
## Fixed
|
||||
|
||||
- dhw/switchtime [#2490](https://github.com/emsesp/EMS-ESP32/issues/2490)
|
||||
- switch to secure mqtt [#2492](https://github.com/emsesp/EMS-ESP32/issues/2492)
|
||||
- update link buttons [#2497](https://github.com/emsesp/EMS-ESP32/issues/2497)
|
||||
- refresh scheduler states [#2502](https://github.com/emsesp/EMS-ESP32/discussions/2502)
|
||||
- also rebuild HA config on mqtt connect for scheduler, custom and shower
|
||||
|
||||
## Changed
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@
|
||||
"@preact/preset-vite": "^2.10.1",
|
||||
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|
||||
"@types/formidable": "^3",
|
||||
"@types/node": "^22.13.14",
|
||||
"@types/react": "^19.0.12",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"@types/node": "^22.13.17",
|
||||
"@types/react": "^19.1.0",
|
||||
"@types/react-dom": "^19.1.1",
|
||||
"concurrently": "^9.1.2",
|
||||
"eslint": "^9.23.0",
|
||||
"eslint-config-prettier": "^10.1.1",
|
||||
@@ -57,8 +57,8 @@
|
||||
"prettier": "^3.5.3",
|
||||
"rollup-plugin-visualizer": "^5.14.0",
|
||||
"terser": "^5.39.0",
|
||||
"typescript-eslint": "8.28.0",
|
||||
"vite": "^6.2.3",
|
||||
"typescript-eslint": "8.29.0",
|
||||
"vite": "^6.2.4",
|
||||
"vite-plugin-imagemin": "^0.6.1",
|
||||
"vite-tsconfig-paths": "^5.1.4"
|
||||
},
|
||||
|
||||
@@ -27,6 +27,7 @@ import {
|
||||
useLayoutTitle
|
||||
} from 'components';
|
||||
import { useI18nContext } from 'i18n/i18n-react';
|
||||
import { useInterval } from 'utils';
|
||||
|
||||
import { readSchedule, writeSchedule } from '../../api/app';
|
||||
import SettingsSchedulerDialog from './SchedulerDialog';
|
||||
@@ -73,6 +74,12 @@ const Scheduler = () => {
|
||||
);
|
||||
}
|
||||
|
||||
useInterval(() => {
|
||||
if (numChanges === 0) {
|
||||
void fetchSchedule();
|
||||
}
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
const formatter = new Intl.DateTimeFormat(locale, {
|
||||
weekday: 'short',
|
||||
|
||||
@@ -1415,7 +1415,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:*, @types/node@npm:^22.13.14":
|
||||
"@types/node@npm:*":
|
||||
version: 22.13.14
|
||||
resolution: "@types/node@npm:22.13.14"
|
||||
dependencies:
|
||||
@@ -1424,6 +1424,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:^22.13.17":
|
||||
version: 22.13.17
|
||||
resolution: "@types/node@npm:22.13.17"
|
||||
dependencies:
|
||||
undici-types: "npm:~6.20.0"
|
||||
checksum: 10c0/77a052fec0fe02f60557e1c5f3f28eb09cd9bee426be88328a94689150a3c0df5b4b6b69fad28157fb34521693dad0b311ecd7f613845d681ff973991310c20e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/parse-json@npm:^4.0.0":
|
||||
version: 4.0.2
|
||||
resolution: "@types/parse-json@npm:4.0.2"
|
||||
@@ -1438,12 +1447,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/react-dom@npm:^19.0.4":
|
||||
version: 19.0.4
|
||||
resolution: "@types/react-dom@npm:19.0.4"
|
||||
"@types/react-dom@npm:^19.1.1":
|
||||
version: 19.1.1
|
||||
resolution: "@types/react-dom@npm:19.1.1"
|
||||
peerDependencies:
|
||||
"@types/react": ^19.0.0
|
||||
checksum: 10c0/4e71853919b94df9e746a4bd73f8180e9ae13016333ce9c543dcba9f4f4c8fe6e28b038ca6ee61c24e291af8e03ca3bc5ded17c46dee938fcb32d71186fda7a3
|
||||
checksum: 10c0/83833af502f501a372b370fdeb7cf933dfc8780903fe0e0d6e6a76b4ea3adbe5316159a62a0388d8afdd409afd76a40959e2ce82fbb788f57d32c786a63601ee
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1456,12 +1465,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/react@npm:^19.0.12":
|
||||
version: 19.0.12
|
||||
resolution: "@types/react@npm:19.0.12"
|
||||
"@types/react@npm:^19.1.0":
|
||||
version: 19.1.0
|
||||
resolution: "@types/react@npm:19.1.0"
|
||||
dependencies:
|
||||
csstype: "npm:^3.0.2"
|
||||
checksum: 10c0/c814b6af5c0fbcf5c65d031b1c9bf98c5b857e015254d95811f2851b27b869c3d31c6f35dab127dc6921a3dbda0b0622c6323d493a14b31b231a6a58c41c5e84
|
||||
checksum: 10c0/632fd20ee176e55801a61c5f854141b043571a3e363ef106b047b766a813a12735cbb37abb3d61d126346979f530f2ed269a60c8ef3cdee54e5e9fe4174e5dad
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1483,15 +1492,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/eslint-plugin@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "@typescript-eslint/eslint-plugin@npm:8.28.0"
|
||||
"@typescript-eslint/eslint-plugin@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "@typescript-eslint/eslint-plugin@npm:8.29.0"
|
||||
dependencies:
|
||||
"@eslint-community/regexpp": "npm:^4.10.0"
|
||||
"@typescript-eslint/scope-manager": "npm:8.28.0"
|
||||
"@typescript-eslint/type-utils": "npm:8.28.0"
|
||||
"@typescript-eslint/utils": "npm:8.28.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:8.28.0"
|
||||
"@typescript-eslint/scope-manager": "npm:8.29.0"
|
||||
"@typescript-eslint/type-utils": "npm:8.29.0"
|
||||
"@typescript-eslint/utils": "npm:8.29.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:8.29.0"
|
||||
graphemer: "npm:^1.4.0"
|
||||
ignore: "npm:^5.3.1"
|
||||
natural-compare: "npm:^1.4.0"
|
||||
@@ -1500,64 +1509,64 @@ __metadata:
|
||||
"@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: ">=4.8.4 <5.9.0"
|
||||
checksum: 10c0/f01b7d231b01ec2c1cc7c40599ddceb329532f2876664a39dec9d25c0aed4cfdbef3ec07f26bac357df000d798f652af6fdb6a2481b6120e43bfa38f7c7a7c48
|
||||
checksum: 10c0/3b05a7376a0752484229369af6eb60d13cf06d2331e79c2d471cb0b963dcf5b25a31617cafdc71d74e98921091f479f3da10725b761878a89421191d23866b54
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/parser@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "@typescript-eslint/parser@npm:8.28.0"
|
||||
"@typescript-eslint/parser@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "@typescript-eslint/parser@npm:8.29.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager": "npm:8.28.0"
|
||||
"@typescript-eslint/types": "npm:8.28.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:8.28.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:8.28.0"
|
||||
"@typescript-eslint/scope-manager": "npm:8.29.0"
|
||||
"@typescript-eslint/types": "npm:8.29.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:8.29.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:8.29.0"
|
||||
debug: "npm:^4.3.4"
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: ">=4.8.4 <5.9.0"
|
||||
checksum: 10c0/4bde6887bbf3fe031c01e46db90f9f384a8cac2e67c2972b113a62d607db75e01db943601279aac847b9187960a038981814042cb02fd5aa27ea4613028f9313
|
||||
checksum: 10c0/270b9b27e3edb54b2f98a97b7f026f95580214002a04167809b1b71233c36d1585041cdcf26f9e08f48b9eb92652f4f9c756a83dc230f48fd204a4e5e054831c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/scope-manager@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "@typescript-eslint/scope-manager@npm:8.28.0"
|
||||
"@typescript-eslint/scope-manager@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "@typescript-eslint/scope-manager@npm:8.29.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": "npm:8.28.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:8.28.0"
|
||||
checksum: 10c0/f3bd76b3f54e60f1efe108b233b2d818e44ecf0dc6422cc296542f784826caf3c66d51b8acc83d8c354980bd201e1d9aa1ea01011de96e0613d320c00e40ccfd
|
||||
"@typescript-eslint/types": "npm:8.29.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:8.29.0"
|
||||
checksum: 10c0/330d777043a99485b51197ad24927f1276d61e61adaf710f012b3fe7db2ab67c8925c0526f801715b498e7d8fa7cef390006b6f7ae40cee89abe22e8e438de9a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/type-utils@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "@typescript-eslint/type-utils@npm:8.28.0"
|
||||
"@typescript-eslint/type-utils@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "@typescript-eslint/type-utils@npm:8.29.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/typescript-estree": "npm:8.28.0"
|
||||
"@typescript-eslint/utils": "npm:8.28.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:8.29.0"
|
||||
"@typescript-eslint/utils": "npm:8.29.0"
|
||||
debug: "npm:^4.3.4"
|
||||
ts-api-utils: "npm:^2.0.1"
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: ">=4.8.4 <5.9.0"
|
||||
checksum: 10c0/b8936edc2153bf794efba39bfb06393a228217830051767360f4b691fed7c82f3831c4fc6deac6d78b90a58596e61f866c17eaee9dd793c3efda3ebdcf5a71d8
|
||||
checksum: 10c0/f254c8d22fc29ea088d16b06e4be1756cb5ad05ccf5989e163637b9c582e5fc8c27aa7003aad6e6a8158d56d7711ea1e4e9d361702c1a18945e0e6aaff1267c5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/types@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "@typescript-eslint/types@npm:8.28.0"
|
||||
checksum: 10c0/1f95895e20dac1cf063dc93c99142fd1871e53be816bcbbee93f22a05e6b2a82ca83c20ce3a551f65555910aa0956443a23268edbb004369d0d5cb282d13c377
|
||||
"@typescript-eslint/types@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "@typescript-eslint/types@npm:8.29.0"
|
||||
checksum: 10c0/fc1e3f3071102973a9cfb8ae843c51398bd74b5583b7b0edad182ea605ef85e72ceac7987513581869958b3a65303af6b3471bfba5b7be1338e8add62019c858
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/typescript-estree@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "@typescript-eslint/typescript-estree@npm:8.28.0"
|
||||
"@typescript-eslint/typescript-estree@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "@typescript-eslint/typescript-estree@npm:8.29.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": "npm:8.28.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:8.28.0"
|
||||
"@typescript-eslint/types": "npm:8.29.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:8.29.0"
|
||||
debug: "npm:^4.3.4"
|
||||
fast-glob: "npm:^3.3.2"
|
||||
is-glob: "npm:^4.0.3"
|
||||
@@ -1566,32 +1575,32 @@ __metadata:
|
||||
ts-api-utils: "npm:^2.0.1"
|
||||
peerDependencies:
|
||||
typescript: ">=4.8.4 <5.9.0"
|
||||
checksum: 10c0/97a91c95b1295926098c12e2d2c2abaa68994dc879da132dcce1e75ec9d7dee8187695eaa5241d09cbc42b5e633917b6d35c624e78e3d3ee9bda42d1318080b6
|
||||
checksum: 10c0/61dd52229a0758e0bd29f732115c16e640a2418fb25488877c74ef03cdbeb43ddc592a37094abd794ef49812f33d6f814c5b662b95ea796ed0a6c6bfc849299b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/utils@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "@typescript-eslint/utils@npm:8.28.0"
|
||||
"@typescript-eslint/utils@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "@typescript-eslint/utils@npm:8.29.0"
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils": "npm:^4.4.0"
|
||||
"@typescript-eslint/scope-manager": "npm:8.28.0"
|
||||
"@typescript-eslint/types": "npm:8.28.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:8.28.0"
|
||||
"@typescript-eslint/scope-manager": "npm:8.29.0"
|
||||
"@typescript-eslint/types": "npm:8.29.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:8.29.0"
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: ">=4.8.4 <5.9.0"
|
||||
checksum: 10c0/d3425be7f86c1245a11f0ea39136af681027797417348d8e666d38c76646945eaed7b35eb8db66372b067dee8b02a855caf2c24c040ec9c31e59681ab223b59d
|
||||
checksum: 10c0/e259d7edd12946b2dc8e1aa3bbea10f66c5277f27dda71368aa2b2923487f28cd1c123681aaae22518a31c8aeabd60a5365f8a832d0f6e6efadb03745a2d8a31
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/visitor-keys@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "@typescript-eslint/visitor-keys@npm:8.28.0"
|
||||
"@typescript-eslint/visitor-keys@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "@typescript-eslint/visitor-keys@npm:8.29.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": "npm:8.28.0"
|
||||
"@typescript-eslint/types": "npm:8.29.0"
|
||||
eslint-visitor-keys: "npm:^4.2.0"
|
||||
checksum: 10c0/245a78ed983fe95fbd1b0f2d4cb9e9d1d964bddc0aa3e3d6ab10c19c4273855bfb27d840bb1fd55deb7ae3078b52f26592472baf6fd2c7019a5aa3b1da974f35
|
||||
checksum: 10c0/7f5452b137c4edd258b2289cddf5d92687780375db33421bc4f5e2e9b0c94064c7c5ed3a7b5d96dc9c2d09ca7842b4415b3f3ed3e3f1ae3ac2e625ecb5e87efc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1611,9 +1620,9 @@ __metadata:
|
||||
"@table-library/react-table-library": "npm:4.1.12"
|
||||
"@trivago/prettier-plugin-sort-imports": "npm:^5.2.2"
|
||||
"@types/formidable": "npm:^3"
|
||||
"@types/node": "npm:^22.13.14"
|
||||
"@types/react": "npm:^19.0.12"
|
||||
"@types/react-dom": "npm:^19.0.4"
|
||||
"@types/node": "npm:^22.13.17"
|
||||
"@types/react": "npm:^19.1.0"
|
||||
"@types/react-dom": "npm:^19.1.1"
|
||||
alova: "npm:3.2.10"
|
||||
async-validator: "npm:^4.2.5"
|
||||
concurrently: "npm:^9.1.2"
|
||||
@@ -1633,8 +1642,8 @@ __metadata:
|
||||
terser: "npm:^5.39.0"
|
||||
typesafe-i18n: "npm:^5.26.2"
|
||||
typescript: "npm:^5.8.2"
|
||||
typescript-eslint: "npm:8.28.0"
|
||||
vite: "npm:^6.2.3"
|
||||
typescript-eslint: "npm:8.29.0"
|
||||
vite: "npm:^6.2.4"
|
||||
vite-plugin-imagemin: "npm:^0.6.1"
|
||||
vite-tsconfig-paths: "npm:^5.1.4"
|
||||
languageName: unknown
|
||||
@@ -6659,17 +6668,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript-eslint@npm:8.28.0":
|
||||
version: 8.28.0
|
||||
resolution: "typescript-eslint@npm:8.28.0"
|
||||
"typescript-eslint@npm:8.29.0":
|
||||
version: 8.29.0
|
||||
resolution: "typescript-eslint@npm:8.29.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/eslint-plugin": "npm:8.28.0"
|
||||
"@typescript-eslint/parser": "npm:8.28.0"
|
||||
"@typescript-eslint/utils": "npm:8.28.0"
|
||||
"@typescript-eslint/eslint-plugin": "npm:8.29.0"
|
||||
"@typescript-eslint/parser": "npm:8.29.0"
|
||||
"@typescript-eslint/utils": "npm:8.29.0"
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: ">=4.8.4 <5.9.0"
|
||||
checksum: 10c0/bf1c1e4b2f21a95930758d5b285c39a394a50e3b6983f373413b93b80a6cb5aabc1d741780e60c63cb42ad5d645ea9c1e6d441d98174c5a2884ab88f4ac46df6
|
||||
checksum: 10c0/1438b80fc875acc65acc842dc870070be31d6a30f756a6d9985fadd063f4f568e74a83bac7aaf94d2320e434df3c033a6e2ab7258b1429cae2aa7c4b16fb5088
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6872,9 +6881,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"vite@npm:^6.2.3":
|
||||
version: 6.2.3
|
||||
resolution: "vite@npm:6.2.3"
|
||||
"vite@npm:^6.2.4":
|
||||
version: 6.2.4
|
||||
resolution: "vite@npm:6.2.4"
|
||||
dependencies:
|
||||
esbuild: "npm:^0.25.0"
|
||||
fsevents: "npm:~2.3.3"
|
||||
@@ -6920,7 +6929,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
vite: bin/vite.js
|
||||
checksum: 10c0/ba6ad7e83e5a63fb0b6f62d3a3963624b8784bdc1bfa2a83e16cf268fb58c76bd9f8e69f39ed34bf8711cdb8fd7702916f878781da53c232c34ef7a85e0600cf
|
||||
checksum: 10c0/5a011ee5cce91de023a22564a314f04bf64d0d02b420d92c3d539d10257448d60e98e52b491404656426fba4a50dc25f107282540d7388fc5303dc441280155e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
@@ -37,9 +37,11 @@ void NetworkSettingsService::begin() {
|
||||
|
||||
WiFi.mode(WIFI_MODE_MAX);
|
||||
WiFi.mode(WIFI_MODE_NULL);
|
||||
// WiFi.setScanMethod(WIFI_ALL_CHANNEL_SCAN); // default is FAST_SCAN, connect issues in 2.0.14
|
||||
// WiFi.setSortMethod(WIFI_CONNECT_AP_BY_SIGNAL); // is default, no need to set
|
||||
|
||||
// scan settings give connect issues with arduino 2.0.14 and arduino 3.x.x
|
||||
#if ESP_ARDUINO_VERSION_MAJOR < 3
|
||||
WiFi.setScanMethod(WIFI_ALL_CHANNEL_SCAN); // default is FAST_SCAN
|
||||
// WiFi.setSortMethod(WIFI_CONNECT_AP_BY_SIGNAL); // is default, no need to set
|
||||
#endif
|
||||
_fsPersistence.readFromFS();
|
||||
}
|
||||
|
||||
|
||||
@@ -634,6 +634,9 @@ void EMSESP::reset_mqtt_ha() {
|
||||
// force the re-creating of the temperature and analog sensor topics (for HA)
|
||||
temperaturesensor_.reload();
|
||||
analogsensor_.reload();
|
||||
shower_.ha_reset();
|
||||
webSchedulerService.ha_reset();
|
||||
webCustomEntityService.ha_reset();
|
||||
}
|
||||
|
||||
// create json doc for the devices values and add to MQTT publish queue
|
||||
@@ -974,8 +977,10 @@ void EMSESP::process_deviceName(std::shared_ptr<const Telegram> telegram) {
|
||||
if (telegram->offset > 27 || (telegram->offset + telegram->message_length) < 29) {
|
||||
return;
|
||||
}
|
||||
char name[16];
|
||||
uint8_t len = telegram->offset + telegram->message_length - 27;
|
||||
char name[16];
|
||||
// len including zero terminator, if there is one, otherwise copy to end of telegram
|
||||
// https://github.com/emsesp/EMS-ESP32/discussions/2482#discussioncomment-12649817
|
||||
uint8_t len = telegram->offset + telegram->message_length - 26;
|
||||
strlcpy(name, (const char *)&telegram->message_data[27 - telegram->offset], len < 16 ? len : 16);
|
||||
char * c = name;
|
||||
while (isprint(*c)) {
|
||||
@@ -1314,7 +1319,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const
|
||||
flags = DeviceFlags::EMS_DEVICE_FLAG_CR120;
|
||||
default_name = "CR120";
|
||||
}
|
||||
if (product_id == 158 && strncmp(version,"73",2) == 0) {
|
||||
if (product_id == 158 && strncmp(version, "73", 2) == 0) {
|
||||
flags = DeviceFlags::EMS_DEVICE_FLAG_HMC310;
|
||||
default_name = "HMC310";
|
||||
}
|
||||
|
||||
@@ -40,6 +40,9 @@ class Shower {
|
||||
void shower_alert(bool enable) {
|
||||
shower_alert_ = enable;
|
||||
}
|
||||
void ha_reset() {
|
||||
ha_configdone_ = false;
|
||||
}
|
||||
|
||||
private:
|
||||
static uuid::log::Logger logger_;
|
||||
|
||||
@@ -194,6 +194,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
|
||||
register_telegram_type(0x269, "RC300Holiday", true, MAKE_PF_CB(process_RC300Holiday));
|
||||
}
|
||||
register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent));
|
||||
register_telegram_type(0xC0, "RCErrorMessage", false, MAKE_PF_CB(process_RCErrorMessage2));
|
||||
EMSESP::send_read_request(0xC0, device_id); // read last errorcode on start (only published on errors)
|
||||
|
||||
// JUNKERS/HT3
|
||||
} else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
|
||||
@@ -1751,6 +1753,49 @@ void Thermostat::process_RCErrorMessage(std::shared_ptr<const Telegram> telegram
|
||||
}
|
||||
}
|
||||
}
|
||||
// 0xC0 error log for RC300
|
||||
void Thermostat::process_RCErrorMessage2(std::shared_ptr<const Telegram> telegram) {
|
||||
if (telegram->offset > 0 || telegram->message_length < 20) {
|
||||
return;
|
||||
}
|
||||
uint8_t code[4] = {telegram->message_data[5], telegram->message_data[6], telegram->message_data[7], 0};
|
||||
uint16_t codeNo = telegram->message_data[8] * 256 + telegram->message_data[9];
|
||||
uint16_t year = (telegram->message_data[10] & 0x7F) + 2000;
|
||||
uint8_t month = telegram->message_data[11];
|
||||
uint8_t day = telegram->message_data[13];
|
||||
uint8_t hour = telegram->message_data[12];
|
||||
uint8_t min = telegram->message_data[14];
|
||||
uint16_t year1 = (telegram->message_data[15] & 0x7F) + 2000;
|
||||
uint8_t month1 = telegram->message_data[16];
|
||||
uint8_t day1 = telegram->message_data[18];
|
||||
uint8_t hour1 = telegram->message_data[17];
|
||||
uint8_t min1 = telegram->message_data[19];
|
||||
if (isprint(code[0]) && isprint(code[1]) && isprint(code[2])) {
|
||||
if (year == 2000) { // no clock
|
||||
uint32_t min2 = 65536 * telegram->message_data[11] + 256 * telegram->message_data[12] + telegram->message_data[13];
|
||||
snprintf(lastCode_, sizeof(lastCode_), "%s(%d) %d min", code, codeNo, min2);
|
||||
} else if (year1 == 2000) {
|
||||
snprintf(lastCode_, sizeof(lastCode_), "%s(%d) %02d.%02d.%d %02d:%02d", code, codeNo, day, month, year, hour, min);
|
||||
} else {
|
||||
snprintf(lastCode_,
|
||||
sizeof(lastCode_),
|
||||
"%s(%d) %02d.%02d.%d %02d:%02d-%02d.%02d.%d %02d:%02d",
|
||||
code,
|
||||
codeNo,
|
||||
day,
|
||||
month,
|
||||
year,
|
||||
hour,
|
||||
min,
|
||||
day1,
|
||||
month1,
|
||||
year1,
|
||||
hour1,
|
||||
min1);
|
||||
}
|
||||
has_update(lastCode_);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
|
||||
@@ -411,6 +411,7 @@ class Thermostat : public EMSdevice {
|
||||
void process_RCTime(std::shared_ptr<const Telegram> telegram);
|
||||
void process_RCError(std::shared_ptr<const Telegram> telegram);
|
||||
void process_RCErrorMessage(std::shared_ptr<const Telegram> telegram);
|
||||
void process_RCErrorMessage2(std::shared_ptr<const Telegram> telegram);
|
||||
void process_RC35wwSettings(std::shared_ptr<const Telegram> telegram);
|
||||
void process_RC35wwTimer(std::shared_ptr<const Telegram> telegram);
|
||||
void process_RC35Monitor(std::shared_ptr<const Telegram> telegram);
|
||||
|
||||
@@ -1 +1 @@
|
||||
#define EMSESP_APP_VERSION "3.7.3-dev.4"
|
||||
#define EMSESP_APP_VERSION "3.7.3-dev.5"
|
||||
|
||||
Reference in New Issue
Block a user