This commit is contained in:
tp1de
2022-05-20 15:14:10 +02:00
18 changed files with 159 additions and 129 deletions

View File

@@ -29,7 +29,7 @@ assignees: ''
*If applicable, add screenshots to help explain your problem.* *If applicable, add screenshots to help explain your problem.*
**Device information** **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** **Additional context**
*Add any other context about the problem here.* *Add any other context about the problem here.*

View File

@@ -23,7 +23,7 @@ assignees: ''
*If applicable, add screenshots to help explain your problem.* *If applicable, add screenshots to help explain your problem.*
**Device information** **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** **Additional context**
*Add any other context about the problem here.* *Add any other context about the problem here.*

View File

@@ -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/) - 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 - Can run standalone as an independent WiFi Access Point or join an existing WiFi network
- Easy first-time configuration via a web Captive Portal - 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** ## **Demo**

View File

@@ -11,11 +11,11 @@
"@emotion/react": "^11.9.0", "@emotion/react": "^11.9.0",
"@emotion/styled": "^11.8.1", "@emotion/styled": "^11.8.1",
"@msgpack/msgpack": "^2.7.2", "@msgpack/msgpack": "^2.7.2",
"@mui/icons-material": "^5.6.2", "@mui/icons-material": "^5.8.0",
"@mui/material": "^5.7.0", "@mui/material": "^5.8.0",
"@table-library/react-table-library": "^3.1.2", "@table-library/react-table-library": "^3.1.2",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.182",
"@types/node": "^17.0.33", "@types/node": "^17.0.35",
"@types/react": "^17.0.43", "@types/react": "^17.0.43",
"@types/react-dom": "^17.0.14", "@types/react-dom": "^17.0.14",
"@types/react-router-dom": "^5.3.3", "@types/react-router-dom": "^5.3.3",
@@ -2856,15 +2856,14 @@
} }
}, },
"node_modules/@mui/base": { "node_modules/@mui/base": {
"version": "5.0.0-alpha.80", "version": "5.0.0-alpha.81",
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.80.tgz", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.81.tgz",
"integrity": "sha512-sPSYwJzwNMaqpksdLuOhpQQLrhtpBH4sNnMSgkzJzo7Jo4HF9ivjNpq27Zh5+sdRe5MTt0gcBT0QSMO6zML1Aw==", "integrity": "sha512-KJP+RdKBLSbhiAliy1b5xFuoAezawupfIHc/MRtEZdqAmUW0+UFNDXIUDlBKR9zLCjgjQ7eVJsSe0TwAgd8OMQ==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@emotion/is-prop-valid": "^1.1.2", "@emotion/is-prop-valid": "^1.1.2",
"@mui/private-classnames": "^5.7.0",
"@mui/types": "^7.1.3", "@mui/types": "^7.1.3",
"@mui/utils": "^5.7.0", "@mui/utils": "^5.8.0",
"@popperjs/core": "^2.11.5", "@popperjs/core": "^2.11.5",
"clsx": "^1.1.1", "clsx": "^1.1.1",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
@@ -2889,9 +2888,9 @@
} }
}, },
"node_modules/@mui/icons-material": { "node_modules/@mui/icons-material": {
"version": "5.6.2", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz", "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.0.tgz",
"integrity": "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ==", "integrity": "sha512-ScwLxa0q5VYV70Jfc60V/9VD0b9SvIeZ0Jddx2Dt2pBUFFO9vKdrbt9LYiT+4p21Au5NdYIb2XSHj46CLN1v3g==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2" "@babel/runtime": "^7.17.2"
}, },
@@ -2914,16 +2913,15 @@
} }
}, },
"node_modules/@mui/material": { "node_modules/@mui/material": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.0.tgz",
"integrity": "sha512-s1TSuUK5upNzGY5ZFHfJyzEt9fijn4cE+kEdEq7jGF+vpZIYXsDooH07+dNJ9+cJjYo6f9Fq1q5fPkknRC2Trw==", "integrity": "sha512-yvt3sUmUZ1i8SPadRYBCThcB57lBZsvyhC7ufVpRxA3AD39O+WXtXAapEfpDdDkJnnKb5MCimDMwBYgWLmY89Q==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/base": "5.0.0-alpha.80", "@mui/base": "5.0.0-alpha.81",
"@mui/private-classnames": "^5.7.0", "@mui/system": "^5.8.0",
"@mui/system": "^5.7.0",
"@mui/types": "^7.1.3", "@mui/types": "^7.1.3",
"@mui/utils": "^5.7.0", "@mui/utils": "^5.8.0",
"@types/react-transition-group": "^4.4.4", "@types/react-transition-group": "^4.4.4",
"clsx": "^1.1.1", "clsx": "^1.1.1",
"csstype": "^3.0.11", "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": { "node_modules/@mui/private-theming": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.8.0.tgz",
"integrity": "sha512-r/6JAWAHV1IFASZnceJPe9QT/s12ia/okGbmCUO4MEPdsWcNKye1RVKSwVgLATaX3YwPxDljWguIQrM3R2gZNA==", "integrity": "sha512-MjRAneTmCKLR9u2S4jtjLUe6gpHxlbb4g2bqpDJ2PdwlvwsWIUzbc/gVB4dvccljXeWxr5G2M/Co2blXisvFIw==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/utils": "^5.7.0", "@mui/utils": "^5.8.0",
"prop-types": "^15.8.1" "prop-types": "^15.8.1"
}, },
"engines": { "engines": {
@@ -2997,9 +2983,9 @@
} }
}, },
"node_modules/@mui/styled-engine": { "node_modules/@mui/styled-engine": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.8.0.tgz",
"integrity": "sha512-JTvp+6lbAXYqgf/YInwR+hd4F8Fhg5PxMBwKTFsdKbaZFvyBD95hzKcxRmO9Y/NdjwFYWm5bBhcZAT4r2g1kZA==", "integrity": "sha512-Q3spibB8/EgeMYHc+/o3RRTnAYkSl7ROCLhXJ830W8HZ2/iDiyYp16UcxKPurkXvLhUaILyofPVrP3Su2uKsAw==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@emotion/cache": "^11.7.1", "@emotion/cache": "^11.7.1",
@@ -3027,15 +3013,15 @@
} }
}, },
"node_modules/@mui/system": { "node_modules/@mui/system": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.8.0.tgz",
"integrity": "sha512-M0vemfcfaRQzqLUmVRIsAVb0rx2ULHisHED6njoJqtjH58gbVb497mH+K1vI+Lh29fKR6Ki2mx3egxVi7mUn9w==", "integrity": "sha512-1tEj2S59RjlZ/6JMJMUktQDbV2ev7hyGXqO7dRRUQ7nOJi9qHmCFP0uXj3YS6LbM6hVasgYXJg8GBjbEtfTJvg==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/private-theming": "^5.7.0", "@mui/private-theming": "^5.8.0",
"@mui/styled-engine": "^5.7.0", "@mui/styled-engine": "^5.8.0",
"@mui/types": "^7.1.3", "@mui/types": "^7.1.3",
"@mui/utils": "^5.7.0", "@mui/utils": "^5.8.0",
"clsx": "^1.1.1", "clsx": "^1.1.1",
"csstype": "^3.0.11", "csstype": "^3.0.11",
"prop-types": "^15.8.1" "prop-types": "^15.8.1"
@@ -3079,9 +3065,9 @@
} }
}, },
"node_modules/@mui/utils": { "node_modules/@mui/utils": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.8.0.tgz",
"integrity": "sha512-uWpDIEXl7bWYkJwKQQ4Rdhc2dcotVETRYuLy29V6qLYZyAbs7AMKwDDz0XKy3RMNmU7S2R/jEeSb9xjXscQUHQ==", "integrity": "sha512-7LgUtCvz78676iC0wpTH7HizMdCrTphhBmRWimIMFrp5Ph6JbDFVuKS1CwYnWWxRyYKL0QzXrDL0lptAU90EXg==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@types/prop-types": "^15.7.5", "@types/prop-types": "^15.7.5",
@@ -3776,9 +3762,9 @@
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "17.0.33", "version": "17.0.35",
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
"integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
}, },
"node_modules/@types/parse-json": { "node_modules/@types/parse-json": {
"version": "4.0.0", "version": "4.0.0",
@@ -19569,15 +19555,14 @@
"integrity": "sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw==" "integrity": "sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw=="
}, },
"@mui/base": { "@mui/base": {
"version": "5.0.0-alpha.80", "version": "5.0.0-alpha.81",
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.80.tgz", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.81.tgz",
"integrity": "sha512-sPSYwJzwNMaqpksdLuOhpQQLrhtpBH4sNnMSgkzJzo7Jo4HF9ivjNpq27Zh5+sdRe5MTt0gcBT0QSMO6zML1Aw==", "integrity": "sha512-KJP+RdKBLSbhiAliy1b5xFuoAezawupfIHc/MRtEZdqAmUW0+UFNDXIUDlBKR9zLCjgjQ7eVJsSe0TwAgd8OMQ==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@emotion/is-prop-valid": "^1.1.2", "@emotion/is-prop-valid": "^1.1.2",
"@mui/private-classnames": "^5.7.0",
"@mui/types": "^7.1.3", "@mui/types": "^7.1.3",
"@mui/utils": "^5.7.0", "@mui/utils": "^5.8.0",
"@popperjs/core": "^2.11.5", "@popperjs/core": "^2.11.5",
"clsx": "^1.1.1", "clsx": "^1.1.1",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
@@ -19585,24 +19570,23 @@
} }
}, },
"@mui/icons-material": { "@mui/icons-material": {
"version": "5.6.2", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz", "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.0.tgz",
"integrity": "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ==", "integrity": "sha512-ScwLxa0q5VYV70Jfc60V/9VD0b9SvIeZ0Jddx2Dt2pBUFFO9vKdrbt9LYiT+4p21Au5NdYIb2XSHj46CLN1v3g==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2" "@babel/runtime": "^7.17.2"
} }
}, },
"@mui/material": { "@mui/material": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.0.tgz",
"integrity": "sha512-s1TSuUK5upNzGY5ZFHfJyzEt9fijn4cE+kEdEq7jGF+vpZIYXsDooH07+dNJ9+cJjYo6f9Fq1q5fPkknRC2Trw==", "integrity": "sha512-yvt3sUmUZ1i8SPadRYBCThcB57lBZsvyhC7ufVpRxA3AD39O+WXtXAapEfpDdDkJnnKb5MCimDMwBYgWLmY89Q==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/base": "5.0.0-alpha.80", "@mui/base": "5.0.0-alpha.81",
"@mui/private-classnames": "^5.7.0", "@mui/system": "^5.8.0",
"@mui/system": "^5.7.0",
"@mui/types": "^7.1.3", "@mui/types": "^7.1.3",
"@mui/utils": "^5.7.0", "@mui/utils": "^5.8.0",
"@types/react-transition-group": "^4.4.4", "@types/react-transition-group": "^4.4.4",
"clsx": "^1.1.1", "clsx": "^1.1.1",
"csstype": "^3.0.11", "csstype": "^3.0.11",
@@ -19612,25 +19596,20 @@
"react-transition-group": "^4.4.2" "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": { "@mui/private-theming": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.8.0.tgz",
"integrity": "sha512-r/6JAWAHV1IFASZnceJPe9QT/s12ia/okGbmCUO4MEPdsWcNKye1RVKSwVgLATaX3YwPxDljWguIQrM3R2gZNA==", "integrity": "sha512-MjRAneTmCKLR9u2S4jtjLUe6gpHxlbb4g2bqpDJ2PdwlvwsWIUzbc/gVB4dvccljXeWxr5G2M/Co2blXisvFIw==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/utils": "^5.7.0", "@mui/utils": "^5.8.0",
"prop-types": "^15.8.1" "prop-types": "^15.8.1"
} }
}, },
"@mui/styled-engine": { "@mui/styled-engine": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.8.0.tgz",
"integrity": "sha512-JTvp+6lbAXYqgf/YInwR+hd4F8Fhg5PxMBwKTFsdKbaZFvyBD95hzKcxRmO9Y/NdjwFYWm5bBhcZAT4r2g1kZA==", "integrity": "sha512-Q3spibB8/EgeMYHc+/o3RRTnAYkSl7ROCLhXJ830W8HZ2/iDiyYp16UcxKPurkXvLhUaILyofPVrP3Su2uKsAw==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@emotion/cache": "^11.7.1", "@emotion/cache": "^11.7.1",
@@ -19638,15 +19617,15 @@
} }
}, },
"@mui/system": { "@mui/system": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.8.0.tgz",
"integrity": "sha512-M0vemfcfaRQzqLUmVRIsAVb0rx2ULHisHED6njoJqtjH58gbVb497mH+K1vI+Lh29fKR6Ki2mx3egxVi7mUn9w==", "integrity": "sha512-1tEj2S59RjlZ/6JMJMUktQDbV2ev7hyGXqO7dRRUQ7nOJi9qHmCFP0uXj3YS6LbM6hVasgYXJg8GBjbEtfTJvg==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/private-theming": "^5.7.0", "@mui/private-theming": "^5.8.0",
"@mui/styled-engine": "^5.7.0", "@mui/styled-engine": "^5.8.0",
"@mui/types": "^7.1.3", "@mui/types": "^7.1.3",
"@mui/utils": "^5.7.0", "@mui/utils": "^5.8.0",
"clsx": "^1.1.1", "clsx": "^1.1.1",
"csstype": "^3.0.11", "csstype": "^3.0.11",
"prop-types": "^15.8.1" "prop-types": "^15.8.1"
@@ -19659,9 +19638,9 @@
"requires": {} "requires": {}
}, },
"@mui/utils": { "@mui/utils": {
"version": "5.7.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.7.0.tgz", "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.8.0.tgz",
"integrity": "sha512-uWpDIEXl7bWYkJwKQQ4Rdhc2dcotVETRYuLy29V6qLYZyAbs7AMKwDDz0XKy3RMNmU7S2R/jEeSb9xjXscQUHQ==", "integrity": "sha512-7LgUtCvz78676iC0wpTH7HizMdCrTphhBmRWimIMFrp5Ph6JbDFVuKS1CwYnWWxRyYKL0QzXrDL0lptAU90EXg==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@types/prop-types": "^15.7.5", "@types/prop-types": "^15.7.5",
@@ -20156,9 +20135,9 @@
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
}, },
"@types/node": { "@types/node": {
"version": "17.0.33", "version": "17.0.35",
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
"integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
}, },
"@types/parse-json": { "@types/parse-json": {
"version": "4.0.0", "version": "4.0.0",

View File

@@ -7,11 +7,11 @@
"@emotion/react": "^11.9.0", "@emotion/react": "^11.9.0",
"@emotion/styled": "^11.8.1", "@emotion/styled": "^11.8.1",
"@msgpack/msgpack": "^2.7.2", "@msgpack/msgpack": "^2.7.2",
"@mui/icons-material": "^5.6.2", "@mui/icons-material": "^5.8.0",
"@mui/material": "^5.7.0", "@mui/material": "^5.8.0",
"@table-library/react-table-library": "^3.1.2", "@table-library/react-table-library": "^3.1.2",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.182",
"@types/node": "^17.0.33", "@types/node": "^17.0.35",
"@types/react": "^17.0.43", "@types/react": "^17.0.43",
"@types/react-dom": "^17.0.14", "@types/react-dom": "^17.0.14",
"@types/react-router-dom": "^5.3.3", "@types/react-router-dom": "^5.3.3",

View File

@@ -376,22 +376,22 @@ const SettingsCustomization: FC = () => {
}} }}
> >
<ToggleButton value="8"> <ToggleButton value="8">
<Tooltip arrow placement="top" title="mark it as favorite to be listed at the top of the Dashboard"> <Tooltip arrow placement="top" title="filter favorites">
<StarIcon sx={{ fontSize: 14 }} /> <StarIcon sx={{ fontSize: 14 }} />
</Tooltip> </Tooltip>
</ToggleButton> </ToggleButton>
<ToggleButton value="4"> <ToggleButton value="4">
<Tooltip arrow placement="top" title="make it read-only, only if it has write operation available"> <Tooltip arrow placement="top" title="filter entities with write action disabled">
<EditOffOutlinedIcon sx={{ fontSize: 14 }} /> <EditOffOutlinedIcon sx={{ fontSize: 14 }} />
</Tooltip> </Tooltip>
</ToggleButton> </ToggleButton>
<ToggleButton value="2"> <ToggleButton value="2">
<Tooltip arrow placement="top" title="excluded it from MQTT and API outputs"> <Tooltip arrow placement="top" title="filter entities excluded from MQTT and API outputs">
<CommentsDisabledOutlinedIcon sx={{ fontSize: 14 }} /> <CommentsDisabledOutlinedIcon sx={{ fontSize: 14 }} />
</Tooltip> </Tooltip>
</ToggleButton> </ToggleButton>
<ToggleButton value="1"> <ToggleButton value="1">
<Tooltip arrow placement="top" title="hide it from the Dashboard"> <Tooltip arrow placement="top" title="filter entities hidden from Web Dashboard">
<VisibilityOffOutlinedIcon sx={{ fontSize: 14 }} /> <VisibilityOffOutlinedIcon sx={{ fontSize: 14 }} />
</Tooltip> </Tooltip>
</ToggleButton> </ToggleButton>
@@ -403,26 +403,30 @@ const SettingsCustomization: FC = () => {
<VisibilityOffOutlinedIcon color="primary" sx={{ fontSize: 14, verticalAlign: 'middle' }} />: <VisibilityOffOutlinedIcon color="primary" sx={{ fontSize: 14, verticalAlign: 'middle' }} />:
</Grid> </Grid>
<Grid item> <Grid item>
<Button <Tooltip arrow placement="top" title="mark shown entities to be all visible and output ">
size="small" <Button
sx={{ fontSize: 10 }} size="small"
variant="outlined" sx={{ fontSize: 10 }}
color="inherit" variant="outlined"
onClick={() => maskDisabled(false)} color="inherit"
> onClick={() => maskDisabled(false)}
enable >
</Button> enable
</Button>
</Tooltip>
</Grid> </Grid>
<Grid item> <Grid item>
<Button <Tooltip arrow placement="top" title="mark shown entities to be not visible or output ">
size="small" <Button
sx={{ fontSize: 10 }} size="small"
variant="outlined" sx={{ fontSize: 10 }}
color="inherit" variant="outlined"
onClick={() => maskDisabled(true)} color="inherit"
> onClick={() => maskDisabled(true)}
disable >
</Button> disable
</Button>
</Tooltip>
</Grid> </Grid>
</Grid> </Grid>
<Table data={{ nodes: shown_data }} theme={entities_theme} sort={entity_sort} layout={{ custom: true }}> <Table data={{ nodes: shown_data }} theme={entities_theme} sort={entity_sort} layout={{ custom: true }}>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 139 KiB

BIN
media/web_sensor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

@@ -130,6 +130,7 @@
// Heat Pumps - 0x38 // Heat Pumps - 0x38
{200, DeviceType::HEATPUMP, F("HP Module"), DeviceFlags::EMS_DEVICE_FLAG_NONE}, {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}, {252, DeviceType::HEATPUMP, F("HP Module"), DeviceFlags::EMS_DEVICE_FLAG_NONE},
// Connect devices - 0x02 // Connect devices - 0x02

View File

@@ -238,7 +238,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
DeviceValueUOM::NONE, DeviceValueUOM::NONE,
MAKE_CF_CB(set_energyCostRatio), MAKE_CF_CB(set_energyCostRatio),
0, 0,
19.9); 20);
register_device_value(DeviceValueTAG::TAG_BOILER_DATA, register_device_value(DeviceValueTAG::TAG_BOILER_DATA,
&fossileFactor_, &fossileFactor_,
DeviceValueType::UINT, DeviceValueType::UINT,
@@ -817,8 +817,6 @@ void Boiler::process_UBAParameterWWPlus(std::shared_ptr<const Telegram> telegram
wwComfort1 = EMS_VALUE_UINT_NOTSET; wwComfort1 = EMS_VALUE_UINT_NOTSET;
} }
has_update(wwComfort1_, wwComfort1); has_update(wwComfort1_, wwComfort1);
} }
// 0xE9 - WW monitor ems+ // 0xE9 - WW monitor ems+

