mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
Merge branch 'dev' into dev2
This commit is contained in:
4
.github/workflows/pre_release.yml
vendored
4
.github/workflows/pre_release.yml
vendored
@@ -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'
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
{data.enableIPv6 !== undefined && (
|
||||||
<BlockFormControlLabel
|
<BlockFormControlLabel
|
||||||
control={<Checkbox name="enableIPv6" checked={data.enableIPv6} onChange={updateFormValue} />}
|
control={<Checkbox name="enableIPv6" checked={data.enableIPv6} onChange={updateFormValue} />}
|
||||||
label={LL.NETWORK_ENABLE_IPV6()}
|
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()}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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", "");
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
#ifdef TASMOTA_SDK
|
||||||
|
IPAddress dnsIP1 = IPAddress(dns_getserver(0));
|
||||||
|
IPAddress dnsIP2 = IPAddress(dns_getserver(1));
|
||||||
|
#else
|
||||||
IPAddress dnsIP1 = ETH.dnsIP(0);
|
IPAddress dnsIP1 = ETH.dnsIP(0);
|
||||||
IPAddress dnsIP2 = ETH.dnsIP(1);
|
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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user