diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md
index 68fc2947e..6e4ea2a1e 100644
--- a/CHANGELOG_LATEST.md
+++ b/CHANGELOG_LATEST.md
@@ -8,6 +8,9 @@
- Add support for Lolin C3 mini [#620](https://github.com/emsesp/EMS-ESP32/pull/620)
- Add Greenstar 30Ri boiler
- Add program memory info
+- Add min/max setting to customizations
+- Adapt min/max if ems-value is not in this range
+- Add heatpump settings for inputs and limits
## Fixed
diff --git a/interface/package-lock.json b/interface/package-lock.json
index 03ebd707e..b90d9de99 100644
--- a/interface/package-lock.json
+++ b/interface/package-lock.json
@@ -12,10 +12,10 @@
"@emotion/styled": "^11.10.4",
"@msgpack/msgpack": "^2.8.0",
"@mui/icons-material": "^5.10.6",
- "@mui/material": "^5.10.6",
+ "@mui/material": "^5.10.7",
"@table-library/react-table-library": "4.0.18",
"@types/lodash": "^4.14.185",
- "@types/node": "^18.7.20",
+ "@types/node": "^18.7.23",
"@types/react": "^18.0.21",
"@types/react-dom": "^18.0.6",
"@types/react-router-dom": "^5.3.3",
@@ -34,8 +34,8 @@
"react-router-dom": "^6.4.1",
"react-scripts": "5.0.1",
"sockette": "^2.0.6",
- "typesafe-i18n": "^5.13.0",
- "typescript": "^4.8.3"
+ "typesafe-i18n": "^5.13.1",
+ "typescript": "^4.8.4"
},
"devDependencies": {
"nodemon": "^2.0.20",
@@ -66,28 +66,28 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz",
- "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz",
+ "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz",
- "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz",
+ "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==",
"dependencies": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
- "@babel/helper-compilation-targets": "^7.19.1",
+ "@babel/generator": "^7.19.3",
+ "@babel/helper-compilation-targets": "^7.19.3",
"@babel/helper-module-transforms": "^7.19.0",
"@babel/helpers": "^7.19.0",
- "@babel/parser": "^7.19.1",
+ "@babel/parser": "^7.19.3",
"@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.1",
- "@babel/types": "^7.19.0",
+ "@babel/traverse": "^7.19.3",
+ "@babel/types": "^7.19.3",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -128,11 +128,11 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz",
- "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz",
+ "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==",
"dependencies": {
- "@babel/types": "^7.19.0",
+ "@babel/types": "^7.19.3",
"@jridgewell/gen-mapping": "^0.3.2",
"jsesc": "^2.5.1"
},
@@ -177,11 +177,11 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz",
- "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz",
+ "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==",
"dependencies": {
- "@babel/compat-data": "^7.19.1",
+ "@babel/compat-data": "^7.19.3",
"@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.21.3",
"semver": "^6.3.0"
@@ -475,9 +475,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz",
- "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz",
+ "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -564,9 +564,9 @@
}
},
"node_modules/@babel/plugin-proposal-decorators": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.1.tgz",
- "integrity": "sha512-LfIKNBBY7Q1OX5C4xAgRQffOg2OnhAo9fnbcOHgOC9Yytm2Sw+4XqHufRYU86tHomzepxtvuVaNO+3EVKR4ivw==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz",
+ "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.19.0",
"@babel/helper-plugin-utils": "^7.19.0",
@@ -1580,9 +1580,9 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.1.tgz",
- "integrity": "sha512-+ILcOU+6mWLlvCwnL920m2Ow3wWx3Wo8n2t5aROQmV55GZt+hOiLvBaa3DNzRjSEHa1aauRs4/YLmkCfFkhhRQ==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz",
+ "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.19.0",
"@babel/helper-plugin-utils": "^7.19.0",
@@ -1625,12 +1625,12 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.1.tgz",
- "integrity": "sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.3.tgz",
+ "integrity": "sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==",
"dependencies": {
- "@babel/compat-data": "^7.19.1",
- "@babel/helper-compilation-targets": "^7.19.1",
+ "@babel/compat-data": "^7.19.3",
+ "@babel/helper-compilation-targets": "^7.19.3",
"@babel/helper-plugin-utils": "^7.19.0",
"@babel/helper-validator-option": "^7.18.6",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
@@ -1698,7 +1698,7 @@
"@babel/plugin-transform-unicode-escapes": "^7.18.10",
"@babel/plugin-transform-unicode-regex": "^7.18.6",
"@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.19.0",
+ "@babel/types": "^7.19.3",
"babel-plugin-polyfill-corejs2": "^0.3.3",
"babel-plugin-polyfill-corejs3": "^0.6.0",
"babel-plugin-polyfill-regenerator": "^0.4.1",
@@ -1799,18 +1799,18 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz",
- "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz",
+ "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==",
"dependencies": {
"@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
+ "@babel/generator": "^7.19.3",
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-function-name": "^7.19.0",
"@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.19.1",
- "@babel/types": "^7.19.0",
+ "@babel/parser": "^7.19.3",
+ "@babel/types": "^7.19.3",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -1819,12 +1819,12 @@
}
},
"node_modules/@babel/types": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz",
- "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz",
+ "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==",
"dependencies": {
"@babel/helper-string-parser": "^7.18.10",
- "@babel/helper-validator-identifier": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -3103,9 +3103,9 @@
}
},
"node_modules/@mui/base": {
- "version": "5.0.0-alpha.98",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.98.tgz",
- "integrity": "sha512-c0U51+K2m57MASpRrmNs6qTXSvktDbVcSjD8zCRPbfuwYWERGGwNxwM3/jsBa4dSojTSmLPnOBFDypl74Ds6yQ==",
+ "version": "5.0.0-alpha.99",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.99.tgz",
+ "integrity": "sha512-D04H6O1c0Jv561yI0SVbpa8MpqpW3G43CwJxV2o6ALfI0DMJ45w07dGafmDchb6aCWTRTdggd3rjgmuzyNwPiQ==",
"dependencies": {
"@babel/runtime": "^7.19.0",
"@emotion/is-prop-valid": "^1.2.0",
@@ -3135,9 +3135,9 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "5.10.6",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.6.tgz",
- "integrity": "sha512-dmyQBqrKmVU6yCSM4GGal5qNXpViXX+/V1t0GA1A5i9QF5Gx6noV/cw0hrSS2ffLT8L2oScq1oTdA6NVIiQ8lg==",
+ "version": "5.10.7",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.7.tgz",
+ "integrity": "sha512-3N0UYVy3MbrHzM3j6f7fIUCZ+bQ1/sSZq143tLxwSssW3Z4AqE83brpr5flEY1Lx+Aowv/cPyQMmZxzRlFCGqw==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui"
@@ -3169,19 +3169,19 @@
}
},
"node_modules/@mui/material": {
- "version": "5.10.6",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.6.tgz",
- "integrity": "sha512-QilW5PAAGSQdN7Cpp4rwSQ1doJAt3ca1a2PHZtr8RLVlpHnXb+qQ8CeDo9+9V2fK5CDNdtTN1F+iJKO43aFBpQ==",
+ "version": "5.10.7",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.7.tgz",
+ "integrity": "sha512-o1jcQGii+q7ORrXhBiMmGzFDaboc1qTgOOC3zDW+NR9ryVzWzL7qEeqoORbgDB5zk9OBsXCjB91fUH/ls5xMwg==",
"dependencies": {
"@babel/runtime": "^7.19.0",
- "@mui/base": "5.0.0-alpha.98",
- "@mui/core-downloads-tracker": "^5.10.6",
- "@mui/system": "^5.10.6",
+ "@mui/base": "5.0.0-alpha.99",
+ "@mui/core-downloads-tracker": "^5.10.7",
+ "@mui/system": "^5.10.7",
"@mui/types": "^7.2.0",
"@mui/utils": "^5.10.6",
"@types/react-transition-group": "^4.4.5",
"clsx": "^1.2.1",
- "csstype": "^3.1.0",
+ "csstype": "^3.1.1",
"prop-types": "^15.8.1",
"react-is": "^18.2.0",
"react-transition-group": "^4.4.5"
@@ -3239,13 +3239,13 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "5.10.6",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.6.tgz",
- "integrity": "sha512-OnVw5xnO4l0XzlJFhKif/RlLenBNhyEQQlSTwB9ApSWB05UAU5ZSbjNsRfyEKvgmQ/fPa+MqPD/dzxbIRCwyeg==",
+ "version": "5.10.7",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.7.tgz",
+ "integrity": "sha512-CCrtW+vvCKEm6pOE/QcutQ+ORC/iE6D1ghscN4l7LE2JXPvTXO/z0yu8Wxug1JEDlWm4r1Qa0PzJe1P9bjKzNA==",
"dependencies": {
"@babel/runtime": "^7.19.0",
"@emotion/cache": "^11.10.3",
- "csstype": "^3.1.0",
+ "csstype": "^3.1.1",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3270,17 +3270,17 @@
}
},
"node_modules/@mui/system": {
- "version": "5.10.6",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.6.tgz",
- "integrity": "sha512-HfQVX7e2xpQ3jtdB/WwtkFVtozMOozyN575/63u8ILHkE8wGDhblmCieAsnyJPFbm7WBW5PCMyzmfr4QyKLaYg==",
+ "version": "5.10.7",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.7.tgz",
+ "integrity": "sha512-kwyhjjKGsgtBRFl6vSqidDZcNKU5S1juTgm4Xi2fyWxaEbIQb9Sh9y0iVP2bNCJzgDr0alLaENOZOEaDWHISAQ==",
"dependencies": {
"@babel/runtime": "^7.19.0",
"@mui/private-theming": "^5.10.6",
- "@mui/styled-engine": "^5.10.6",
+ "@mui/styled-engine": "^5.10.7",
"@mui/types": "^7.2.0",
"@mui/utils": "^5.10.6",
"clsx": "^1.2.1",
- "csstype": "^3.1.0",
+ "csstype": "^3.1.1",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3557,9 +3557,9 @@
"integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg=="
},
"node_modules/@sinclair/typebox": {
- "version": "0.24.42",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.42.tgz",
- "integrity": "sha512-d+2AtrHGyWek2u2ITF0lHRIv6Tt7X0dEHW+0rP+5aDCEjC3fiN2RBjrLD0yU0at52BcZbRGxLbAtXiR0hFCjYw=="
+ "version": "0.24.43",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.43.tgz",
+ "integrity": "sha512-1orQTvtazZmsPeBroJjysvsOQCYV2yjWlebkSY38pl5vr2tdLjEJ+LoxITlGNZaH2RE19WlAwQMkH/7C14wLfw=="
},
"node_modules/@sinonjs/commons": {
"version": "1.8.3",
@@ -3876,9 +3876,9 @@
}
},
"node_modules/@types/babel__traverse": {
- "version": "7.18.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz",
- "integrity": "sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==",
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz",
+ "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==",
"dependencies": {
"@babel/types": "^7.3.0"
}
@@ -4029,9 +4029,9 @@
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
},
"node_modules/@types/node": {
- "version": "18.7.20",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.20.tgz",
- "integrity": "sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ=="
+ "version": "18.7.23",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz",
+ "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
@@ -4039,9 +4039,9 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
"node_modules/@types/prettier": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz",
- "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A=="
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow=="
},
"node_modules/@types/prop-types": {
"version": "15.7.5",
@@ -4191,13 +4191,13 @@
"integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz",
- "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz",
+ "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==",
"dependencies": {
- "@typescript-eslint/scope-manager": "5.38.0",
- "@typescript-eslint/type-utils": "5.38.0",
- "@typescript-eslint/utils": "5.38.0",
+ "@typescript-eslint/scope-manager": "5.38.1",
+ "@typescript-eslint/type-utils": "5.38.1",
+ "@typescript-eslint/utils": "5.38.1",
"debug": "^4.3.4",
"ignore": "^5.2.0",
"regexpp": "^3.2.0",
@@ -4236,11 +4236,11 @@
}
},
"node_modules/@typescript-eslint/experimental-utils": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.38.0.tgz",
- "integrity": "sha512-kzXBRfvGlicgGk4CYuRUqKvwc2s3wHXNssUWWJU18bhMRxriFm3BZWyQ6vEHBRpEIMKB6b7MIQHO+9lYlts19w==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.38.1.tgz",
+ "integrity": "sha512-Zv0EcU0iu64DiVG3pRZU0QYCgANO//U1fS3oEs3eqHD1eIVVcQsFd/T01ckaNbL2H2aCqRojY2xZuMAPcOArEA==",
"dependencies": {
- "@typescript-eslint/utils": "5.38.0"
+ "@typescript-eslint/utils": "5.38.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4254,13 +4254,13 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz",
- "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.1.tgz",
+ "integrity": "sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==",
"dependencies": {
- "@typescript-eslint/scope-manager": "5.38.0",
- "@typescript-eslint/types": "5.38.0",
- "@typescript-eslint/typescript-estree": "5.38.0",
+ "@typescript-eslint/scope-manager": "5.38.1",
+ "@typescript-eslint/types": "5.38.1",
+ "@typescript-eslint/typescript-estree": "5.38.1",
"debug": "^4.3.4"
},
"engines": {
@@ -4280,12 +4280,12 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz",
- "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz",
+ "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==",
"dependencies": {
- "@typescript-eslint/types": "5.38.0",
- "@typescript-eslint/visitor-keys": "5.38.0"
+ "@typescript-eslint/types": "5.38.1",
+ "@typescript-eslint/visitor-keys": "5.38.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4296,12 +4296,12 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz",
- "integrity": "sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz",
+ "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==",
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.38.0",
- "@typescript-eslint/utils": "5.38.0",
+ "@typescript-eslint/typescript-estree": "5.38.1",
+ "@typescript-eslint/utils": "5.38.1",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
@@ -4322,9 +4322,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz",
- "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz",
+ "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -4334,12 +4334,12 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz",
- "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz",
+ "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==",
"dependencies": {
- "@typescript-eslint/types": "5.38.0",
- "@typescript-eslint/visitor-keys": "5.38.0",
+ "@typescript-eslint/types": "5.38.1",
+ "@typescript-eslint/visitor-keys": "5.38.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -4374,14 +4374,14 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz",
- "integrity": "sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz",
+ "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==",
"dependencies": {
"@types/json-schema": "^7.0.9",
- "@typescript-eslint/scope-manager": "5.38.0",
- "@typescript-eslint/types": "5.38.0",
- "@typescript-eslint/typescript-estree": "5.38.0",
+ "@typescript-eslint/scope-manager": "5.38.1",
+ "@typescript-eslint/types": "5.38.1",
+ "@typescript-eslint/typescript-estree": "5.38.1",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
},
@@ -4417,11 +4417,11 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz",
- "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz",
+ "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==",
"dependencies": {
- "@typescript-eslint/types": "5.38.0",
+ "@typescript-eslint/types": "5.38.1",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -5561,9 +5561,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001410",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001410.tgz",
- "integrity": "sha512-QoblBnuE+rG0lc3Ur9ltP5q47lbguipa/ncNMyyGuqPk44FxbScWAeEO+k5fSQ8WekdAK4mWqNs1rADDAiN5xQ==",
+ "version": "1.0.30001412",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz",
+ "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==",
"funding": [
{
"type": "opencollective",
@@ -5904,9 +5904,9 @@
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"node_modules/core-js": {
- "version": "3.25.2",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.2.tgz",
- "integrity": "sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A==",
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.3.tgz",
+ "integrity": "sha512-y1hvKXmPHvm5B7w4ln1S4uc9eV/O5+iFExSRUimnvIph11uaizFR8LFMdONN8hG3P2pipUfX4Y/fR8rAEtcHcQ==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -5914,9 +5914,9 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.25.2",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.2.tgz",
- "integrity": "sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==",
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.3.tgz",
+ "integrity": "sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==",
"dependencies": {
"browserslist": "^4.21.4"
},
@@ -5926,9 +5926,9 @@
}
},
"node_modules/core-js-pure": {
- "version": "3.25.2",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.2.tgz",
- "integrity": "sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA==",
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.3.tgz",
+ "integrity": "sha512-T/7qvgv70MEvRkZ8p6BasLZmOVYKzOaWNBEHAU8FmveCJkl4nko2quqPQOmy6AJIp5MBanhz9no3A94NoRb0XA==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -6755,9 +6755,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.258",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.258.tgz",
- "integrity": "sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A=="
+ "version": "1.4.266",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.266.tgz",
+ "integrity": "sha512-saJTYECxUSv7eSpnXw0XIEvUkP9x4s/x2mm3TVX7k4rIFS6f5TjBih1B5h437WzIhHQjid+d8ouQzPQskMervQ=="
},
"node_modules/emittery": {
"version": "0.8.1",
@@ -7000,12 +7000,12 @@
}
},
"node_modules/eslint": {
- "version": "8.23.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz",
- "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz",
+ "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==",
"dependencies": {
"@eslint/eslintrc": "^1.3.2",
- "@humanwhocodes/config-array": "^0.10.4",
+ "@humanwhocodes/config-array": "^0.10.5",
"@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
"@humanwhocodes/module-importer": "^1.0.1",
"ajv": "^6.10.0",
@@ -9110,9 +9110,9 @@
}
},
"node_modules/is-callable": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.6.tgz",
- "integrity": "sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"engines": {
"node": ">= 0.4"
},
@@ -11055,9 +11055,9 @@
}
},
"node_modules/jest-watch-typeahead/node_modules/@types/yargs": {
- "version": "17.0.12",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.12.tgz",
- "integrity": "sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==",
+ "version": "17.0.13",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz",
+ "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==",
"dependencies": {
"@types/yargs-parser": "*"
}
@@ -16420,9 +16420,9 @@
}
},
"node_modules/typesafe-i18n": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.13.0.tgz",
- "integrity": "sha512-Q72l+LqB37kNT2R39mkTwQy1tuQ7URAahD1QXbR84itO864xvVgdoS8xaRAatp0y2/oU7f+2EzpAK3YGp0g+eA==",
+ "version": "5.13.1",
+ "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.13.1.tgz",
+ "integrity": "sha512-9Cgikxcj+2LAWQGZ8pOQAf14P+aOOcOel/G1kSAXAObA4Htj8R+qgCx9DqUnxjRfugWzM/19ZqGss7dl8Dw7Gg==",
"bin": {
"typesafe-i18n": "cli/typesafe-i18n.mjs"
},
@@ -16435,9 +16435,9 @@
}
},
"node_modules/typescript": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
- "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
+ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -17595,25 +17595,25 @@
}
},
"@babel/compat-data": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz",
- "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg=="
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz",
+ "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw=="
},
"@babel/core": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz",
- "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz",
+ "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==",
"requires": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
- "@babel/helper-compilation-targets": "^7.19.1",
+ "@babel/generator": "^7.19.3",
+ "@babel/helper-compilation-targets": "^7.19.3",
"@babel/helper-module-transforms": "^7.19.0",
"@babel/helpers": "^7.19.0",
- "@babel/parser": "^7.19.1",
+ "@babel/parser": "^7.19.3",
"@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.1",
- "@babel/types": "^7.19.0",
+ "@babel/traverse": "^7.19.3",
+ "@babel/types": "^7.19.3",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -17639,11 +17639,11 @@
}
},
"@babel/generator": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz",
- "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz",
+ "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==",
"requires": {
- "@babel/types": "^7.19.0",
+ "@babel/types": "^7.19.3",
"@jridgewell/gen-mapping": "^0.3.2",
"jsesc": "^2.5.1"
},
@@ -17678,11 +17678,11 @@
}
},
"@babel/helper-compilation-targets": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz",
- "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz",
+ "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==",
"requires": {
- "@babel/compat-data": "^7.19.1",
+ "@babel/compat-data": "^7.19.3",
"@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.21.3",
"semver": "^6.3.0"
@@ -17892,9 +17892,9 @@
}
},
"@babel/parser": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz",
- "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A=="
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz",
+ "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ=="
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.18.6",
@@ -17945,9 +17945,9 @@
}
},
"@babel/plugin-proposal-decorators": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.1.tgz",
- "integrity": "sha512-LfIKNBBY7Q1OX5C4xAgRQffOg2OnhAo9fnbcOHgOC9Yytm2Sw+4XqHufRYU86tHomzepxtvuVaNO+3EVKR4ivw==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz",
+ "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==",
"requires": {
"@babel/helper-create-class-features-plugin": "^7.19.0",
"@babel/helper-plugin-utils": "^7.19.0",
@@ -18574,9 +18574,9 @@
}
},
"@babel/plugin-transform-typescript": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.1.tgz",
- "integrity": "sha512-+ILcOU+6mWLlvCwnL920m2Ow3wWx3Wo8n2t5aROQmV55GZt+hOiLvBaa3DNzRjSEHa1aauRs4/YLmkCfFkhhRQ==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz",
+ "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==",
"requires": {
"@babel/helper-create-class-features-plugin": "^7.19.0",
"@babel/helper-plugin-utils": "^7.19.0",
@@ -18601,12 +18601,12 @@
}
},
"@babel/preset-env": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.1.tgz",
- "integrity": "sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.3.tgz",
+ "integrity": "sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==",
"requires": {
- "@babel/compat-data": "^7.19.1",
- "@babel/helper-compilation-targets": "^7.19.1",
+ "@babel/compat-data": "^7.19.3",
+ "@babel/helper-compilation-targets": "^7.19.3",
"@babel/helper-plugin-utils": "^7.19.0",
"@babel/helper-validator-option": "^7.18.6",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
@@ -18674,7 +18674,7 @@
"@babel/plugin-transform-unicode-escapes": "^7.18.10",
"@babel/plugin-transform-unicode-regex": "^7.18.6",
"@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.19.0",
+ "@babel/types": "^7.19.3",
"babel-plugin-polyfill-corejs2": "^0.3.3",
"babel-plugin-polyfill-corejs3": "^0.6.0",
"babel-plugin-polyfill-regenerator": "^0.4.1",
@@ -18745,29 +18745,29 @@
}
},
"@babel/traverse": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz",
- "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz",
+ "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==",
"requires": {
"@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
+ "@babel/generator": "^7.19.3",
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-function-name": "^7.19.0",
"@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.19.1",
- "@babel/types": "^7.19.0",
+ "@babel/parser": "^7.19.3",
+ "@babel/types": "^7.19.3",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz",
- "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==",
+ "version": "7.19.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz",
+ "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==",
"requires": {
"@babel/helper-string-parser": "^7.18.10",
- "@babel/helper-validator-identifier": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
"to-fast-properties": "^2.0.0"
}
},
@@ -19643,9 +19643,9 @@
"integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ=="
},
"@mui/base": {
- "version": "5.0.0-alpha.98",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.98.tgz",
- "integrity": "sha512-c0U51+K2m57MASpRrmNs6qTXSvktDbVcSjD8zCRPbfuwYWERGGwNxwM3/jsBa4dSojTSmLPnOBFDypl74Ds6yQ==",
+ "version": "5.0.0-alpha.99",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.99.tgz",
+ "integrity": "sha512-D04H6O1c0Jv561yI0SVbpa8MpqpW3G43CwJxV2o6ALfI0DMJ45w07dGafmDchb6aCWTRTdggd3rjgmuzyNwPiQ==",
"requires": {
"@babel/runtime": "^7.19.0",
"@emotion/is-prop-valid": "^1.2.0",
@@ -19658,9 +19658,9 @@
}
},
"@mui/core-downloads-tracker": {
- "version": "5.10.6",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.6.tgz",
- "integrity": "sha512-dmyQBqrKmVU6yCSM4GGal5qNXpViXX+/V1t0GA1A5i9QF5Gx6noV/cw0hrSS2ffLT8L2oScq1oTdA6NVIiQ8lg=="
+ "version": "5.10.7",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.7.tgz",
+ "integrity": "sha512-3N0UYVy3MbrHzM3j6f7fIUCZ+bQ1/sSZq143tLxwSssW3Z4AqE83brpr5flEY1Lx+Aowv/cPyQMmZxzRlFCGqw=="
},
"@mui/icons-material": {
"version": "5.10.6",
@@ -19671,19 +19671,19 @@
}
},
"@mui/material": {
- "version": "5.10.6",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.6.tgz",
- "integrity": "sha512-QilW5PAAGSQdN7Cpp4rwSQ1doJAt3ca1a2PHZtr8RLVlpHnXb+qQ8CeDo9+9V2fK5CDNdtTN1F+iJKO43aFBpQ==",
+ "version": "5.10.7",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.7.tgz",
+ "integrity": "sha512-o1jcQGii+q7ORrXhBiMmGzFDaboc1qTgOOC3zDW+NR9ryVzWzL7qEeqoORbgDB5zk9OBsXCjB91fUH/ls5xMwg==",
"requires": {
"@babel/runtime": "^7.19.0",
- "@mui/base": "5.0.0-alpha.98",
- "@mui/core-downloads-tracker": "^5.10.6",
- "@mui/system": "^5.10.6",
+ "@mui/base": "5.0.0-alpha.99",
+ "@mui/core-downloads-tracker": "^5.10.7",
+ "@mui/system": "^5.10.7",
"@mui/types": "^7.2.0",
"@mui/utils": "^5.10.6",
"@types/react-transition-group": "^4.4.5",
"clsx": "^1.2.1",
- "csstype": "^3.1.0",
+ "csstype": "^3.1.1",
"prop-types": "^15.8.1",
"react-is": "^18.2.0",
"react-transition-group": "^4.4.5"
@@ -19700,28 +19700,28 @@
}
},
"@mui/styled-engine": {
- "version": "5.10.6",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.6.tgz",
- "integrity": "sha512-OnVw5xnO4l0XzlJFhKif/RlLenBNhyEQQlSTwB9ApSWB05UAU5ZSbjNsRfyEKvgmQ/fPa+MqPD/dzxbIRCwyeg==",
+ "version": "5.10.7",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.7.tgz",
+ "integrity": "sha512-CCrtW+vvCKEm6pOE/QcutQ+ORC/iE6D1ghscN4l7LE2JXPvTXO/z0yu8Wxug1JEDlWm4r1Qa0PzJe1P9bjKzNA==",
"requires": {
"@babel/runtime": "^7.19.0",
"@emotion/cache": "^11.10.3",
- "csstype": "^3.1.0",
+ "csstype": "^3.1.1",
"prop-types": "^15.8.1"
}
},
"@mui/system": {
- "version": "5.10.6",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.6.tgz",
- "integrity": "sha512-HfQVX7e2xpQ3jtdB/WwtkFVtozMOozyN575/63u8ILHkE8wGDhblmCieAsnyJPFbm7WBW5PCMyzmfr4QyKLaYg==",
+ "version": "5.10.7",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.7.tgz",
+ "integrity": "sha512-kwyhjjKGsgtBRFl6vSqidDZcNKU5S1juTgm4Xi2fyWxaEbIQb9Sh9y0iVP2bNCJzgDr0alLaENOZOEaDWHISAQ==",
"requires": {
"@babel/runtime": "^7.19.0",
"@mui/private-theming": "^5.10.6",
- "@mui/styled-engine": "^5.10.6",
+ "@mui/styled-engine": "^5.10.7",
"@mui/types": "^7.2.0",
"@mui/utils": "^5.10.6",
"clsx": "^1.2.1",
- "csstype": "^3.1.0",
+ "csstype": "^3.1.1",
"prop-types": "^15.8.1"
}
},
@@ -19877,9 +19877,9 @@
"integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg=="
},
"@sinclair/typebox": {
- "version": "0.24.42",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.42.tgz",
- "integrity": "sha512-d+2AtrHGyWek2u2ITF0lHRIv6Tt7X0dEHW+0rP+5aDCEjC3fiN2RBjrLD0yU0at52BcZbRGxLbAtXiR0hFCjYw=="
+ "version": "0.24.43",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.43.tgz",
+ "integrity": "sha512-1orQTvtazZmsPeBroJjysvsOQCYV2yjWlebkSY38pl5vr2tdLjEJ+LoxITlGNZaH2RE19WlAwQMkH/7C14wLfw=="
},
"@sinonjs/commons": {
"version": "1.8.3",
@@ -20080,9 +20080,9 @@
}
},
"@types/babel__traverse": {
- "version": "7.18.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.1.tgz",
- "integrity": "sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==",
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz",
+ "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==",
"requires": {
"@babel/types": "^7.3.0"
}
@@ -20233,9 +20233,9 @@
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
},
"@types/node": {
- "version": "18.7.20",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.20.tgz",
- "integrity": "sha512-adzY4vLLr5Uivmx8+zfSJ5fbdgKxX8UMtjtl+17n0B1q1Nz8JEmE151vefMdpD+1gyh+77weN4qEhej/O7budQ=="
+ "version": "18.7.23",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz",
+ "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg=="
},
"@types/parse-json": {
"version": "4.0.0",
@@ -20243,9 +20243,9 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
"@types/prettier": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz",
- "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A=="
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow=="
},
"@types/prop-types": {
"version": "15.7.5",
@@ -20395,13 +20395,13 @@
"integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
},
"@typescript-eslint/eslint-plugin": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz",
- "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz",
+ "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==",
"requires": {
- "@typescript-eslint/scope-manager": "5.38.0",
- "@typescript-eslint/type-utils": "5.38.0",
- "@typescript-eslint/utils": "5.38.0",
+ "@typescript-eslint/scope-manager": "5.38.1",
+ "@typescript-eslint/type-utils": "5.38.1",
+ "@typescript-eslint/utils": "5.38.1",
"debug": "^4.3.4",
"ignore": "^5.2.0",
"regexpp": "^3.2.0",
@@ -20420,56 +20420,56 @@
}
},
"@typescript-eslint/experimental-utils": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.38.0.tgz",
- "integrity": "sha512-kzXBRfvGlicgGk4CYuRUqKvwc2s3wHXNssUWWJU18bhMRxriFm3BZWyQ6vEHBRpEIMKB6b7MIQHO+9lYlts19w==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.38.1.tgz",
+ "integrity": "sha512-Zv0EcU0iu64DiVG3pRZU0QYCgANO//U1fS3oEs3eqHD1eIVVcQsFd/T01ckaNbL2H2aCqRojY2xZuMAPcOArEA==",
"requires": {
- "@typescript-eslint/utils": "5.38.0"
+ "@typescript-eslint/utils": "5.38.1"
}
},
"@typescript-eslint/parser": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz",
- "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.1.tgz",
+ "integrity": "sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==",
"requires": {
- "@typescript-eslint/scope-manager": "5.38.0",
- "@typescript-eslint/types": "5.38.0",
- "@typescript-eslint/typescript-estree": "5.38.0",
+ "@typescript-eslint/scope-manager": "5.38.1",
+ "@typescript-eslint/types": "5.38.1",
+ "@typescript-eslint/typescript-estree": "5.38.1",
"debug": "^4.3.4"
}
},
"@typescript-eslint/scope-manager": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz",
- "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz",
+ "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==",
"requires": {
- "@typescript-eslint/types": "5.38.0",
- "@typescript-eslint/visitor-keys": "5.38.0"
+ "@typescript-eslint/types": "5.38.1",
+ "@typescript-eslint/visitor-keys": "5.38.1"
}
},
"@typescript-eslint/type-utils": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz",
- "integrity": "sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz",
+ "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==",
"requires": {
- "@typescript-eslint/typescript-estree": "5.38.0",
- "@typescript-eslint/utils": "5.38.0",
+ "@typescript-eslint/typescript-estree": "5.38.1",
+ "@typescript-eslint/utils": "5.38.1",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
}
},
"@typescript-eslint/types": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz",
- "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA=="
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz",
+ "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg=="
},
"@typescript-eslint/typescript-estree": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz",
- "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz",
+ "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==",
"requires": {
- "@typescript-eslint/types": "5.38.0",
- "@typescript-eslint/visitor-keys": "5.38.0",
+ "@typescript-eslint/types": "5.38.1",
+ "@typescript-eslint/visitor-keys": "5.38.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -20488,14 +20488,14 @@
}
},
"@typescript-eslint/utils": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz",
- "integrity": "sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz",
+ "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==",
"requires": {
"@types/json-schema": "^7.0.9",
- "@typescript-eslint/scope-manager": "5.38.0",
- "@typescript-eslint/types": "5.38.0",
- "@typescript-eslint/typescript-estree": "5.38.0",
+ "@typescript-eslint/scope-manager": "5.38.1",
+ "@typescript-eslint/types": "5.38.1",
+ "@typescript-eslint/typescript-estree": "5.38.1",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
},
@@ -20517,11 +20517,11 @@
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.38.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz",
- "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==",
+ "version": "5.38.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz",
+ "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==",
"requires": {
- "@typescript-eslint/types": "5.38.0",
+ "@typescript-eslint/types": "5.38.1",
"eslint-visitor-keys": "^3.3.0"
}
},
@@ -21399,9 +21399,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001410",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001410.tgz",
- "integrity": "sha512-QoblBnuE+rG0lc3Ur9ltP5q47lbguipa/ncNMyyGuqPk44FxbScWAeEO+k5fSQ8WekdAK4mWqNs1rADDAiN5xQ=="
+ "version": "1.0.30001412",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz",
+ "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA=="
},
"case-sensitive-paths-webpack-plugin": {
"version": "2.4.0",
@@ -21657,22 +21657,22 @@
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"core-js": {
- "version": "3.25.2",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.2.tgz",
- "integrity": "sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A=="
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.3.tgz",
+ "integrity": "sha512-y1hvKXmPHvm5B7w4ln1S4uc9eV/O5+iFExSRUimnvIph11uaizFR8LFMdONN8hG3P2pipUfX4Y/fR8rAEtcHcQ=="
},
"core-js-compat": {
- "version": "3.25.2",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.2.tgz",
- "integrity": "sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==",
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.3.tgz",
+ "integrity": "sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==",
"requires": {
"browserslist": "^4.21.4"
}
},
"core-js-pure": {
- "version": "3.25.2",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.2.tgz",
- "integrity": "sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA=="
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.3.tgz",
+ "integrity": "sha512-T/7qvgv70MEvRkZ8p6BasLZmOVYKzOaWNBEHAU8FmveCJkl4nko2quqPQOmy6AJIp5MBanhz9no3A94NoRb0XA=="
},
"core-util-is": {
"version": "1.0.3",
@@ -22255,9 +22255,9 @@
}
},
"electron-to-chromium": {
- "version": "1.4.258",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.258.tgz",
- "integrity": "sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A=="
+ "version": "1.4.266",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.266.tgz",
+ "integrity": "sha512-saJTYECxUSv7eSpnXw0XIEvUkP9x4s/x2mm3TVX7k4rIFS6f5TjBih1B5h437WzIhHQjid+d8ouQzPQskMervQ=="
},
"emittery": {
"version": "0.8.1",
@@ -22439,12 +22439,12 @@
}
},
"eslint": {
- "version": "8.23.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz",
- "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==",
+ "version": "8.24.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz",
+ "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==",
"requires": {
"@eslint/eslintrc": "^1.3.2",
- "@humanwhocodes/config-array": "^0.10.4",
+ "@humanwhocodes/config-array": "^0.10.5",
"@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
"@humanwhocodes/module-importer": "^1.0.1",
"ajv": "^6.10.0",
@@ -23950,9 +23950,9 @@
}
},
"is-callable": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.6.tgz",
- "integrity": "sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q=="
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
},
"is-core-module": {
"version": "2.10.0",
@@ -25343,9 +25343,9 @@
}
},
"@types/yargs": {
- "version": "17.0.12",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.12.tgz",
- "integrity": "sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==",
+ "version": "17.0.13",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz",
+ "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==",
"requires": {
"@types/yargs-parser": "*"
}
@@ -29096,15 +29096,15 @@
}
},
"typesafe-i18n": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.13.0.tgz",
- "integrity": "sha512-Q72l+LqB37kNT2R39mkTwQy1tuQ7URAahD1QXbR84itO864xvVgdoS8xaRAatp0y2/oU7f+2EzpAK3YGp0g+eA==",
+ "version": "5.13.1",
+ "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.13.1.tgz",
+ "integrity": "sha512-9Cgikxcj+2LAWQGZ8pOQAf14P+aOOcOel/G1kSAXAObA4Htj8R+qgCx9DqUnxjRfugWzM/19ZqGss7dl8Dw7Gg==",
"requires": {}
},
"typescript": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
- "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig=="
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
+ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ=="
},
"unbox-primitive": {
"version": "1.0.2",
diff --git a/interface/package.json b/interface/package.json
index 80fa0fc84..ee3976892 100644
--- a/interface/package.json
+++ b/interface/package.json
@@ -8,10 +8,10 @@
"@emotion/styled": "^11.10.4",
"@msgpack/msgpack": "^2.8.0",
"@mui/icons-material": "^5.10.6",
- "@mui/material": "^5.10.6",
+ "@mui/material": "^5.10.7",
"@table-library/react-table-library": "4.0.18",
"@types/lodash": "^4.14.185",
- "@types/node": "^18.7.20",
+ "@types/node": "^18.7.23",
"@types/react": "^18.0.21",
"@types/react-dom": "^18.0.6",
"@types/react-router-dom": "^5.3.3",
@@ -30,8 +30,8 @@
"react-router-dom": "^6.4.1",
"react-scripts": "5.0.1",
"sockette": "^2.0.6",
- "typesafe-i18n": "^5.13.0",
- "typescript": "^4.8.3"
+ "typesafe-i18n": "^5.13.1",
+ "typescript": "^4.8.4"
},
"scripts": {
"start": "react-app-rewired start",
diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts
index 8d28c4940..76247ae22 100644
--- a/interface/src/i18n/de/index.ts
+++ b/interface/src/i18n/de/index.ts
@@ -179,7 +179,7 @@ const de: Translation = {
PLATFORM: 'Platform (Platform / SDK)',
UPTIME: 'System Betriebszeit',
CPU_FREQ: 'CPU Frequenz',
- HEAP: 'RAM Speicher (Frei / Max Belegt)',
+ HEAP: 'RAM freier Speicher (Gesamt / max. Block)',
PSRAM: 'PSRAM (Größe / Frei)',
FLASH: 'Flash Speicher (Größe / Geschwindigkeit)',
APPSIZE: 'Programm (Genutzt / Frei)',
@@ -263,7 +263,7 @@ const de: Translation = {
GUEST: 'Gast',
NEW: 'Neuer',
RENAME: 'Ändere',
- ENTITY: 'Einheit'
+ ENTITY: 'Entität'
};
export default de;
diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx
index c2895e291..f3d36fcbb 100644
--- a/interface/src/project/SettingsCustomization.tsx
+++ b/interface/src/project/SettingsCustomization.tsx
@@ -137,7 +137,7 @@ const SettingsCustomization: FC = () => {
}, [LL]);
const setInitialMask = (data: DeviceEntity[]) => {
- setDeviceEntities(data.map((de) => ({ ...de, o_m: de.m, o_cn: de.cn })));
+ setDeviceEntities(data.map((de) => ({ ...de, o_m: de.m, o_cn: de.cn, o_mi: de.mi, o_ma: de.ma })));
};
const fetchDeviceEntities = async (unique_id: number) => {
@@ -249,8 +249,14 @@ const SettingsCustomization: FC = () => {
const saveCustomization = async () => {
if (devices && deviceEntities && selectedDevice !== -1) {
const masked_entities = deviceEntities
- .filter((de) => de.m !== de.o_m || de.cn !== de.o_cn)
- .map((new_de) => new_de.m.toString(16).padStart(2, '0') + new_de.id + (new_de.cn ? '|' + new_de.cn : ''));
+ .filter((de) => de.m !== de.o_m || de.cn !== de.o_cn || de.ma !== de.o_ma || de.mi !== de.o_mi)
+ .map((new_de) =>
+ new_de.m.toString(16).padStart(2, '0') +
+ new_de.id +
+ ((new_de.cn || new_de.mi || new_de.ma) ? '|' : '') +
+ (new_de.cn ? new_de.cn : '') +
+ (new_de.mi ? '>' + new_de.mi : '') +
+ (new_de.ma ? '<' + new_de.ma : ''));
// check size in bytes to match buffer in CPP, which is 4096
const bytes = new TextEncoder().encode(JSON.stringify(masked_entities)).length;
@@ -331,7 +337,7 @@ const SettingsCustomization: FC = () => {
setDeviceEntities((prevState) => {
const newState = prevState.map((obj) => {
if (obj.id === deviceEntity.id) {
- return { ...obj, cn: deviceEntity.cn };
+ return { ...obj, cn: deviceEntity.cn, mi: deviceEntity.mi, ma: deviceEntity.ma };
}
return obj;
});
@@ -627,6 +633,28 @@ const SettingsCustomization: FC = () => {
onChange={updateValue(setDeviceEntity)}
/>
+ {typeof de.v === 'number' && de.w && (
+ <>
+
+
+
+
+
+
+ >
+ )}
diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts
index 7cac14bd7..5241cb315 100644
--- a/interface/src/project/types.ts
+++ b/interface/src/project/types.ts
@@ -142,6 +142,10 @@ export interface DeviceEntity {
o_m?: number; // original mask before edits
o_cn?: string; // original cn before edits
w: boolean; // writeable
+ mi?: string; // min value
+ ma?: string; // max value
+ o_mi?: string;
+ o_ma?: string;
}
export interface CustomEntities {
diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp
index 54b87ed2e..d63260189 100644
--- a/src/devices/boiler.cpp
+++ b/src/devices/boiler.cpp
@@ -178,6 +178,9 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
register_telegram_type(0x48D, F("HpPower"), true, MAKE_PF_CB(process_HpPower));
register_telegram_type(0x48F, F("HpOutdoor"), false, MAKE_PF_CB(process_HpOutdoor));
register_telegram_type(0x48A, F("HpPool"), true, MAKE_PF_CB(process_HpPool));
+ register_telegram_type(0x4A2, F("HpInput"), false, MAKE_PF_CB(process_HpInput));
+ register_telegram_type(0x486, F("HpInConfig"), false, MAKE_PF_CB(process_HpInConfig));
+ register_telegram_type(0x492, F("HpHeaterConfig"), false, MAKE_PF_CB(process_HpHeaterConfig));
}
/*
@@ -497,6 +500,59 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
FL_(poolSetTemp),
DeviceValueUOM::DEGREES,
MAKE_CF_CB(set_pool_temp));
+ // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[0].state, DeviceValueType::BOOL, FL_(hpInput1), DeviceValueUOM::NONE);
+ register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
+ &hpInput[0].option,
+ DeviceValueType::STRING,
+ FL_(tpl_input),
+ FL_(hpIn1Opt),
+ DeviceValueUOM::NONE,
+ MAKE_CF_CB(set_HpIn1Logic));
+ // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[1].state, DeviceValueType::BOOL, FL_(hpInput2), DeviceValueUOM::NONE);
+ register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
+ &hpInput[1].option,
+ DeviceValueType::STRING,
+ FL_(tpl_input),
+ FL_(hpIn2Opt),
+ DeviceValueUOM::NONE,
+ MAKE_CF_CB(set_HpIn2Logic));
+ // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[2].state, DeviceValueType::BOOL, FL_(hpInput3), DeviceValueUOM::NONE);
+ register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
+ &hpInput[2].option,
+ DeviceValueType::STRING,
+ FL_(tpl_input),
+ FL_(hpIn3Opt),
+ DeviceValueUOM::NONE,
+ MAKE_CF_CB(set_HpIn3Logic));
+ // register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpInput[3].state, DeviceValueType::BOOL, FL_(hpInput4), DeviceValueUOM::NONE);
+ register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
+ &hpInput[3].option,
+ DeviceValueType::STRING,
+ FL_(tpl_input4),
+ FL_(hpIn4Opt),
+ DeviceValueUOM::NONE,
+ MAKE_CF_CB(set_HpIn4Logic));
+ register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
+ &maxHeatComp_,
+ DeviceValueType::ENUM,
+ FL_(enum_maxHeat),
+ FL_(maxHeatComp),
+ DeviceValueUOM::NONE,
+ MAKE_CF_CB(set_maxHeatComp));
+ register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
+ &maxHeatHeat_,
+ DeviceValueType::ENUM,
+ FL_(enum_maxHeat),
+ FL_(maxHeatHeat),
+ DeviceValueUOM::NONE,
+ MAKE_CF_CB(set_maxHeatHeat));
+ register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
+ &maxHeatDhw_,
+ DeviceValueType::ENUM,
+ FL_(enum_maxHeat),
+ FL_(maxHeatDhw),
+ DeviceValueUOM::NONE,
+ MAKE_CF_CB(set_maxHeatDhw));
}
// dhw - DEVICE_DATA_ww topic
@@ -1093,6 +1149,44 @@ void Boiler::process_HpPool(std::shared_ptr telegram) {
has_update(telegram, poolSetTemp_, 1);
}
+// Heatpump inputs - type 0x4A2
+// Boiler(0x08) -> All(0x00), ?(0x04A2), data: 02 01 01 00 01 00
+void Boiler::process_HpInput(std::shared_ptr telegram) {
+ has_update(telegram, hpInput[0].state, 2);
+ has_update(telegram, hpInput[1].state, 3);
+ has_update(telegram, hpInput[2].state, 4);
+ has_update(telegram, hpInput[3].state, 5);
+}
+
+// Heatpump inputs settings- type 0x486
+// Boiler(0x08) -> All(0x00), ?(0x0486), data: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+// Boiler(0x08) -> All(0x00), ?(0x0486), data: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 00 00 00 00 (offset 25)
+// Boiler(0x08) -> All(0x00), ?(0x0486), data: 00 00 (offset 51)
+void Boiler::process_HpInConfig(std::shared_ptr telegram) {
+ char option[12];
+ for (uint8_t i = 0; i < 2; i++) {
+ for (uint8_t j = 0; j < 11; j++) {
+ option[j] = hpInput[i].option[j] - '0';
+ telegram->read_value(option[j], j * 4 + i);
+ option[j] = option[j] ? '1' : '0';
+ }
+ option[11] = '\0'; // terminate string
+ has_update(hpInput[i].option, option, 12);
+ }
+ for (uint8_t j = 0; j < 9; j++) {
+ option[j] = hpInput[3].option[j] - '0';
+ telegram->read_value(option[j], 42 + j);
+ option[j] = option[j] ? '1' : '0';
+ }
+ option[9] = '\0'; // terminate string
+ has_update(hpInput[3].option, option, 12);
+}
+
+void Boiler::process_HpHeaterConfig(std::shared_ptr telegram) {
+ has_update(maxHeatComp_, 2);
+ has_update(maxHeatHeat_, 3);
+ has_update(maxHeatDhw_, 4);
+}
// 0x2A - MC110Status
// e.g. 88 00 2A 00 00 00 00 00 00 00 00 00 D2 00 00 80 00 00 01 08 80 00 02 47 00
@@ -1335,6 +1429,9 @@ void Boiler::process_amCommandMessage(std::shared_ptr telegram)
// pos 6: boiler blocking 0-off, 1-on
}
+// 0x0550 AM200 broadcasted message, all 27 bytes unkown
+// Rx: 60 00 FF 00 04 50 00 FF 00 FF FF 00 0D 00 01 00 00 00 00 01 03 01 00 03 00 2D 19 C8 02 94 00 4A
+// Rx: 60 00 FF 19 04 50 00 FF FF 39
void Boiler::process_amExtraMessage(std::shared_ptr telegram) {
}
@@ -2241,4 +2338,48 @@ bool Boiler::set_emergency_ops(const char * value, const int8_t id) {
return true;
}
+bool Boiler::set_HpInLogic(const char * value, const int8_t id) {
+ if (id == 0 || id > 4) {
+ return false;
+ }
+ bool v;
+ if (Helpers::value2bool(value, v)) {
+ write_command(0x486, id == 4 ? 42 : id, v ? 1 : 0, 0x486);
+ return true;
+ }
+ if (strlen(value) == 11 && id != 4) {
+ uint8_t v[11];
+ for (uint8_t i = 0; i < 11; i++) {
+ v[i] = value[i] - '0';
+ if (v[i] > 1) {
+ return false;
+ }
+ write_command(0x486, i * 3 + id - 1, v[i]);
+ }
+ return true;
+ }
+ // input 4
+ if (strlen(value) == 8 && id == 4) {
+ uint8_t v[11];
+ for (uint8_t i = 0; i < 8; i++) {
+ v[i] = value[i] - '0';
+ if (v[i] > 1) {
+ return false;
+ }
+ write_command(0x486, 42 + i, v[i]);
+ }
+ return true;
+ }
+ return false;
+}
+
+bool Boiler::set_maxHeat(const char * value, const int8_t id) {
+ uint8_t v;
+ if (!Helpers::value2enum(value, v, FL_(enum_maxHeat))) {
+ return false;
+ }
+ write_command(0x492, id, v, 0x492);
+ return true;
+}
+
} // namespace emsesp
diff --git a/src/devices/boiler.h b/src/devices/boiler.h
index 78ea8c729..2a962d847 100644
--- a/src/devices/boiler.h
+++ b/src/devices/boiler.h
@@ -198,6 +198,17 @@ class Boiler : public EMSdevice {
// Pool unit
int8_t poolSetTemp_;
+ // Inputs
+ struct {
+ uint8_t state;
+ char option[12]; // logic, block_comp, block_dhw, block_heat, block_cool, overheat_protect, evu_blocktime1,2,3, block_heater, Solar
+ } hpInput[4];
+
+ // Heater limits
+ uint8_t maxHeatComp_;
+ uint8_t maxHeatHeat_;
+ uint8_t maxHeatDhw_;
+
// Alternative Heatsource AM200
int16_t cylTopTemp_; // TB1
int16_t cylCenterTemp_; // TB2
@@ -269,6 +280,9 @@ class Boiler : public EMSdevice {
void process_HpPower(std::shared_ptr telegram);
void process_HpOutdoor(std::shared_ptr telegram);
void process_HpPool(std::shared_ptr telegram);
+ void process_HpInput(std::shared_ptr telegram);
+ void process_HpInConfig(std::shared_ptr telegram);
+ void process_HpHeaterConfig(std::shared_ptr telegram);
void process_HybridHp(std::shared_ptr telegram);
void process_amTempMessage(std::shared_ptr telegram);
void process_amStatusMessage(std::shared_ptr telegram);
@@ -331,6 +345,29 @@ class Boiler : public EMSdevice {
bool set_blockTerm(const char * value, const int8_t id); // pos 17: Config of block terminal: NO(00), NC(01)
bool set_blockHyst(const char * value, const int8_t id); // pos 14?: Hyst. for bolier block (K)
bool set_releaseWait(const char * value, const int8_t id); // pos 15: Boiler release wait time (min)
+ bool set_HpInLogic(const char * value, const int8_t id);
+ bool set_HpIn1Logic(const char * value, const int8_t id) {
+ return set_HpInLogic(value, 1);
+ }
+ bool set_HpIn2Logic(const char * value, const int8_t id) {
+ return set_HpInLogic(value, 2);
+ }
+ bool set_HpIn3Logic(const char * value, const int8_t id) {
+ return set_HpInLogic(value, 3);
+ }
+ bool set_HpIn4Logic(const char * value, const int8_t id) {
+ return set_HpInLogic(value, 4);
+ }
+ bool set_maxHeat(const char * value, const int8_t id);
+ bool set_maxHeatComp(const char * value, const int8_t id) {
+ return set_maxHeat(value, 2);
+ }
+ bool set_maxHeatHeat(const char * value, const int8_t id) {
+ return set_maxHeat(value, 3);
+ }
+ bool set_maxHeatDhw(const char * value, const int8_t id) {
+ return set_maxHeat(value, 4);
+ }
/*
bool set_hybridStrategy(const char * value, const int8_t id);
diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp
index 36f9516cf..d1f018194 100644
--- a/src/devices/thermostat.cpp
+++ b/src/devices/thermostat.cpp
@@ -686,6 +686,7 @@ void Thermostat::process_JunkersSet(std::shared_ptr telegram) {
has_update(telegram, hc->control, 1); // remote: 0-off, 1-FB10, 2-FB100
has_enumupdate(telegram, hc->program, 13, 1); // 1-6: 1 = A, 2 = B,...
has_enumupdate(telegram, hc->mode, 14, 1); // 0 = nofrost, 1 = eco, 2 = heat, 3 = auto
+ has_update(telegram, hc->roomsensor, 9); // 1-intern, 2-extern, 3-autoselect the lower value
}
// type 0x0179, ff
@@ -1702,6 +1703,24 @@ bool Thermostat::set_control(const char * value, const int8_t id) {
return false;
}
+// Set sensor for Junkers, 1-external (from remote), 2-internal, 3-minimum value from int/ext
+bool Thermostat::set_roomsensor(const char * value, const int8_t id) {
+ uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id;
+ std::shared_ptr hc = heating_circuit(hc_num);
+ if (hc == nullptr) {
+ return false;
+ }
+
+ uint8_t ctrl = 0;
+ if (model() == EMS_DEVICE_FLAG_JUNKERS && !has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) {
+ if (Helpers::value2enum(value, ctrl, FL_(enum_roomsensor))) {
+ write_command(set_typeids[hc->hc()], 9, ctrl);
+ return true;
+ }
+ }
+ return false;
+}
+
// sets the thermostat ww working mode, where mode is a string, ems and ems+
bool Thermostat::set_wwmode(const char * value, const int8_t id) {
uint8_t set = 0xFF;
@@ -3715,7 +3734,9 @@ void Thermostat::register_device_values() {
DeviceValueType::INT,
FL_(ibaMinExtTemperature),
DeviceValueUOM::DEGREES,
- MAKE_CF_CB(set_minexttemp));
+ MAKE_CF_CB(set_minexttemp),
+ -30,
+ 0);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&tempsensor1_,
DeviceValueType::SHORT,
@@ -3781,12 +3802,8 @@ void Thermostat::register_device_values() {
MAKE_CF_CB(set_wwDisinfectHour),
0,
23);
- register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
- &wwMaxTemp_,
- DeviceValueType::UINT,
- FL_(wwMaxTemp),
- DeviceValueUOM::DEGREES,
- MAKE_CF_CB(set_wwMaxTemp));
+ register_device_value(
+ DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwMaxTemp_, DeviceValueType::UINT, FL_(wwMaxTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwMaxTemp), 60, 80);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
&wwOneTimeKey_,
DeviceValueType::BOOL,
@@ -3930,7 +3947,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrselTemp, DeviceValueType::SHORT, seltemp_divider, FL_(selRoomTemp), DeviceValueUOM::DEGREES);
} else {
- register_device_value(tag, &hc->selTemp, DeviceValueType::SHORT, seltemp_divider, FL_(selRoomTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_temp), 0, 29);
+ register_device_value(tag, &hc->selTemp, DeviceValueType::SHORT, seltemp_divider, FL_(selRoomTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_temp), 0, 30);
}
register_device_value(tag, &hc->roomTemp, DeviceValueType::SHORT, roomtemp_divider, FL_(roomTemp), DeviceValueUOM::DEGREES);
register_device_value(tag, &hc->climate, DeviceValueType::ENUM, FL_(enum_climate), FL_(climate), DeviceValueUOM::NONE);
@@ -4121,14 +4138,16 @@ void Thermostat::register_device_values_hc(std::shared_ptrdaytemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(daytemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_daytemp));
register_device_value(
tag, &hc->nighttemp, DeviceValueType::UINT, DeviceValueNumOp::DV_NUMOP_DIV2, FL_(nighttemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_nighttemp));
- register_device_value(tag, &hc->designtemp, DeviceValueType::UINT, FL_(designtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_designtemp));
+ register_device_value(tag, &hc->designtemp, DeviceValueType::UINT, FL_(designtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_designtemp), 30, 90);
register_device_value(tag,
&hc->offsettemp,
DeviceValueType::INT,
DeviceValueNumOp::DV_NUMOP_DIV2,
FL_(offsettemp),
DeviceValueUOM::DEGREES_R,
- MAKE_CF_CB(set_offsettemp));
+ MAKE_CF_CB(set_offsettemp),
+ -5,
+ 5);
register_device_value(tag,
&hc->holidaytemp,
DeviceValueType::UINT,
@@ -4140,13 +4159,13 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummertemp, DeviceValueType::UINT, FL_(summertemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_summertemp), 9, 25);
register_device_value(tag, &hc->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE);
register_device_value(tag, &hc->holidaymode, DeviceValueType::BOOL, FL_(holidaymode), DeviceValueUOM::NONE);
- register_device_value(tag, &hc->nofrosttemp, DeviceValueType::INT, FL_(nofrosttemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_nofrosttemp));
+ register_device_value(tag, &hc->nofrosttemp, DeviceValueType::INT, FL_(nofrosttemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_nofrosttemp), -20, 10);
register_device_value(
tag, &hc->nofrostmode, DeviceValueType::ENUM, FL_(enum_nofrostmode), FL_(nofrostmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_nofrostmode));
- register_device_value(tag, &hc->roominfluence, DeviceValueType::UINT, FL_(roominfluence), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_roominfluence));
- register_device_value(tag, &hc->minflowtemp, DeviceValueType::UINT, FL_(minflowtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_minflowtemp));
- register_device_value(tag, &hc->maxflowtemp, DeviceValueType::UINT, FL_(maxflowtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_maxflowtemp));
- register_device_value(tag, &hc->flowtempoffset, DeviceValueType::UINT, FL_(flowtempoffset), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_flowtempoffset));
+ register_device_value(tag, &hc->roominfluence, DeviceValueType::UINT, FL_(roominfluence), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_roominfluence), 0, 10);
+ register_device_value(tag, &hc->minflowtemp, DeviceValueType::UINT, FL_(minflowtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_minflowtemp), 5, 70);
+ register_device_value(tag, &hc->maxflowtemp, DeviceValueType::UINT, FL_(maxflowtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_maxflowtemp), 30, 90);
+ register_device_value(tag, &hc->flowtempoffset, DeviceValueType::UINT, FL_(flowtempoffset), DeviceValueUOM::DEGREES_R, MAKE_CF_CB(set_flowtempoffset), 0, 20);
register_device_value(
tag, &hc->heatingtype, DeviceValueType::ENUM, FL_(enum_heatingtype), FL_(heatingtype), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatingtype));
register_device_value(tag, &hc->reducemode, DeviceValueType::ENUM, FL_(enum_reducemode), FL_(reducemode), DeviceValueUOM::NONE, MAKE_CF_CB(set_reducemode));
@@ -4156,8 +4175,8 @@ void Thermostat::register_device_values_hc(std::shared_ptrholiday, DeviceValueType::STRING, FL_(tpl_holidays), FL_(holidays), DeviceValueUOM::NONE, MAKE_CF_CB(set_holiday));
register_device_value(tag, &hc->vacation, DeviceValueType::STRING, FL_(tpl_holidays), FL_(vacations), DeviceValueUOM::NONE, MAKE_CF_CB(set_vacation));
register_device_value(tag, &hc->program, DeviceValueType::ENUM, FL_(enum_progMode2), FL_(program), DeviceValueUOM::NONE, MAKE_CF_CB(set_program));
- register_device_value(tag, &hc->pause, DeviceValueType::UINT, FL_(pause), DeviceValueUOM::HOURS, MAKE_CF_CB(set_pause));
- register_device_value(tag, &hc->party, DeviceValueType::UINT, FL_(party), DeviceValueUOM::HOURS, MAKE_CF_CB(set_party));
+ register_device_value(tag, &hc->pause, DeviceValueType::UINT, FL_(pause), DeviceValueUOM::HOURS, MAKE_CF_CB(set_pause), 0, 99);
+ register_device_value(tag, &hc->party, DeviceValueType::UINT, FL_(party), DeviceValueUOM::HOURS, MAKE_CF_CB(set_party), 0, 99);
register_device_value(tag,
&hc->tempautotemp,
DeviceValueType::UINT,
@@ -4165,9 +4184,9 @@ void Thermostat::register_device_values_hc(std::shared_ptrnoreducetemp, DeviceValueType::INT, FL_(noreducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_noreducetemp));
- register_device_value(tag, &hc->reducetemp, DeviceValueType::INT, FL_(reducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_reducetemp));
- register_device_value(tag, &hc->vacreducetemp, DeviceValueType::INT, FL_(vacreducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_vacreducetemp));
+ register_device_value(tag, &hc->noreducetemp, DeviceValueType::INT, FL_(noreducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_noreducetemp), -30, 10);
+ register_device_value(tag, &hc->reducetemp, DeviceValueType::INT, FL_(reducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_reducetemp), -20, 10);
+ register_device_value(tag, &hc->vacreducetemp, DeviceValueType::INT, FL_(vacreducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_vacreducetemp), -20, 10);
register_device_value(
tag, &hc->vacreducemode, DeviceValueType::ENUM, FL_(enum_reducemode), FL_(vacreducemode), DeviceValueUOM::NONE, MAKE_CF_CB(set_vacreducemode));
register_device_value(tag,
@@ -4201,6 +4220,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrprogram, DeviceValueType::ENUM, FL_(enum_progMode4), FL_(program), DeviceValueUOM::NONE, MAKE_CF_CB(set_program));
register_device_value(tag, &hc->remotetemp, DeviceValueType::SHORT, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(remotetemp), DeviceValueUOM::DEGREES);
register_device_value(tag, &hc->targetflowtemp, DeviceValueType::UINT, FL_(targetflowtemp), DeviceValueUOM::DEGREES);
+ register_device_value(tag, &hc->roomsensor, DeviceValueType::ENUM, FL_(enum_roomsensor), FL_(roomsensor), DeviceValueUOM::NONE, MAKE_CF_CB(set_roomsensor));
break;
default:
break;
diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h
index a926090dc..c6507076a 100644
--- a/src/devices/thermostat.h
+++ b/src/devices/thermostat.h
@@ -84,10 +84,11 @@ class Thermostat : public EMSdevice {
uint8_t climate;
uint8_t switchonoptimization;
uint8_t statusbyte; // from RC300monitor
-
// RC 10
uint8_t reducehours; // night reduce duration
uint16_t reduceminutes; // remaining minutes to night->day
+ // FW100 temperature
+ uint8_t roomsensor; // 1-intern, 2-extern, 3-autoselect the lower value
uint8_t hc_num() const {
return hc_num_;
@@ -489,6 +490,7 @@ class Thermostat : public EMSdevice {
bool set_electricFactor(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_roomsensor(const char * value, const int8_t id);
};
} // namespace emsesp
diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp
index 3c4ab5170..6e3546e61 100644
--- a/src/emsdevice.cpp
+++ b/src/emsdevice.cpp
@@ -472,6 +472,7 @@ void EMSdevice::add_device_value(uint8_t tag,
// add the device entity
devicevalues_.emplace_back(
device_type_, tag, value_p, type, options, options_single, numeric_operator, short_name, fullname, custom_fullname, uom, has_cmd, min, max, state);
+ devicevalues_.back().set_custom_minmax();
// add a new command if it has a function attached
if (!has_cmd) {
@@ -873,7 +874,7 @@ void EMSdevice::generate_values_web(JsonObject & output) {
// as generate_values_web() but stripped down to only show all entities and their state
// this is used only for WebCustomizationService::device_entities()
void EMSdevice::generate_values_web_customization(JsonArray & output) {
- for (const auto & dv : devicevalues_) {
+ for (auto & dv : devicevalues_) {
// also show commands and entities that have an empty full name
JsonObject obj = output.createNestedObject();
@@ -958,8 +959,9 @@ void EMSdevice::generate_values_web_customization(JsonArray & output) {
}
// add the custom name, is optional
- if (!dv.custom_fullname.empty()) {
- obj["cn"] = dv.custom_fullname;
+ std::string custom_fullname = dv.get_custom_fullname();
+ if (!custom_fullname.empty()) {
+ obj["cn"] = custom_fullname;
}
} else {
// it's a command
@@ -968,6 +970,16 @@ void EMSdevice::generate_values_web_customization(JsonArray & output) {
obj["m"] = dv.state >> 4; // send back the mask state. We're only interested in the high nibble
obj["w"] = dv.has_cmd; // if writable
+
+ // set the custom min and max values if there are any
+ int16_t dv_set_min;
+ uint16_t dv_set_max;
+ if (dv.get_custom_min(dv_set_min)) {
+ obj["mi"] = dv_set_min;
+ }
+ if (dv.get_custom_max(dv_set_max)) {
+ obj["ma"] = dv_set_max;
+ }
}
}
@@ -1009,7 +1021,7 @@ void EMSdevice::setCustomEntity(const std::string & entity_id) {
} else {
dv.custom_fullname = "";
}
-
+ dv.set_custom_minmax();
return;
}
}
@@ -1405,6 +1417,24 @@ bool EMSdevice::generate_values(JsonObject & output, const uint8_t tag_filter, c
// else if (dv.type == DeviceValueType::CMD && output_target != EMSdevice::OUTPUT_TARGET::MQTT) {
// json[name] = "";
// }
+
+ // check for value outside min/max range and adapt the limits to avoid HA complains
+ // Should this also check for api output?
+ if ((output_target == OUTPUT_TARGET::MQTT) && (dv.min != 0 || dv.max != 0)) {
+ if (json[name].is() || json[name].is()) {
+ int v = json[name];
+ if (fahrenheit) {
+ v = (v - (32 * (fahrenheit - 1))) / 1.8; // reset to °C
+ }
+ if (v < dv.min) {
+ dv.min = v;
+ dv.remove_state(DeviceValueState::DV_HA_CONFIG_CREATED);
+ } else if (v > dv.max) {
+ dv.max = v;
+ dv.remove_state(DeviceValueState::DV_HA_CONFIG_CREATED);
+ }
+ }
+ }
}
}
}
diff --git a/src/emsdevicevalue.cpp b/src/emsdevicevalue.cpp
index 649d4fff8..f436e96b3 100644
--- a/src/emsdevicevalue.cpp
+++ b/src/emsdevicevalue.cpp
@@ -326,13 +326,66 @@ bool DeviceValue::get_min_max(int16_t & dv_set_min, int16_t & dv_set_max) {
return false; // nothing changed, not supported
}
-// returns the translated fullname or the custom fullname (if provided)
-// always returns a std::string
-std::string DeviceValue::get_fullname() const {
- if (custom_fullname.empty()) {
- return Helpers::translated_word(fullname);
+// extract custom min from custom_fullname
+bool DeviceValue::get_custom_min(int16_t & val) {
+ auto min_pos = custom_fullname.find('>');
+ bool has_min = (min_pos != std::string::npos);
+ uint8_t fahrenheit = !EMSESP::system_.fahrenheit() ? 0 : (uom == DeviceValueUOM::DEGREES) ? 2 : (uom == DeviceValueUOM::DEGREES_R) ? 1 : 0;
+ if (has_min) {
+ int v = Helpers::atoint(custom_fullname.substr(min_pos + 1).c_str());
+ if (fahrenheit) {
+ v = (v - (32 * (fahrenheit - 1))) / 1.8; // reset to °C
+ }
+ if (v > max) {
+ return false;
+ }
+ val = v;
+ }
+ return has_min;
+}
+
+// extract custom max from custom_fullname
+bool DeviceValue::get_custom_max(uint16_t & val) {
+ auto max_pos = custom_fullname.find('<');
+ bool has_max = (max_pos != std::string::npos);
+ uint8_t fahrenheit = !EMSESP::system_.fahrenheit() ? 0 : (uom == DeviceValueUOM::DEGREES) ? 2 : (uom == DeviceValueUOM::DEGREES_R) ? 1 : 0;
+ if (has_max) {
+ int v = Helpers::atoint(custom_fullname.substr(max_pos + 1).c_str());
+ if (fahrenheit) {
+ v = (v - (32 * (fahrenheit - 1))) / 1.8; // reset to °C
+ }
+ if (v < 0 || v < min) {
+ return false;
+ }
+ val = v;
+ }
+ return has_max;
+}
+
+// sets min max to stored custom values (if set)
+void DeviceValue::set_custom_minmax() {
+ get_custom_min(min);
+ get_custom_max(max);
+}
+
+std::string DeviceValue::get_custom_fullname() const {
+ auto min_pos = custom_fullname.find('>');
+ auto max_pos = custom_fullname.find('<');
+ auto minmax_pos = min_pos < max_pos ? min_pos : max_pos;
+ if (minmax_pos != std::string::npos) {
+ return custom_fullname.substr(0, minmax_pos);
}
return custom_fullname;
}
+// returns the translated fullname or the custom fullname (if provided)
+// always returns a std::string
+std::string DeviceValue::get_fullname() const {
+ std::string customname = get_custom_fullname();
+ if (customname.empty()) {
+ return Helpers::translated_word(fullname);
+ }
+ return customname;
+}
+
} // namespace emsesp
diff --git a/src/emsdevicevalue.h b/src/emsdevicevalue.h
index 6420692fa..d3ac85ce5 100644
--- a/src/emsdevicevalue.h
+++ b/src/emsdevicevalue.h
@@ -179,6 +179,10 @@ class DeviceValue {
bool hasValue() const;
bool get_min_max(int16_t & dv_set_min, int16_t & dv_set_max);
+ void set_custom_minmax();
+ bool get_custom_min(int16_t & val);
+ bool get_custom_max(uint16_t & val);
+ std::string get_custom_fullname() const;
std::string get_fullname() const;
// dv state flags
diff --git a/src/locale_common.h b/src/locale_common.h
index b0d32323a..13766f233 100644
--- a/src/locale_common.h
+++ b/src/locale_common.h
@@ -177,6 +177,13 @@ MAKE_PSTR_LIST(progc, F("prog c"))
MAKE_PSTR_LIST(progd, F("prog d"))
MAKE_PSTR_LIST(proge, F("prog e"))
MAKE_PSTR_LIST(progf, F("prog f"))
+MAKE_PSTR_LIST(rc35, F("RC35"))
+MAKE_PSTR_LIST(0kW, F("0 kW"))
+MAKE_PSTR_LIST(2kW, F("2 kW"))
+MAKE_PSTR_LIST(3kW, F("3 kW"))
+MAKE_PSTR_LIST(4kW, F("4 kW"))
+MAKE_PSTR_LIST(6kW, F("6 kW"))
+MAKE_PSTR_LIST(9kW, F("9 kW"))
// templates - this are not translated and will be saved under optons_single
MAKE_PSTR_LIST(tpl_datetime, F("Format: < NTP | dd.mm.yyyy-hh:mm:ss-day(0-6)-dst(0/1) >"))
@@ -184,6 +191,8 @@ MAKE_PSTR_LIST(tpl_switchtime, F("Format: [ not_set | day hh:mm on|off ]"))
MAKE_PSTR_LIST(tpl_switchtime1, F("Format: [ not_set | day hh:mm Tn ]"))
MAKE_PSTR_LIST(tpl_holidays, F("Format: < dd.mm.yyyy-dd.mm.yyyy >"))
MAKE_PSTR_LIST(tpl_date, F("Format: < dd.mm.yyyy >"))
+MAKE_PSTR_LIST(tpl_input, F("Format: []"))
+MAKE_PSTR_LIST(tpl_input4, F("Format: []"))
// Unit Of Measurement mapping - maps to DeviceValueUOM_s in emsdevice.cpp
// These don't need translating, it will mess up HA and the API
@@ -290,6 +299,7 @@ MAKE_PSTR_ENUM(enum_comfort, FL_(hot), FL_(eco), FL_(intelligent))
MAKE_PSTR_ENUM(enum_comfort1, FL_(high_comfort), FL_(eco))
MAKE_PSTR_ENUM(enum_flow, FL_(off), FL_(flow), FL_(bufferedflow), FL_(buffer), FL_(layeredbuffer))
MAKE_PSTR_ENUM(enum_reset, FL_(dash), FL_(maintenance), FL_(error))
+MAKE_PSTR_ENUM(enum_maxHeat, FL_(0kW), FL_(2kW), FL_(3kW), FL_(4kW), FL_(6kW), FL_(9kW))
// thermostat lists
MAKE_PSTR_ENUM(enum_ibaMainDisplay,
@@ -339,6 +349,7 @@ MAKE_PSTR_ENUM(enum_controlmode1, FL_(weather_compensated), FL_(outside_basepoin
MAKE_PSTR_ENUM(enum_controlmode2, FL_(outdoor), FL_(room))
MAKE_PSTR_ENUM(enum_control, FL_(off), FL_(rc20), FL_(rc3x))
MAKE_PSTR_ENUM(enum_j_control, FL_(off), FL_(fb10), FL_(fb100))
+MAKE_PSTR_ENUM(enum_roomsensor, FL_(extern), FL_(intern), FL_(auto))
MAKE_PSTR_ENUM(enum_switchmode, FL_(off), FL_(eco), FL_(comfort), FL_(heat))
diff --git a/src/locale_translations.h b/src/locale_translations.h
index fb8f9c17a..aa21781e7 100644
--- a/src/locale_translations.h
+++ b/src/locale_translations.h
@@ -74,6 +74,9 @@ MAKE_PSTR_LIST(co2_cost_mix, F("co2 cost mix"), F("Kostenmix"), F("Kostenmix"),
MAKE_PSTR_LIST(analog, F("analog"), F("analog"), F("analoog"), F("analog"))
MAKE_PSTR_LIST(normal, F("normal"), F("normal"), F("normaal"), F("normal"))
MAKE_PSTR_LIST(blocking, F("blocking"), F("Blockierung"), F("Blokkering"), F("Blockering"))
+MAKE_PSTR_LIST(extern, F("extern"), F("extern"), F("extern"), F("extern"))
+MAKE_PSTR_LIST(intern, F("intern"), F("intern"), F("intern"), F("intern"))
+MAKE_PSTR_LIST(lower, F("lower"), F("niedirger"), F("lager"), F("lägre"))
// boiler
MAKE_PSTR_LIST(time, F("time"), F("Zeit"), F("Tijd"), F("Tid"))
@@ -457,6 +460,9 @@ MAKE_PSTR_LIST(hpIn1Opt, F("hpin1opt"), F("input 1 options"), F("Eingang 1 Einst
MAKE_PSTR_LIST(hpIn2Opt, F("hpin2opt"), F("input 2 options"), F("Eingang 2 Einstellung"), F("Instelling input 2"), F("Inställningar Ingång 2"))
MAKE_PSTR_LIST(hpIn3Opt, F("hpin3opt"), F("input 3 options"), F("Eingang 3 Einstellung"), F("Instelling input 3"), F("Inställningar Ingång 3"))
MAKE_PSTR_LIST(hpIn4Opt, F("hpin4opt"), F("input 4 options"), F("Eingang 4 Einstellung"), F("Instelling input 4"), F("Inställningar Ingång 4"))
+MAKE_PSTR_LIST(maxHeatComp, F("maxheatcomp"), F("heat limit compressor"), F("Heizgrenze Kompressor"), F("heat limit compressor"), F("heat limit compressor"))
+MAKE_PSTR_LIST(maxHeatHeat, F("maxheatheat"), F("heat limit heating"), F("Heizgrenze Heizen"), F("heat limit heating"), F("heat limit heating"))
+MAKE_PSTR_LIST(maxHeatDhw, F("maxheatdhw"), F("heat limit dhw"), F("Heizgrenze Warmwasser"), F("heat limit dhw"), F("heat limit dhw"))
// hybrid heatpump
MAKE_PSTR_LIST(hybridStrategy, F("hybridstrategy"), F("hybrid control strategy"), F("Hybrid Strategie"), F("Hybride strategie"), F("Hybrid kontrollstrategi"))
@@ -589,7 +595,7 @@ MAKE_PSTR_LIST(wwSelTempSingle,
MAKE_PSTR_LIST(wwCylMiddleTemp,
F("wwcylmiddletemp"),
F("cylinder middle temperature (TS3)"),
- F("Speichertemperature Mitte"),
+ F("Speichertemperatur Mitte"),
F("Buffer temperatuur midden"),
F("Cylinder Temperatur Mitten (TS3)"))
@@ -814,6 +820,7 @@ MAKE_PSTR_LIST(hpoperatingmode,
MAKE_PSTR_LIST(hpoperatingstate, F("hpoperatingstate"), F("heatpump operating state"), F("WP Arbeitsweise"), F("Huidige modus warmtepomp"), F("Värmepump Driftstatus"))
MAKE_PSTR_LIST(controlmode, F("controlmode"), F("control mode"), F("Kontrollmodus"), F("Comtrolemodus"), F("Kontrolläge"))
MAKE_PSTR_LIST(control, F("control"), F("control device"), F("Fernsteuerung"), F("Afstandsbedieding"), F("Kontrollenhet"))
+MAKE_PSTR_LIST(roomsensor, F("roomsensor"), F("room sensor"), F("Raumsensor"), F("Ruimtesensor"), F("Rumssensor"))
MAKE_PSTR_LIST(program, F("program"), F("program"), F("Programm"), F("Programma"), F("Program"))
MAKE_PSTR_LIST(pause, F("pause"), F("pause time"), F("Pausenzeit"), F("Pausetijd"), F("Paustid"))
MAKE_PSTR_LIST(party, F("party"), F("party time"), F("Partyzeit"), F("Partytijd"), F("Partytid"))
diff --git a/src/version.h b/src/version.h
index 69c779d31..276159911 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define EMSESP_APP_VERSION "3.5.0b3"
+#define EMSESP_APP_VERSION "3.5.0b4"