mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
Merge pull request #808 from proddy/dev
add v3.4 entity id flag to MQTT settings
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
## **IMPORTANT! BREAKING CHANGES**
|
## **IMPORTANT! BREAKING CHANGES**
|
||||||
|
|
||||||
- When upgrading to v3.5 for the first time from v3.4 on a BBQKees Gateway board you will need to use the [EMS-EPS Flasher](https://github.com/emsesp/EMS-ESP-Flasher/releases) to correctly re-partition the flash. Make sure you backup the settings and customizations from the WebUI (System->Upload/Download) and restore after the upgrade.
|
- When upgrading to v3.5 for the first time from v3.4 on a BBQKees Gateway board you will need to use the [EMS-EPS Flasher](https://github.com/emsesp/EMS-ESP-Flasher/releases) to correctly re-partition the flash. Make sure you backup the settings and customizations from the WebUI (System->Upload/Download) and restore after the upgrade.
|
||||||
- Since 3.5.0b11 we have added support for multiple EMS-ESPs [#759] and also renamed the HA Entity IDs. For example what was previously `sensor.boiler_actual_boiler_temperature` is now using the shortname form `sensor.boiler_boiltemp` as opposed to the English description. Unfortunately this does means any HA dashboards, automation scripts and integrations (e.g. Grafana) need to be adjusted accordingly.
|
- Support for multiple EMS-ESPs [#759] has been added as an optional setting for MQTT. When enabled, which is now the default, all MQTT Discovery Entity IDs will include the MQTT base name and the shortname of the EMS-ESP device entity. For example what was previously `sensor.boiler_actual_boiler_temperature` will now become `sensor.ems_esp_boiler_boiltemp`. If you still want to use the old format and retain the history and script compatibility in Home Assistant then set this back to the old format.
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
|
||||||
|
|||||||
252
interface/package-lock.json
generated
252
interface/package-lock.json
generated
@@ -11,11 +11,11 @@
|
|||||||
"@emotion/react": "^11.10.5",
|
"@emotion/react": "^11.10.5",
|
||||||
"@emotion/styled": "^11.10.5",
|
"@emotion/styled": "^11.10.5",
|
||||||
"@msgpack/msgpack": "^2.8.0",
|
"@msgpack/msgpack": "^2.8.0",
|
||||||
"@mui/icons-material": "^5.10.16",
|
"@mui/icons-material": "^5.11.0",
|
||||||
"@mui/material": "^5.10.17",
|
"@mui/material": "^5.11.0",
|
||||||
"@table-library/react-table-library": "4.0.23",
|
"@table-library/react-table-library": "4.0.23",
|
||||||
"@types/lodash": "^4.14.191",
|
"@types/lodash": "^4.14.191",
|
||||||
"@types/node": "^18.11.12",
|
"@types/node": "^18.11.16",
|
||||||
"@types/react": "^18.0.26",
|
"@types/react": "^18.0.26",
|
||||||
"@types/react-dom": "^18.0.9",
|
"@types/react-dom": "^18.0.9",
|
||||||
"@types/react-router-dom": "^5.3.3",
|
"@types/react-router-dom": "^5.3.3",
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-dropzone": "^14.2.3",
|
"react-dropzone": "^14.2.3",
|
||||||
"react-icons": "^4.7.1",
|
"react-icons": "^4.7.1",
|
||||||
"react-router-dom": "^6.4.5",
|
"react-router-dom": "^6.5.0",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
"sockette": "^2.0.6",
|
"sockette": "^2.0.6",
|
||||||
"typesafe-i18n": "^5.17.1",
|
"typesafe-i18n": "^5.17.1",
|
||||||
@@ -3091,14 +3091,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/base": {
|
"node_modules/@mui/base": {
|
||||||
"version": "5.0.0-alpha.109",
|
"version": "5.0.0-alpha.110",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.109.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.110.tgz",
|
||||||
"integrity": "sha512-UQxoONPI3ntzxcD/cbFHl+Lp2xsVj6HpKmU9QhUZ2kZ2K2yej2QJyU1gnADoWl/Hu94VrvwSSRnjTjR3HvXO/g==",
|
"integrity": "sha512-q4TH9T3sTBknTXXTEf2zO8F3nbHg5iGgiaRx9XErTbXvHrmLrQXbQ4hmrLERocSTBFCFWkKyne/qZj0diWlPtA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@emotion/is-prop-valid": "^1.2.0",
|
"@emotion/is-prop-valid": "^1.2.0",
|
||||||
"@mui/types": "^7.2.2",
|
"@mui/types": "^7.2.3",
|
||||||
"@mui/utils": "^5.10.16",
|
"@mui/utils": "^5.11.0",
|
||||||
"@popperjs/core": "^2.11.6",
|
"@popperjs/core": "^2.11.6",
|
||||||
"clsx": "^1.2.1",
|
"clsx": "^1.2.1",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
@@ -3123,20 +3123,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/core-downloads-tracker": {
|
"node_modules/@mui/core-downloads-tracker": {
|
||||||
"version": "5.10.17",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.17.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.0.tgz",
|
||||||
"integrity": "sha512-iNwUuMA30nrN0tiEkeD3zaczv7Tk2jlZIDbXRnijAsYXkZtl/xEzQsVRIPYRDuyEz6D18vQJhV8h7gPUXEubTg==",
|
"integrity": "sha512-Bmogung451ezVv2YI1RvweOIVsTj2RQ4Fk61+e/+8LFPLTFEwVGbL0YhNy1VB5tri8pzGNV228kxtWVTFooQkg==",
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
"url": "https://opencollective.com/mui"
|
"url": "https://opencollective.com/mui"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/icons-material": {
|
"node_modules/@mui/icons-material": {
|
||||||
"version": "5.10.16",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.16.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.11.0.tgz",
|
||||||
"integrity": "sha512-jjCc0IF6iyLiucQCu5igg3fOscSqbbvRCmyRxXgzOcLR56B0sg2L8o+ZfJ0dAg59+wvgtXaxvjze/mJg0B4iWA==",
|
"integrity": "sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.1"
|
"@babel/runtime": "^7.20.6"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
@@ -3157,16 +3157,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/material": {
|
"node_modules/@mui/material": {
|
||||||
"version": "5.10.17",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.17.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.11.0.tgz",
|
||||||
"integrity": "sha512-Kuqgv1qI5HXnc/Xu426xhCGYBSKzplb+xFNLitbnIb92Qx8jmcpfNpFlDJa2kD2H6qP66rr/m4c/zMUfGX/xBQ==",
|
"integrity": "sha512-8Zl34lb89rLKTTi50Kakki675/LLHMKKnkp8Ee3rAZ2qmisQlRODsGh1MBjENKp0vwhQnNSvlsCfJteVTfotPQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@mui/base": "5.0.0-alpha.109",
|
"@mui/base": "5.0.0-alpha.110",
|
||||||
"@mui/core-downloads-tracker": "^5.10.17",
|
"@mui/core-downloads-tracker": "^5.11.0",
|
||||||
"@mui/system": "^5.10.17",
|
"@mui/system": "^5.11.0",
|
||||||
"@mui/types": "^7.2.2",
|
"@mui/types": "^7.2.3",
|
||||||
"@mui/utils": "^5.10.16",
|
"@mui/utils": "^5.11.0",
|
||||||
"@types/react-transition-group": "^4.4.5",
|
"@types/react-transition-group": "^4.4.5",
|
||||||
"clsx": "^1.2.1",
|
"clsx": "^1.2.1",
|
||||||
"csstype": "^3.1.1",
|
"csstype": "^3.1.1",
|
||||||
@@ -3201,12 +3201,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/private-theming": {
|
"node_modules/@mui/private-theming": {
|
||||||
"version": "5.10.16",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.11.0.tgz",
|
||||||
"integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==",
|
"integrity": "sha512-UFQLb9x5Sj4pg2GhhCGw3Ls/y1Hw/tz9RsBrULvUF0Vgps1z19o7XTq2xqUvp7pN7fJTW7eVIT2gwVg2xlk8PQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@mui/utils": "^5.10.16",
|
"@mui/utils": "^5.11.0",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -3227,11 +3227,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/styled-engine": {
|
"node_modules/@mui/styled-engine": {
|
||||||
"version": "5.10.16",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.0.tgz",
|
||||||
"integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==",
|
"integrity": "sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@emotion/cache": "^11.10.5",
|
"@emotion/cache": "^11.10.5",
|
||||||
"csstype": "^3.1.1",
|
"csstype": "^3.1.1",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
@@ -3258,15 +3258,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/system": {
|
"node_modules/@mui/system": {
|
||||||
"version": "5.10.17",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.17.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.11.0.tgz",
|
||||||
"integrity": "sha512-UYzAOSK7uxkMsUssqrIUW3lnOuQpU8vqh4hLwfSw+GYAnQo3qjK4m4NhlDx+pFpsjjiGnr3K+vrSH+aIAMbcLg==",
|
"integrity": "sha512-HFUT7Dlmyq6Wfuxsw8QBXZxXDYIQQaJ4YHaZd7s+nDMcjerLnILxjh2g3a6umtOUM+jEcRaFJAtvLZvlGfa5fw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@mui/private-theming": "^5.10.16",
|
"@mui/private-theming": "^5.11.0",
|
||||||
"@mui/styled-engine": "^5.10.16",
|
"@mui/styled-engine": "^5.11.0",
|
||||||
"@mui/types": "^7.2.2",
|
"@mui/types": "^7.2.3",
|
||||||
"@mui/utils": "^5.10.16",
|
"@mui/utils": "^5.11.0",
|
||||||
"clsx": "^1.2.1",
|
"clsx": "^1.2.1",
|
||||||
"csstype": "^3.1.1",
|
"csstype": "^3.1.1",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
@@ -3297,9 +3297,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/types": {
|
"node_modules/@mui/types": {
|
||||||
"version": "7.2.2",
|
"version": "7.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.3.tgz",
|
||||||
"integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==",
|
"integrity": "sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@types/react": "*"
|
"@types/react": "*"
|
||||||
},
|
},
|
||||||
@@ -3310,11 +3310,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/utils": {
|
"node_modules/@mui/utils": {
|
||||||
"version": "5.10.16",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.11.0.tgz",
|
||||||
"integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==",
|
"integrity": "sha512-DP/YDaVVCVzJpZ5FFPLKNmaJkeaYRviTyIZkL/D5/FmPXQiA6ecd6z0/+VwoNQtp7aXAQWaRhvz4FM25yqFlHA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@types/prop-types": "^15.7.5",
|
"@types/prop-types": "^15.7.5",
|
||||||
"@types/react-is": "^16.7.1 || ^17.0.0",
|
"@types/react-is": "^16.7.1 || ^17.0.0",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
@@ -3458,9 +3458,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@remix-run/router": {
|
"node_modules/@remix-run/router": {
|
||||||
"version": "1.0.5",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.1.0.tgz",
|
||||||
"integrity": "sha512-my0Mycd+jruq/1lQuO5LBB6WTlL/e8DTCYWp44DfMTDcXz8DcTlgF0ISaLsGewt+ctHN+yA8xMq3q/N7uWJPug==",
|
"integrity": "sha512-rGl+jH/7x1KBCQScz9p54p0dtPLNeKGb3e0wD2H5/oZj41bwQUnXdzbj2TbUAFhvD7cp9EyEQA4dEgpUFa1O7Q==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
}
|
}
|
||||||
@@ -4017,9 +4017,9 @@
|
|||||||
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
|
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.11.12",
|
"version": "18.11.16",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.16.tgz",
|
||||||
"integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg=="
|
"integrity": "sha512-6T7P5bDkRhqRxrQtwj7vru+bWTpelgtcETAZEUSdq0YISKz8WKdoBukQLYQQ6DFHvU9JRsbFq0JH5C51X2ZdnA=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/parse-json": {
|
"node_modules/@types/parse-json": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
@@ -14561,11 +14561,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/react-router": {
|
"node_modules/react-router": {
|
||||||
"version": "6.4.5",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.5.tgz",
|
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.5.0.tgz",
|
||||||
"integrity": "sha512-1RQJ8bM70YEumHIlNUYc6mFfUDoWa5EgPDenK/fq0bxD8DYpQUi/S6Zoft+9DBrh2xmtg92N5HMAJgGWDhKJ5Q==",
|
"integrity": "sha512-fqqUSU0NC0tSX0sZbyuxzuAzvGqbjiZItBQnyicWlOUmzhAU8YuLgRbaCL2hf3sJdtRy4LP/WBrWtARkMvdGPQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@remix-run/router": "1.0.5"
|
"@remix-run/router": "1.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
@@ -14575,12 +14575,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/react-router-dom": {
|
"node_modules/react-router-dom": {
|
||||||
"version": "6.4.5",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.5.tgz",
|
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.5.0.tgz",
|
||||||
"integrity": "sha512-a7HsgikBR0wNfroBHcZUCd9+mLRqZS8R5U1Z1mzLWxFXEkUT3vR1XXmSIVoVpxVX8Bar0nQYYYc9Yipq8dWwAA==",
|
"integrity": "sha512-/XzRc5fq80gW1ctiIGilyKFZC/j4kfe75uivMsTChFbkvrK4ZrF3P3cGIc1f/SSkQ4JiJozPrf+AwUHHWVehVg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@remix-run/router": "1.0.5",
|
"@remix-run/router": "1.1.0",
|
||||||
"react-router": "6.4.5"
|
"react-router": "6.5.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
@@ -19642,14 +19642,14 @@
|
|||||||
"integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ=="
|
"integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ=="
|
||||||
},
|
},
|
||||||
"@mui/base": {
|
"@mui/base": {
|
||||||
"version": "5.0.0-alpha.109",
|
"version": "5.0.0-alpha.110",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.109.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.110.tgz",
|
||||||
"integrity": "sha512-UQxoONPI3ntzxcD/cbFHl+Lp2xsVj6HpKmU9QhUZ2kZ2K2yej2QJyU1gnADoWl/Hu94VrvwSSRnjTjR3HvXO/g==",
|
"integrity": "sha512-q4TH9T3sTBknTXXTEf2zO8F3nbHg5iGgiaRx9XErTbXvHrmLrQXbQ4hmrLERocSTBFCFWkKyne/qZj0diWlPtA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@emotion/is-prop-valid": "^1.2.0",
|
"@emotion/is-prop-valid": "^1.2.0",
|
||||||
"@mui/types": "^7.2.2",
|
"@mui/types": "^7.2.3",
|
||||||
"@mui/utils": "^5.10.16",
|
"@mui/utils": "^5.11.0",
|
||||||
"@popperjs/core": "^2.11.6",
|
"@popperjs/core": "^2.11.6",
|
||||||
"clsx": "^1.2.1",
|
"clsx": "^1.2.1",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
@@ -19657,29 +19657,29 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/core-downloads-tracker": {
|
"@mui/core-downloads-tracker": {
|
||||||
"version": "5.10.17",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.17.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.0.tgz",
|
||||||
"integrity": "sha512-iNwUuMA30nrN0tiEkeD3zaczv7Tk2jlZIDbXRnijAsYXkZtl/xEzQsVRIPYRDuyEz6D18vQJhV8h7gPUXEubTg=="
|
"integrity": "sha512-Bmogung451ezVv2YI1RvweOIVsTj2RQ4Fk61+e/+8LFPLTFEwVGbL0YhNy1VB5tri8pzGNV228kxtWVTFooQkg=="
|
||||||
},
|
},
|
||||||
"@mui/icons-material": {
|
"@mui/icons-material": {
|
||||||
"version": "5.10.16",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.16.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.11.0.tgz",
|
||||||
"integrity": "sha512-jjCc0IF6iyLiucQCu5igg3fOscSqbbvRCmyRxXgzOcLR56B0sg2L8o+ZfJ0dAg59+wvgtXaxvjze/mJg0B4iWA==",
|
"integrity": "sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.20.1"
|
"@babel/runtime": "^7.20.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/material": {
|
"@mui/material": {
|
||||||
"version": "5.10.17",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.17.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.11.0.tgz",
|
||||||
"integrity": "sha512-Kuqgv1qI5HXnc/Xu426xhCGYBSKzplb+xFNLitbnIb92Qx8jmcpfNpFlDJa2kD2H6qP66rr/m4c/zMUfGX/xBQ==",
|
"integrity": "sha512-8Zl34lb89rLKTTi50Kakki675/LLHMKKnkp8Ee3rAZ2qmisQlRODsGh1MBjENKp0vwhQnNSvlsCfJteVTfotPQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@mui/base": "5.0.0-alpha.109",
|
"@mui/base": "5.0.0-alpha.110",
|
||||||
"@mui/core-downloads-tracker": "^5.10.17",
|
"@mui/core-downloads-tracker": "^5.11.0",
|
||||||
"@mui/system": "^5.10.17",
|
"@mui/system": "^5.11.0",
|
||||||
"@mui/types": "^7.2.2",
|
"@mui/types": "^7.2.3",
|
||||||
"@mui/utils": "^5.10.16",
|
"@mui/utils": "^5.11.0",
|
||||||
"@types/react-transition-group": "^4.4.5",
|
"@types/react-transition-group": "^4.4.5",
|
||||||
"clsx": "^1.2.1",
|
"clsx": "^1.2.1",
|
||||||
"csstype": "^3.1.1",
|
"csstype": "^3.1.1",
|
||||||
@@ -19689,53 +19689,53 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/private-theming": {
|
"@mui/private-theming": {
|
||||||
"version": "5.10.16",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.11.0.tgz",
|
||||||
"integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==",
|
"integrity": "sha512-UFQLb9x5Sj4pg2GhhCGw3Ls/y1Hw/tz9RsBrULvUF0Vgps1z19o7XTq2xqUvp7pN7fJTW7eVIT2gwVg2xlk8PQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@mui/utils": "^5.10.16",
|
"@mui/utils": "^5.11.0",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/styled-engine": {
|
"@mui/styled-engine": {
|
||||||
"version": "5.10.16",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.0.tgz",
|
||||||
"integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==",
|
"integrity": "sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@emotion/cache": "^11.10.5",
|
"@emotion/cache": "^11.10.5",
|
||||||
"csstype": "^3.1.1",
|
"csstype": "^3.1.1",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/system": {
|
"@mui/system": {
|
||||||
"version": "5.10.17",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.17.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.11.0.tgz",
|
||||||
"integrity": "sha512-UYzAOSK7uxkMsUssqrIUW3lnOuQpU8vqh4hLwfSw+GYAnQo3qjK4m4NhlDx+pFpsjjiGnr3K+vrSH+aIAMbcLg==",
|
"integrity": "sha512-HFUT7Dlmyq6Wfuxsw8QBXZxXDYIQQaJ4YHaZd7s+nDMcjerLnILxjh2g3a6umtOUM+jEcRaFJAtvLZvlGfa5fw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@mui/private-theming": "^5.10.16",
|
"@mui/private-theming": "^5.11.0",
|
||||||
"@mui/styled-engine": "^5.10.16",
|
"@mui/styled-engine": "^5.11.0",
|
||||||
"@mui/types": "^7.2.2",
|
"@mui/types": "^7.2.3",
|
||||||
"@mui/utils": "^5.10.16",
|
"@mui/utils": "^5.11.0",
|
||||||
"clsx": "^1.2.1",
|
"clsx": "^1.2.1",
|
||||||
"csstype": "^3.1.1",
|
"csstype": "^3.1.1",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/types": {
|
"@mui/types": {
|
||||||
"version": "7.2.2",
|
"version": "7.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.3.tgz",
|
||||||
"integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==",
|
"integrity": "sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==",
|
||||||
"requires": {}
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@mui/utils": {
|
"@mui/utils": {
|
||||||
"version": "5.10.16",
|
"version": "5.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.11.0.tgz",
|
||||||
"integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==",
|
"integrity": "sha512-DP/YDaVVCVzJpZ5FFPLKNmaJkeaYRviTyIZkL/D5/FmPXQiA6ecd6z0/+VwoNQtp7aXAQWaRhvz4FM25yqFlHA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.20.1",
|
"@babel/runtime": "^7.20.6",
|
||||||
"@types/prop-types": "^15.7.5",
|
"@types/prop-types": "^15.7.5",
|
||||||
"@types/react-is": "^16.7.1 || ^17.0.0",
|
"@types/react-is": "^16.7.1 || ^17.0.0",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
@@ -19818,9 +19818,9 @@
|
|||||||
"integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
|
"integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
|
||||||
},
|
},
|
||||||
"@remix-run/router": {
|
"@remix-run/router": {
|
||||||
"version": "1.0.5",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.1.0.tgz",
|
||||||
"integrity": "sha512-my0Mycd+jruq/1lQuO5LBB6WTlL/e8DTCYWp44DfMTDcXz8DcTlgF0ISaLsGewt+ctHN+yA8xMq3q/N7uWJPug=="
|
"integrity": "sha512-rGl+jH/7x1KBCQScz9p54p0dtPLNeKGb3e0wD2H5/oZj41bwQUnXdzbj2TbUAFhvD7cp9EyEQA4dEgpUFa1O7Q=="
|
||||||
},
|
},
|
||||||
"@rollup/plugin-babel": {
|
"@rollup/plugin-babel": {
|
||||||
"version": "5.3.1",
|
"version": "5.3.1",
|
||||||
@@ -20232,9 +20232,9 @@
|
|||||||
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
|
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.11.12",
|
"version": "18.11.16",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.16.tgz",
|
||||||
"integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg=="
|
"integrity": "sha512-6T7P5bDkRhqRxrQtwj7vru+bWTpelgtcETAZEUSdq0YISKz8WKdoBukQLYQQ6DFHvU9JRsbFq0JH5C51X2ZdnA=="
|
||||||
},
|
},
|
||||||
"@types/parse-json": {
|
"@types/parse-json": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
@@ -27723,20 +27723,20 @@
|
|||||||
"integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A=="
|
"integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A=="
|
||||||
},
|
},
|
||||||
"react-router": {
|
"react-router": {
|
||||||
"version": "6.4.5",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.5.tgz",
|
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.5.0.tgz",
|
||||||
"integrity": "sha512-1RQJ8bM70YEumHIlNUYc6mFfUDoWa5EgPDenK/fq0bxD8DYpQUi/S6Zoft+9DBrh2xmtg92N5HMAJgGWDhKJ5Q==",
|
"integrity": "sha512-fqqUSU0NC0tSX0sZbyuxzuAzvGqbjiZItBQnyicWlOUmzhAU8YuLgRbaCL2hf3sJdtRy4LP/WBrWtARkMvdGPQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@remix-run/router": "1.0.5"
|
"@remix-run/router": "1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"react-router-dom": {
|
"react-router-dom": {
|
||||||
"version": "6.4.5",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.5.tgz",
|
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.5.0.tgz",
|
||||||
"integrity": "sha512-a7HsgikBR0wNfroBHcZUCd9+mLRqZS8R5U1Z1mzLWxFXEkUT3vR1XXmSIVoVpxVX8Bar0nQYYYc9Yipq8dWwAA==",
|
"integrity": "sha512-/XzRc5fq80gW1ctiIGilyKFZC/j4kfe75uivMsTChFbkvrK4ZrF3P3cGIc1f/SSkQ4JiJozPrf+AwUHHWVehVg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@remix-run/router": "1.0.5",
|
"@remix-run/router": "1.1.0",
|
||||||
"react-router": "6.4.5"
|
"react-router": "6.5.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"react-scripts": {
|
"react-scripts": {
|
||||||
|
|||||||
@@ -7,11 +7,11 @@
|
|||||||
"@emotion/react": "^11.10.5",
|
"@emotion/react": "^11.10.5",
|
||||||
"@emotion/styled": "^11.10.5",
|
"@emotion/styled": "^11.10.5",
|
||||||
"@msgpack/msgpack": "^2.8.0",
|
"@msgpack/msgpack": "^2.8.0",
|
||||||
"@mui/icons-material": "^5.10.16",
|
"@mui/icons-material": "^5.11.0",
|
||||||
"@mui/material": "^5.10.17",
|
"@mui/material": "^5.11.0",
|
||||||
"@table-library/react-table-library": "4.0.23",
|
"@table-library/react-table-library": "4.0.23",
|
||||||
"@types/lodash": "^4.14.191",
|
"@types/lodash": "^4.14.191",
|
||||||
"@types/node": "^18.11.12",
|
"@types/node": "^18.11.16",
|
||||||
"@types/react": "^18.0.26",
|
"@types/react": "^18.0.26",
|
||||||
"@types/react-dom": "^18.0.9",
|
"@types/react-dom": "^18.0.9",
|
||||||
"@types/react-router-dom": "^5.3.3",
|
"@types/react-router-dom": "^5.3.3",
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-dropzone": "^14.2.3",
|
"react-dropzone": "^14.2.3",
|
||||||
"react-icons": "^4.7.1",
|
"react-icons": "^4.7.1",
|
||||||
"react-router-dom": "^6.4.5",
|
"react-router-dom": "^6.5.0",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
"sockette": "^2.0.6",
|
"sockette": "^2.0.6",
|
||||||
"typesafe-i18n": "^5.17.1",
|
"typesafe-i18n": "^5.17.1",
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ const MqttSettingsForm: FC = () => {
|
|||||||
control={<Checkbox name="mqtt_retain" checked={data.mqtt_retain} onChange={updateFormValue} />}
|
control={<Checkbox name="mqtt_retain" checked={data.mqtt_retain} onChange={updateFormValue} />}
|
||||||
label={LL.MQTT_RETAIN_FLAG()}
|
label={LL.MQTT_RETAIN_FLAG()}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Typography sx={{ pt: 2 }} variant="h6" color="primary">
|
<Typography sx={{ pt: 2 }} variant="h6" color="primary">
|
||||||
{LL.FORMATTING()}
|
{LL.FORMATTING()}
|
||||||
</Typography>
|
</Typography>
|
||||||
@@ -214,26 +215,15 @@ const MqttSettingsForm: FC = () => {
|
|||||||
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
|
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
|
||||||
<Grid item>
|
<Grid item>
|
||||||
<BlockFormControlLabel
|
<BlockFormControlLabel
|
||||||
sx={{ pb: 2 }}
|
sx={{ pb: 1 }}
|
||||||
control={<Checkbox name="ha_enabled" checked={data.ha_enabled} onChange={updateFormValue} />}
|
control={<Checkbox name="ha_enabled" checked={data.ha_enabled} onChange={updateFormValue} />}
|
||||||
label={LL.MQTT_PUBLISH_TEXT_3()}
|
label={LL.MQTT_PUBLISH_TEXT_3()}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
{data.ha_enabled && (
|
{data.ha_enabled && (
|
||||||
<>
|
<>
|
||||||
|
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
|
||||||
<Grid item>
|
<Grid item>
|
||||||
<BlockFormControlLabel
|
|
||||||
control={
|
|
||||||
<Checkbox
|
|
||||||
name="multiple_instances"
|
|
||||||
checked={data.multiple_instances}
|
|
||||||
onChange={updateFormValue}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
label={LL.MQTT_MULTIPLE_INSTANCES()}
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
<Grid item sx={{ pb: 3 }}>
|
|
||||||
<ValidatedTextField
|
<ValidatedTextField
|
||||||
name="discovery_prefix"
|
name="discovery_prefix"
|
||||||
label={LL.MQTT_PUBLISH_TEXT_4()}
|
label={LL.MQTT_PUBLISH_TEXT_4()}
|
||||||
@@ -241,14 +231,30 @@ const MqttSettingsForm: FC = () => {
|
|||||||
variant="outlined"
|
variant="outlined"
|
||||||
value={data.discovery_prefix}
|
value={data.discovery_prefix}
|
||||||
onChange={updateFormValue}
|
onChange={updateFormValue}
|
||||||
size="small"
|
margin="normal"
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
<Grid item>
|
||||||
|
<ValidatedTextField
|
||||||
|
name="multiple_instances"
|
||||||
|
label={LL.MQTT_ENTITY_FORMAT()}
|
||||||
|
value={data.multiple_instances}
|
||||||
|
fullWidth
|
||||||
|
variant="outlined"
|
||||||
|
onChange={updateFormValue}
|
||||||
|
margin="normal"
|
||||||
|
select
|
||||||
|
>
|
||||||
|
<MenuItem value={false as any}>{LL.MQTT_ENTITY_FORMAT_0()}</MenuItem>
|
||||||
|
<MenuItem value={true as any}>{LL.MQTT_ENTITY_FORMAT_1()}</MenuItem>
|
||||||
|
</ValidatedTextField>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
)}
|
)}
|
||||||
<Typography variant="h6" color="primary">
|
<Typography sx={{ pt: 2 }} variant="h6" color="primary">
|
||||||
{LL.MQTT_PUBLISH_INTERVALS()} (0=auto)
|
{LL.MQTT_PUBLISH_INTERVALS()} (0=auto)
|
||||||
</Typography>
|
</Typography>
|
||||||
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
|
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
|
||||||
|
|||||||
@@ -249,7 +249,9 @@ const de: Translation = {
|
|||||||
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
||||||
MQTT_QUEUE: 'MQTT Queue',
|
MQTT_QUEUE: 'MQTT Queue',
|
||||||
DEFAULT: 'Standard',
|
DEFAULT: 'Standard',
|
||||||
MQTT_MULTIPLE_INSTANCES: 'Erlaube EMS-ESP Mehrfachinstanzen',
|
MQTT_ENTITY_FORMAT: 'Entity ID format',
|
||||||
|
MQTT_ENTITY_FORMAT_0: 'Single instance, long name (depreciated)',
|
||||||
|
MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
|
||||||
MQTT_CLEAN_SESSION: 'Setze `Clean Session`',
|
MQTT_CLEAN_SESSION: 'Setze `Clean Session`',
|
||||||
MQTT_RETAIN_FLAG: 'Setze `Retain flag` immer',
|
MQTT_RETAIN_FLAG: 'Setze `Retain flag` immer',
|
||||||
INACTIVE: 'Inaktiv',
|
INACTIVE: 'Inaktiv',
|
||||||
|
|||||||
@@ -248,7 +248,9 @@ const en: Translation = {
|
|||||||
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
||||||
MQTT_QUEUE: 'MQTT Queue',
|
MQTT_QUEUE: 'MQTT Queue',
|
||||||
DEFAULT: 'Default',
|
DEFAULT: 'Default',
|
||||||
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
|
MQTT_ENTITY_FORMAT: 'Entity ID format',
|
||||||
|
MQTT_ENTITY_FORMAT_0: 'Single instance, long name (depreciated)',
|
||||||
|
MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
|
||||||
MQTT_CLEAN_SESSION: 'Set Clean Session',
|
MQTT_CLEAN_SESSION: 'Set Clean Session',
|
||||||
MQTT_RETAIN_FLAG: 'Always set Retain flag',
|
MQTT_RETAIN_FLAG: 'Always set Retain flag',
|
||||||
INACTIVE: 'Inactive',
|
INACTIVE: 'Inactive',
|
||||||
|
|||||||
@@ -248,7 +248,9 @@ const fr: Translation = {
|
|||||||
MQTT_INT_HEARTBEAT: 'Battements',
|
MQTT_INT_HEARTBEAT: 'Battements',
|
||||||
MQTT_QUEUE: 'Queue MQTT',
|
MQTT_QUEUE: 'Queue MQTT',
|
||||||
DEFAULT: 'Défaut',
|
DEFAULT: 'Défaut',
|
||||||
MQTT_MULTIPLE_INSTANCES: 'Activer plusieurs instances de EMS-ESP',
|
MQTT_ENTITY_FORMAT: 'Entity ID format',
|
||||||
|
MQTT_ENTITY_FORMAT_0: 'Single instance, long name (depreciated)',
|
||||||
|
MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
|
||||||
MQTT_CLEAN_SESSION: 'Flag Clean Session',
|
MQTT_CLEAN_SESSION: 'Flag Clean Session',
|
||||||
MQTT_RETAIN_FLAG: 'Toujours activer le Retain Flag',
|
MQTT_RETAIN_FLAG: 'Toujours activer le Retain Flag',
|
||||||
INACTIVE: 'Inactif',
|
INACTIVE: 'Inactif',
|
||||||
|
|||||||
@@ -248,7 +248,9 @@ const nl: Translation = {
|
|||||||
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
||||||
MQTT_QUEUE: 'MQTT Queue',
|
MQTT_QUEUE: 'MQTT Queue',
|
||||||
DEFAULT: 'Default',
|
DEFAULT: 'Default',
|
||||||
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
|
MQTT_ENTITY_FORMAT: 'Entity ID format',
|
||||||
|
MQTT_ENTITY_FORMAT_0: 'Single instance, long name (depreciated)',
|
||||||
|
MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
|
||||||
MQTT_CLEAN_SESSION: 'Clean Session aan',
|
MQTT_CLEAN_SESSION: 'Clean Session aan',
|
||||||
MQTT_RETAIN_FLAG: 'Retain flag aan',
|
MQTT_RETAIN_FLAG: 'Retain flag aan',
|
||||||
INACTIVE: 'Inactief',
|
INACTIVE: 'Inactief',
|
||||||
|
|||||||
@@ -248,7 +248,9 @@ const no: Translation = {
|
|||||||
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
||||||
MQTT_QUEUE: 'MQTT Queue',
|
MQTT_QUEUE: 'MQTT Queue',
|
||||||
DEFAULT: 'Standard',
|
DEFAULT: 'Standard',
|
||||||
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
|
MQTT_ENTITY_FORMAT: 'Entity ID format',
|
||||||
|
MQTT_ENTITY_FORMAT_0: 'Single instance, long name (depreciated)',
|
||||||
|
MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
|
||||||
MQTT_CLEAN_SESSION: 'Benytt Clean Session',
|
MQTT_CLEAN_SESSION: 'Benytt Clean Session',
|
||||||
MQTT_RETAIN_FLAG: 'Alltid sett Retain flag',
|
MQTT_RETAIN_FLAG: 'Alltid sett Retain flag',
|
||||||
INACTIVE: 'Innaktiv',
|
INACTIVE: 'Innaktiv',
|
||||||
|
|||||||
@@ -248,7 +248,9 @@ const pl: BaseTranslation = {
|
|||||||
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
||||||
MQTT_QUEUE: 'Kolejka MQTT',
|
MQTT_QUEUE: 'Kolejka MQTT',
|
||||||
DEFAULT: '{{Pozostałe|Domyślna|}}',
|
DEFAULT: '{{Pozostałe|Domyślna|}}',
|
||||||
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
|
MQTT_ENTITY_FORMAT: 'Entity ID format',
|
||||||
|
MQTT_ENTITY_FORMAT_0: 'Single instance, long name (depreciated)',
|
||||||
|
MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
|
||||||
MQTT_CLEAN_SESSION: 'Ustawiaj flagę "Clean session"',
|
MQTT_CLEAN_SESSION: 'Ustawiaj flagę "Clean session"',
|
||||||
MQTT_RETAIN_FLAG: 'Ustawiaj flagę "Retain"',
|
MQTT_RETAIN_FLAG: 'Ustawiaj flagę "Retain"',
|
||||||
INACTIVE: 'nieaktywny',
|
INACTIVE: 'nieaktywny',
|
||||||
|
|||||||
@@ -248,7 +248,9 @@ const se: Translation = {
|
|||||||
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
MQTT_INT_HEARTBEAT: 'Heartbeat',
|
||||||
MQTT_QUEUE: 'MQTT Queue',
|
MQTT_QUEUE: 'MQTT Queue',
|
||||||
DEFAULT: 'Standard',
|
DEFAULT: 'Standard',
|
||||||
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
|
MQTT_ENTITY_FORMAT: 'Entity ID format',
|
||||||
|
MQTT_ENTITY_FORMAT_0: 'Single instance, long name (depreciated)',
|
||||||
|
MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
|
||||||
MQTT_CLEAN_SESSION: 'Använd "Clean Session"-flaggan',
|
MQTT_CLEAN_SESSION: 'Använd "Clean Session"-flaggan',
|
||||||
MQTT_RETAIN_FLAG: 'Använd "Always Retain"-flaggan',
|
MQTT_RETAIN_FLAG: 'Använd "Always Retain"-flaggan',
|
||||||
INACTIVE: 'Inaktiv',
|
INACTIVE: 'Inaktiv',
|
||||||
|
|||||||
@@ -188,7 +188,6 @@ StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & setting
|
|||||||
newSettings.keepAlive = root["keep_alive"] | FACTORY_MQTT_KEEP_ALIVE;
|
newSettings.keepAlive = root["keep_alive"] | FACTORY_MQTT_KEEP_ALIVE;
|
||||||
newSettings.cleanSession = root["clean_session"] | FACTORY_MQTT_CLEAN_SESSION;
|
newSettings.cleanSession = root["clean_session"] | FACTORY_MQTT_CLEAN_SESSION;
|
||||||
newSettings.multiple_instances = root["multiple_instances"] | FACTORY_MQTT_MULTIPLE_INSTANCES;
|
newSettings.multiple_instances = root["multiple_instances"] | FACTORY_MQTT_MULTIPLE_INSTANCES;
|
||||||
|
|
||||||
newSettings.mqtt_qos = root["mqtt_qos"] | EMSESP_DEFAULT_MQTT_QOS;
|
newSettings.mqtt_qos = root["mqtt_qos"] | EMSESP_DEFAULT_MQTT_QOS;
|
||||||
newSettings.mqtt_retain = root["mqtt_retain"] | EMSESP_DEFAULT_MQTT_RETAIN;
|
newSettings.mqtt_retain = root["mqtt_retain"] | EMSESP_DEFAULT_MQTT_RETAIN;
|
||||||
|
|
||||||
@@ -224,6 +223,10 @@ StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & setting
|
|||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newSettings.multiple_instances != settings.multiple_instances) {
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
// if both settings are stored from older version, HA has priority
|
// if both settings are stored from older version, HA has priority
|
||||||
if (newSettings.ha_enabled && newSettings.publish_single) {
|
if (newSettings.ha_enabled && newSettings.publish_single) {
|
||||||
newSettings.publish_single = false;
|
newSettings.publish_single = false;
|
||||||
@@ -259,44 +262,38 @@ StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & setting
|
|||||||
|
|
||||||
if (newSettings.publish_time_boiler != settings.publish_time_boiler) {
|
if (newSettings.publish_time_boiler != settings.publish_time_boiler) {
|
||||||
emsesp::EMSESP::mqtt_.set_publish_time_boiler(newSettings.publish_time_boiler);
|
emsesp::EMSESP::mqtt_.set_publish_time_boiler(newSettings.publish_time_boiler);
|
||||||
changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newSettings.publish_time_thermostat != settings.publish_time_thermostat) {
|
if (newSettings.publish_time_thermostat != settings.publish_time_thermostat) {
|
||||||
emsesp::EMSESP::mqtt_.set_publish_time_thermostat(newSettings.publish_time_thermostat);
|
emsesp::EMSESP::mqtt_.set_publish_time_thermostat(newSettings.publish_time_thermostat);
|
||||||
changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newSettings.publish_time_solar != settings.publish_time_solar) {
|
if (newSettings.publish_time_solar != settings.publish_time_solar) {
|
||||||
emsesp::EMSESP::mqtt_.set_publish_time_solar(newSettings.publish_time_solar);
|
emsesp::EMSESP::mqtt_.set_publish_time_solar(newSettings.publish_time_solar);
|
||||||
changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newSettings.publish_time_mixer != settings.publish_time_mixer) {
|
if (newSettings.publish_time_mixer != settings.publish_time_mixer) {
|
||||||
emsesp::EMSESP::mqtt_.set_publish_time_mixer(newSettings.publish_time_mixer);
|
emsesp::EMSESP::mqtt_.set_publish_time_mixer(newSettings.publish_time_mixer);
|
||||||
changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newSettings.publish_time_other != settings.publish_time_other) {
|
if (newSettings.publish_time_other != settings.publish_time_other) {
|
||||||
emsesp::EMSESP::mqtt_.set_publish_time_other(newSettings.publish_time_other);
|
emsesp::EMSESP::mqtt_.set_publish_time_other(newSettings.publish_time_other);
|
||||||
changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newSettings.publish_time_sensor != settings.publish_time_sensor) {
|
if (newSettings.publish_time_sensor != settings.publish_time_sensor) {
|
||||||
emsesp::EMSESP::mqtt_.set_publish_time_sensor(newSettings.publish_time_sensor);
|
emsesp::EMSESP::mqtt_.set_publish_time_sensor(newSettings.publish_time_sensor);
|
||||||
changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newSettings.publish_time_heartbeat != settings.publish_time_heartbeat) {
|
if (newSettings.publish_time_heartbeat != settings.publish_time_heartbeat) {
|
||||||
emsesp::EMSESP::mqtt_.set_publish_time_heartbeat(newSettings.publish_time_heartbeat);
|
emsesp::EMSESP::mqtt_.set_publish_time_heartbeat(newSettings.publish_time_heartbeat);
|
||||||
changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// save the new settings
|
||||||
|
settings = newSettings;
|
||||||
|
|
||||||
if (changed) {
|
if (changed) {
|
||||||
emsesp::EMSESP::mqtt_.reset_mqtt();
|
emsesp::EMSESP::mqtt_.reset_mqtt();
|
||||||
}
|
}
|
||||||
|
|
||||||
settings = newSettings;
|
|
||||||
|
|
||||||
return StateUpdateResult::CHANGED;
|
return StateUpdateResult::CHANGED;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ static String generateClientId() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FACTORY_MQTT_MULTIPLE_INSTANCES
|
#ifndef FACTORY_MQTT_MULTIPLE_INSTANCES
|
||||||
#define FACTORY_MQTT_MULTIPLE_INSTANCES false
|
#define FACTORY_MQTT_MULTIPLE_INSTANCES true
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class MqttSettings {
|
class MqttSettings {
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ mqtt_settings = {
|
|||||||
client_id: 'ems-esp',
|
client_id: 'ems-esp',
|
||||||
keep_alive: 60,
|
keep_alive: 60,
|
||||||
clean_session: true,
|
clean_session: true,
|
||||||
multiple_instances: false,
|
multiple_instances: true,
|
||||||
publish_time_boiler: 10,
|
publish_time_boiler: 10,
|
||||||
publish_time_thermostat: 10,
|
publish_time_thermostat: 10,
|
||||||
publish_time_solar: 10,
|
publish_time_solar: 10,
|
||||||
|
|||||||
@@ -451,14 +451,15 @@ void AnalogSensor::publish_values(const bool force) {
|
|||||||
}
|
}
|
||||||
config["val_tpl"] = str;
|
config["val_tpl"] = str;
|
||||||
|
|
||||||
|
char uniq_s[70];
|
||||||
if (Mqtt::multiple_instances()) {
|
if (Mqtt::multiple_instances()) {
|
||||||
snprintf(str, sizeof(str), "%s_analogsensor_%d", Mqtt::basename().c_str(), sensor.gpio());
|
snprintf(uniq_s, sizeof(uniq_s), "%s_analogsensor_%d", Mqtt::basename().c_str(), sensor.gpio());
|
||||||
} else {
|
} else {
|
||||||
snprintf(str, sizeof(str), "analogsensor_%d", sensor.gpio());
|
snprintf(uniq_s, sizeof(uniq_s), "analogsensor_%d", sensor.gpio());
|
||||||
}
|
}
|
||||||
|
|
||||||
config["object_id"] = str;
|
config["object_id"] = uniq_s;
|
||||||
config["uniq_id"] = str; // same as object_id
|
config["uniq_id"] = uniq_s; // same as object_id
|
||||||
|
|
||||||
snprintf(str, sizeof(str), "%s", sensor.name().c_str());
|
snprintf(str, sizeof(str), "%s", sensor.name().c_str());
|
||||||
config["name"] = str;
|
config["name"] = str;
|
||||||
|
|||||||
@@ -518,14 +518,15 @@ void DallasSensor::publish_values(const bool force) {
|
|||||||
}
|
}
|
||||||
config["val_tpl"] = str;
|
config["val_tpl"] = str;
|
||||||
|
|
||||||
|
char uniq_s[70];
|
||||||
if (Mqtt::multiple_instances()) {
|
if (Mqtt::multiple_instances()) {
|
||||||
snprintf(str, sizeof(str), "%s_dallassensor_%s", Mqtt::basename().c_str(), sensor.id().c_str());
|
snprintf(uniq_s, sizeof(uniq_s), "%s_dallassensor_%s", Mqtt::basename().c_str(), sensor.id().c_str());
|
||||||
} else {
|
} else {
|
||||||
snprintf(str, sizeof(str), "dallassensor_%s", sensor.id().c_str());
|
snprintf(uniq_s, sizeof(uniq_s), "dallassensor_%s", sensor.id().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
config["object_id"] = str;
|
config["object_id"] = uniq_s;
|
||||||
config["uniq_id"] = str; // same as object_id
|
config["uniq_id"] = uniq_s; // same as object_id
|
||||||
|
|
||||||
snprintf(str, sizeof(str), "%s", sensor.name().c_str());
|
snprintf(str, sizeof(str), "%s", sensor.name().c_str());
|
||||||
config["name"] = str;
|
config["name"] = str;
|
||||||
|
|||||||
@@ -105,10 +105,9 @@ DeviceValue::DeviceValue(uint8_t device_type,
|
|||||||
// must be an int of 4 bytes, 32bit aligned
|
// must be an int of 4 bytes, 32bit aligned
|
||||||
const char * DeviceValue::DeviceValueUOM_s[] = {
|
const char * DeviceValue::DeviceValueUOM_s[] = {
|
||||||
|
|
||||||
F_(uom_blank), F_(uom_degrees), F_(uom_degrees), F_(uom_percent), F_(uom_lmin), F_(uom_kwh), F_(uom_wh),
|
F_(uom_blank), F_(uom_degrees), F_(uom_degrees), F_(uom_percent), F_(uom_lmin), F_(uom_kwh), F_(uom_wh), FL_(hours)[0],
|
||||||
FL_(hours)[0], FL_(minutes)[0], F_(uom_ua), F_(uom_bar), F_(uom_kw), F_(uom_w), F_(uom_kb),
|
FL_(minutes)[0], F_(uom_ua), F_(uom_bar), F_(uom_kw), F_(uom_w), F_(uom_kb), FL_(seconds)[0], F_(uom_dbm),
|
||||||
FL_(seconds)[0], F_(uom_dbm), F_(uom_fahrenheit), F_(uom_mv), F_(uom_sqm), F_(uom_m3),
|
F_(uom_fahrenheit), F_(uom_mv), F_(uom_sqm), F_(uom_m3), F_(uom_blank)
|
||||||
F_(uom_blank) // connectivity
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -678,6 +678,10 @@ std::string Helpers::toUpper(std::string const & s) {
|
|||||||
|
|
||||||
// replace char in char string
|
// replace char in char string
|
||||||
void Helpers::replace_char(char * str, char find, char replace) {
|
void Helpers::replace_char(char * str, char find, char replace) {
|
||||||
|
if (str == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
while (str[i] != '\0') {
|
while (str[i] != '\0') {
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ MAKE_PSTR(tag_boiler_data_ww_mqtt, "ww")
|
|||||||
MAKE_PSTR(tag_device_data_ww_mqtt, "")
|
MAKE_PSTR(tag_device_data_ww_mqtt, "")
|
||||||
|
|
||||||
// Home Assistant - this is special and has no translations
|
// Home Assistant - this is special and has no translations
|
||||||
MAKE_PSTR_LIST(climate, "HA climate config creation")
|
MAKE_PSTR_LIST(climate, "")
|
||||||
|
|
||||||
// syslog
|
// syslog
|
||||||
MAKE_PSTR_LIST(list_syslog_level, "off", "emerg", "alert", "crit", "error", "warn", "notice", "info", "debug", "trace", "all")
|
MAKE_PSTR_LIST(list_syslog_level, "off", "emerg", "alert", "crit", "error", "warn", "notice", "info", "debug", "trace", "all")
|
||||||
|
|||||||
21
src/mqtt.cpp
21
src/mqtt.cpp
@@ -932,6 +932,7 @@ void Mqtt::publish_ha_sensor_config(DeviceValue & dv, const std::string & model,
|
|||||||
publish_ha_sensor_config(dv.type,
|
publish_ha_sensor_config(dv.type,
|
||||||
dv.tag,
|
dv.tag,
|
||||||
dv.get_fullname().c_str(),
|
dv.get_fullname().c_str(),
|
||||||
|
(dv.fullname ? dv.fullname[0] : nullptr), // EN name
|
||||||
dv.device_type,
|
dv.device_type,
|
||||||
dv.short_name,
|
dv.short_name,
|
||||||
dv.uom,
|
dv.uom,
|
||||||
@@ -952,7 +953,7 @@ void Mqtt::publish_system_ha_sensor_config(uint8_t type, const char * name, cons
|
|||||||
JsonArray ids = dev_json.createNestedArray("ids");
|
JsonArray ids = dev_json.createNestedArray("ids");
|
||||||
ids.add("ems-esp");
|
ids.add("ems-esp");
|
||||||
|
|
||||||
publish_ha_sensor_config(type, DeviceValueTAG::TAG_HEARTBEAT, name, EMSdevice::DeviceType::SYSTEM, entity, uom, false, false, nullptr, 0, 0, 0, dev_json);
|
publish_ha_sensor_config(type, DeviceValueTAG::TAG_HEARTBEAT, name, name, EMSdevice::DeviceType::SYSTEM, entity, uom, false, false, nullptr, 0, 0, 0, dev_json);
|
||||||
}
|
}
|
||||||
|
|
||||||
// MQTT discovery configs
|
// MQTT discovery configs
|
||||||
@@ -961,6 +962,7 @@ void Mqtt::publish_system_ha_sensor_config(uint8_t type, const char * name, cons
|
|||||||
void Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdevice::DeviceValueType
|
void Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdevice::DeviceValueType
|
||||||
uint8_t tag, // EMSdevice::DeviceValueTAG
|
uint8_t tag, // EMSdevice::DeviceValueTAG
|
||||||
const char * const fullname, // fullname, already translated
|
const char * const fullname, // fullname, already translated
|
||||||
|
const char * const en_name, // original name
|
||||||
const uint8_t device_type, // EMSdevice::DeviceType
|
const uint8_t device_type, // EMSdevice::DeviceType
|
||||||
const char * const entity, // same as shortname
|
const char * const entity, // same as shortname
|
||||||
const uint8_t uom, // EMSdevice::DeviceValueUOM (0=NONE)
|
const uint8_t uom, // EMSdevice::DeviceValueUOM (0=NONE)
|
||||||
@@ -972,7 +974,7 @@ void Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
|
|||||||
const int16_t dv_set_max,
|
const int16_t dv_set_max,
|
||||||
const JsonObject & dev_json) {
|
const JsonObject & dev_json) {
|
||||||
// ignore if name (fullname) is empty
|
// ignore if name (fullname) is empty
|
||||||
if (!fullname) {
|
if (!fullname || !en_name) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -987,13 +989,22 @@ void Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
|
|||||||
snprintf(entity_with_tag, sizeof(entity_with_tag), "%s", entity);
|
snprintf(entity_with_tag, sizeof(entity_with_tag), "%s", entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
// build unique identifier which will be used in the topic, also used as object_id
|
// build unique identifier also used as object_id and becomes the Entity ID in HA
|
||||||
char uniq_id[70];
|
char uniq_id[70];
|
||||||
if (Mqtt::multiple_instances()) {
|
if (Mqtt::multiple_instances()) {
|
||||||
// prefix base name to each uniq_id
|
// prefix base name to each uniq_id and use the shortname
|
||||||
snprintf(uniq_id, sizeof(uniq_id), "%s_%s_%s", mqtt_basename_.c_str(), device_name, entity_with_tag);
|
snprintf(uniq_id, sizeof(uniq_id), "%s_%s_%s", mqtt_basename_.c_str(), device_name, entity_with_tag);
|
||||||
} else {
|
} else {
|
||||||
snprintf(uniq_id, sizeof(uniq_id), "%s_%s", device_name, entity_with_tag);
|
// old v3.4 style
|
||||||
|
// take en_name and replace all spaces and lowercase it
|
||||||
|
char uniq_s[40];
|
||||||
|
strlcpy(uniq_s, en_name, sizeof(uniq_s));
|
||||||
|
Helpers::replace_char(uniq_s, ' ', '_');
|
||||||
|
if (EMSdevice::tag_to_string(tag).empty()) {
|
||||||
|
snprintf(uniq_id, sizeof(uniq_id), "%s_%s", device_name, Helpers::toLower(uniq_s).c_str());
|
||||||
|
} else {
|
||||||
|
snprintf(uniq_id, sizeof(uniq_id), "%s_%s_%s", device_name, EMSdevice::tag_to_string(tag).c_str(), Helpers::toLower(uniq_s).c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// build a config topic that will be prefix onto a HA type (e.g. number, switch)
|
// build a config topic that will be prefix onto a HA type (e.g. number, switch)
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ class Mqtt {
|
|||||||
static void publish_ha_sensor_config(uint8_t type,
|
static void publish_ha_sensor_config(uint8_t type,
|
||||||
uint8_t tag,
|
uint8_t tag,
|
||||||
const char * const fullname,
|
const char * const fullname,
|
||||||
|
const char * const en_name,
|
||||||
const uint8_t device_type,
|
const uint8_t device_type,
|
||||||
const char * const entity,
|
const char * const entity,
|
||||||
const uint8_t uom,
|
const uint8_t uom,
|
||||||
|
|||||||
@@ -155,7 +155,11 @@ void Shower::set_shower_state(bool state, bool force) {
|
|||||||
doc["name"] = "Shower Active";
|
doc["name"] = "Shower Active";
|
||||||
|
|
||||||
char str[70];
|
char str[70];
|
||||||
|
if (Mqtt::multiple_instances()) {
|
||||||
snprintf(str, sizeof(str), "%s_shower_active", Mqtt::basename().c_str());
|
snprintf(str, sizeof(str), "%s_shower_active", Mqtt::basename().c_str());
|
||||||
|
} else {
|
||||||
|
snprintf(str, sizeof(str), "shower_active"); // v3.4 compatible
|
||||||
|
}
|
||||||
doc["uniq_id"] = str;
|
doc["uniq_id"] = str;
|
||||||
doc["object_id"] = str;
|
doc["object_id"] = str;
|
||||||
|
|
||||||
|
|||||||
@@ -1063,7 +1063,7 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & outp
|
|||||||
node["version"] = EMSESP_APP_VERSION;
|
node["version"] = EMSESP_APP_VERSION;
|
||||||
node["platform"] = EMSESP_PLATFORM;
|
node["platform"] = EMSESP_PLATFORM;
|
||||||
node["uptime"] = uuid::log::format_timestamp_ms(uuid::get_uptime_ms(), 3);
|
node["uptime"] = uuid::log::format_timestamp_ms(uuid::get_uptime_ms(), 3);
|
||||||
// node["uptime (seconds)"] = uuid::get_uptime_sec();
|
node["uptime (seconds)"] = uuid::get_uptime_sec();
|
||||||
#ifndef EMSESP_STANDALONE
|
#ifndef EMSESP_STANDALONE
|
||||||
node["free mem"] = ESP.getFreeHeap() / 1024; // kilobytes
|
node["free mem"] = ESP.getFreeHeap() / 1024; // kilobytes
|
||||||
node["max alloc"] = ESP.getMaxAllocHeap() / 1024; // kilobytes
|
node["max alloc"] = ESP.getMaxAllocHeap() / 1024; // kilobytes
|
||||||
|
|||||||
@@ -30,12 +30,12 @@ namespace emsesp {
|
|||||||
// #define EMSESP_DEBUG_DEFAULT "solar"
|
// #define EMSESP_DEBUG_DEFAULT "solar"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "mixer"
|
// #define EMSESP_DEBUG_DEFAULT "mixer"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "web"
|
// #define EMSESP_DEBUG_DEFAULT "web"
|
||||||
#define EMSESP_DEBUG_DEFAULT "mqtt"
|
// #define EMSESP_DEBUG_DEFAULT "mqtt"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "general"
|
// #define EMSESP_DEBUG_DEFAULT "general"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "boiler"
|
// #define EMSESP_DEBUG_DEFAULT "boiler"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "mqtt2"
|
// #define EMSESP_DEBUG_DEFAULT "mqtt2"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "mqtt_nested"
|
// #define EMSESP_DEBUG_DEFAULT "mqtt_nested"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "ha"
|
#define EMSESP_DEBUG_DEFAULT "ha"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "masked"
|
// #define EMSESP_DEBUG_DEFAULT "masked"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "board_profile"
|
// #define EMSESP_DEBUG_DEFAULT "board_profile"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "shower_alert"
|
// #define EMSESP_DEBUG_DEFAULT "shower_alert"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#define EMSESP_APP_VERSION "3.5.0b11"
|
#define EMSESP_APP_VERSION "3.5.0b12"
|
||||||
|
|
||||||
#if CONFIG_IDF_TARGET_ESP32C3
|
#if CONFIG_IDF_TARGET_ESP32C3
|
||||||
#define EMSESP_PLATFORM "ESP32-C3";
|
#define EMSESP_PLATFORM "ESP32-C3";
|
||||||
|
|||||||
Reference in New Issue
Block a user