View File

@@ -85,6 +85,39 @@ class Boiler : public EMSdevice {
uint32_t wwStarts_; // DHW starts uint32_t wwStarts_; // DHW starts
uint32_t wwStarts2_; // DHW control starts uint32_t wwStarts2_; // DHW control starts
uint32_t wwWorkM_; // DHW minutes 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 wwHystOn_;
int8_t wwHystOff_; int8_t wwHystOff_;
uint8_t wwTapActivated_; // maintenance-mode to switch DHW off uint8_t wwTapActivated_; // maintenance-mode to switch DHW off

View File

@@ -973,7 +973,7 @@ void Thermostat::process_RC300Summer(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, hc->offsettemp, 2); has_update(telegram, hc->offsettemp, 2);
if (!is_fetch(summer2_typeids[hc->hc()])) { if (!is_fetch(summer2_typeids[hc->hc()])) {
has_update(telegram, hc->summertemp, 6); has_update(telegram, hc->summertemp, 6);
has_update(telegram, hc->summer_setmode, 7); has_update(telegram, hc->summersetmode, 7);
} }
if (hc->heatingtype < 3) { if (hc->heatingtype < 3) {
@@ -993,7 +993,7 @@ void Thermostat::process_RC300Summer2(std::shared_ptr<const Telegram> telegram)
if (hc == nullptr) { if (hc == nullptr) {
return; return;
} }
has_update(telegram, hc->summer_setmode, 0); has_update(telegram, hc->hpoperatingmode, 0);
has_update(telegram, hc->summertemp, 1); 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; uint8_t set = 0xFF;
if (!Helpers::value2enum(value, set, FL_(enum_summermode))) {
return false;
}
if (is_fetch(summer2_typeids[hc->hc()])) { 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()]); write_command(summer2_typeids[hc->hc()], 0, set, summer2_typeids[hc->hc()]);
} else { } else {
if (!Helpers::value2enum(value, set, FL_(enum_summermode))) {
return false;
}
write_command(summer_typeids[hc->hc()], 7, set, summer_typeids[hc->hc()]); 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; factor = 1;
break; break;
case HeatingCircuit::Mode::DESIGN: case HeatingCircuit::Mode::DESIGN:
if (hc->heatingtype == 3) { if (hc->heatingtype == 3 && model == EMS_DEVICE_FLAG_RC35) {
offset = EMS_OFFSET_RC35Set_temp_design_floor; offset = EMS_OFFSET_RC35Set_temp_design_floor;
} else { } else {
offset = EMS_OFFSET_RC35Set_temp_design; offset = EMS_OFFSET_RC35Set_temp_design;
@@ -3002,7 +3005,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co
factor = 1; factor = 1;
break; break;
case HeatingCircuit::Mode::MAXFLOW: case HeatingCircuit::Mode::MAXFLOW:
if (hc->heatingtype == 3) { if (hc->heatingtype == 3 && model == EMS_DEVICE_FLAG_RC35) {
offset = 35; offset = 35;
} else { } else {
offset = 15; offset = 15;
@@ -3720,7 +3723,7 @@ void Thermostat::register_device_values() {
DeviceValueUOM::NONE, DeviceValueUOM::NONE,
MAKE_CF_CB(set_energyCostRatio), MAKE_CF_CB(set_energyCostRatio),
0, 0,
19.9); 20);
register_device_value(DeviceValueTAG::TAG_THERMOSTAT_DATA, register_device_value(DeviceValueTAG::TAG_THERMOSTAT_DATA,
&fossileFactor_, &fossileFactor_,
DeviceValueType::UINT, DeviceValueType::UINT,
@@ -3831,7 +3834,14 @@ void Thermostat::register_device_values_hc(std::shared_ptr<Thermostat::HeatingCi
register_device_value( register_device_value(
tag, &hc->heatingtype, DeviceValueType::ENUM, FL_(enum_heatingtype), FL_(heatingtype), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatingtype)); tag, &hc->heatingtype, DeviceValueType::ENUM, FL_(enum_heatingtype), FL_(heatingtype), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatingtype));
register_device_value( 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->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE);
register_device_value( register_device_value(
tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode)); tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode));

View File

@@ -54,7 +54,8 @@ class Thermostat : public EMSdevice {
uint8_t designtemp; // heating curve design temp at MinExtTemp uint8_t designtemp; // heating curve design temp at MinExtTemp
int8_t offsettemp; // heating curve offest temp at roomtemp signed! int8_t offsettemp; // heating curve offest temp at roomtemp signed!
uint8_t manualtemp; uint8_t manualtemp;
uint8_t summer_setmode; uint8_t summersetmode;
uint8_t hpoperatingmode;
uint8_t roominfluence; uint8_t roominfluence;
uint8_t roominfl_factor; uint8_t roominfl_factor;
int16_t curroominfl; int16_t curroominfl;

View File

@@ -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_wwMode3, F_(on), F_(off), F_(auto))
MAKE_PSTR_LIST(enum_heatingtype, F_(off), F_(radiator), F_(convector), F_(floor)) 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_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_summer, F_(winter), F_(summer))
MAKE_PSTR_LIST(enum_mode, F_(manual), F_(auto)) // RC100, RC300, RC310 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(targetflowtemp, F("targetflowtemp"), F("berechnete Flusstemperatur"))
MAKE_PSTR_LIST(heatingtype, F("heatingtype"), F("Heizungstyp")) MAKE_PSTR_LIST(heatingtype, F("heatingtype"), F("Heizungstyp"))
MAKE_PSTR_LIST(summersetmode, F("summersetmode"), F("Einstellung Sommerbetrieb")) 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(controlmode, F("controlmode"), F("Kontrollmodus"))
MAKE_PSTR_LIST(control, F("control"), F("Fernsteuerung")) MAKE_PSTR_LIST(control, F("control"), F("Fernsteuerung"))
MAKE_PSTR_LIST(holidays, F("holidays"), F("holiday dates")) MAKE_PSTR_LIST(holidays, F("holidays"), F("holiday dates"))

View File

@@ -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_wwMode3, F_(on), F_(off), F_(auto))
MAKE_PSTR_LIST(enum_heatingtype, F_(off), F_(radiator), F_(convector), F_(floor)) 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_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_summer, F_(winter), F_(summer))
MAKE_PSTR_LIST(enum_mode, F_(manual), F_(auto)) // RC100, RC300, RC310 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(targetflowtemp, F("targetflowtemp"), F("target flow temperature"))
MAKE_PSTR_LIST(heatingtype, F("heatingtype"), F("heating type")) MAKE_PSTR_LIST(heatingtype, F("heatingtype"), F("heating type"))
MAKE_PSTR_LIST(summersetmode, F("summersetmode"), F("set summer mode")) 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(controlmode, F("controlmode"), F("control mode"))
MAKE_PSTR_LIST(control, F("control"), F("control device")) MAKE_PSTR_LIST(control, F("control"), F("control device"))
MAKE_PSTR_LIST(holidays, F("holidays"), F("holiday dates")) MAKE_PSTR_LIST(holidays, F("holidays"), F("holiday dates"))