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) - 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) - 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 ## 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) - 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) - Support MQTT Discovery (AD) with Domoticz [#2177](https://github.com/emsesp/EMS-ESP32/issues/2177)
- wwExtra (dhw extra) changed from temperature reading to number - 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 ## Changed

View File

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

View File

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

View File

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

View File

@@ -180,6 +180,7 @@
{ 74, DeviceType::ALERT, "EM10", DeviceFlags::EMS_DEVICE_FLAG_NONE}, { 74, DeviceType::ALERT, "EM10", DeviceFlags::EMS_DEVICE_FLAG_NONE},
// Gateways - 0x48 // 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}, {189, DeviceType::GATEWAY, "KM200, MB LAN 2", DeviceFlags::EMS_DEVICE_FLAG_NONE},
{252, DeviceType::GATEWAY, "K30RF, MX300", 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), FL_(auxHeaterOff),
DeviceValueUOM::NONE, DeviceValueUOM::NONE,
MAKE_CF_CB(set_additionalHeater)); 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, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&auxHeaterDelay_, &auxHeaterDelay_,
DeviceValueType::UINT16, 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 // at this point do a quick check to see if the hot water or heating is active
uint8_t state = EMS_VALUE_UINT8_NOTSET; 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 & 0x01 ? 0x08 : 0; // burnGas
boilerState_ |= state & 0x02 ? 0x01 : 0; // heatingPump boilerState_ |= state & 0x02 ? 0x01 : 0; // heatingPump
boilerState_ |= state & 0x04 ? 0x02 : 0; // 3-way-valve 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) { void Boiler::process_UBAMonitorSlowPlus2(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, absBurnPow_, 13); // current burner absolute power (percent of rating plate power) 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; uint8_t state = EMS_VALUE_UINT8_NOTSET;
boilerState_ = 0; boilerState_ = 0;
if (telegram->read_value(state, 2)) { 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_bitupdate(telegram, hpEA0_, 3, 6);
has_update(telegram, hpCircSpd_, 4); has_update(telegram, hpCircSpd_, 4);
has_update(telegram, hpBrinePumpSpd_, 5); has_update(telegram, hpBrinePumpSpd_, 5);
has_update(telegram, auxHeaterStatus_, 6); has_update(telegram, auxHeaterLevel_, 6);
has_update(telegram, hpActivity_, 7); has_update(telegram, hpActivity_, 7);
has_update(telegram, hpPower_, 11); has_update(telegram, hpPower_, 11);
has_update(telegram, hpCompSpd_, 17); 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]; uint8_t min = telegram->message_data[8];
uint16_t duration = telegram->message_data[9] * 256 + telegram->message_data[10]; 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; 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 // store only the newest code from telegrams 10 and 11
if (date > lastCodeDate_ && lastCodeDate_) { if (date > lastCodeDate_ && lastCodeDate_) {
lastCodeDate_ = date; lastCodeDate_ = date;
@@ -1855,6 +1860,9 @@ void Boiler::process_UBAErrorMessage2(std::shared_ptr<const Telegram> telegram)
code[2] = telegram->message_data[7]; code[2] = telegram->message_data[7];
code[3] = 0; code[3] = 0;
telegram->read_value(codeNo, 8); 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 // check for valid date, https://github.com/emsesp/EMS-ESP32/issues/204
if (telegram->message_data[10] & 0x80) { 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 // 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) { 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, auxHeatMixValve_, 7);
has_update(telegram, pc1Rate_, 13); // percent 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) { bool Boiler::set_silentFrom(const char * value, const int8_t id) {
int v; if (value == nullptr || value[0] < '0' || value[0] > '9') {
if (!Helpers::value2number(value, v)) {
return false; return false;
} }
auto v = Helpers::string2minutes(value);
write_command(0x484, 52, v / 15, 0x484); write_command(0x484, 52, v / 15, 0x484);
return true; return true;
} }
bool Boiler::set_silentTo(const char * value, const int8_t id) { bool Boiler::set_silentTo(const char * value, const int8_t id) {
int v; if (value == nullptr || value[0] < '0' || value[0] > '9') {
if (!Helpers::value2number(value, v)) {
return false; return false;
} }
auto v = Helpers::string2minutes(value);
write_command(0x484, 53, v / 15, 0x484); write_command(0x484, 53, v / 15, 0x484);
return true; return true;
} }

View File

@@ -266,6 +266,7 @@ class Boiler : public EMSdevice {
uint8_t auxHeaterOnly_; uint8_t auxHeaterOnly_;
uint8_t auxHeaterOff_; uint8_t auxHeaterOff_;
uint8_t auxHeaterStatus_; uint8_t auxHeaterStatus_;
uint8_t auxHeaterLevel_;
uint16_t auxHeaterDelay_; uint16_t auxHeaterDelay_;
uint8_t silentMode_; uint8_t silentMode_;
int8_t minTempSilent_; 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, DeviceValueUOM::NONE,
MAKE_CF_CB(set_lowNoiseMode)); MAKE_CF_CB(set_lowNoiseMode));
register_device_value( 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( register_device_value(
DeviceValueTAG::TAG_DEVICE_DATA, &lowNoiseStop_, DeviceValueType::UINT8, FL_(lowNoiseStop), DeviceValueUOM::NONE, MAKE_CF_CB(set_lowNoiseStop), 0, 23); DeviceValueTAG::TAG_DEVICE_DATA, &lowNoiseStop_, DeviceValueType::UINT8, FL_(lowNoiseStop), DeviceValueUOM::HOURS, MAKE_CF_CB(set_lowNoiseStop), 0, 23);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, register_device_value(DeviceValueTAG::TAG_DHW1,
&hybridDHW_, &hybridDHW_,
DeviceValueType::ENUM, DeviceValueType::ENUM,
FL_(enum_comfort2), FL_(enum_comfort2),
@@ -96,25 +96,25 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c
&energyPriceGas_, &energyPriceGas_,
DeviceValueType::UINT8, DeviceValueType::UINT8,
FL_(energyPriceGas), FL_(energyPriceGas),
DeviceValueUOM::NONE, DeviceValueUOM::CTKWH,
MAKE_CF_CB(set_energyPriceGas)); MAKE_CF_CB(set_energyPriceGas));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&energyPriceEl_, &energyPriceEl_,
DeviceValueType::UINT8, DeviceValueType::UINT8,
FL_(energyPriceEl), FL_(energyPriceEl),
DeviceValueUOM::NONE, DeviceValueUOM::CTKWH,
MAKE_CF_CB(set_energyPriceEl)); MAKE_CF_CB(set_energyPriceEl));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&energyPricePV_, &energyPricePV_,
DeviceValueType::UINT8, DeviceValueType::UINT8,
FL_(energyPricePV), FL_(energyPricePV),
DeviceValueUOM::NONE, DeviceValueUOM::CTKWH,
MAKE_CF_CB(set_energyPricePV)); MAKE_CF_CB(set_energyPricePV));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&switchOverTemp_, &switchOverTemp_,
DeviceValueType::INT8, DeviceValueType::INT8,
FL_(switchOverTemp), FL_(switchOverTemp),
DeviceValueUOM::NONE, DeviceValueUOM::DEGREES,
MAKE_CF_CB(set_switchOverTemp)); MAKE_CF_CB(set_switchOverTemp));
// Function test // Function test
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,

