diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 6a0ddf1e1..7a62dcb07 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -29,7 +29,7 @@ assignees: '' *If applicable, add screenshots to help explain your problem.* **Device information** -*Copy-paste here the information as it is outputted by the device. You can get this information by from http://ems-esp.local/api?device=system&cmd=info* +*Copy-paste here the information as it is outputted by the device. You can get this information by from http://ems-esp.local/api/system* **Additional context** *Add any other context about the problem here.* diff --git a/.github/ISSUE_TEMPLATE/questions---troubleshooting.md b/.github/ISSUE_TEMPLATE/questions---troubleshooting.md index fa26a177b..0e8175477 100644 --- a/.github/ISSUE_TEMPLATE/questions---troubleshooting.md +++ b/.github/ISSUE_TEMPLATE/questions---troubleshooting.md @@ -23,7 +23,7 @@ assignees: '' *If applicable, add screenshots to help explain your problem.* **Device information** -*Copy-paste here the information as it is outputted by the device. You can get this information from http://ems-esp.local/api?device=system&cmd=info* +*Copy-paste here the information as it is outputted by the device. You can get this information from http://ems-esp.local/api/system* **Additional context** *Add any other context about the problem here.* diff --git a/README.md b/README.md index 4f3893c9c..063a55364 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Note, EMS-ESP requires a small hardware circuit that can convert the EMS bus dat - Native support for Home Assistant and Domoticz via [MQTT Discovery](https://www.home-assistant.io/docs/mqtt/discovery/) - Can run standalone as an independent WiFi Access Point or join an existing WiFi network - Easy first-time configuration via a web Captive Portal -- Support for more than [80 EMS devices](https://emsesp.github.io/docs/#/Supported-EMS-Devices) (boilers, thermostats, solar modules, mixer modules, heat pumps, gateways) +- Support for more than [100 EMS devices](https://emsesp.github.io/docs/#/Supported-EMS-Devices) (boilers, thermostats, solar modules, mixer modules, heat pumps, gateways) ## **Demo** diff --git a/interface/package-lock.json b/interface/package-lock.json index b3f7cc0b5..60e461923 100644 --- a/interface/package-lock.json +++ b/interface/package-lock.json @@ -11,11 +11,11 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@msgpack/msgpack": "^2.7.2", - "@mui/icons-material": "^5.6.2", - "@mui/material": "^5.7.0", + "@mui/icons-material": "^5.8.0", + "@mui/material": "^5.8.0", "@table-library/react-table-library": "^3.1.2", "@types/lodash": "^4.14.182", - "@types/node": "^17.0.33", + "@types/node": "^17.0.35", "@types/react": "^17.0.43", "@types/react-dom": "^17.0.14", "@types/react-router-dom": "^5.3.3", @@ -2856,15 +2856,14 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-alpha.80", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.80.tgz", - "integrity": "sha512-sPSYwJzwNMaqpksdLuOhpQQLrhtpBH4sNnMSgkzJzo7Jo4HF9ivjNpq27Zh5+sdRe5MTt0gcBT0QSMO6zML1Aw==", + "version": "5.0.0-alpha.81", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.81.tgz", + "integrity": "sha512-KJP+RdKBLSbhiAliy1b5xFuoAezawupfIHc/MRtEZdqAmUW0+UFNDXIUDlBKR9zLCjgjQ7eVJsSe0TwAgd8OMQ==", "dependencies": { "@babel/runtime": "^7.17.2", "@emotion/is-prop-valid": "^1.1.2", - "@mui/private-classnames": "^5.7.0", "@mui/types": "^7.1.3", - "@mui/utils": "^5.7.0", + "@mui/utils": "^5.8.0", "@popperjs/core": "^2.11.5", "clsx": "^1.1.1", "prop-types": "^15.8.1", @@ -2889,9 +2888,9 @@ } }, "node_modules/@mui/icons-material": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz", - "integrity": "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.0.tgz", + "integrity": "sha512-ScwLxa0q5VYV70Jfc60V/9VD0b9SvIeZ0Jddx2Dt2pBUFFO9vKdrbt9LYiT+4p21Au5NdYIb2XSHj46CLN1v3g==", "dependencies": { "@babel/runtime": "^7.17.2" }, @@ -2914,16 +2913,15 @@ } }, "node_modules/@mui/material": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.7.0.tgz", - "integrity": "sha512-s1TSuUK5upNzGY5ZFHfJyzEt9fijn4cE+kEdEq7jGF+vpZIYXsDooH07+dNJ9+cJjYo6f9Fq1q5fPkknRC2Trw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.0.tgz", + "integrity": "sha512-yvt3sUmUZ1i8SPadRYBCThcB57lBZsvyhC7ufVpRxA3AD39O+WXtXAapEfpDdDkJnnKb5MCimDMwBYgWLmY89Q==", "dependencies": { "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.80", - "@mui/private-classnames": "^5.7.0", - "@mui/system": "^5.7.0", + "@mui/base": "5.0.0-alpha.81", + "@mui/system": "^5.8.0", "@mui/types": "^7.1.3", - "@mui/utils": "^5.7.0", + "@mui/utils": "^5.8.0", "@types/react-transition-group": "^4.4.4", "clsx": "^1.1.1", "csstype": "^3.0.11", @@ -2958,25 +2956,13 @@ } } }, - "node_modules/@mui/private-classnames": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/private-classnames/-/private-classnames-5.7.0.tgz", - "integrity": "sha512-OSB4ybzpYiS11rQ3VtbcJz/CS19lC0r0Hk14iRZwPtVgapnL1hKsGtmgRviZLxpLk/cZUKaxaJDuuzI/extCoA==", - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - } - }, "node_modules/@mui/private-theming": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.7.0.tgz", - "integrity": "sha512-r/6JAWAHV1IFASZnceJPe9QT/s12ia/okGbmCUO4MEPdsWcNKye1RVKSwVgLATaX3YwPxDljWguIQrM3R2gZNA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.8.0.tgz", + "integrity": "sha512-MjRAneTmCKLR9u2S4jtjLUe6gpHxlbb4g2bqpDJ2PdwlvwsWIUzbc/gVB4dvccljXeWxr5G2M/Co2blXisvFIw==", "dependencies": { "@babel/runtime": "^7.17.2", - "@mui/utils": "^5.7.0", + "@mui/utils": "^5.8.0", "prop-types": "^15.8.1" }, "engines": { @@ -2997,9 +2983,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.7.0.tgz", - "integrity": "sha512-JTvp+6lbAXYqgf/YInwR+hd4F8Fhg5PxMBwKTFsdKbaZFvyBD95hzKcxRmO9Y/NdjwFYWm5bBhcZAT4r2g1kZA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.8.0.tgz", + "integrity": "sha512-Q3spibB8/EgeMYHc+/o3RRTnAYkSl7ROCLhXJ830W8HZ2/iDiyYp16UcxKPurkXvLhUaILyofPVrP3Su2uKsAw==", "dependencies": { "@babel/runtime": "^7.17.2", "@emotion/cache": "^11.7.1", @@ -3027,15 +3013,15 @@ } }, "node_modules/@mui/system": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.7.0.tgz", - "integrity": "sha512-M0vemfcfaRQzqLUmVRIsAVb0rx2ULHisHED6njoJqtjH58gbVb497mH+K1vI+Lh29fKR6Ki2mx3egxVi7mUn9w==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.8.0.tgz", + "integrity": "sha512-1tEj2S59RjlZ/6JMJMUktQDbV2ev7hyGXqO7dRRUQ7nOJi9qHmCFP0uXj3YS6LbM6hVasgYXJg8GBjbEtfTJvg==", "dependencies": { "@babel/runtime": "^7.17.2", - "@mui/private-theming": "^5.7.0", - "@mui/styled-engine": "^5.7.0", + "@mui/private-theming": "^5.8.0", + "@mui/styled-engine": "^5.8.0", "@mui/types": "^7.1.3", - "@mui/utils": "^5.7.0", + "@mui/utils": "^5.8.0", "clsx": "^1.1.1", "csstype": "^3.0.11", "prop-types": "^15.8.1" @@ -3079,9 +3065,9 @@ } }, "node_modules/@mui/utils": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.7.0.tgz", - "integrity": "sha512-uWpDIEXl7bWYkJwKQQ4Rdhc2dcotVETRYuLy29V6qLYZyAbs7AMKwDDz0XKy3RMNmU7S2R/jEeSb9xjXscQUHQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.8.0.tgz", + "integrity": "sha512-7LgUtCvz78676iC0wpTH7HizMdCrTphhBmRWimIMFrp5Ph6JbDFVuKS1CwYnWWxRyYKL0QzXrDL0lptAU90EXg==", "dependencies": { "@babel/runtime": "^7.17.2", "@types/prop-types": "^15.7.5", @@ -3776,9 +3762,9 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/node": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", - "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -19569,15 +19555,14 @@ "integrity": "sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw==" }, "@mui/base": { - "version": "5.0.0-alpha.80", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.80.tgz", - "integrity": "sha512-sPSYwJzwNMaqpksdLuOhpQQLrhtpBH4sNnMSgkzJzo7Jo4HF9ivjNpq27Zh5+sdRe5MTt0gcBT0QSMO6zML1Aw==", + "version": "5.0.0-alpha.81", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.81.tgz", + "integrity": "sha512-KJP+RdKBLSbhiAliy1b5xFuoAezawupfIHc/MRtEZdqAmUW0+UFNDXIUDlBKR9zLCjgjQ7eVJsSe0TwAgd8OMQ==", "requires": { "@babel/runtime": "^7.17.2", "@emotion/is-prop-valid": "^1.1.2", - "@mui/private-classnames": "^5.7.0", "@mui/types": "^7.1.3", - "@mui/utils": "^5.7.0", + "@mui/utils": "^5.8.0", "@popperjs/core": "^2.11.5", "clsx": "^1.1.1", "prop-types": "^15.8.1", @@ -19585,24 +19570,23 @@ } }, "@mui/icons-material": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz", - "integrity": "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.0.tgz", + "integrity": "sha512-ScwLxa0q5VYV70Jfc60V/9VD0b9SvIeZ0Jddx2Dt2pBUFFO9vKdrbt9LYiT+4p21Au5NdYIb2XSHj46CLN1v3g==", "requires": { "@babel/runtime": "^7.17.2" } }, "@mui/material": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.7.0.tgz", - "integrity": "sha512-s1TSuUK5upNzGY5ZFHfJyzEt9fijn4cE+kEdEq7jGF+vpZIYXsDooH07+dNJ9+cJjYo6f9Fq1q5fPkknRC2Trw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.0.tgz", + "integrity": "sha512-yvt3sUmUZ1i8SPadRYBCThcB57lBZsvyhC7ufVpRxA3AD39O+WXtXAapEfpDdDkJnnKb5MCimDMwBYgWLmY89Q==", "requires": { "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.80", - "@mui/private-classnames": "^5.7.0", - "@mui/system": "^5.7.0", + "@mui/base": "5.0.0-alpha.81", + "@mui/system": "^5.8.0", "@mui/types": "^7.1.3", - "@mui/utils": "^5.7.0", + "@mui/utils": "^5.8.0", "@types/react-transition-group": "^4.4.4", "clsx": "^1.1.1", "csstype": "^3.0.11", @@ -19612,25 +19596,20 @@ "react-transition-group": "^4.4.2" } }, - "@mui/private-classnames": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/private-classnames/-/private-classnames-5.7.0.tgz", - "integrity": "sha512-OSB4ybzpYiS11rQ3VtbcJz/CS19lC0r0Hk14iRZwPtVgapnL1hKsGtmgRviZLxpLk/cZUKaxaJDuuzI/extCoA==" - }, "@mui/private-theming": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.7.0.tgz", - "integrity": "sha512-r/6JAWAHV1IFASZnceJPe9QT/s12ia/okGbmCUO4MEPdsWcNKye1RVKSwVgLATaX3YwPxDljWguIQrM3R2gZNA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.8.0.tgz", + "integrity": "sha512-MjRAneTmCKLR9u2S4jtjLUe6gpHxlbb4g2bqpDJ2PdwlvwsWIUzbc/gVB4dvccljXeWxr5G2M/Co2blXisvFIw==", "requires": { "@babel/runtime": "^7.17.2", - "@mui/utils": "^5.7.0", + "@mui/utils": "^5.8.0", "prop-types": "^15.8.1" } }, "@mui/styled-engine": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.7.0.tgz", - "integrity": "sha512-JTvp+6lbAXYqgf/YInwR+hd4F8Fhg5PxMBwKTFsdKbaZFvyBD95hzKcxRmO9Y/NdjwFYWm5bBhcZAT4r2g1kZA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.8.0.tgz", + "integrity": "sha512-Q3spibB8/EgeMYHc+/o3RRTnAYkSl7ROCLhXJ830W8HZ2/iDiyYp16UcxKPurkXvLhUaILyofPVrP3Su2uKsAw==", "requires": { "@babel/runtime": "^7.17.2", "@emotion/cache": "^11.7.1", @@ -19638,15 +19617,15 @@ } }, "@mui/system": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.7.0.tgz", - "integrity": "sha512-M0vemfcfaRQzqLUmVRIsAVb0rx2ULHisHED6njoJqtjH58gbVb497mH+K1vI+Lh29fKR6Ki2mx3egxVi7mUn9w==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.8.0.tgz", + "integrity": "sha512-1tEj2S59RjlZ/6JMJMUktQDbV2ev7hyGXqO7dRRUQ7nOJi9qHmCFP0uXj3YS6LbM6hVasgYXJg8GBjbEtfTJvg==", "requires": { "@babel/runtime": "^7.17.2", - "@mui/private-theming": "^5.7.0", - "@mui/styled-engine": "^5.7.0", + "@mui/private-theming": "^5.8.0", + "@mui/styled-engine": "^5.8.0", "@mui/types": "^7.1.3", - "@mui/utils": "^5.7.0", + "@mui/utils": "^5.8.0", "clsx": "^1.1.1", "csstype": "^3.0.11", "prop-types": "^15.8.1" @@ -19659,9 +19638,9 @@ "requires": {} }, "@mui/utils": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.7.0.tgz", - "integrity": "sha512-uWpDIEXl7bWYkJwKQQ4Rdhc2dcotVETRYuLy29V6qLYZyAbs7AMKwDDz0XKy3RMNmU7S2R/jEeSb9xjXscQUHQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.8.0.tgz", + "integrity": "sha512-7LgUtCvz78676iC0wpTH7HizMdCrTphhBmRWimIMFrp5Ph6JbDFVuKS1CwYnWWxRyYKL0QzXrDL0lptAU90EXg==", "requires": { "@babel/runtime": "^7.17.2", "@types/prop-types": "^15.7.5", @@ -20156,9 +20135,9 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/node": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", - "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" }, "@types/parse-json": { "version": "4.0.0", diff --git a/interface/package.json b/interface/package.json index 82f9d9f25..375f96cb6 100644 --- a/interface/package.json +++ b/interface/package.json @@ -7,11 +7,11 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@msgpack/msgpack": "^2.7.2", - "@mui/icons-material": "^5.6.2", - "@mui/material": "^5.7.0", + "@mui/icons-material": "^5.8.0", + "@mui/material": "^5.8.0", "@table-library/react-table-library": "^3.1.2", "@types/lodash": "^4.14.182", - "@types/node": "^17.0.33", + "@types/node": "^17.0.35", "@types/react": "^17.0.43", "@types/react-dom": "^17.0.14", "@types/react-router-dom": "^5.3.3", diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx index 05dca4571..a5cac3aae 100644 --- a/interface/src/project/SettingsCustomization.tsx +++ b/interface/src/project/SettingsCustomization.tsx @@ -376,22 +376,22 @@ const SettingsCustomization: FC = () => { }} > - + - + - + - + @@ -403,26 +403,30 @@ const SettingsCustomization: FC = () => { : - + + + - + + + diff --git a/media/web_devices.png b/media/web_devices.png index 8d4f8794a..75055909f 100644 Binary files a/media/web_devices.png and b/media/web_devices.png differ diff --git a/media/web_edit.png b/media/web_edit.png index 93e0170f7..91c7c4f00 100644 Binary files a/media/web_edit.png and b/media/web_edit.png differ diff --git a/media/web_sensor.png b/media/web_sensor.png new file mode 100644 index 000000000..9419070e3 Binary files /dev/null and b/media/web_sensor.png differ diff --git a/media/web_settings.png b/media/web_settings.png index 6fd91c775..23b076143 100644 Binary files a/media/web_settings.png and b/media/web_settings.png differ diff --git a/media/web_status.png b/media/web_status.png index 0c37b9639..55c6e923e 100644 Binary files a/media/web_status.png and b/media/web_status.png differ diff --git a/src/device_library.h b/src/device_library.h index 726972c5f..21fd47917 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -130,6 +130,7 @@ // Heat Pumps - 0x38 {200, DeviceType::HEATPUMP, F("HP Module"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, +{248, DeviceType::HEATPUMP, F("Hybrid Manager HM200"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, {252, DeviceType::HEATPUMP, F("HP Module"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, // Connect devices - 0x02 diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index b61656b77..890ba7beb 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -238,7 +238,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const DeviceValueUOM::NONE, MAKE_CF_CB(set_energyCostRatio), 0, - 19.9); + 20); register_device_value(DeviceValueTAG::TAG_BOILER_DATA, &fossileFactor_, DeviceValueType::UINT, @@ -817,8 +817,6 @@ void Boiler::process_UBAParameterWWPlus(std::shared_ptr telegram wwComfort1 = EMS_VALUE_UINT_NOTSET; } has_update(wwComfort1_, wwComfort1); - - } // 0xE9 - WW monitor ems+ diff --git a/src/devices/boiler.h b/src/devices/boiler.h index b36ad2694..0e6bc8aa0 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -85,6 +85,39 @@ class Boiler : public EMSdevice { uint32_t wwStarts_; // DHW starts uint32_t wwStarts2_; // DHW control starts uint32_t wwWorkM_; // DHW minutes + uint8_t wwSetTemp_; // DHW set temperature + uint8_t wwSelTemp_; // DHW selected temperature + uint8_t wwSelTempLow_; // DHW lower selected temperature + uint8_t wwSelTempOff_; // DHW selected temperature for off position + uint8_t wwSelTempSingle_; // DHW single charge temperature + uint8_t wwType_; // 0-off, 1-flow, 2-flowbuffer, 3-buffer, 4-layered buffer + uint8_t wwComfort_; // WW comfort mode + uint8_t wwComfort1_; // WW comfort mode RC310 + uint8_t wwCircPump_; // DHW circulation pump available + uint8_t wwChargeType_; // DHW charge type (pump or 3-way-valve) + uint8_t wwChargeOptimization_; // DHW charge optimization + uint8_t wwDisinfectionTemp_; // DHW disinfection temperature to prevent infection + uint8_t wwCircMode_; // DHW circulation pump mode + uint8_t wwCirc_; // Circulation on/off + uint16_t wwCurTemp_; // DHW current temperature + uint16_t wwCurTemp2_; // DHW current temperature storage + uint8_t wwCurFlow_; // DHW current flow temp in l/min + uint16_t wwStorageTemp1_; // DHW storage temp 1 + uint16_t wwStorageTemp2_; // DHW storage temp 2 + uint8_t wwActivated_; // DHW activated + uint8_t wwOneTime_; // DHW one time function on/off + uint8_t wwDisinfect_; // DHW disinfection on/off + uint8_t wwCharging_; // DHW charging on/off + uint8_t wwRecharging_; // DHW recharge on/off + uint8_t wwTempOK_; // DHW temperature ok on/off + uint8_t wwActive_; // + uint8_t ww3wayValve_; // 3-way valve on WW + uint8_t wwSetPumpPower_; // ww pump speed/power? + uint8_t wwFlowTempOffset_; // Boiler offset for ww heating + uint8_t wwMaxPower_; // DHW maximum power + uint32_t wwStarts_; // DHW starts + uint32_t wwStarts2_; // DHW control starts + uint32_t wwWorkM_; // DHW minutes int8_t wwHystOn_; int8_t wwHystOff_; uint8_t wwTapActivated_; // maintenance-mode to switch DHW off diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index b4567d49a..7be718f9b 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -973,7 +973,7 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { has_update(telegram, hc->offsettemp, 2); if (!is_fetch(summer2_typeids[hc->hc()])) { has_update(telegram, hc->summertemp, 6); - has_update(telegram, hc->summer_setmode, 7); + has_update(telegram, hc->summersetmode, 7); } if (hc->heatingtype < 3) { @@ -993,7 +993,7 @@ void Thermostat::process_RC300Summer2(std::shared_ptr telegram) if (hc == nullptr) { return; } - has_update(telegram, hc->summer_setmode, 0); + has_update(telegram, hc->hpoperatingmode, 0); has_update(telegram, hc->summertemp, 1); } @@ -2348,13 +2348,16 @@ bool Thermostat::set_summermode(const char * value, const int8_t id) { } uint8_t set = 0xFF; - if (!Helpers::value2enum(value, set, FL_(enum_summermode))) { - return false; - } if (is_fetch(summer2_typeids[hc->hc()])) { + if (!Helpers::value2enum(value, set, FL_(enum_hpoperatingmode))) { + return false; + } write_command(summer2_typeids[hc->hc()], 0, set, summer2_typeids[hc->hc()]); } else { + if (!Helpers::value2enum(value, set, FL_(enum_summermode))) { + return false; + } write_command(summer_typeids[hc->hc()], 7, set, summer_typeids[hc->hc()]); } @@ -2963,7 +2966,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co factor = 1; break; case HeatingCircuit::Mode::DESIGN: - if (hc->heatingtype == 3) { + if (hc->heatingtype == 3 && model == EMS_DEVICE_FLAG_RC35) { offset = EMS_OFFSET_RC35Set_temp_design_floor; } else { offset = EMS_OFFSET_RC35Set_temp_design; @@ -3002,7 +3005,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co factor = 1; break; case HeatingCircuit::Mode::MAXFLOW: - if (hc->heatingtype == 3) { + if (hc->heatingtype == 3 && model == EMS_DEVICE_FLAG_RC35) { offset = 35; } else { offset = 15; @@ -3720,7 +3723,7 @@ void Thermostat::register_device_values() { DeviceValueUOM::NONE, MAKE_CF_CB(set_energyCostRatio), 0, - 19.9); + 20); register_device_value(DeviceValueTAG::TAG_THERMOSTAT_DATA, &fossileFactor_, DeviceValueType::UINT, @@ -3831,7 +3834,14 @@ void Thermostat::register_device_values_hc(std::shared_ptrheatingtype, DeviceValueType::ENUM, FL_(enum_heatingtype), FL_(heatingtype), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatingtype)); register_device_value( - tag, &hc->summer_setmode, DeviceValueType::ENUM, FL_(enum_summermode), FL_(summersetmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_summermode)); + tag, &hc->summersetmode, DeviceValueType::ENUM, FL_(enum_summermode), FL_(summersetmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_summermode)); + register_device_value(tag, + &hc->hpoperatingmode, + DeviceValueType::ENUM, + FL_(enum_hpoperatingmode), + FL_(hpoperatingmode), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_summermode)); register_device_value(tag, &hc->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE); register_device_value( tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode)); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index a62a61050..2fde27634 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -54,7 +54,8 @@ class Thermostat : public EMSdevice { uint8_t designtemp; // heating curve design temp at MinExtTemp int8_t offsettemp; // heating curve offest temp at roomtemp signed! uint8_t manualtemp; - uint8_t summer_setmode; + uint8_t summersetmode; + uint8_t hpoperatingmode; uint8_t roominfluence; uint8_t roominfl_factor; int16_t curroominfl; diff --git a/src/locale_DE.h b/src/locale_DE.h index 7a668d1c2..a57e54abc 100644 --- a/src/locale_DE.h +++ b/src/locale_DE.h @@ -364,6 +364,7 @@ MAKE_PSTR_LIST(enum_wwMode2, F_(off), F_(on), F_(auto)) MAKE_PSTR_LIST(enum_wwMode3, F_(on), F_(off), F_(auto)) MAKE_PSTR_LIST(enum_heatingtype, F_(off), F_(radiator), F_(convector), F_(floor)) MAKE_PSTR_LIST(enum_summermode, F_(summer), F_(auto), F_(winter)) +MAKE_PSTR_LIST(enum_hpoperatingmode, F_(off), F_(auto), F("heizen"), F("kühlen")) MAKE_PSTR_LIST(enum_summer, F_(winter), F_(summer)) MAKE_PSTR_LIST(enum_mode, F_(manual), F_(auto)) // RC100, RC300, RC310 @@ -649,6 +650,7 @@ MAKE_PSTR_LIST(nofrosttemp, F("nofrosttemp"), F("Frostschutztemperatur")) MAKE_PSTR_LIST(targetflowtemp, F("targetflowtemp"), F("berechnete Flusstemperatur")) MAKE_PSTR_LIST(heatingtype, F("heatingtype"), F("Heizungstyp")) MAKE_PSTR_LIST(summersetmode, F("summersetmode"), F("Einstellung Sommerbetrieb")) +MAKE_PSTR_LIST(hpoperatingmode, F("hpoperatingmode"), F("Wärmepumpe Betriebsmodus")) MAKE_PSTR_LIST(controlmode, F("controlmode"), F("Kontrollmodus")) MAKE_PSTR_LIST(control, F("control"), F("Fernsteuerung")) MAKE_PSTR_LIST(holidays, F("holidays"), F("holiday dates")) diff --git a/src/locale_EN.h b/src/locale_EN.h index 2b1f0b7dc..57653f1af 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -366,6 +366,7 @@ MAKE_PSTR_LIST(enum_wwMode2, F_(off), F_(on), F_(auto)) MAKE_PSTR_LIST(enum_wwMode3, F_(on), F_(off), F_(auto)) MAKE_PSTR_LIST(enum_heatingtype, F_(off), F_(radiator), F_(convector), F_(floor)) MAKE_PSTR_LIST(enum_summermode, F_(summer), F_(auto), F_(winter)) +MAKE_PSTR_LIST(enum_hpoperatingmode, F_(off), F_(auto), F("heating"), F("cooling")) MAKE_PSTR_LIST(enum_summer, F_(winter), F_(summer)) MAKE_PSTR_LIST(enum_mode, F_(manual), F_(auto)) // RC100, RC300, RC310 @@ -642,6 +643,7 @@ MAKE_PSTR_LIST(nofrosttemp, F("nofrosttemp"), F("nofrost temperature")) MAKE_PSTR_LIST(targetflowtemp, F("targetflowtemp"), F("target flow temperature")) MAKE_PSTR_LIST(heatingtype, F("heatingtype"), F("heating type")) MAKE_PSTR_LIST(summersetmode, F("summersetmode"), F("set summer mode")) +MAKE_PSTR_LIST(hpoperatingmode, F("hpoperatingmode"), F("heatpump operating mode")) MAKE_PSTR_LIST(controlmode, F("controlmode"), F("control mode")) MAKE_PSTR_LIST(control, F("control"), F("control device")) MAKE_PSTR_LIST(holidays, F("holidays"), F("holiday dates"))