diff --git a/interface/package-lock.json b/interface/package-lock.json
index 59ff55056..d954a2317 100644
--- a/interface/package-lock.json
+++ b/interface/package-lock.json
@@ -11,11 +11,11 @@
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"@msgpack/msgpack": "^2.8.0",
- "@mui/icons-material": "^5.10.16",
- "@mui/material": "^5.10.17",
+ "@mui/icons-material": "^5.11.0",
+ "@mui/material": "^5.11.0",
"@table-library/react-table-library": "4.0.23",
"@types/lodash": "^4.14.191",
- "@types/node": "^18.11.12",
+ "@types/node": "^18.11.15",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.9",
"@types/react-router-dom": "^5.3.3",
@@ -3091,14 +3091,14 @@
}
},
"node_modules/@mui/base": {
- "version": "5.0.0-alpha.109",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.109.tgz",
- "integrity": "sha512-UQxoONPI3ntzxcD/cbFHl+Lp2xsVj6HpKmU9QhUZ2kZ2K2yej2QJyU1gnADoWl/Hu94VrvwSSRnjTjR3HvXO/g==",
+ "version": "5.0.0-alpha.110",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.110.tgz",
+ "integrity": "sha512-q4TH9T3sTBknTXXTEf2zO8F3nbHg5iGgiaRx9XErTbXvHrmLrQXbQ4hmrLERocSTBFCFWkKyne/qZj0diWlPtA==",
"dependencies": {
- "@babel/runtime": "^7.20.1",
+ "@babel/runtime": "^7.20.6",
"@emotion/is-prop-valid": "^1.2.0",
- "@mui/types": "^7.2.2",
- "@mui/utils": "^5.10.16",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.0",
"@popperjs/core": "^2.11.6",
"clsx": "^1.2.1",
"prop-types": "^15.8.1",
@@ -3123,20 +3123,20 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "5.10.17",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.17.tgz",
- "integrity": "sha512-iNwUuMA30nrN0tiEkeD3zaczv7Tk2jlZIDbXRnijAsYXkZtl/xEzQsVRIPYRDuyEz6D18vQJhV8h7gPUXEubTg==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.0.tgz",
+ "integrity": "sha512-Bmogung451ezVv2YI1RvweOIVsTj2RQ4Fk61+e/+8LFPLTFEwVGbL0YhNy1VB5tri8pzGNV228kxtWVTFooQkg==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui"
}
},
"node_modules/@mui/icons-material": {
- "version": "5.10.16",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.16.tgz",
- "integrity": "sha512-jjCc0IF6iyLiucQCu5igg3fOscSqbbvRCmyRxXgzOcLR56B0sg2L8o+ZfJ0dAg59+wvgtXaxvjze/mJg0B4iWA==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.11.0.tgz",
+ "integrity": "sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A==",
"dependencies": {
- "@babel/runtime": "^7.20.1"
+ "@babel/runtime": "^7.20.6"
},
"engines": {
"node": ">=12.0.0"
@@ -3157,16 +3157,16 @@
}
},
"node_modules/@mui/material": {
- "version": "5.10.17",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.17.tgz",
- "integrity": "sha512-Kuqgv1qI5HXnc/Xu426xhCGYBSKzplb+xFNLitbnIb92Qx8jmcpfNpFlDJa2kD2H6qP66rr/m4c/zMUfGX/xBQ==",
- "dependencies": {
- "@babel/runtime": "^7.20.1",
- "@mui/base": "5.0.0-alpha.109",
- "@mui/core-downloads-tracker": "^5.10.17",
- "@mui/system": "^5.10.17",
- "@mui/types": "^7.2.2",
- "@mui/utils": "^5.10.16",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.11.0.tgz",
+ "integrity": "sha512-8Zl34lb89rLKTTi50Kakki675/LLHMKKnkp8Ee3rAZ2qmisQlRODsGh1MBjENKp0vwhQnNSvlsCfJteVTfotPQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.20.6",
+ "@mui/base": "5.0.0-alpha.110",
+ "@mui/core-downloads-tracker": "^5.11.0",
+ "@mui/system": "^5.11.0",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.0",
"@types/react-transition-group": "^4.4.5",
"clsx": "^1.2.1",
"csstype": "^3.1.1",
@@ -3201,12 +3201,12 @@
}
},
"node_modules/@mui/private-theming": {
- "version": "5.10.16",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz",
- "integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.11.0.tgz",
+ "integrity": "sha512-UFQLb9x5Sj4pg2GhhCGw3Ls/y1Hw/tz9RsBrULvUF0Vgps1z19o7XTq2xqUvp7pN7fJTW7eVIT2gwVg2xlk8PQ==",
"dependencies": {
- "@babel/runtime": "^7.20.1",
- "@mui/utils": "^5.10.16",
+ "@babel/runtime": "^7.20.6",
+ "@mui/utils": "^5.11.0",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3227,11 +3227,11 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "5.10.16",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz",
- "integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.0.tgz",
+ "integrity": "sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ==",
"dependencies": {
- "@babel/runtime": "^7.20.1",
+ "@babel/runtime": "^7.20.6",
"@emotion/cache": "^11.10.5",
"csstype": "^3.1.1",
"prop-types": "^15.8.1"
@@ -3258,15 +3258,15 @@
}
},
"node_modules/@mui/system": {
- "version": "5.10.17",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.17.tgz",
- "integrity": "sha512-UYzAOSK7uxkMsUssqrIUW3lnOuQpU8vqh4hLwfSw+GYAnQo3qjK4m4NhlDx+pFpsjjiGnr3K+vrSH+aIAMbcLg==",
- "dependencies": {
- "@babel/runtime": "^7.20.1",
- "@mui/private-theming": "^5.10.16",
- "@mui/styled-engine": "^5.10.16",
- "@mui/types": "^7.2.2",
- "@mui/utils": "^5.10.16",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.11.0.tgz",
+ "integrity": "sha512-HFUT7Dlmyq6Wfuxsw8QBXZxXDYIQQaJ4YHaZd7s+nDMcjerLnILxjh2g3a6umtOUM+jEcRaFJAtvLZvlGfa5fw==",
+ "dependencies": {
+ "@babel/runtime": "^7.20.6",
+ "@mui/private-theming": "^5.11.0",
+ "@mui/styled-engine": "^5.11.0",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.0",
"clsx": "^1.2.1",
"csstype": "^3.1.1",
"prop-types": "^15.8.1"
@@ -3297,9 +3297,9 @@
}
},
"node_modules/@mui/types": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz",
- "integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==",
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.3.tgz",
+ "integrity": "sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==",
"peerDependencies": {
"@types/react": "*"
},
@@ -3310,11 +3310,11 @@
}
},
"node_modules/@mui/utils": {
- "version": "5.10.16",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz",
- "integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.11.0.tgz",
+ "integrity": "sha512-DP/YDaVVCVzJpZ5FFPLKNmaJkeaYRviTyIZkL/D5/FmPXQiA6ecd6z0/+VwoNQtp7aXAQWaRhvz4FM25yqFlHA==",
"dependencies": {
- "@babel/runtime": "^7.20.1",
+ "@babel/runtime": "^7.20.6",
"@types/prop-types": "^15.7.5",
"@types/react-is": "^16.7.1 || ^17.0.0",
"prop-types": "^15.8.1",
@@ -4017,9 +4017,9 @@
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
},
"node_modules/@types/node": {
- "version": "18.11.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz",
- "integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg=="
+ "version": "18.11.15",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz",
+ "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
@@ -19642,14 +19642,14 @@
"integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ=="
},
"@mui/base": {
- "version": "5.0.0-alpha.109",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.109.tgz",
- "integrity": "sha512-UQxoONPI3ntzxcD/cbFHl+Lp2xsVj6HpKmU9QhUZ2kZ2K2yej2QJyU1gnADoWl/Hu94VrvwSSRnjTjR3HvXO/g==",
+ "version": "5.0.0-alpha.110",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.110.tgz",
+ "integrity": "sha512-q4TH9T3sTBknTXXTEf2zO8F3nbHg5iGgiaRx9XErTbXvHrmLrQXbQ4hmrLERocSTBFCFWkKyne/qZj0diWlPtA==",
"requires": {
- "@babel/runtime": "^7.20.1",
+ "@babel/runtime": "^7.20.6",
"@emotion/is-prop-valid": "^1.2.0",
- "@mui/types": "^7.2.2",
- "@mui/utils": "^5.10.16",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.0",
"@popperjs/core": "^2.11.6",
"clsx": "^1.2.1",
"prop-types": "^15.8.1",
@@ -19657,29 +19657,29 @@
}
},
"@mui/core-downloads-tracker": {
- "version": "5.10.17",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.17.tgz",
- "integrity": "sha512-iNwUuMA30nrN0tiEkeD3zaczv7Tk2jlZIDbXRnijAsYXkZtl/xEzQsVRIPYRDuyEz6D18vQJhV8h7gPUXEubTg=="
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.0.tgz",
+ "integrity": "sha512-Bmogung451ezVv2YI1RvweOIVsTj2RQ4Fk61+e/+8LFPLTFEwVGbL0YhNy1VB5tri8pzGNV228kxtWVTFooQkg=="
},
"@mui/icons-material": {
- "version": "5.10.16",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.16.tgz",
- "integrity": "sha512-jjCc0IF6iyLiucQCu5igg3fOscSqbbvRCmyRxXgzOcLR56B0sg2L8o+ZfJ0dAg59+wvgtXaxvjze/mJg0B4iWA==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.11.0.tgz",
+ "integrity": "sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A==",
"requires": {
- "@babel/runtime": "^7.20.1"
+ "@babel/runtime": "^7.20.6"
}
},
"@mui/material": {
- "version": "5.10.17",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.17.tgz",
- "integrity": "sha512-Kuqgv1qI5HXnc/Xu426xhCGYBSKzplb+xFNLitbnIb92Qx8jmcpfNpFlDJa2kD2H6qP66rr/m4c/zMUfGX/xBQ==",
- "requires": {
- "@babel/runtime": "^7.20.1",
- "@mui/base": "5.0.0-alpha.109",
- "@mui/core-downloads-tracker": "^5.10.17",
- "@mui/system": "^5.10.17",
- "@mui/types": "^7.2.2",
- "@mui/utils": "^5.10.16",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.11.0.tgz",
+ "integrity": "sha512-8Zl34lb89rLKTTi50Kakki675/LLHMKKnkp8Ee3rAZ2qmisQlRODsGh1MBjENKp0vwhQnNSvlsCfJteVTfotPQ==",
+ "requires": {
+ "@babel/runtime": "^7.20.6",
+ "@mui/base": "5.0.0-alpha.110",
+ "@mui/core-downloads-tracker": "^5.11.0",
+ "@mui/system": "^5.11.0",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.0",
"@types/react-transition-group": "^4.4.5",
"clsx": "^1.2.1",
"csstype": "^3.1.1",
@@ -19689,53 +19689,53 @@
}
},
"@mui/private-theming": {
- "version": "5.10.16",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz",
- "integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.11.0.tgz",
+ "integrity": "sha512-UFQLb9x5Sj4pg2GhhCGw3Ls/y1Hw/tz9RsBrULvUF0Vgps1z19o7XTq2xqUvp7pN7fJTW7eVIT2gwVg2xlk8PQ==",
"requires": {
- "@babel/runtime": "^7.20.1",
- "@mui/utils": "^5.10.16",
+ "@babel/runtime": "^7.20.6",
+ "@mui/utils": "^5.11.0",
"prop-types": "^15.8.1"
}
},
"@mui/styled-engine": {
- "version": "5.10.16",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz",
- "integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.0.tgz",
+ "integrity": "sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ==",
"requires": {
- "@babel/runtime": "^7.20.1",
+ "@babel/runtime": "^7.20.6",
"@emotion/cache": "^11.10.5",
"csstype": "^3.1.1",
"prop-types": "^15.8.1"
}
},
"@mui/system": {
- "version": "5.10.17",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.17.tgz",
- "integrity": "sha512-UYzAOSK7uxkMsUssqrIUW3lnOuQpU8vqh4hLwfSw+GYAnQo3qjK4m4NhlDx+pFpsjjiGnr3K+vrSH+aIAMbcLg==",
- "requires": {
- "@babel/runtime": "^7.20.1",
- "@mui/private-theming": "^5.10.16",
- "@mui/styled-engine": "^5.10.16",
- "@mui/types": "^7.2.2",
- "@mui/utils": "^5.10.16",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.11.0.tgz",
+ "integrity": "sha512-HFUT7Dlmyq6Wfuxsw8QBXZxXDYIQQaJ4YHaZd7s+nDMcjerLnILxjh2g3a6umtOUM+jEcRaFJAtvLZvlGfa5fw==",
+ "requires": {
+ "@babel/runtime": "^7.20.6",
+ "@mui/private-theming": "^5.11.0",
+ "@mui/styled-engine": "^5.11.0",
+ "@mui/types": "^7.2.3",
+ "@mui/utils": "^5.11.0",
"clsx": "^1.2.1",
"csstype": "^3.1.1",
"prop-types": "^15.8.1"
}
},
"@mui/types": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz",
- "integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==",
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.3.tgz",
+ "integrity": "sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==",
"requires": {}
},
"@mui/utils": {
- "version": "5.10.16",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz",
- "integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.11.0.tgz",
+ "integrity": "sha512-DP/YDaVVCVzJpZ5FFPLKNmaJkeaYRviTyIZkL/D5/FmPXQiA6ecd6z0/+VwoNQtp7aXAQWaRhvz4FM25yqFlHA==",
"requires": {
- "@babel/runtime": "^7.20.1",
+ "@babel/runtime": "^7.20.6",
"@types/prop-types": "^15.7.5",
"@types/react-is": "^16.7.1 || ^17.0.0",
"prop-types": "^15.8.1",
@@ -20232,9 +20232,9 @@
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
},
"@types/node": {
- "version": "18.11.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz",
- "integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg=="
+ "version": "18.11.15",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz",
+ "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw=="
},
"@types/parse-json": {
"version": "4.0.0",
diff --git a/interface/package.json b/interface/package.json
index 4238aba64..bda56b4c0 100644
--- a/interface/package.json
+++ b/interface/package.json
@@ -7,11 +7,11 @@
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"@msgpack/msgpack": "^2.8.0",
- "@mui/icons-material": "^5.10.16",
- "@mui/material": "^5.10.17",
+ "@mui/icons-material": "^5.11.0",
+ "@mui/material": "^5.11.0",
"@table-library/react-table-library": "4.0.23",
"@types/lodash": "^4.14.191",
- "@types/node": "^18.11.12",
+ "@types/node": "^18.11.15",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.9",
"@types/react-router-dom": "^5.3.3",
diff --git a/interface/src/framework/mqtt/MqttSettingsForm.tsx b/interface/src/framework/mqtt/MqttSettingsForm.tsx
index 03f305508..85f468771 100644
--- a/interface/src/framework/mqtt/MqttSettingsForm.tsx
+++ b/interface/src/framework/mqtt/MqttSettingsForm.tsx
@@ -170,6 +170,7 @@ const MqttSettingsForm: FC = () => {
control={}
label={LL.MQTT_RETAIN_FLAG()}
/>
+
{LL.FORMATTING()}
@@ -214,41 +215,46 @@ const MqttSettingsForm: FC = () => {
}
label={LL.MQTT_PUBLISH_TEXT_3()}
/>
{data.ha_enabled && (
<>
-
-
- }
- label={LL.MQTT_MULTIPLE_INSTANCES()}
- />
-
-
-
+
+
+
+
+
+
+
+
+
+
>
)}
)}
-
+
{LL.MQTT_PUBLISH_INTERVALS()} (0=auto)
diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts
index 5b55d8cb7..f480b9c51 100644
--- a/interface/src/i18n/de/index.ts
+++ b/interface/src/i18n/de/index.ts
@@ -249,7 +249,9 @@ const de: Translation = {
MQTT_INT_HEARTBEAT: 'Heartbeat',
MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Standard',
- MQTT_MULTIPLE_INSTANCES: 'Erlaube EMS-ESP Mehrfachinstanzen',
+ MQTT_ENTITY_FORMAT: 'Entity ID format',
+ MQTT_ENTITY_FORMAT_0: 'Single instance, long name',
+ MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
MQTT_CLEAN_SESSION: 'Setze `Clean Session`',
MQTT_RETAIN_FLAG: 'Setze `Retain flag` immer',
INACTIVE: 'Inaktiv',
diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts
index e28a3bd4d..e76450b70 100644
--- a/interface/src/i18n/en/index.ts
+++ b/interface/src/i18n/en/index.ts
@@ -248,7 +248,9 @@ const en: Translation = {
MQTT_INT_HEARTBEAT: 'Heartbeat',
MQTT_QUEUE: 'MQTT Queue',
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',
+ MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
MQTT_CLEAN_SESSION: 'Set Clean Session',
MQTT_RETAIN_FLAG: 'Always set Retain flag',
INACTIVE: 'Inactive',
diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts
index df1234972..659c96359 100644
--- a/interface/src/i18n/fr/index.ts
+++ b/interface/src/i18n/fr/index.ts
@@ -248,7 +248,9 @@ const fr: Translation = {
MQTT_INT_HEARTBEAT: 'Battements',
MQTT_QUEUE: 'Queue MQTT',
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',
+ MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
MQTT_CLEAN_SESSION: 'Flag Clean Session',
MQTT_RETAIN_FLAG: 'Toujours activer le Retain Flag',
INACTIVE: 'Inactif',
diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts
index 08553526f..dc250c99b 100644
--- a/interface/src/i18n/nl/index.ts
+++ b/interface/src/i18n/nl/index.ts
@@ -248,7 +248,9 @@ const nl: Translation = {
MQTT_INT_HEARTBEAT: 'Heartbeat',
MQTT_QUEUE: 'MQTT Queue',
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',
+ MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
MQTT_CLEAN_SESSION: 'Clean Session aan',
MQTT_RETAIN_FLAG: 'Retain flag aan',
INACTIVE: 'Inactief',
diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts
index d3474b5e6..b9e7db89c 100644
--- a/interface/src/i18n/no/index.ts
+++ b/interface/src/i18n/no/index.ts
@@ -248,7 +248,9 @@ const no: Translation = {
MQTT_INT_HEARTBEAT: 'Heartbeat',
MQTT_QUEUE: 'MQTT Queue',
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',
+ MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
MQTT_CLEAN_SESSION: 'Benytt Clean Session',
MQTT_RETAIN_FLAG: 'Alltid sett Retain flag',
INACTIVE: 'Innaktiv',
diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts
index dd4714de7..ed542e798 100644
--- a/interface/src/i18n/pl/index.ts
+++ b/interface/src/i18n/pl/index.ts
@@ -248,7 +248,9 @@ const pl: BaseTranslation = {
MQTT_INT_HEARTBEAT: 'Heartbeat',
MQTT_QUEUE: 'Kolejka MQTT',
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',
+ MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
MQTT_CLEAN_SESSION: 'Ustawiaj flagę "Clean session"',
MQTT_RETAIN_FLAG: 'Ustawiaj flagę "Retain"',
INACTIVE: 'nieaktywny',
diff --git a/interface/src/i18n/se/index.ts b/interface/src/i18n/se/index.ts
index e302363dc..99e33eebc 100644
--- a/interface/src/i18n/se/index.ts
+++ b/interface/src/i18n/se/index.ts
@@ -248,7 +248,9 @@ const se: Translation = {
MQTT_INT_HEARTBEAT: 'Heartbeat',
MQTT_QUEUE: 'MQTT Queue',
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',
+ MQTT_ENTITY_FORMAT_1: 'Multiple instances, short name',
MQTT_CLEAN_SESSION: 'Använd "Clean Session"-flaggan',
MQTT_RETAIN_FLAG: 'Använd "Always Retain"-flaggan',
INACTIVE: 'Inaktiv',
diff --git a/lib/framework/MqttSettingsService.cpp b/lib/framework/MqttSettingsService.cpp
index 5e4c82814..aa6198706 100644
--- a/lib/framework/MqttSettingsService.cpp
+++ b/lib/framework/MqttSettingsService.cpp
@@ -188,9 +188,8 @@ StateUpdateResult MqttSettings::update(JsonObject & root, MqttSettings & setting
newSettings.keepAlive = root["keep_alive"] | FACTORY_MQTT_KEEP_ALIVE;
newSettings.cleanSession = root["clean_session"] | FACTORY_MQTT_CLEAN_SESSION;
newSettings.multiple_instances = root["multiple_instances"] | FACTORY_MQTT_MULTIPLE_INSTANCES;
-
- newSettings.mqtt_qos = root["mqtt_qos"] | EMSESP_DEFAULT_MQTT_QOS;
- newSettings.mqtt_retain = root["mqtt_retain"] | EMSESP_DEFAULT_MQTT_RETAIN;
+ newSettings.mqtt_qos = root["mqtt_qos"] | EMSESP_DEFAULT_MQTT_QOS;
+ newSettings.mqtt_retain = root["mqtt_retain"] | EMSESP_DEFAULT_MQTT_RETAIN;
newSettings.publish_time_boiler = root["publish_time_boiler"] | EMSESP_DEFAULT_PUBLISH_TIME;
newSettings.publish_time_thermostat = root["publish_time_thermostat"] | EMSESP_DEFAULT_PUBLISH_TIME;
diff --git a/lib/framework/MqttSettingsService.h b/lib/framework/MqttSettingsService.h
index 21ec908bd..cac21aa86 100644
--- a/lib/framework/MqttSettingsService.h
+++ b/lib/framework/MqttSettingsService.h
@@ -58,7 +58,7 @@ static String generateClientId() {
#endif
#ifndef FACTORY_MQTT_MULTIPLE_INSTANCES
-#define FACTORY_MQTT_MULTIPLE_INSTANCES false
+#define FACTORY_MQTT_MULTIPLE_INSTANCES true
#endif
class MqttSettings {
diff --git a/mock-api/server.js b/mock-api/server.js
index f73d04026..e2d06fef9 100644
--- a/mock-api/server.js
+++ b/mock-api/server.js
@@ -223,7 +223,7 @@ mqtt_settings = {
client_id: 'ems-esp',
keep_alive: 60,
clean_session: true,
- multiple_instances: false,
+ multiple_instances: true,
publish_time_boiler: 10,
publish_time_thermostat: 10,
publish_time_solar: 10,
diff --git a/src/mqtt.cpp b/src/mqtt.cpp
index c29c1099d..d279fc931 100644
--- a/src/mqtt.cpp
+++ b/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,
dv.tag,
dv.get_fullname().c_str(),
+ (dv.fullname ? dv.fullname[0] : nullptr), // EN name
dv.device_type,
dv.short_name,
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");
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
@@ -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
uint8_t tag, // EMSdevice::DeviceValueTAG
const char * const fullname, // fullname, already translated
+ const char * const en_name, // original name
const uint8_t device_type, // EMSdevice::DeviceType
const char * const entity, // same as shortname
const uint8_t uom, // EMSdevice::DeviceValueUOM (0=NONE)
@@ -990,10 +992,11 @@ 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
char uniq_id[70];
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);
} else {
- snprintf(uniq_id, sizeof(uniq_id), "%s_%s", device_name, entity_with_tag);
+ // old v3.4 style
+ snprintf(uniq_id, sizeof(uniq_id), "%s_%s", device_name, en_name);
}
// build a config topic that will be prefix onto a HA type (e.g. number, switch)
diff --git a/src/mqtt.h b/src/mqtt.h
index 348078196..e2de8bba4 100644
--- a/src/mqtt.h
+++ b/src/mqtt.h
@@ -95,6 +95,7 @@ class Mqtt {
static void publish_ha_sensor_config(uint8_t type,
uint8_t tag,
const char * const fullname,
+ const char * const en_name,
const uint8_t device_type,
const char * const entity,
const uint8_t uom,
diff --git a/src/version.h b/src/version.h
index 1a4fba9ca..de55b8304 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,4 +1,4 @@
-#define EMSESP_APP_VERSION "3.5.0b11"
+#define EMSESP_APP_VERSION "3.5.0b12"
#if CONFIG_IDF_TARGET_ESP32C3
#define EMSESP_PLATFORM "ESP32-C3";