Merge branch 'dev' into dev2

This commit is contained in:
MichaelDvP
2024-02-29 14:38:47 +01:00
12 changed files with 287 additions and 156 deletions

View File

@@ -48,6 +48,10 @@ jobs:
run: | run: |
platformio run -e ci_s3 platformio run -e ci_s3
- name: Build E32V2 firmware
run: |
platformio run -e ci_16M
- name: Create a GH Release - name: Create a GH Release
id: 'automatic_releases' id: 'automatic_releases'
uses: 'marvinpinto/action-automatic-releases@latest' uses: 'marvinpinto/action-automatic-releases@latest'

View File

@@ -23,16 +23,16 @@
}, },
"dependencies": { "dependencies": {
"@alova/adapter-xhr": "^1.0.3", "@alova/adapter-xhr": "^1.0.3",
"@babel/core": "^7.23.9", "@babel/core": "^7.24.0",
"@emotion/react": "^11.11.3", "@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.0", "@emotion/styled": "^11.11.0",
"@mui/icons-material": "^5.15.11", "@mui/icons-material": "^5.15.11",
"@mui/material": "^5.15.11", "@mui/material": "^5.15.11",
"@table-library/react-table-library": "4.1.7", "@table-library/react-table-library": "4.1.7",
"@types/imagemin": "^8.0.5", "@types/imagemin": "^8.0.5",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/node": "^20.11.20", "@types/node": "^20.11.23",
"@types/react": "^18.2.58", "@types/react": "^18.2.61",
"@types/react-dom": "^18.2.19", "@types/react-dom": "^18.2.19",
"@types/react-router-dom": "^5.3.3", "@types/react-router-dom": "^5.3.3",
"alova": "^2.17.0", "alova": "^2.17.0",
@@ -45,7 +45,7 @@
"react-dom": "latest", "react-dom": "latest",
"react-dropzone": "^14.2.3", "react-dropzone": "^14.2.3",
"react-icons": "^5.0.1", "react-icons": "^5.0.1",
"react-router-dom": "^6.22.1", "react-router-dom": "^6.22.2",
"react-toastify": "^10.0.4", "react-toastify": "^10.0.4",
"sockette": "^2.0.6", "sockette": "^2.0.6",
"typesafe-i18n": "^5.26.2", "typesafe-i18n": "^5.26.2",
@@ -54,8 +54,8 @@
"devDependencies": { "devDependencies": {
"@preact/compat": "^17.1.2", "@preact/compat": "^17.1.2",
"@preact/preset-vite": "^2.8.1", "@preact/preset-vite": "^2.8.1",
"@typescript-eslint/eslint-plugin": "^7.0.2", "@typescript-eslint/eslint-plugin": "^7.1.0",
"@typescript-eslint/parser": "^7.0.2", "@typescript-eslint/parser": "^7.1.0",
"concurrently": "^8.2.2", "concurrently": "^8.2.2",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",

View File

@@ -216,6 +216,8 @@ const WiFiSettingsForm: FC = () => {
<MenuItem value={44}>11 dBm</MenuItem> <MenuItem value={44}>11 dBm</MenuItem>
<MenuItem value={34}>8.5 dBm</MenuItem> <MenuItem value={34}>8.5 dBm</MenuItem>
<MenuItem value={28}>7 dBm</MenuItem> <MenuItem value={28}>7 dBm</MenuItem>
<MenuItem value={20}>5 dBm</MenuItem>
<MenuItem value={8}>2 dBm</MenuItem>
</TextField> </TextField>
<BlockFormControlLabel <BlockFormControlLabel
control={<Checkbox name="nosleep" checked={data.nosleep} onChange={updateFormValue} />} control={<Checkbox name="nosleep" checked={data.nosleep} onChange={updateFormValue} />}
@@ -257,10 +259,12 @@ const WiFiSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
)} )}
<BlockFormControlLabel {data.enableIPv6 !== undefined && (
control={<Checkbox name="enableIPv6" checked={data.enableIPv6} onChange={updateFormValue} />} <BlockFormControlLabel
label={LL.NETWORK_ENABLE_IPV6()} control={<Checkbox name="enableIPv6" checked={data.enableIPv6} onChange={updateFormValue} />}
/> label={LL.NETWORK_ENABLE_IPV6()}
/>
)}
<BlockFormControlLabel <BlockFormControlLabel
control={<Checkbox name="static_ip_config" checked={data.static_ip_config} onChange={updateFormValue} />} control={<Checkbox name="static_ip_config" checked={data.static_ip_config} onChange={updateFormValue} />}
label={LL.NETWORK_FIXED_IP()} label={LL.NETWORK_FIXED_IP()}

View File

@@ -42,7 +42,7 @@ export interface NetworkSettings {
password: string; password: string;
hostname: string; hostname: string;
static_ip_config: boolean; static_ip_config: boolean;
enableIPv6: boolean; enableIPv6?: boolean;
bandwidth20: boolean; bandwidth20: boolean;
nosleep: boolean; nosleep: boolean;
tx_power: number; tx_power: number;

View File

@@ -86,26 +86,26 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/core@npm:^7.23.9": "@babel/core@npm:^7.24.0":
version: 7.23.9 version: 7.24.0
resolution: "@babel/core@npm:7.23.9" resolution: "@babel/core@npm:7.24.0"
dependencies: dependencies:
"@ampproject/remapping": "npm:^2.2.0" "@ampproject/remapping": "npm:^2.2.0"
"@babel/code-frame": "npm:^7.23.5" "@babel/code-frame": "npm:^7.23.5"
"@babel/generator": "npm:^7.23.6" "@babel/generator": "npm:^7.23.6"
"@babel/helper-compilation-targets": "npm:^7.23.6" "@babel/helper-compilation-targets": "npm:^7.23.6"
"@babel/helper-module-transforms": "npm:^7.23.3" "@babel/helper-module-transforms": "npm:^7.23.3"
"@babel/helpers": "npm:^7.23.9" "@babel/helpers": "npm:^7.24.0"
"@babel/parser": "npm:^7.23.9" "@babel/parser": "npm:^7.24.0"
"@babel/template": "npm:^7.23.9" "@babel/template": "npm:^7.24.0"
"@babel/traverse": "npm:^7.23.9" "@babel/traverse": "npm:^7.24.0"
"@babel/types": "npm:^7.23.9" "@babel/types": "npm:^7.24.0"
convert-source-map: "npm:^2.0.0" convert-source-map: "npm:^2.0.0"
debug: "npm:^4.1.0" debug: "npm:^4.1.0"
gensync: "npm:^1.0.0-beta.2" gensync: "npm:^1.0.0-beta.2"
json5: "npm:^2.2.3" json5: "npm:^2.2.3"
semver: "npm:^6.3.1" semver: "npm:^6.3.1"
checksum: 10/268cdbb86bef1b8ea5b1300f2f325e56a1740a5051360cb228ffeaa0f80282b6674f3a2b4d6466adb0691183759b88d4c37b4a4f77232c84a49ed771c84cdc27 checksum: 10/1e22215cc89e061e0cbfed72f265ad24d363f3e9b24b51e9c4cf3ccb9222260a29a1c1e62edb439cb7e2229a3fce924edd43300500416613236c13fc8d62a947
languageName: node languageName: node
linkType: hard linkType: hard
@@ -304,14 +304,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/helpers@npm:^7.23.9": "@babel/helpers@npm:^7.24.0":
version: 7.23.9 version: 7.24.0
resolution: "@babel/helpers@npm:7.23.9" resolution: "@babel/helpers@npm:7.24.0"
dependencies: dependencies:
"@babel/template": "npm:^7.23.9" "@babel/template": "npm:^7.24.0"
"@babel/traverse": "npm:^7.23.9" "@babel/traverse": "npm:^7.24.0"
"@babel/types": "npm:^7.23.9" "@babel/types": "npm:^7.24.0"
checksum: 10/dd56daac8bbd7ed174bb00fd185926fd449e591d9a00edaceb7ac6edbdd7a8db57e2cb365b4fafda382201752789ced2f7ae010f667eab0f198a4571cda4d2c5 checksum: 10/cc82012161b30185c2698da359c7311cf019f0932f8fcb805e985fec9e0053c354f0534dc9961f3170eee579df6724eecd34b0f5ffaa155cdd456af59fbff86e
languageName: node languageName: node
linkType: hard linkType: hard
@@ -346,12 +346,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/parser@npm:^7.23.9": "@babel/parser@npm:^7.24.0":
version: 7.23.9 version: 7.24.0
resolution: "@babel/parser@npm:7.23.9" resolution: "@babel/parser@npm:7.24.0"
bin: bin:
parser: ./bin/babel-parser.js parser: ./bin/babel-parser.js
checksum: 10/727a7a807100f6a26df859e2f009c4ddbd0d3363287b45daa50bd082ccd0d431d0c4d0e610a91f806e04a1918726cd0f5a0592c9b902a815337feed12e1cafd9 checksum: 10/3e5ebb903a6f71629a9d0226743e37fe3d961e79911d2698b243637f66c4df7e3e0a42c07838bc0e7cc9fcd585d9be8f4134a145b9459ee4a459420fb0d1360b
languageName: node languageName: node
linkType: hard linkType: hard
@@ -421,14 +421,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/template@npm:^7.23.9": "@babel/template@npm:^7.24.0":
version: 7.23.9 version: 7.24.0
resolution: "@babel/template@npm:7.23.9" resolution: "@babel/template@npm:7.24.0"
dependencies: dependencies:
"@babel/code-frame": "npm:^7.23.5" "@babel/code-frame": "npm:^7.23.5"
"@babel/parser": "npm:^7.23.9" "@babel/parser": "npm:^7.24.0"
"@babel/types": "npm:^7.23.9" "@babel/types": "npm:^7.24.0"
checksum: 10/1b011ba9354dc2e646561d54b6862e0df51760e6179faadd79be05825b0b6da04911e4e192df943f1766748da3037fd8493615b38707f7cadb0cf0c96601c170 checksum: 10/8c538338c7de8fac8ada691a5a812bdcbd60bd4a4eb5adae2cc9ee19773e8fb1a724312a00af9e1ce49056ffd3c3475e7287b5668cf6360bfb3f8ac827a06ffe
languageName: node languageName: node
linkType: hard linkType: hard
@@ -450,9 +450,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/traverse@npm:^7.23.9": "@babel/traverse@npm:^7.24.0":
version: 7.23.9 version: 7.24.0
resolution: "@babel/traverse@npm:7.23.9" resolution: "@babel/traverse@npm:7.24.0"
dependencies: dependencies:
"@babel/code-frame": "npm:^7.23.5" "@babel/code-frame": "npm:^7.23.5"
"@babel/generator": "npm:^7.23.6" "@babel/generator": "npm:^7.23.6"
@@ -460,11 +460,11 @@ __metadata:
"@babel/helper-function-name": "npm:^7.23.0" "@babel/helper-function-name": "npm:^7.23.0"
"@babel/helper-hoist-variables": "npm:^7.22.5" "@babel/helper-hoist-variables": "npm:^7.22.5"
"@babel/helper-split-export-declaration": "npm:^7.22.6" "@babel/helper-split-export-declaration": "npm:^7.22.6"
"@babel/parser": "npm:^7.23.9" "@babel/parser": "npm:^7.24.0"
"@babel/types": "npm:^7.23.9" "@babel/types": "npm:^7.24.0"
debug: "npm:^4.3.1" debug: "npm:^4.3.1"
globals: "npm:^11.1.0" globals: "npm:^11.1.0"
checksum: 10/e2bb845f7f229feb7c338f7e150f5f1abc5395dcd3a6a47f63a25242ec3ec6b165f04a6df7d4849468547faee34eb3cf52487eb0bd867a7d3c42fec2a648266f checksum: 10/5cc482248ebb79adcbcf021aab4e0e95bafe2a1736ee4b46abe6f88b59848ad73e15e219db8f06c9a33a14c64257e5b47e53876601e998a8c596accb1b7f4996
languageName: node languageName: node
linkType: hard linkType: hard
@@ -490,14 +490,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/types@npm:^7.23.9": "@babel/types@npm:^7.24.0":
version: 7.23.9 version: 7.24.0
resolution: "@babel/types@npm:7.23.9" resolution: "@babel/types@npm:7.24.0"
dependencies: dependencies:
"@babel/helper-string-parser": "npm:^7.23.4" "@babel/helper-string-parser": "npm:^7.23.4"
"@babel/helper-validator-identifier": "npm:^7.22.20" "@babel/helper-validator-identifier": "npm:^7.22.20"
to-fast-properties: "npm:^2.0.0" to-fast-properties: "npm:^2.0.0"
checksum: 10/bed9634e5fd0f9dc63c84cfa83316c4cb617192db9fedfea464fca743affe93736d7bf2ebf418ee8358751a9d388e303af87a0c050cb5d87d5870c1b0154f6cb checksum: 10/a0b4875ce2e132f9daff0d5b27c7f4c4fcc97f2b084bdc5834e92c9d32592778489029e65d99d00c406da612d87b72d7a236c0afccaa1435c028d0c94c9b6da4
languageName: node languageName: node
linkType: hard linkType: hard
@@ -556,9 +556,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@emotion/react@npm:^11.11.3": "@emotion/react@npm:^11.11.4":
version: 11.11.3 version: 11.11.4
resolution: "@emotion/react@npm:11.11.3" resolution: "@emotion/react@npm:11.11.4"
dependencies: dependencies:
"@babel/runtime": "npm:^7.18.3" "@babel/runtime": "npm:^7.18.3"
"@emotion/babel-plugin": "npm:^11.11.0" "@emotion/babel-plugin": "npm:^11.11.0"
@@ -573,7 +573,7 @@ __metadata:
peerDependenciesMeta: peerDependenciesMeta:
"@types/react": "@types/react":
optional: true optional: true
checksum: 10/f7b98557b7d5236296dda48c2fc8a6cde4af7399758496e9f710f85a80c7d66fee1830966caabd7b237601bfdaca4e1add8c681d1ae4cc3d497fe88958d541c4 checksum: 10/e7da3a1ddc1d72a4179010bdfd17423c13b1a77bf83a8b18271e919fd382d08c62dc2313ed5347acfd1ef85bb1bae8932597647a986e8a1ea1462552716cd495
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1299,10 +1299,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@remix-run/router@npm:1.15.1": "@remix-run/router@npm:1.15.2":
version: 1.15.1 version: 1.15.2
resolution: "@remix-run/router@npm:1.15.1" resolution: "@remix-run/router@npm:1.15.2"
checksum: 10/d262285d155f80779894ee1d9ef07e35421986ba2546378dfe0e3b09397ce71becb6a4677e9efcd4155e2bd3f9f7f7ecbc110cd99bacee6dd7d3e5ce51b7caa8 checksum: 10/2a2c9c062228130d0383328de2757301e878fc268a72f813b60b8463bb7ed2c1fa4018072883af8096982a4b2741ec6eb349587cd7f95acfdf09588d93adea67
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1590,12 +1590,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/node@npm:^20.11.20": "@types/node@npm:^20.11.23":
version: 20.11.20 version: 20.11.23
resolution: "@types/node@npm:20.11.20" resolution: "@types/node@npm:20.11.23"
dependencies: dependencies:
undici-types: "npm:~5.26.4" undici-types: "npm:~5.26.4"
checksum: 10/ff449bdc94810dadb54e0f77dd587c6505ef79ffa5a208c16eb29b223365b188f4c935a3abaf0906a01d05257c3da1f72465594a841d35bcf7b6deac7a6938fb checksum: 10/fc2a86444461fd74a77c565ff6f854f354e5b637eacc42dc1f35bc859025a11bf495a785ca0439a84e0560157491a89735c0dbff48101113334d30d4b20fb1a3
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1670,14 +1670,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/react@npm:^18.2.58": "@types/react@npm:^18.2.61":
version: 18.2.58 version: 18.2.61
resolution: "@types/react@npm:18.2.58" resolution: "@types/react@npm:18.2.61"
dependencies: dependencies:
"@types/prop-types": "npm:*" "@types/prop-types": "npm:*"
"@types/scheduler": "npm:*" "@types/scheduler": "npm:*"
csstype: "npm:^3.0.2" csstype: "npm:^3.0.2"
checksum: 10/ec5e1a7d8acc55551efec7a3d63441d24c7e94b66bf8039944541a8408048668e51b7b4b0b6e8303cdea271b7c6da242cdc7bb8ca501eedf822956edbdbfc67e checksum: 10/74c2920ccca83fc51190ed4eda1066fa6a644197839dd37765fcce93cbd50b7a52b75815ce0083bb95195f886c80b57745314dd49ecbf235fa93d753ae2260bc
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1713,15 +1713,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/eslint-plugin@npm:^7.0.2": "@typescript-eslint/eslint-plugin@npm:^7.1.0":
version: 7.0.2 version: 7.1.0
resolution: "@typescript-eslint/eslint-plugin@npm:7.0.2" resolution: "@typescript-eslint/eslint-plugin@npm:7.1.0"
dependencies: dependencies:
"@eslint-community/regexpp": "npm:^4.5.1" "@eslint-community/regexpp": "npm:^4.5.1"
"@typescript-eslint/scope-manager": "npm:7.0.2" "@typescript-eslint/scope-manager": "npm:7.1.0"
"@typescript-eslint/type-utils": "npm:7.0.2" "@typescript-eslint/type-utils": "npm:7.1.0"
"@typescript-eslint/utils": "npm:7.0.2" "@typescript-eslint/utils": "npm:7.1.0"
"@typescript-eslint/visitor-keys": "npm:7.0.2" "@typescript-eslint/visitor-keys": "npm:7.1.0"
debug: "npm:^4.3.4" debug: "npm:^4.3.4"
graphemer: "npm:^1.4.0" graphemer: "npm:^1.4.0"
ignore: "npm:^5.2.4" ignore: "npm:^5.2.4"
@@ -1734,44 +1734,44 @@ __metadata:
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
checksum: 10/430b2f7ca36ee73dc75c1d677088709f3c9d5bbb4fffa3cfbe1b7d63979ee397f7a4a2a1386e05a04991500fa0ab0dd5272e8603a2b20f42e4bf590603500858 checksum: 10/f0b6b6e6ae2afee1df8dd2fd0c56588f9bb600468be9f255e033709a53371c6434da687e75dcb673503ef4f0416226f4ca3c94c65272828106e39b56aac87334
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/parser@npm:^7.0.2": "@typescript-eslint/parser@npm:^7.1.0":
version: 7.0.2 version: 7.1.0
resolution: "@typescript-eslint/parser@npm:7.0.2" resolution: "@typescript-eslint/parser@npm:7.1.0"
dependencies: dependencies:
"@typescript-eslint/scope-manager": "npm:7.0.2" "@typescript-eslint/scope-manager": "npm:7.1.0"
"@typescript-eslint/types": "npm:7.0.2" "@typescript-eslint/types": "npm:7.1.0"
"@typescript-eslint/typescript-estree": "npm:7.0.2" "@typescript-eslint/typescript-estree": "npm:7.1.0"
"@typescript-eslint/visitor-keys": "npm:7.0.2" "@typescript-eslint/visitor-keys": "npm:7.1.0"
debug: "npm:^4.3.4" debug: "npm:^4.3.4"
peerDependencies: peerDependencies:
eslint: ^8.56.0 eslint: ^8.56.0
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
checksum: 10/18d6e1bda64013f7d66164164c57a10390f7979db55b265062ae9337e11e0921bffca10870e252cd0bd198f79ffa2e87a652e57110e5b1b4cc738453154c205c checksum: 10/39238d37f5a5f7058371ee3882fb7cd8a4579883fc5f13fda645c151fcf8d15e4c0db3ea7ffa7915a55c82451b544e9340c0228b45b83085158cb97974112f19
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/scope-manager@npm:7.0.2": "@typescript-eslint/scope-manager@npm:7.1.0":
version: 7.0.2 version: 7.1.0
resolution: "@typescript-eslint/scope-manager@npm:7.0.2" resolution: "@typescript-eslint/scope-manager@npm:7.1.0"
dependencies: dependencies:
"@typescript-eslint/types": "npm:7.0.2" "@typescript-eslint/types": "npm:7.1.0"
"@typescript-eslint/visitor-keys": "npm:7.0.2" "@typescript-eslint/visitor-keys": "npm:7.1.0"
checksum: 10/773ea6e61f741777e69a469641f3db0d3c2301c0102667825fb235ed5a65c95f6d6b31b19e734b9a215acc0c7c576c65497635b8d5928eeddb58653ceb13d2d5 checksum: 10/3fb18de864331739c1b04fe9e3bb5d926e2fdf0d1fea2871181f68d0fb52325cbc9a5b81da58b7fe7f22d6d58d62b21c83460907146bc2f54ef0720fb3f9037f
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/type-utils@npm:7.0.2": "@typescript-eslint/type-utils@npm:7.1.0":
version: 7.0.2 version: 7.1.0
resolution: "@typescript-eslint/type-utils@npm:7.0.2" resolution: "@typescript-eslint/type-utils@npm:7.1.0"
dependencies: dependencies:
"@typescript-eslint/typescript-estree": "npm:7.0.2" "@typescript-eslint/typescript-estree": "npm:7.1.0"
"@typescript-eslint/utils": "npm:7.0.2" "@typescript-eslint/utils": "npm:7.1.0"
debug: "npm:^4.3.4" debug: "npm:^4.3.4"
ts-api-utils: "npm:^1.0.1" ts-api-utils: "npm:^1.0.1"
peerDependencies: peerDependencies:
@@ -1779,23 +1779,23 @@ __metadata:
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
checksum: 10/63bf19c9f5bbcb0f3e127f509d85dc49be4e5e51781d78f58c96786089e7c909b25d35d0248a6a758e2f7d5b5223d2262c2d597ab71f226af6beb499ae950645 checksum: 10/439e6fadab3df3c21adfd651af4e605e1020c86c8c2400b0127c2ee914646bc73945b4add31ca7201cafeead261ad2958362c339ebdfc0798064d56daeb60661
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/types@npm:7.0.2": "@typescript-eslint/types@npm:7.1.0":
version: 7.0.2 version: 7.1.0
resolution: "@typescript-eslint/types@npm:7.0.2" resolution: "@typescript-eslint/types@npm:7.1.0"
checksum: 10/2cba8a0355cc7357db142fa597d02cf39e1d1cb0ec87c80e91daaa2b87f2a794d2649def9d7b2aa435691c3810d2cbd4cdc21668b19b991863f0d54d4a22da82 checksum: 10/34801a14ea1444a1707de5bd3211f0ea53afc82a3c6c4543092f123267389da607c498d1a7de554ac9f071e6ef488238728a5f279ff2abaa0cbdfaa733899b67
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/typescript-estree@npm:7.0.2": "@typescript-eslint/typescript-estree@npm:7.1.0":
version: 7.0.2 version: 7.1.0
resolution: "@typescript-eslint/typescript-estree@npm:7.0.2" resolution: "@typescript-eslint/typescript-estree@npm:7.1.0"
dependencies: dependencies:
"@typescript-eslint/types": "npm:7.0.2" "@typescript-eslint/types": "npm:7.1.0"
"@typescript-eslint/visitor-keys": "npm:7.0.2" "@typescript-eslint/visitor-keys": "npm:7.1.0"
debug: "npm:^4.3.4" debug: "npm:^4.3.4"
globby: "npm:^11.1.0" globby: "npm:^11.1.0"
is-glob: "npm:^4.0.3" is-glob: "npm:^4.0.3"
@@ -1805,34 +1805,34 @@ __metadata:
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
checksum: 10/307080e29c22fc69f0ce7ab7101e1629e05f45a9e541c250e03d06b61336ab0ccb5f0a7354ee3da4e38d5cade4dd2fb7bb396cd7cbe74c2c4b3e29706a70abcc checksum: 10/7dfc6fc70ff00875728ce5d85a3c5d6cb01435082b20ff9301ebe4d8e4a31a0c997282c762c636937bd66a40b4e0154e2ce98f85d888a6c46d433e9a24c46c4c
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/utils@npm:7.0.2": "@typescript-eslint/utils@npm:7.1.0":
version: 7.0.2 version: 7.1.0
resolution: "@typescript-eslint/utils@npm:7.0.2" resolution: "@typescript-eslint/utils@npm:7.1.0"
dependencies: dependencies:
"@eslint-community/eslint-utils": "npm:^4.4.0" "@eslint-community/eslint-utils": "npm:^4.4.0"
"@types/json-schema": "npm:^7.0.12" "@types/json-schema": "npm:^7.0.12"
"@types/semver": "npm:^7.5.0" "@types/semver": "npm:^7.5.0"
"@typescript-eslint/scope-manager": "npm:7.0.2" "@typescript-eslint/scope-manager": "npm:7.1.0"
"@typescript-eslint/types": "npm:7.0.2" "@typescript-eslint/types": "npm:7.1.0"
"@typescript-eslint/typescript-estree": "npm:7.0.2" "@typescript-eslint/typescript-estree": "npm:7.1.0"
semver: "npm:^7.5.4" semver: "npm:^7.5.4"
peerDependencies: peerDependencies:
eslint: ^8.56.0 eslint: ^8.56.0
checksum: 10/e68bac777419cd529371f7f29f534efaeca130c90ed9723bfc7aac451d61ca3fc4ebd310e2c015e29e8dc7be4734ae46258ca8755897d7f5e3bb502660d5372f checksum: 10/26d64094d8b828ce6cfea660c95cdbd4d0193d338646fc773312093388bc781653fc1ca16977b3be5288579fe43f14c7108fc431da66dd95b6ed680ad44712a0
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/visitor-keys@npm:7.0.2": "@typescript-eslint/visitor-keys@npm:7.1.0":
version: 7.0.2 version: 7.1.0
resolution: "@typescript-eslint/visitor-keys@npm:7.0.2" resolution: "@typescript-eslint/visitor-keys@npm:7.1.0"
dependencies: dependencies:
"@typescript-eslint/types": "npm:7.0.2" "@typescript-eslint/types": "npm:7.1.0"
eslint-visitor-keys: "npm:^3.4.1" eslint-visitor-keys: "npm:^3.4.1"
checksum: 10/da6c1b0729af99216cde3a65d4e91584a81fc6c9dff7ba291089f01bf7262de375f58c4c4246e5fbc29f51258db7725d9c830f82ccbd1cda812fd13c51480cda checksum: 10/c3e98ebf166fd1854adb0e9599dc108cdbbd95f6eb099d31deae2fd1d4df8fcd8dc9c24ad4f509b961ad900b474c246f6b4b228b5711cc504106c3e0f751a11c
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1848,8 +1848,8 @@ __metadata:
resolution: "EMS-ESP@workspace:." resolution: "EMS-ESP@workspace:."
dependencies: dependencies:
"@alova/adapter-xhr": "npm:^1.0.3" "@alova/adapter-xhr": "npm:^1.0.3"
"@babel/core": "npm:^7.23.9" "@babel/core": "npm:^7.24.0"
"@emotion/react": "npm:^11.11.3" "@emotion/react": "npm:^11.11.4"
"@emotion/styled": "npm:^11.11.0" "@emotion/styled": "npm:^11.11.0"
"@mui/icons-material": "npm:^5.15.11" "@mui/icons-material": "npm:^5.15.11"
"@mui/material": "npm:^5.15.11" "@mui/material": "npm:^5.15.11"
@@ -1858,12 +1858,12 @@ __metadata:
"@table-library/react-table-library": "npm:4.1.7" "@table-library/react-table-library": "npm:4.1.7"
"@types/imagemin": "npm:^8.0.5" "@types/imagemin": "npm:^8.0.5"
"@types/lodash-es": "npm:^4.17.12" "@types/lodash-es": "npm:^4.17.12"
"@types/node": "npm:^20.11.20" "@types/node": "npm:^20.11.23"
"@types/react": "npm:^18.2.58" "@types/react": "npm:^18.2.61"
"@types/react-dom": "npm:^18.2.19" "@types/react-dom": "npm:^18.2.19"
"@types/react-router-dom": "npm:^5.3.3" "@types/react-router-dom": "npm:^5.3.3"
"@typescript-eslint/eslint-plugin": "npm:^7.0.2" "@typescript-eslint/eslint-plugin": "npm:^7.1.0"
"@typescript-eslint/parser": "npm:^7.0.2" "@typescript-eslint/parser": "npm:^7.1.0"
alova: "npm:^2.17.0" alova: "npm:^2.17.0"
async-validator: "npm:^4.2.5" async-validator: "npm:^4.2.5"
concurrently: "npm:^8.2.2" concurrently: "npm:^8.2.2"
@@ -1886,7 +1886,7 @@ __metadata:
react-dom: "npm:latest" react-dom: "npm:latest"
react-dropzone: "npm:^14.2.3" react-dropzone: "npm:^14.2.3"
react-icons: "npm:^5.0.1" react-icons: "npm:^5.0.1"
react-router-dom: "npm:^6.22.1" react-router-dom: "npm:^6.22.2"
react-toastify: "npm:^10.0.4" react-toastify: "npm:^10.0.4"
rollup-plugin-visualizer: "npm:^5.12.0" rollup-plugin-visualizer: "npm:^5.12.0"
sockette: "npm:^2.0.6" sockette: "npm:^2.0.6"
@@ -7192,27 +7192,27 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"react-router-dom@npm:^6.22.1": "react-router-dom@npm:^6.22.2":
version: 6.22.1 version: 6.22.2
resolution: "react-router-dom@npm:6.22.1" resolution: "react-router-dom@npm:6.22.2"
dependencies: dependencies:
"@remix-run/router": "npm:1.15.1" "@remix-run/router": "npm:1.15.2"
react-router: "npm:6.22.1" react-router: "npm:6.22.2"
peerDependencies: peerDependencies:
react: ">=16.8" react: ">=16.8"
react-dom: ">=16.8" react-dom: ">=16.8"
checksum: 10/73ab964083bb407773a5c4ca61249ed6b0a1b47fa58c39afca08a361eb25b349be2bcbaf6d89e112b020f6e55e40e62689c9fe2beae524030ce5ccede3c7d9e3 checksum: 10/1469ea32fd5b35d44909c8e64a778620e990b43a1c6f4d5989630e769a9956e0057a54771ccde2e434a9aff7591c02752dcfe0678a1868d4e53411cec7ecf7a8
languageName: node languageName: node
linkType: hard linkType: hard
"react-router@npm:6.22.1": "react-router@npm:6.22.2":
version: 6.22.1 version: 6.22.2
resolution: "react-router@npm:6.22.1" resolution: "react-router@npm:6.22.2"
dependencies: dependencies:
"@remix-run/router": "npm:1.15.1" "@remix-run/router": "npm:1.15.2"
peerDependencies: peerDependencies:
react: ">=16.8" react: ">=16.8"
checksum: 10/f6e814b8e3005f16a5fb0e831f0e4352076cde65ab25448d56dba87a43fd3e102f55f9b366bdf1fbd8136fc1dc141bcec8d6b85d45f309e89180fb50f173744d checksum: 10/744c9c3d3b6f3d031ef8c34d86f16075f96d4487584f2a526f722bc5b05c5879fc5056236b824472530fc5aad0ecf6eef88d2848d5b1a32aab9849bda3a5c839
languageName: node languageName: node
linkType: hard linkType: hard

View File

@@ -39,7 +39,7 @@ void MqttSettingsService::startClient() {
delete _mqttClient; delete _mqttClient;
_mqttClient = nullptr; _mqttClient = nullptr;
} }
#if CONFIG_IDF_TARGET_ESP32S3 #ifndef TASMOTA_SDK
if (_state.enableTLS) { if (_state.enableTLS) {
isSecure = true; isSecure = true;
_mqttClient = new espMqttClientSecure(espMqttClientTypes::UseInternalTask::NO); _mqttClient = new espMqttClientSecure(espMqttClientTypes::UseInternalTask::NO);
@@ -92,7 +92,7 @@ const char * MqttSettingsService::getClientId() {
} }
void MqttSettingsService::setWill(const char * topic) { void MqttSettingsService::setWill(const char * topic) {
#if CONFIG_IDF_TARGET_ESP32S3 #ifndef TASMOTA_SDK
if (_state.enableTLS) { if (_state.enableTLS) {
static_cast<espMqttClientSecure *>(_mqttClient)->setWill(topic, 1, true, "offline"); static_cast<espMqttClientSecure *>(_mqttClient)->setWill(topic, 1, true, "offline");
return; return;
@@ -178,7 +178,7 @@ bool MqttSettingsService::configureMqtt() {
// only connect if WiFi is connected and MQTT is enabled // only connect if WiFi is connected and MQTT is enabled
if (_state.enabled && emsesp::EMSESP::system_.network_connected() && !_state.host.isEmpty()) { if (_state.enabled && emsesp::EMSESP::system_.network_connected() && !_state.host.isEmpty()) {
_reconfigureMqtt = false; _reconfigureMqtt = false;
#if CONFIG_IDF_TARGET_ESP32S3 #ifndef TASMOTA_SDK
if (_state.enableTLS) { if (_state.enableTLS) {
#if EMSESP_DEBUG #if EMSESP_DEBUG
emsesp::EMSESP::logger().debug("Start secure MQTT with rootCA"); emsesp::EMSESP::logger().debug("Start secure MQTT with rootCA");
@@ -208,11 +208,9 @@ bool MqttSettingsService::configureMqtt() {
} }
void MqttSettings::read(MqttSettings & settings, JsonObject root) { void MqttSettings::read(MqttSettings & settings, JsonObject root) {
#if CONFIG_IDF_TARGET_ESP32S3
#ifndef TASMOTA_SDK #ifndef TASMOTA_SDK
root["enableTLS"] = settings.enableTLS; root["enableTLS"] = settings.enableTLS;
root["rootCA"] = settings.rootCA; root["rootCA"] = settings.rootCA;
#endif
#endif #endif
root["enabled"] = settings.enabled; root["enabled"] = settings.enabled;
root["host"] = settings.host; root["host"] = settings.host;
@@ -248,11 +246,11 @@ StateUpdateResult MqttSettings::update(JsonObject root, MqttSettings & settings)
MqttSettings newSettings = {}; MqttSettings newSettings = {};
bool changed = false; bool changed = false;
#if CONFIG_IDF_TARGET_ESP32S3
#ifndef TASMOTA_SDK #ifndef TASMOTA_SDK
newSettings.enableTLS = root["enableTLS"] | false; newSettings.enableTLS = root["enableTLS"] | false;
newSettings.rootCA = root["rootCA"] | ""; newSettings.rootCA = root["rootCA"] | "";
#endif #else
newSettings.enableTLS = false;
#endif #endif
newSettings.enabled = root["enabled"] | FACTORY_MQTT_ENABLED; newSettings.enabled = root["enabled"] | FACTORY_MQTT_ENABLED;
newSettings.host = root["host"] | FACTORY_MQTT_HOST; newSettings.host = root["host"] | FACTORY_MQTT_HOST;
@@ -374,7 +372,7 @@ StateUpdateResult MqttSettings::update(JsonObject root, MqttSettings & settings)
emsesp::EMSESP::mqtt_.set_publish_time_heartbeat(newSettings.publish_time_heartbeat); emsesp::EMSESP::mqtt_.set_publish_time_heartbeat(newSettings.publish_time_heartbeat);
} }
#if CONFIG_IDF_TARGET_ESP32S3 #ifndef TASMOTA_SDK
// strip down to certificate only // strip down to certificate only
newSettings.rootCA.replace("\r", ""); newSettings.rootCA.replace("\r", "");
newSettings.rootCA.replace("\n", ""); newSettings.rootCA.replace("\n", "");

View File

@@ -70,6 +70,9 @@ void NetworkSettingsService::manageSTA() {
// Connect or reconnect as required // Connect or reconnect as required
if ((WiFi.getMode() & WIFI_STA) == 0) { if ((WiFi.getMode() & WIFI_STA) == 0) {
#ifdef TASMOTA_SDK
WiFi.enableIPv6(_state.enableIPv6);
#endif
if (_state.staticIPConfig) { if (_state.staticIPConfig) {
WiFi.config(_state.localIP, _state.gatewayIP, _state.subnetMask, _state.dnsIP1, _state.dnsIP2); // configure for static IP WiFi.config(_state.localIP, _state.gatewayIP, _state.subnetMask, _state.dnsIP1, _state.dnsIP2); // configure for static IP
} }
@@ -388,13 +391,15 @@ void NetworkSettings::read(NetworkSettings & settings, JsonObject root) {
root["password"] = settings.password; root["password"] = settings.password;
root["hostname"] = settings.hostname; root["hostname"] = settings.hostname;
root["static_ip_config"] = settings.staticIPConfig; root["static_ip_config"] = settings.staticIPConfig;
root["enableIPv6"] = settings.enableIPv6;
root["bandwidth20"] = settings.bandwidth20; root["bandwidth20"] = settings.bandwidth20;
root["nosleep"] = settings.nosleep; root["nosleep"] = settings.nosleep;
root["enableMDNS"] = settings.enableMDNS; root["enableMDNS"] = settings.enableMDNS;
root["enableCORS"] = settings.enableCORS; root["enableCORS"] = settings.enableCORS;
root["CORSOrigin"] = settings.CORSOrigin; root["CORSOrigin"] = settings.CORSOrigin;
root["tx_power"] = settings.tx_power; root["tx_power"] = settings.tx_power;
#ifndef TASMOTA_SDK
root["enableIPv6"] = settings.enableIPv6;
#endif
// extended settings // extended settings
JsonUtils::writeIP(root, "local_ip", settings.localIP); JsonUtils::writeIP(root, "local_ip", settings.localIP);
@@ -416,14 +421,17 @@ StateUpdateResult NetworkSettings::update(JsonObject root, NetworkSettings & set
settings.password = root["password"] | FACTORY_WIFI_PASSWORD; settings.password = root["password"] | FACTORY_WIFI_PASSWORD;
settings.hostname = root["hostname"] | FACTORY_WIFI_HOSTNAME; settings.hostname = root["hostname"] | FACTORY_WIFI_HOSTNAME;
settings.staticIPConfig = root["static_ip_config"] | false; settings.staticIPConfig = root["static_ip_config"] | false;
settings.enableIPv6 = root["enableIPv6"] | false;
settings.bandwidth20 = root["bandwidth20"] | false; settings.bandwidth20 = root["bandwidth20"] | false;
settings.tx_power = static_cast<uint8_t>(root["tx_power"] | 0); settings.tx_power = static_cast<uint8_t>(root["tx_power"] | 0);
settings.nosleep = root["nosleep"] | false; settings.nosleep = root["nosleep"] | false;
settings.enableMDNS = root["enableMDNS"] | true; settings.enableMDNS = root["enableMDNS"] | true;
settings.enableCORS = root["enableCORS"] | false; settings.enableCORS = root["enableCORS"] | false;
settings.CORSOrigin = root["CORSOrigin"] | "*"; settings.CORSOrigin = root["CORSOrigin"] | "*";
#ifdef TASMOTA_SDK
settings.enableIPv6 = true;
#else
settings.enableIPv6 = root["enableIPv6"] | false;
#endif
// extended settings // extended settings
JsonUtils::readIP(root, "local_ip", settings.localIP); JsonUtils::readIP(root, "local_ip", settings.localIP);
JsonUtils::readIP(root, "gateway_ip", settings.gatewayIP); JsonUtils::readIP(root, "gateway_ip", settings.gatewayIP);

View File

@@ -1,6 +1,9 @@
#include "NetworkStatus.h" #include "NetworkStatus.h"
#include "../../src/emsesp_stub.hpp" #include "../../src/emsesp_stub.hpp"
#ifdef TASMOTA_SDK
#include "lwip/dns.h"
#endif
NetworkStatus::NetworkStatus(AsyncWebServer * server, SecurityManager * securityManager) { NetworkStatus::NetworkStatus(AsyncWebServer * server, SecurityManager * securityManager) {
server->on(NETWORK_STATUS_SERVICE_PATH, server->on(NETWORK_STATUS_SERVICE_PATH,
@@ -32,8 +35,13 @@ void NetworkStatus::networkStatus(AsyncWebServerRequest * request) {
root["mac_address"] = ETH.macAddress(); root["mac_address"] = ETH.macAddress();
root["subnet_mask"] = ETH.subnetMask().toString(); root["subnet_mask"] = ETH.subnetMask().toString();
root["gateway_ip"] = ETH.gatewayIP().toString(); root["gateway_ip"] = ETH.gatewayIP().toString();
IPAddress dnsIP1 = ETH.dnsIP(0); #ifdef TASMOTA_SDK
IPAddress dnsIP2 = ETH.dnsIP(1); IPAddress dnsIP1 = IPAddress(dns_getserver(0));
IPAddress dnsIP2 = IPAddress(dns_getserver(1));
#else
IPAddress dnsIP1 = ETH.dnsIP(0);
IPAddress dnsIP2 = ETH.dnsIP(1);
#endif
if (IPUtils::isSet(dnsIP1)) { if (IPUtils::isSet(dnsIP1)) {
root["dns_ip_1"] = dnsIP1.toString(); root["dns_ip_1"] = dnsIP1.toString();
} }
@@ -54,8 +62,13 @@ void NetworkStatus::networkStatus(AsyncWebServerRequest * request) {
root["gateway_ip"] = WiFi.gatewayIP().toString(); root["gateway_ip"] = WiFi.gatewayIP().toString();
} }
#ifdef TASMOTA_SDK
IPAddress dnsIP1 = IPAddress(dns_getserver(0));
IPAddress dnsIP2 = IPAddress(dns_getserver(1));
#else
IPAddress dnsIP1 = WiFi.dnsIP(0); IPAddress dnsIP1 = WiFi.dnsIP(0);
IPAddress dnsIP2 = WiFi.dnsIP(1); IPAddress dnsIP2 = WiFi.dnsIP(1);
#endif
if (dnsIP1 != INADDR_NONE) { if (dnsIP1 != INADDR_NONE) {
root["dns_ip_1"] = dnsIP1.toString(); root["dns_ip_1"] = dnsIP1.toString();
} }

View File

@@ -51,7 +51,7 @@ extra_scripts =
[espressi32_base_tasmota] [espressi32_base_tasmota]
; use Tasmota's library which removes some unused libs (like mbedtsl, so no WiFi_secure.h) and increases available heap ; use Tasmota's library which removes some unused libs (like mbedtsl, so no WiFi_secure.h) and increases available heap
; Tasmota Arduino Core 2.0.14 with IPv6 support, based on IDF 4.4.6 ; Tasmota Arduino Core 2.0.14 with IPv6 support, based on IDF 4.4.6
platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.01.00/platform-espressif32.zip platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.01.01/platform-espressif32.zip
; Tasmota Arduino Core 3.0.0-alpha based on IDF v5.1.2 ; Tasmota Arduino Core 3.0.0-alpha based on IDF v5.1.2
; platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.02.10/platform-espressif32.zip ; platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.02.10/platform-espressif32.zip
framework = arduino framework = arduino
@@ -97,19 +97,15 @@ build_flags =
${espressi32_base.build_flags} ${espressi32_base.build_flags}
'-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"' '-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"'
[env:ci_s3_32M] [env:ci_16M]
extends = espressi32_base extends = espressi32_base
extra_scripts = scripts/rename_fw.py extra_scripts = scripts/rename_fw.py
board = lolin_s3 board = esp32dev
board_build.f_cpu = 240000000L board_build.partitions = esp32_partition_16M.csv
board_upload.flash_size = 32MB board_build.extra_flags = -DBOARD_HAS_PSRAM
board_build.partitions = esp32_partition_32M.csv
board_build.flash_mode = opi
board_build.arduino.memory_type: opi_opi
build_unflags = ${common.unbuild_flags}
build_flags = build_flags =
${espressi32_base.build_flags} ${espressi32_base.build_flags}
'-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"' '-DEMSESP_DEFAULT_BOARD_PROFILE="E32V2"'
[env:esp32_4M] [env:esp32_4M]
extends = espressi32_base_tasmota extends = espressi32_base_tasmota
@@ -126,7 +122,7 @@ board_upload.flash_size = 4MB
board_build.partitions = esp32_asym_partition_4M.csv board_build.partitions = esp32_asym_partition_4M.csv
[env:esp32_16M] [env:esp32_16M]
extends = espressi32_base_tasmota extends = espressi32_base
board = esp32dev board = esp32dev
board_build.extra_flags = -DBOARD_HAS_PSRAM board_build.extra_flags = -DBOARD_HAS_PSRAM
board_upload.flash_size = 16MB board_upload.flash_size = 16MB
@@ -174,6 +170,19 @@ build_flags =
${espressi32_base.build_flags} ${espressi32_base.build_flags}
'-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"' '-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"'
[env:esp32_s3_32M]
extends = espressi32_base
board = lolin_s3
board_build.f_cpu = 240000000L
board_upload.flash_size = 32MB
board_build.partitions = esp32_partition_32M.csv
board_build.flash_mode = opi
board_build.arduino.memory_type: opi_opi
build_unflags = ${common.unbuild_flags}
build_flags =
${espressi32_base.build_flags}
'-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"'
; to build and run: pio run -e standalone -t exec ; to build and run: pio run -e standalone -t exec
[env:standalone] [env:standalone]
platform = native platform = native

View File

@@ -64,6 +64,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
register_telegram_type(0xE6, "UBAParametersPlus", true, MAKE_PF_CB(process_UBAParametersPlus)); register_telegram_type(0xE6, "UBAParametersPlus", true, MAKE_PF_CB(process_UBAParametersPlus));
register_telegram_type(0xE9, "UBAMonitorWWPlus", false, MAKE_PF_CB(process_UBAMonitorWWPlus)); register_telegram_type(0xE9, "UBAMonitorWWPlus", false, MAKE_PF_CB(process_UBAMonitorWWPlus));
register_telegram_type(0xEA, "UBAParameterWWPlus", true, MAKE_PF_CB(process_UBAParameterWWPlus)); register_telegram_type(0xEA, "UBAParameterWWPlus", true, MAKE_PF_CB(process_UBAParameterWWPlus));
register_telegram_type(0x28, "WeatherComp", true, MAKE_PF_CB(process_WeatherComp));
} }
if (model() == EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) { if (model() == EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) {
@@ -241,6 +242,16 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
MAKE_CF_CB(set_hyst2_off), MAKE_CF_CB(set_hyst2_off),
0, 0,
20); 20);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &curveOn_, DeviceValueType::BOOL, FL_(curveOn), DeviceValueUOM::NONE, MAKE_CF_CB(set_curveOn));
register_device_value(
DeviceValueTAG::TAG_DEVICE_DATA, &curveBase_, DeviceValueType::UINT, FL_(curveBase), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_curveBase), 20, 90);
register_device_value(
DeviceValueTAG::TAG_DEVICE_DATA, &curveEnd_, DeviceValueType::UINT, FL_(curveEnd), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_curveEnd), 20, 90);
register_device_value(
DeviceValueTAG::TAG_DEVICE_DATA, &summerTemp_, DeviceValueType::UINT, FL_(summertemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_summerTemp), 0, 30);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nofrost_, DeviceValueType::BOOL, FL_(nofrostmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_nofrost));
register_device_value(
DeviceValueTAG::TAG_DEVICE_DATA, &nofrostTemp_, DeviceValueType::UINT, FL_(nofrosttemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_nofrostTemp), 0, 10);
} }
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&heatingActivated_, &heatingActivated_,
@@ -2023,6 +2034,17 @@ void Boiler::process_HIUSettings(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, setReturnTemp_, 2); has_update(telegram, setReturnTemp_, 2);
} }
// Weather compensation, #1642
// boiler(0x08) -W-> Me(0x0B), ?(0x28), data: 00 3C 32 10 00 05
void Boiler::process_WeatherComp(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, curveOn_, 0);
has_update(telegram, curveEnd_, 1);
has_update(telegram, curveBase_, 2);
has_update(telegram, summerTemp_, 3);
has_update(telegram, nofrost_, 4);
has_update(telegram, nofrostTemp_, 5);
}
// HIU Settings // HIU Settings
bool Boiler::set_keepWarmTemp(const char * value, const int8_t id) { bool Boiler::set_keepWarmTemp(const char * value, const int8_t id) {
int v; int v;
@@ -3167,4 +3189,58 @@ bool Boiler::set_nomPower(const char * value, const int8_t id) {
return true; return true;
} }
bool Boiler::set_curveOn(const char * value, const int8_t id) {
bool v;
if (Helpers::value2bool(value, v)) {
write_command(0x28, 0, v ? 0xFF : 0);
return true;
}
return false;
}
bool Boiler::set_curveBase(const char * value, const int8_t id) {
int v;
if (!Helpers::value2temperature(value, v)) {
return false;
}
write_command(0x28, 2, v);
return true;
}
bool Boiler::set_curveEnd(const char * value, const int8_t id) {
int v;
if (!Helpers::value2temperature(value, v)) {
return false;
}
write_command(0x28, 1, v);
return true;
}
bool Boiler::set_summerTemp(const char * value, const int8_t id) {
int v;
if (!Helpers::value2temperature(value, v)) {
return false;
}
write_command(0x28, 3, v);
return true;
}
bool Boiler::set_nofrost(const char * value, const int8_t id) {
bool v;
if (Helpers::value2bool(value, v)) {
write_command(0x28, 4, v ? 0xFF : 0);
return true;
}
return false;
}
bool Boiler::set_nofrostTemp(const char * value, const int8_t id) {
int v;
if (!Helpers::value2temperature(value, v)) {
return false;
}
write_command(0x28, 5, v);
return true;
}
} // namespace emsesp } // namespace emsesp

View File

@@ -155,6 +155,14 @@ class Boiler : public EMSdevice {
uint16_t headertemp_; // see #1317 uint16_t headertemp_; // see #1317
uint16_t heatblock_; // see #1317 uint16_t heatblock_; // see #1317
// weather compensation, see #1642
uint8_t curveOn_;
uint8_t curveBase_;
uint8_t curveEnd_;
uint8_t summerTemp_;
uint8_t nofrost_;
uint8_t nofrostTemp_;
// info // info
uint32_t upTimeTotal_; // Operating time uint32_t upTimeTotal_; // Operating time
uint32_t upTimeControl_; // Operating time control uint32_t upTimeControl_; // Operating time control
@@ -355,6 +363,7 @@ class Boiler : public EMSdevice {
void process_HpSettings3(std::shared_ptr<const Telegram> telegram); void process_HpSettings3(std::shared_ptr<const Telegram> telegram);
void process_HpEnergy(std::shared_ptr<const Telegram> telegram); void process_HpEnergy(std::shared_ptr<const Telegram> telegram);
void process_HpMeters(std::shared_ptr<const Telegram> telegram); void process_HpMeters(std::shared_ptr<const Telegram> telegram);
void process_WeatherComp(std::shared_ptr<const Telegram> telegram);
// HIU // HIU
void process_HIUSettings(std::shared_ptr<const Telegram> telegram); void process_HIUSettings(std::shared_ptr<const Telegram> telegram);
void process_HIUMonitor(std::shared_ptr<const Telegram> telegram); void process_HIUMonitor(std::shared_ptr<const Telegram> telegram);
@@ -536,6 +545,12 @@ class Boiler : public EMSdevice {
bool set_delayBoiler(const char * value, const int8_t id); bool set_delayBoiler(const char * value, const int8_t id);
bool set_tempDiffBoiler(const char * value, const int8_t id); bool set_tempDiffBoiler(const char * value, const int8_t id);
*/ */
bool set_curveOn(const char * value, const int8_t id);
bool set_curveBase(const char * value, const int8_t id);
bool set_curveEnd(const char * value, const int8_t id);
bool set_summerTemp(const char * value, const int8_t id);
bool set_nofrost(const char * value, const int8_t id);
bool set_nofrostTemp(const char * value, const int8_t id);
bool set_nrgHeat(const char * value, const int8_t id); bool set_nrgHeat(const char * value, const int8_t id);
bool set_nrgWw(const char * value, const int8_t id); bool set_nrgWw(const char * value, const int8_t id);

View File

@@ -352,6 +352,10 @@ MAKE_TRANSLATION(pumpMode, "pumpmode", "boiler pump mode", "Kesselpumpen Modus",
MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "", "sprzęgło hydrauliczne", "", "bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.", "nízkostratová hlavica") // TODO translate MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "", "sprzęgło hydrauliczne", "", "bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.", "nízkostratová hlavica") // TODO translate
MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "", "blok grzewczy", "", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.", "vykurovací blok") // TODO translate MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "", "blok grzewczy", "", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.", "vykurovací blok") // TODO translate
MAKE_TRANSLATION(curveOn, "curveon", "heatingcurve on", "Heizkurve an", "", "", "", "", "", "", "", "") // TODO translate
MAKE_TRANSLATION(curveBase, "curvebase", "heatingcurve base", "Heizkurve Basis", "", "", "", "", "", "", "", "") // TODO translate
MAKE_TRANSLATION(curveEnd, "curveend", "heatingcurve end", "Heizkurve Ende", "", "", "", "", "", "", "", "") // TODO translate
// heatpump/compress specific // heatpump/compress specific
MAKE_TRANSLATION(upTimeTotal, "uptimetotal", "heatpump total uptime", "Wärmpepumpe Gesamtbetriebszeit", "", "", "łączny czas pracy pompy ciepła", "", "", "", "", "celková doba prevádzky tepelného čerpadla") // TODO translate MAKE_TRANSLATION(upTimeTotal, "uptimetotal", "heatpump total uptime", "Wärmpepumpe Gesamtbetriebszeit", "", "", "łączny czas pracy pompy ciepła", "", "", "", "", "celková doba prevádzky tepelného čerpadla") // TODO translate
MAKE_TRANSLATION(upTimeControl, "uptimecontrol", "total operating time heat", "Betriebszeit Heizen gesamt", "Totale bedrijfstijd", "Total tid uppvärmning", "łączny czas generowania ciepła", "total driftstid", "durée totale de fonctionnement chauffage", "ısınma toplam işletme süresi", "Tempo di funzionamento totale riscaldamento", "celkový prevádzkový čas tepla") MAKE_TRANSLATION(upTimeControl, "uptimecontrol", "total operating time heat", "Betriebszeit Heizen gesamt", "Totale bedrijfstijd", "Total tid uppvärmning", "łączny czas generowania ciepła", "total driftstid", "durée totale de fonctionnement chauffage", "ısınma toplam işletme süresi", "Tempo di funzionamento totale riscaldamento", "celkový prevádzkový čas tepla")