Merge pull request #2199 from MichaelDvP/dev

fixes and additions for #2188, #2198, 2192, #2192, #2132
This commit is contained in:
Proddy
2024-11-14 15:06:10 +01:00
committed by GitHub
14 changed files with 176 additions and 144 deletions

View File

@@ -10,7 +10,8 @@ For more details go to [www.emsesp.org](https://www.emsesp.org/).
- include HA "unit_of_meas", "stat_cla" and "dev_cla" attributes for Number sensors [#2149](https://github.com/emsesp/EMS-ESP32/issues/2149)
- Bosch CS6800i AW - Silent Mode + Electrical Power Reduction (HP) [#2147](https://github.com/emsesp/EMS-ESP32/issues/2147)
- /api/system/showeralert and /api/system/showertimer [#2182](https://github.com/emsesp/EMS-ESP32/issues/2182)
- `/api/system/showeralert` and `/api/system/showertimer` [#2182](https://github.com/emsesp/EMS-ESP32/issues/2182)
- MX400 [#2198](https://github.com/emsesp/EMS-ESP32/issues/2198)
## Fixed
@@ -18,5 +19,9 @@ For more details go to [www.emsesp.org](https://www.emsesp.org/).
- fix changing TZ in NTPsettings without clearing enable+server, added DST support [#2142](https://github.com/emsesp/EMS-ESP32/issues/2142)
- Support MQTT Discovery (AD) with Domoticz [#2177](https://github.com/emsesp/EMS-ESP32/issues/2177)
- wwExtra (dhw extra) changed from temperature reading to number
- auxheaterstatus [#2192](https://github.com/emsesp/EMS-ESP32/issues/2192)
- lastCode character check [#2189](https://github.com/emsesp/EMS-ESP32/issues/2189)
- reading too many telegram parts
- heatpump cost UOMs [#2188](https://github.com/emsesp/EMS-ESP32/issues/2188)
## Changed

View File

@@ -24,10 +24,10 @@
"@alova/adapter-xhr": "2.0.10",
"@emotion/react": "^11.13.3",
"@emotion/styled": "^11.13.0",
"@mui/icons-material": "^6.1.6",
"@mui/material": "^6.1.6",
"@mui/icons-material": "^6.1.7",
"@mui/material": "^6.1.7",
"@table-library/react-table-library": "4.1.7",
"alova": "3.2.2",
"alova": "3.2.3",
"async-validator": "^4.2.5",
"jwt-decode": "^4.0.0",
"mime-types": "^2.1.35",
@@ -58,10 +58,10 @@
"prettier": "^3.3.3",
"rollup-plugin-visualizer": "^5.12.0",
"terser": "^5.36.0",
"typescript-eslint": "8.13.0",
"vite": "^5.4.10",
"typescript-eslint": "8.14.0",
"vite": "^5.4.11",
"vite-plugin-imagemin": "^0.6.1",
"vite-tsconfig-paths": "^5.1.1"
"vite-tsconfig-paths": "^5.1.2"
},
"packageManager": "yarn@4.5.1"
}

View File

@@ -181,7 +181,8 @@ export enum DeviceValueUOM {
K,
VOLTS,
MBAR,
LH
LH,
CTKWH
}
export const DeviceValueUOM_s = [
@@ -210,7 +211,8 @@ export const DeviceValueUOM_s = [
'K',
'V',
'mbar',
'l/h'
'l/h',
'ct/kWh'
];
export enum AnalogType {

View File

@@ -840,38 +840,38 @@ __metadata:
languageName: node
linkType: hard
"@mui/core-downloads-tracker@npm:^6.1.6":
version: 6.1.6
resolution: "@mui/core-downloads-tracker@npm:6.1.6"
checksum: 10c0/538c561dc46e040ebc5ea884428dccc427fdddbd3747890d96ae52648eed5f7dec4dc8294927b58ff4b7481c0a813dcb16b9d7b9b08cc43871d2d55ebd1a8002
"@mui/core-downloads-tracker@npm:^6.1.7":
version: 6.1.7
resolution: "@mui/core-downloads-tracker@npm:6.1.7"
checksum: 10c0/4568379b1df8a17ca2292b7caa729f42c3b4b359841c81981a7d25641380121f3a042e53094cabd16d5c838372edadb8c23c24d9bff0fcc794c615b62f0ceb3e
languageName: node
linkType: hard
"@mui/icons-material@npm:^6.1.6":
version: 6.1.6
resolution: "@mui/icons-material@npm:6.1.6"
"@mui/icons-material@npm:^6.1.7":
version: 6.1.7
resolution: "@mui/icons-material@npm:6.1.7"
dependencies:
"@babel/runtime": "npm:^7.26.0"
peerDependencies:
"@mui/material": ^6.1.6
"@mui/material": ^6.1.7
"@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/a6eb10be3cc356fd404febf29a3b26fa63b6b09d3148736fb05279954905186e9804869ff18220840ae92dbdeddfd407c2d0c72b9e165e01fd6bbc620b6b39d7
checksum: 10c0/89f6d69dce35aa0b2fd2586f0de3a01171ba85b6c2b848dd0d1cfca0840778eafc90465efeb822451f4066df9791099ff8a683df4cacea98bc3affbc9b80c891
languageName: node
linkType: hard
"@mui/material@npm:^6.1.6":
version: 6.1.6
resolution: "@mui/material@npm:6.1.6"
"@mui/material@npm:^6.1.7":
version: 6.1.7
resolution: "@mui/material@npm:6.1.7"
dependencies:
"@babel/runtime": "npm:^7.26.0"
"@mui/core-downloads-tracker": "npm:^6.1.6"
"@mui/system": "npm:^6.1.6"
"@mui/core-downloads-tracker": "npm:^6.1.7"
"@mui/system": "npm:^6.1.7"
"@mui/types": "npm:^7.2.19"
"@mui/utils": "npm:^6.1.6"
"@mui/utils": "npm:^6.1.7"
"@popperjs/core": "npm:^2.11.8"
"@types/react-transition-group": "npm:^4.4.11"
clsx: "npm:^2.1.1"
@@ -882,7 +882,7 @@ __metadata:
peerDependencies:
"@emotion/react": ^11.5.0
"@emotion/styled": ^11.3.0
"@mui/material-pigment-css": ^6.1.6
"@mui/material-pigment-css": ^6.1.7
"@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -895,16 +895,16 @@ __metadata:
optional: true
"@types/react":
optional: true
checksum: 10c0/b54c0b01f33f63a700ec7b13d615dd3a109497ee48a1af0f750f780112a7034fbecfcecf29ad67aa62ec12047d465fbcb243052d8680ce681240096fef1f8d63
checksum: 10c0/2c049da6b8f4bc79a0777692138ff77a0cb64b96c384d7070097c006391798554923806fed1ef8c6db8730f11c058edfb94bd243d2abeff14e45fd51d1f29819
languageName: node
linkType: hard
"@mui/private-theming@npm:^6.1.6":
version: 6.1.6
resolution: "@mui/private-theming@npm:6.1.6"
"@mui/private-theming@npm:^6.1.7":
version: 6.1.7
resolution: "@mui/private-theming@npm:6.1.7"
dependencies:
"@babel/runtime": "npm:^7.26.0"
"@mui/utils": "npm:^6.1.6"
"@mui/utils": "npm:^6.1.7"
prop-types: "npm:^15.8.1"
peerDependencies:
"@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -912,13 +912,13 @@ __metadata:
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/d9138bd3ae8b318b0f14e3d9a9aa414f31698ce3934b94f0a1e78d9c2c37fd3d2b24a6bd45ded321ffc41658e70fc055226b9c1b9767695a93c927adf54302a0
checksum: 10c0/2735c0e7155fd595c5f6fd87a20a74a222f1ef3120722d1964fa231c075b909b77612ac3e3a8bb5604a388205f4495690bc0602ceabe925294ed6a5fbe8144da
languageName: node
linkType: hard
"@mui/styled-engine@npm:^6.1.6":
version: 6.1.6
resolution: "@mui/styled-engine@npm:6.1.6"
"@mui/styled-engine@npm:^6.1.7":
version: 6.1.7
resolution: "@mui/styled-engine@npm:6.1.7"
dependencies:
"@babel/runtime": "npm:^7.26.0"
"@emotion/cache": "npm:^11.13.1"
@@ -935,19 +935,19 @@ __metadata:
optional: true
"@emotion/styled":
optional: true
checksum: 10c0/2554248f83db98b404b299494c4f039fe5a1f1b9166fc95268958ea00aa3be04915ffbabe0ea418cb2d600e11b6d08f765ddd23240a63e6d06161d07eaac6aa8
checksum: 10c0/0289121553ab95f6ddd1be0eeb27e975a01391266ff3076430ab67d925c231b586fc2899f8340648b4587c651bd3f7fd24094f43386f6de9052db92a98e13c15
languageName: node
linkType: hard
"@mui/system@npm:^6.1.6":
version: 6.1.6
resolution: "@mui/system@npm:6.1.6"
"@mui/system@npm:^6.1.7":
version: 6.1.7
resolution: "@mui/system@npm:6.1.7"
dependencies:
"@babel/runtime": "npm:^7.26.0"
"@mui/private-theming": "npm:^6.1.6"
"@mui/styled-engine": "npm:^6.1.6"
"@mui/private-theming": "npm:^6.1.7"
"@mui/styled-engine": "npm:^6.1.7"
"@mui/types": "npm:^7.2.19"
"@mui/utils": "npm:^6.1.6"
"@mui/utils": "npm:^6.1.7"
clsx: "npm:^2.1.1"
csstype: "npm:^3.1.3"
prop-types: "npm:^15.8.1"
@@ -963,7 +963,7 @@ __metadata:
optional: true
"@types/react":
optional: true
checksum: 10c0/125d38ad5b0d610cfedace8253e43b4be47b46ad2d96eeac019c6c37b4f09286512e2280924753f8bb0314c4d7cc5e8f03fc7f97cf9830c4f6d1869b721eb8c2
checksum: 10c0/309db6f87bc7e489486f683961d032faad4804e7a3263f584b0a82e3286831a596f416be69066967a76253938e604cbb87bdfe4f9b8feed683b40ca7c4b8d8f2
languageName: node
linkType: hard
@@ -979,9 +979,9 @@ __metadata:
languageName: node
linkType: hard
"@mui/utils@npm:^6.1.6":
version: 6.1.6
resolution: "@mui/utils@npm:6.1.6"
"@mui/utils@npm:^6.1.7":
version: 6.1.7
resolution: "@mui/utils@npm:6.1.7"
dependencies:
"@babel/runtime": "npm:^7.26.0"
"@mui/types": "npm:^7.2.19"
@@ -995,7 +995,7 @@ __metadata:
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/8752b3ca3fa1cee7f1a8477b6babcd80fef01724f7d8106c8665a252ec960ca38ef5f4fe21cfb60ee11176a9a8034400420d5b0719953ecc2c4f25980682614c
checksum: 10c0/8dc05bf8f48d6d6d24cb9950b705e8b48eedac8dba159514c5c61ec2da54c9de3f40ff33e8a662eb661af6fbbf9c80b83277eefba6e54a1b5fa26a377ec0d694
languageName: node
linkType: hard
@@ -1539,15 +1539,15 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:8.13.0":
version: 8.13.0
resolution: "@typescript-eslint/eslint-plugin@npm:8.13.0"
"@typescript-eslint/eslint-plugin@npm:8.14.0":
version: 8.14.0
resolution: "@typescript-eslint/eslint-plugin@npm:8.14.0"
dependencies:
"@eslint-community/regexpp": "npm:^4.10.0"
"@typescript-eslint/scope-manager": "npm:8.13.0"
"@typescript-eslint/type-utils": "npm:8.13.0"
"@typescript-eslint/utils": "npm:8.13.0"
"@typescript-eslint/visitor-keys": "npm:8.13.0"
"@typescript-eslint/scope-manager": "npm:8.14.0"
"@typescript-eslint/type-utils": "npm:8.14.0"
"@typescript-eslint/utils": "npm:8.14.0"
"@typescript-eslint/visitor-keys": "npm:8.14.0"
graphemer: "npm:^1.4.0"
ignore: "npm:^5.3.1"
natural-compare: "npm:^1.4.0"
@@ -1558,66 +1558,66 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/ee96515e9def17b0d1b8d568d4afcd21c5a8a1bc01bf2f30c4d1f396b41a2f49de3508f79c6231a137ca06943dd6933ac00032652190ab99a4e935ffef44df0b
checksum: 10c0/46c82eb45be82ffec0ab04728a5180691b1d17002c669864861a3044b6d2105a75ca23cc80d18721b40b5e7dff1eff4ed68a43d726e25d55f3e466a9fbeeb873
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:8.13.0":
version: 8.13.0
resolution: "@typescript-eslint/parser@npm:8.13.0"
"@typescript-eslint/parser@npm:8.14.0":
version: 8.14.0
resolution: "@typescript-eslint/parser@npm:8.14.0"
dependencies:
"@typescript-eslint/scope-manager": "npm:8.13.0"
"@typescript-eslint/types": "npm:8.13.0"
"@typescript-eslint/typescript-estree": "npm:8.13.0"
"@typescript-eslint/visitor-keys": "npm:8.13.0"
"@typescript-eslint/scope-manager": "npm:8.14.0"
"@typescript-eslint/types": "npm:8.14.0"
"@typescript-eslint/typescript-estree": "npm:8.14.0"
"@typescript-eslint/visitor-keys": "npm:8.14.0"
debug: "npm:^4.3.4"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/fa04f6c417c0f72104e148f1d7ff53e04108d383550365a556fbfae5d2283484696235db522189e17bc49039946977078e324100cef991ca01f78704182624ad
checksum: 10c0/522b7afd25cd302c0510cc71985ba55ff92ecc5dbe3fc74a76fefea0169252fdd4b8cad6291fef05f63dfc173951af450dca20859c7f23e387b2e7410e8b97b1
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:8.13.0":
version: 8.13.0
resolution: "@typescript-eslint/scope-manager@npm:8.13.0"
"@typescript-eslint/scope-manager@npm:8.14.0":
version: 8.14.0
resolution: "@typescript-eslint/scope-manager@npm:8.14.0"
dependencies:
"@typescript-eslint/types": "npm:8.13.0"
"@typescript-eslint/visitor-keys": "npm:8.13.0"
checksum: 10c0/1924b3e740e244d98f8a99740b4196d23ae3263303b387c66db94e140455a3132e603a130f3f70fc71e37f4bda5d0c0c67224ae3911908b097ef3f972c136be4
"@typescript-eslint/types": "npm:8.14.0"
"@typescript-eslint/visitor-keys": "npm:8.14.0"
checksum: 10c0/1e1295c6f9febadf63559aad328b23d960510ce6b4c9f74e10d881c3858fa7f1db767cd1af5272d2fe7c9c5c7daebee71854e6f841e413e5d70af282f6616e26
languageName: node
linkType: hard
"@typescript-eslint/type-utils@npm:8.13.0":
version: 8.13.0
resolution: "@typescript-eslint/type-utils@npm:8.13.0"
"@typescript-eslint/type-utils@npm:8.14.0":
version: 8.14.0
resolution: "@typescript-eslint/type-utils@npm:8.14.0"
dependencies:
"@typescript-eslint/typescript-estree": "npm:8.13.0"
"@typescript-eslint/utils": "npm:8.13.0"
"@typescript-eslint/typescript-estree": "npm:8.14.0"
"@typescript-eslint/utils": "npm:8.14.0"
debug: "npm:^4.3.4"
ts-api-utils: "npm:^1.3.0"
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/65319084616f3aea3d9f8dfab30c9b0a70de7314b445805016fdf0d0e39fe073eef2813c3e16c3e1c6a40462ba8eecfdbb12ab1e8570c3407a1cccdb69d4bc8b
checksum: 10c0/42616a664b38ca418e13504247e5e1bad6ae85c045b48e5735ffab977d4bd58cc86fb9d2292bbb314fa408d78d4b0454c3a27dbf9f881f9921917a942825c806
languageName: node
linkType: hard
"@typescript-eslint/types@npm:8.13.0":
version: 8.13.0
resolution: "@typescript-eslint/types@npm:8.13.0"
checksum: 10c0/bd3f88b738a92b2222f388bcf831357ef8940a763c2c2eb1947767e1051dd2f8bee387020e8cf4c2309e4142353961b659abc2885e30679109a0488b0bfefc23
"@typescript-eslint/types@npm:8.14.0":
version: 8.14.0
resolution: "@typescript-eslint/types@npm:8.14.0"
checksum: 10c0/7707f900e24e60e6780c5705f69627b7c0ef912cb3b095dfc8f4a0c84e866c66b1c4c10278cf99724560dc66985ec640750c4192786a09b853f9bb4c3ca5a7ce
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:8.13.0":
version: 8.13.0
resolution: "@typescript-eslint/typescript-estree@npm:8.13.0"
"@typescript-eslint/typescript-estree@npm:8.14.0":
version: 8.14.0
resolution: "@typescript-eslint/typescript-estree@npm:8.14.0"
dependencies:
"@typescript-eslint/types": "npm:8.13.0"
"@typescript-eslint/visitor-keys": "npm:8.13.0"
"@typescript-eslint/types": "npm:8.14.0"
"@typescript-eslint/visitor-keys": "npm:8.14.0"
debug: "npm:^4.3.4"
fast-glob: "npm:^3.3.2"
is-glob: "npm:^4.0.3"
@@ -1627,31 +1627,31 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/2d45bc5ed4ac352bea927167ac28ef23bd13b6ae352ff50e85cddfdc4b06518f1dd4ae5f2495e30d6f62d247987677a4e807065d55829ba28963908a821dc96d
checksum: 10c0/5e890d22bd067095f871cf144907a8c302db5b5f014c58906ad58d7f23569951cba805042eac6844744e5abb0d3648c9cc221a91b0703da0a8d6345dc1f83e74
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:8.13.0":
version: 8.13.0
resolution: "@typescript-eslint/utils@npm:8.13.0"
"@typescript-eslint/utils@npm:8.14.0":
version: 8.14.0
resolution: "@typescript-eslint/utils@npm:8.14.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.4.0"
"@typescript-eslint/scope-manager": "npm:8.13.0"
"@typescript-eslint/types": "npm:8.13.0"
"@typescript-eslint/typescript-estree": "npm:8.13.0"
"@typescript-eslint/scope-manager": "npm:8.14.0"
"@typescript-eslint/types": "npm:8.14.0"
"@typescript-eslint/typescript-estree": "npm:8.14.0"
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
checksum: 10c0/3fc5a7184a949df5f5b64f6af039a1d21ef7fe15f3d88a5d485ccbb535746d18514751143993a5aee287228151be3e326baf8f899a0a0a93368f6f20857ffa6d
checksum: 10c0/1fcc2651d870832a799a5d1c85fc9421853508a006d6a6073c8316b012489dda77e123d13aea8f53eb9030a2da2c0eb273a6946a9941caa2519b99b33e89b720
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:8.13.0":
version: 8.13.0
resolution: "@typescript-eslint/visitor-keys@npm:8.13.0"
"@typescript-eslint/visitor-keys@npm:8.14.0":
version: 8.14.0
resolution: "@typescript-eslint/visitor-keys@npm:8.14.0"
dependencies:
"@typescript-eslint/types": "npm:8.13.0"
"@typescript-eslint/types": "npm:8.14.0"
eslint-visitor-keys: "npm:^3.4.3"
checksum: 10c0/50b35f3cf673aaed940613f0007f7c4558a89ebef15c49824e65b6f084b700fbf01b01a4e701e24bbe651297a39678645e739acd255255f1603867a84bef0383
checksum: 10c0/d0faf70ed9ecff5e36694bbb161a90bea6db59e0e79a7d4f264d67d565c12b13733d664b736b2730935f013c87ce3155cea954a533d28e99987681bc5f6259c3
languageName: node
linkType: hard
@@ -1664,8 +1664,8 @@ __metadata:
"@emotion/react": "npm:^11.13.3"
"@emotion/styled": "npm:^11.13.0"
"@eslint/js": "npm:^9.14.0"
"@mui/icons-material": "npm:^6.1.6"
"@mui/material": "npm:^6.1.6"
"@mui/icons-material": "npm:^6.1.7"
"@mui/material": "npm:^6.1.7"
"@preact/compat": "npm:^18.3.1"
"@preact/preset-vite": "npm:^2.9.1"
"@table-library/react-table-library": "npm:4.1.7"
@@ -1675,7 +1675,7 @@ __metadata:
"@types/react": "npm:^18.3.12"
"@types/react-dom": "npm:^18.3.1"
"@types/react-router-dom": "npm:^5.3.3"
alova: "npm:3.2.2"
alova: "npm:3.2.3"
async-validator: "npm:^4.2.5"
concurrently: "npm:^9.1.0"
eslint: "npm:^9.14.0"
@@ -1694,10 +1694,10 @@ __metadata:
terser: "npm:^5.36.0"
typesafe-i18n: "npm:^5.26.2"
typescript: "npm:^5.6.3"
typescript-eslint: "npm:8.13.0"
vite: "npm:^5.4.10"
typescript-eslint: "npm:8.14.0"
vite: "npm:^5.4.11"
vite-plugin-imagemin: "npm:^0.6.1"
vite-tsconfig-paths: "npm:^5.1.1"
vite-tsconfig-paths: "npm:^5.1.2"
languageName: unknown
linkType: soft
@@ -1766,13 +1766,13 @@ __metadata:
languageName: node
linkType: hard
"alova@npm:3.2.2":
version: 3.2.2
resolution: "alova@npm:3.2.2"
"alova@npm:3.2.3":
version: 3.2.3
resolution: "alova@npm:3.2.3"
dependencies:
"@alova/shared": "npm:1.1.0"
rate-limiter-flexible: "npm:^5.0.3"
checksum: 10c0/e01f827fd07e4e532b6d82fcd9e2ce6fe2866704f5e895085c7de63b00a9caaa2cf1dbf8537292d840a5f1903974f2e7296c16b0beda0bd375d1bdd68c17297e
checksum: 10c0/58027f57d5f32d472a5c35110105fdff1a6b772684794a8b00b73289ecde0fa1117160b7904f0a1f8ddc14068d9aecf66fcec76eb868ff20964d81a842a313ea
languageName: node
linkType: hard
@@ -6771,17 +6771,17 @@ __metadata:
languageName: node
linkType: hard
"typescript-eslint@npm:8.13.0":
version: 8.13.0
resolution: "typescript-eslint@npm:8.13.0"
"typescript-eslint@npm:8.14.0":
version: 8.14.0
resolution: "typescript-eslint@npm:8.14.0"
dependencies:
"@typescript-eslint/eslint-plugin": "npm:8.13.0"
"@typescript-eslint/parser": "npm:8.13.0"
"@typescript-eslint/utils": "npm:8.13.0"
"@typescript-eslint/eslint-plugin": "npm:8.14.0"
"@typescript-eslint/parser": "npm:8.14.0"
"@typescript-eslint/utils": "npm:8.14.0"
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/a84958e7602360c4cb2e6227fd9aae19dd18cdf1a2cfd9ece2a81d54098f80454b5707e861e98547d0b2e5dae552b136aa6733b74f0dd743ca7bfe178083c441
checksum: 10c0/b9c2f32139d3df52057bfb80d4663fd5e440ccd0da75d92fe91582fe5216213e7012ef691e7d91c75e402e373b9aded6b128b005aaeeae32d7b9d7b39732bcc7
languageName: node
linkType: hard
@@ -6954,9 +6954,9 @@ __metadata:
languageName: node
linkType: hard
"vite-tsconfig-paths@npm:^5.1.1":
version: 5.1.1
resolution: "vite-tsconfig-paths@npm:5.1.1"
"vite-tsconfig-paths@npm:^5.1.2":
version: 5.1.2
resolution: "vite-tsconfig-paths@npm:5.1.2"
dependencies:
debug: "npm:^4.1.1"
globrex: "npm:^0.1.2"
@@ -6966,13 +6966,13 @@ __metadata:
peerDependenciesMeta:
vite:
optional: true
checksum: 10c0/7d18e2f6daa057e21885bffd3dc751f2a8fe1f249a70e4ca35b944c505d1b59d6e7c3f2278afef5139aa4cabdcb307567d3d26f2009dcccff4281c485c89a231
checksum: 10c0/7db445b6b1f48e7b89f39f5eb8cf4ea645994f581fcc7c9fac721e0c36f8203c0770007ec27825caa6e2566e3127b2b1bfe8be28ca05cd0e9fb67a2943dcdec5
languageName: node
linkType: hard
"vite@npm:^5.4.10":
version: 5.4.10
resolution: "vite@npm:5.4.10"
"vite@npm:^5.4.11":
version: 5.4.11
resolution: "vite@npm:5.4.11"
dependencies:
esbuild: "npm:^0.21.3"
fsevents: "npm:~2.3.3"
@@ -7009,7 +7009,7 @@ __metadata:
optional: true
bin:
vite: bin/vite.js
checksum: 10c0/4ef4807d2fd166a920de244dbcec791ba8a903b017a7d8e9f9b4ac40d23f8152c1100610583d08f542b47ca617a0505cfc5f8407377d610599d58296996691ed
checksum: 10c0/d536bb7af57dd0eca2a808f95f5ff1d7b7ffb8d86e17c6893087680a0448bd0d15e07475270c8a6de65cb5115592d037130a1dd979dc76bcef8c1dda202a1874
languageName: node
linkType: hard

View File

@@ -180,6 +180,7 @@
{ 74, DeviceType::ALERT, "EM10", DeviceFlags::EMS_DEVICE_FLAG_NONE},
// Gateways - 0x48
{17, DeviceType::GATEWAY, "MX400", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x48 and 0x4B
{189, DeviceType::GATEWAY, "KM200, MB LAN 2", DeviceFlags::EMS_DEVICE_FLAG_NONE},
{252, DeviceType::GATEWAY, "K30RF, MX300", DeviceFlags::EMS_DEVICE_FLAG_NONE},

View File

@@ -684,7 +684,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
FL_(auxHeaterOff),
DeviceValueUOM::NONE,
MAKE_CF_CB(set_additionalHeater));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &auxHeaterStatus_, DeviceValueType::UINT8, FL_(auxHeaterStatus), DeviceValueUOM::PERCENT);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &auxHeaterStatus_, DeviceValueType::BOOL, FL_(auxHeaterStatus), DeviceValueUOM::NONE);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &auxHeaterLevel_, DeviceValueType::UINT8, FL_(auxHeaterLevel), DeviceValueUOM::PERCENT);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&auxHeaterDelay_,
DeviceValueType::UINT16,
@@ -1434,7 +1435,7 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr<const Telegram> telegram
// at this point do a quick check to see if the hot water or heating is active
uint8_t state = EMS_VALUE_UINT8_NOTSET;
if (telegram->read_value(state, 11) && model() != EMSdevice::EMS_DEVICE_FLAG_HIU) {
if (telegram->read_value(state, 11) && model() != EMSdevice::EMS_DEVICE_FLAG_HIU && model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) {
boilerState_ = state & 0x01 ? 0x08 : 0; // burnGas
boilerState_ |= state & 0x02 ? 0x01 : 0; // heatingPump
boilerState_ |= state & 0x04 ? 0x02 : 0; // 3-way-valve
@@ -1473,7 +1474,7 @@ void Boiler::process_UBAMonitorSlow(std::shared_ptr<const Telegram> telegram) {
*/
void Boiler::process_UBAMonitorSlowPlus2(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, absBurnPow_, 13); // current burner absolute power (percent of rating plate power)
if (model() == EMSdevice::EMS_DEVICE_FLAG_HIU) {
if (model() == EMSdevice::EMS_DEVICE_FLAG_HIU || model() == EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) {
uint8_t state = EMS_VALUE_UINT8_NOTSET;
boilerState_ = 0;
if (telegram->read_value(state, 2)) {
@@ -1661,7 +1662,7 @@ void Boiler::process_HpPower(std::shared_ptr<const Telegram> telegram) {
has_bitupdate(telegram, hpEA0_, 3, 6);
has_update(telegram, hpCircSpd_, 4);
has_update(telegram, hpBrinePumpSpd_, 5);
has_update(telegram, auxHeaterStatus_, 6);
has_update(telegram, auxHeaterLevel_, 6);
has_update(telegram, hpActivity_, 7);
has_update(telegram, hpPower_, 11);
has_update(telegram, hpCompSpd_, 17);
@@ -1828,6 +1829,10 @@ void Boiler::process_UBAErrorMessage(std::shared_ptr<const Telegram> telegram) {
uint8_t min = telegram->message_data[8];
uint16_t duration = telegram->message_data[9] * 256 + telegram->message_data[10];
uint32_t date = (year - 2000) * 535680UL + month * 44640UL + day * 1440UL + hour * 60 + min + duration;
// check valid https://github.com/emsesp/EMS-ESP32/issues/2189
if (day == 0 || day > 31 || month == 0 || month > 12 || !std::isprint(code[0]) || !std::isprint(code[1])) {
return;
}
// store only the newest code from telegrams 10 and 11
if (date > lastCodeDate_ && lastCodeDate_) {
lastCodeDate_ = date;
@@ -1855,6 +1860,9 @@ void Boiler::process_UBAErrorMessage2(std::shared_ptr<const Telegram> telegram)
code[2] = telegram->message_data[7];
code[3] = 0;
telegram->read_value(codeNo, 8);
if (!std::isprint(code[0]) || !std::isprint(code[1]) || !std::isprint(code[2])) {
return;
}
// check for valid date, https://github.com/emsesp/EMS-ESP32/issues/204
if (telegram->message_data[10] & 0x80) {
@@ -1955,7 +1963,7 @@ void Boiler::process_HpSilentMode(std::shared_ptr<const Telegram> telegram) {
// Boiler(0x08) -B-> All(0x00), ?(0x0488), data: 8E 00 00 00 00 00 01 03
void Boiler::process_HpValve(std::shared_ptr<const Telegram> telegram) {
// has_bitupdate(telegram, auxHeaterStatus_, 0, 2);
has_bitupdate(telegram, auxHeaterStatus_, 0, 2);
has_update(telegram, auxHeatMixValve_, 7);
has_update(telegram, pc1Rate_, 13); // percent
}
@@ -2970,19 +2978,19 @@ bool Boiler::set_silentMode(const char * value, const int8_t id) {
}
bool Boiler::set_silentFrom(const char * value, const int8_t id) {
int v;
if (!Helpers::value2number(value, v)) {
if (value == nullptr || value[0] < '0' || value[0] > '9') {
return false;
}
auto v = Helpers::string2minutes(value);
write_command(0x484, 52, v / 15, 0x484);
return true;
}
bool Boiler::set_silentTo(const char * value, const int8_t id) {
int v;
if (!Helpers::value2number(value, v)) {
if (value == nullptr || value[0] < '0' || value[0] > '9') {
return false;
}
auto v = Helpers::string2minutes(value);
write_command(0x484, 53, v / 15, 0x484);
return true;
}

View File

@@ -266,6 +266,7 @@ class Boiler : public EMSdevice {
uint8_t auxHeaterOnly_;
uint8_t auxHeaterOff_;
uint8_t auxHeaterStatus_;
uint8_t auxHeaterLevel_;
uint16_t auxHeaterDelay_;
uint8_t silentMode_;
int8_t minTempSilent_;

View File

@@ -82,10 +82,10 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c
DeviceValueUOM::NONE,
MAKE_CF_CB(set_lowNoiseMode));
register_device_value(
DeviceValueTAG::TAG_DEVICE_DATA, &lowNoiseStart_, DeviceValueType::UINT8, FL_(lowNoiseStart), DeviceValueUOM::NONE, MAKE_CF_CB(set_lowNoiseStart), 0, 23);
DeviceValueTAG::TAG_DEVICE_DATA, &lowNoiseStart_, DeviceValueType::UINT8, FL_(lowNoiseStart), DeviceValueUOM::HOURS, MAKE_CF_CB(set_lowNoiseStart), 0, 23);
register_device_value(
DeviceValueTAG::TAG_DEVICE_DATA, &lowNoiseStop_, DeviceValueType::UINT8, FL_(lowNoiseStop), DeviceValueUOM::NONE, MAKE_CF_CB(set_lowNoiseStop), 0, 23);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
DeviceValueTAG::TAG_DEVICE_DATA, &lowNoiseStop_, DeviceValueType::UINT8, FL_(lowNoiseStop), DeviceValueUOM::HOURS, MAKE_CF_CB(set_lowNoiseStop), 0, 23);
register_device_value(DeviceValueTAG::TAG_DHW1,
&hybridDHW_,
DeviceValueType::ENUM,
FL_(enum_comfort2),
@@ -96,25 +96,25 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c
&energyPriceGas_,
DeviceValueType::UINT8,
FL_(energyPriceGas),
DeviceValueUOM::NONE,
DeviceValueUOM::CTKWH,
MAKE_CF_CB(set_energyPriceGas));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&energyPriceEl_,
DeviceValueType::UINT8,
FL_(energyPriceEl),
DeviceValueUOM::NONE,
DeviceValueUOM::CTKWH,
MAKE_CF_CB(set_energyPriceEl));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&energyPricePV_,
DeviceValueType::UINT8,
FL_(energyPricePV),
DeviceValueUOM::NONE,
DeviceValueUOM::CTKWH,
MAKE_CF_CB(set_energyPricePV));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&switchOverTemp_,
DeviceValueType::INT8,
FL_(switchOverTemp),
DeviceValueUOM::NONE,
DeviceValueUOM::DEGREES,
MAKE_CF_CB(set_switchOverTemp));
// Function test
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,

View File

@@ -110,7 +110,7 @@ const char * DeviceValue::DeviceValueUOM_s[] = {
F_(uom_blank), // 0
F_(uom_degrees), F_(uom_degrees), F_(uom_percent), F_(uom_lmin), F_(uom_kwh), F_(uom_wh), FL_(hours)[0], FL_(minutes)[0], F_(uom_ua),
F_(uom_bar), F_(uom_kw), F_(uom_w), F_(uom_kb), FL_(seconds)[0], F_(uom_dbm), F_(uom_fahrenheit), F_(uom_mv), F_(uom_sqm),
F_(uom_m3), F_(uom_l), F_(uom_kmin), F_(uom_k), F_(uom_volts), F_(uom_mbar), F_(uom_lh), F_(uom_blank)
F_(uom_m3), F_(uom_l), F_(uom_kmin), F_(uom_k), F_(uom_volts), F_(uom_mbar), F_(uom_lh), F_(uom_ctkwh), F_(uom_blank)
};

View File

@@ -74,7 +74,8 @@ class DeviceValue {
VOLTS, // 23 - V
MBAR, // 24 - mbar
LH, // 25 - l/h
CONNECTIVITY // 26 - used in HA
CTKWH, // 26 - ct/kWh
CONNECTIVITY // 27 - used in HA
};
// TAG mapping - maps to DeviceValueTAG_s in emsdevice.cpp

View File

@@ -971,7 +971,12 @@ void EMSESP::process_deviceName(std::shared_ptr<const Telegram> telegram) {
char name[16];
uint8_t len = telegram->offset + telegram->message_length - 27;
strlcpy(name, (const char *)&telegram->message_data[27 - telegram->offset], len < 16 ? len : 16);
if (strlen(name)) {
char * c = name;
while (isprint(*c)) {
c++;
};
*c = '\0';
if (strlen(name) > 2) { // https://github.com/emsesp/EMS-ESP32/issues/2166#issuecomment-2454488657
LOG_DEBUG("Model name received for device 0x%02X: %s", telegram->src, name);
for (const auto & emsdevice : emsdevices) {
if (emsdevice->is_device_id(telegram->src)) {
@@ -1462,6 +1467,11 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) {
} else if (first_value == TxService::TX_WRITE_FAIL) {
LOG_ERROR("Last Tx write rejected by host");
txservice_.send_poll(); // close the bus
txservice_.reset_retry_count();
tx_successful = true; // no retries
} else {
txservice_.send_poll(); // close the bus
LOG_ERROR("Last Tx write host reply: 0x%02X", first_value);
}
} else if (tx_state == Telegram::Operation::TX_READ && length == 1) {
EMSbus::tx_state(Telegram::Operation::TX_READ); // reset Tx wait state
@@ -1478,7 +1488,7 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) {
// if telegram is longer read next part with offset +25 for ems+ or +27 for ems1.0
// not for response to raw send commands without read_id set
if ((response_id_ == 0 || read_id_ > 0) && (txservice_.read_next_tx(data[3], length) == read_id_)) {
if ((response_id_ == 0 || read_id_ > 0) && (txservice_.read_next_tx(data[3], length) > 0)) {
read_next_ = true;
txservice_.send(); // read next part withing same poll or:
// txservice_.send_poll(); // close the bus, next request in new poll
@@ -1528,9 +1538,11 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) {
// check for poll to us, if so send top message from Tx queue immediately and quit
if (poll_id == txservice_.get_send_id()) {
txservice_.send();
} else {
// send remote room temperature if active
Roomctrl::send(poll_id);
}
// send remote room temperature if active
Roomctrl::send(poll_id);
return;
} else {
#ifdef EMSESP_UART_DEBUG

View File

@@ -262,6 +262,7 @@ MAKE_WORD_CUSTOM(uom_k, "K")
MAKE_WORD_CUSTOM(uom_volts, "V")
MAKE_WORD_CUSTOM(uom_mbar, "mbar")
MAKE_WORD_CUSTOM(uom_lh, "l/h")
MAKE_WORD_CUSTOM(uom_ctkwh, "ct/kWh")
// MQTT topics and prefixes
MAKE_WORD_CUSTOM(heating_active, "heating_active")

View File

@@ -445,6 +445,7 @@ MAKE_TRANSLATION(maxHeatDhw, "maxheat", "heat limit", "Heizstab Limit für WW",
MAKE_TRANSLATION(auxHeaterOff, "auxheateroff", "disable aux heater", "Zusatzheizer deaktivieren", "Bijverwarming uitsc", "Blockera eltillskott", "wyłącz dogrzewacz", "deaktiver tilleggsvarme", "Désactiver chauff. d'app", "ilave ısıtıcıyı kapat", "disattivare i riscaldatori addizionali", "vypnúť pomocný ohrievač", "zakázat pomocné topení")
MAKE_TRANSLATION(auxHeaterStatus, "auxheaterstatus", "aux heater status", "Zusatzheizerstatus", "Bijverwarming", "Eltillskott Status", "status dogrzewacza", "status el. tillegsvarme", "Chauffage auxiliaire", "ilave ısıtıcı durumu", "stato riscaldatori addizionali", "stav pomocného ohrievača", "stav pomocného topení")
MAKE_TRANSLATION(auxHeaterLevel, "auxheaterlevel", "aux heater level", "Zusatzheizer", "Bijverwarming", "Eltillskott", "dogrzewacza", "el. tillegsvarme", "Chauffage auxiliaire", "ilave ısıtıcı durumu", "riscaldatori addizionali", "pomocného ohrievača", "pomocného topení")
MAKE_TRANSLATION(auxHeaterOnly, "auxheateronly", "aux heater only", "nur Zusatzheizer", "Alleen bijverwarming", "Eltillskott Enbart", "tylko dogrzewacz", "kun el tilleggsvarme", "Que chauffage auxiliaire", "sadece ilave ısıtıvcı", "solo riscaldatori addizionali", "iba pomocný ohrievač", "pouze pomocné topení")
MAKE_TRANSLATION(auxHeaterDelay, "auxheaterdelay", "aux heater on delay", "Zusatzheizer verzögert ein", "Bijverw. vertraagd aan", "Eltillskottfördröjning på", "opóźnienie włączenia dogrzewacza", "Tilleggsvarmer forsinket på", "Chauff app tempo marche", "ilave ısıtıcı beklemede", "ritardo riscaldatori addizionali", "oneskorenie prídavného ohrievača", "zpoždění zapnutí pomocného topení")
MAKE_TRANSLATION(silentMode, "silentmode", "silent mode", "Silentmodus", "Stiller gebruik", "Tyst läge", "tryb cichy", "stille modus", "Fct silencieux", "sessiz mod", "modalità silenziosa", "tichý režim", "tichý režim")

View File

@@ -1 +1 @@
#define EMSESP_APP_VERSION "3.7.1-dev.5"
#define EMSESP_APP_VERSION "3.7.1-dev.6"