View File

@@ -110,7 +110,7 @@ const char * DeviceValue::DeviceValueUOM_s[] = {
F_(uom_blank), // 0 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_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_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 VOLTS, // 23 - V
MBAR, // 24 - mbar MBAR, // 24 - mbar
LH, // 25 - l/h 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 // 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]; char name[16];
uint8_t len = telegram->offset + telegram->message_length - 27; uint8_t len = telegram->offset + telegram->message_length - 27;
strlcpy(name, (const char *)&telegram->message_data[27 - telegram->offset], len < 16 ? len : 16); 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); LOG_DEBUG("Model name received for device 0x%02X: %s", telegram->src, name);
for (const auto & emsdevice : emsdevices) { for (const auto & emsdevice : emsdevices) {
if (emsdevice->is_device_id(telegram->src)) { 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) { } else if (first_value == TxService::TX_WRITE_FAIL) {
LOG_ERROR("Last Tx write rejected by host"); LOG_ERROR("Last Tx write rejected by host");
txservice_.send_poll(); // close the bus 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) { } else if (tx_state == Telegram::Operation::TX_READ && length == 1) {
EMSbus::tx_state(Telegram::Operation::TX_READ); // reset Tx wait state 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 // 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 // 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; read_next_ = true;
txservice_.send(); // read next part withing same poll or: txservice_.send(); // read next part withing same poll or:
// txservice_.send_poll(); // close the bus, next request in new poll // 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 // check for poll to us, if so send top message from Tx queue immediately and quit
if (poll_id == txservice_.get_send_id()) { if (poll_id == txservice_.get_send_id()) {
txservice_.send(); txservice_.send();
} else {
// send remote room temperature if active
Roomctrl::send(poll_id);
} }
// send remote room temperature if active
Roomctrl::send(poll_id);
return; return;
} else { } else {
#ifdef EMSESP_UART_DEBUG #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_volts, "V")
MAKE_WORD_CUSTOM(uom_mbar, "mbar") MAKE_WORD_CUSTOM(uom_mbar, "mbar")
MAKE_WORD_CUSTOM(uom_lh, "l/h") MAKE_WORD_CUSTOM(uom_lh, "l/h")
MAKE_WORD_CUSTOM(uom_ctkwh, "ct/kWh")
// MQTT topics and prefixes // MQTT topics and prefixes
MAKE_WORD_CUSTOM(heating_active, "heating_active") 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(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(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(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(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") 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"