add v3.4 entity id flag to MQTT settings

This commit is contained in:
Proddy
2022-12-14 22:07:42 +01:00
parent 6eeb8de02c
commit ccbb56d403
18 changed files with 154 additions and 111 deletions

View File

@@ -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.15",
"@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",
@@ -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",
@@ -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.15",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz",
"integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==" "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw=="
}, },
"node_modules/@types/parse-json": { "node_modules/@types/parse-json": {
"version": "4.0.0", "version": "4.0.0",
@@ -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",
@@ -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.15",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz",
"integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==" "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw=="
}, },
"@types/parse-json": { "@types/parse-json": {
"version": "4.0.0", "version": "4.0.0",

View File

@@ -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.15",
"@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",

View File

@@ -233,6 +233,14 @@ const MqttSettingsForm: FC = () => {
label={LL.MQTT_MULTIPLE_INSTANCES()} label={LL.MQTT_MULTIPLE_INSTANCES()}
/> />
</Grid> </Grid>
<Grid item>
<BlockFormControlLabel
control={
<Checkbox name="entity_fullname" checked={data.entity_fullname} onChange={updateFormValue} />
}
label={LL.MQTT_ENTITY_FULLNAME()}
/>
</Grid>
<Grid item sx={{ pb: 3 }}> <Grid item sx={{ pb: 3 }}>
<ValidatedTextField <ValidatedTextField
name="discovery_prefix" name="discovery_prefix"

View File

@@ -250,6 +250,7 @@ const de: Translation = {
MQTT_QUEUE: 'MQTT Queue', MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Standard', DEFAULT: 'Standard',
MQTT_MULTIPLE_INSTANCES: 'Erlaube EMS-ESP Mehrfachinstanzen', MQTT_MULTIPLE_INSTANCES: 'Erlaube EMS-ESP Mehrfachinstanzen',
MQTT_ENTITY_FULLNAME: 'Use v3.4 style Entity IDs',
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',

View File

@@ -249,6 +249,7 @@ const en: Translation = {
MQTT_QUEUE: 'MQTT Queue', MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Default', DEFAULT: 'Default',
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP', MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
MQTT_ENTITY_FULLNAME: 'Use v3.4 style Entity IDs',
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',

View File

@@ -249,6 +249,7 @@ const nl: Translation = {
MQTT_QUEUE: 'MQTT Queue', MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Default', DEFAULT: 'Default',
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP', MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
MQTT_ENTITY_FULLNAME: 'Use v3.4 style Entity IDs',
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',

View File

@@ -249,6 +249,7 @@ const no: Translation = {
MQTT_QUEUE: 'MQTT Queue', MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Standard', DEFAULT: 'Standard',
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP', MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
MQTT_ENTITY_FULLNAME: 'Use v3.4 style Entity IDs',
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',

View File

@@ -249,6 +249,7 @@ const pl: BaseTranslation = {
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_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
MQTT_ENTITY_FULLNAME: 'Use v3.4 style Entity IDs',
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',

View File

@@ -249,6 +249,7 @@ const se: Translation = {
MQTT_QUEUE: 'MQTT Queue', MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Standard', DEFAULT: 'Standard',
MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP', MQTT_MULTIPLE_INSTANCES: 'Enable Multiple Instances of EMS-ESP',
MQTT_ENTITY_FULLNAME: 'Use v3.4 style Entity IDs',
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',

View File

@@ -30,6 +30,7 @@ export interface MqttSettings {
keep_alive: number; keep_alive: number;
clean_session: boolean; clean_session: boolean;
multiple_instances: boolean; multiple_instances: boolean;
entity_fullname: boolean;
publish_time_boiler: number; publish_time_boiler: number;
publish_time_thermostat: number; publish_time_thermostat: number;
publish_time_solar: number; publish_time_solar: number;

View File

@@ -155,6 +155,7 @@ void MqttSettings::read(MqttSettings & settings, JsonObject & root) {
root["keep_alive"] = settings.keepAlive; root["keep_alive"] = settings.keepAlive;
root["clean_session"] = settings.cleanSession; root["clean_session"] = settings.cleanSession;
root["multiple_instances"] = settings.multiple_instances; root["multiple_instances"] = settings.multiple_instances;
root["entity_fullname"] = settings.entity_fullname;
// added by proddy for EMS-ESP // added by proddy for EMS-ESP
root["publish_time_boiler"] = settings.publish_time_boiler; root["publish_time_boiler"] = settings.publish_time_boiler;
@@ -188,7 +189,7 @@ 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.entity_fullname = root["entity_fullname"] | FACTORY_MQTT_ENTITY_FULLNAME;
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;

View File

@@ -61,6 +61,10 @@ static String generateClientId() {
#define FACTORY_MQTT_MULTIPLE_INSTANCES false #define FACTORY_MQTT_MULTIPLE_INSTANCES false
#endif #endif
#ifndef FACTORY_MQTT_ENTITY_FULLNAME
#define FACTORY_MQTT_ENTITY_FULLNAME false
#endif
class MqttSettings { class MqttSettings {
public: public:
// host and port - if enabled // host and port - if enabled
@@ -82,6 +86,9 @@ class MqttSettings {
// multiple instances // multiple instances
bool multiple_instances; bool multiple_instances;
// use v3.4 entity fullnames in Discovery
bool entity_fullname;
// proddy EMS-ESP specific // proddy EMS-ESP specific
String base; String base;
uint16_t publish_time_boiler; uint16_t publish_time_boiler;

View File

@@ -82,6 +82,7 @@ class DummySettings {
uint16_t keepAlive = 60; uint16_t keepAlive = 60;
bool cleanSession = false; bool cleanSession = false;
bool multiple_instances = false; bool multiple_instances = false;
bool entity_fullname = false;
uint16_t publish_time_boiler = 10; uint16_t publish_time_boiler = 10;
uint16_t publish_time_thermostat = 10; uint16_t publish_time_thermostat = 10;

View File

@@ -224,6 +224,7 @@ mqtt_settings = {
keep_alive: 60, keep_alive: 60,
clean_session: true, clean_session: true,
multiple_instances: false, multiple_instances: false,
entity_fullname: false,
publish_time_boiler: 10, publish_time_boiler: 10,
publish_time_thermostat: 10, publish_time_thermostat: 10,
publish_time_solar: 10, publish_time_solar: 10,

View File

@@ -39,6 +39,7 @@ uint32_t Mqtt::publish_time_other_;
uint32_t Mqtt::publish_time_heartbeat_; uint32_t Mqtt::publish_time_heartbeat_;
bool Mqtt::mqtt_enabled_; bool Mqtt::mqtt_enabled_;
bool Mqtt::multiple_instances_; bool Mqtt::multiple_instances_;
bool Mqtt::entity_fullname_;
bool Mqtt::ha_enabled_; bool Mqtt::ha_enabled_;
uint8_t Mqtt::nested_format_; uint8_t Mqtt::nested_format_;
std::string Mqtt::discovery_prefix_; std::string Mqtt::discovery_prefix_;
@@ -431,6 +432,7 @@ void Mqtt::load_settings() {
send_response_ = mqttSettings.send_response; send_response_ = mqttSettings.send_response;
discovery_prefix_ = mqttSettings.discovery_prefix.c_str(); discovery_prefix_ = mqttSettings.discovery_prefix.c_str();
multiple_instances_ = mqttSettings.multiple_instances; multiple_instances_ = mqttSettings.multiple_instances;
entity_fullname_ = mqttSettings.entity_fullname;
// convert to milliseconds // convert to milliseconds
publish_time_boiler_ = mqttSettings.publish_time_boiler * 1000; publish_time_boiler_ = mqttSettings.publish_time_boiler * 1000;
@@ -932,6 +934,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 +955,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 +964,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)
@@ -989,11 +993,18 @@ void Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
// build unique identifier which will be used in the topic, also used as object_id // build unique identifier which will be used in the topic, also used as object_id
char uniq_id[70]; char uniq_id[70];
char entityid[50];
if (Mqtt::entity_fullname()) {
strlcpy(entityid, en_name, sizeof(entityid)); // old v3.4 style
} else {
strlcpy(entityid, entity_with_tag, sizeof(entityid));
}
if (Mqtt::multiple_instances()) { if (Mqtt::multiple_instances()) {
// prefix base name to each uniq_id // prefix base name to each uniq_id
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, entityid);
} else { } else {
snprintf(uniq_id, sizeof(uniq_id), "%s_%s", device_name, entity_with_tag); snprintf(uniq_id, sizeof(uniq_id), "%s_%s", device_name, entityid);
} }
// 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)

View File

@@ -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,
@@ -184,6 +185,10 @@ class Mqtt {
return multiple_instances_; return multiple_instances_;
} }
static bool entity_fullname() {
return entity_fullname_;
}
static void nested_format(uint8_t nested_format) { static void nested_format(uint8_t nested_format) {
nested_format_ = nested_format; nested_format_ = nested_format;
} }
@@ -322,6 +327,7 @@ class Mqtt {
static bool ha_enabled_; static bool ha_enabled_;
static uint8_t nested_format_; static uint8_t nested_format_;
static bool multiple_instances_; static bool multiple_instances_;
static bool entity_fullname_;
static std::string discovery_prefix_; static std::string discovery_prefix_;
static bool publish_single_; static bool publish_single_;
static bool publish_single2cmd_; static bool publish_single2cmd_;

View File

@@ -1153,6 +1153,7 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & outp
node["keep alive"] = settings.keepAlive; node["keep alive"] = settings.keepAlive;
node["clean session"] = settings.cleanSession; node["clean session"] = settings.cleanSession;
node["multiple instances"] = settings.multiple_instances; node["multiple instances"] = settings.multiple_instances;
node["entity fullname"] = settings.entity_fullname;
node["base"] = settings.base; node["base"] = settings.base;
node["discovery prefix"] = settings.discovery_prefix; node["discovery prefix"] = settings.discovery_prefix;
node["nested format"] = settings.nested_format; node["nested format"] = settings.nested_format;

View File

@@ -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";