mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-05-12 09:05:50 +00:00
@@ -68,4 +68,7 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/).
|
|||||||
- place system message command in side scheduler loop to reduce stack memory usage by 2KB
|
- place system message command in side scheduler loop to reduce stack memory usage by 2KB
|
||||||
- syslog mark interval set to 1 hour
|
- syslog mark interval set to 1 hour
|
||||||
- handle process_telegram in oneloop
|
- handle process_telegram in oneloop
|
||||||
- improved GPIO validation in Analog Sensors and System settings
|
- improved GPIO validation for Analog Sensors and System GPIOs
|
||||||
|
- entities with no values are greyed out in the Web UI in the Customization page
|
||||||
|
- added System Status to Web Status page
|
||||||
|
- show number on entities and supported languages in log on boot
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
"@preact/preset-vite": "^2.10.2",
|
"@preact/preset-vite": "^2.10.2",
|
||||||
"@trivago/prettier-plugin-sort-imports": "^6.0.0",
|
"@trivago/prettier-plugin-sort-imports": "^6.0.0",
|
||||||
"@types/node": "^24.10.1",
|
"@types/node": "^24.10.1",
|
||||||
"@types/react": "^19.2.6",
|
"@types/react": "^19.2.7",
|
||||||
"@types/react-dom": "^19.2.3",
|
"@types/react-dom": "^19.2.3",
|
||||||
"axe-core": "^4.11.0",
|
"axe-core": "^4.11.0",
|
||||||
"concurrently": "^9.2.1",
|
"concurrently": "^9.2.1",
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
"prettier": "^3.6.2",
|
"prettier": "^3.6.2",
|
||||||
"rollup-plugin-visualizer": "^6.0.5",
|
"rollup-plugin-visualizer": "^6.0.5",
|
||||||
"terser": "^5.44.1",
|
"terser": "^5.44.1",
|
||||||
"typescript-eslint": "^8.47.0",
|
"typescript-eslint": "^8.48.0",
|
||||||
"vite": "^7.2.4",
|
"vite": "^7.2.4",
|
||||||
"vite-plugin-imagemin": "^0.6.1",
|
"vite-plugin-imagemin": "^0.6.1",
|
||||||
"vite-tsconfig-paths": "^5.1.4"
|
"vite-tsconfig-paths": "^5.1.4"
|
||||||
|
|||||||
259
interface/pnpm-lock.yaml
generated
259
interface/pnpm-lock.yaml
generated
@@ -13,22 +13,22 @@ importers:
|
|||||||
version: 2.2.1(alova@3.3.4)
|
version: 2.2.1(alova@3.3.4)
|
||||||
'@emotion/react':
|
'@emotion/react':
|
||||||
specifier: ^11.14.0
|
specifier: ^11.14.0
|
||||||
version: 11.14.0(@types/react@19.2.6)(react@19.2.0)
|
version: 11.14.0(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@emotion/styled':
|
'@emotion/styled':
|
||||||
specifier: ^11.14.1
|
specifier: ^11.14.1
|
||||||
version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)
|
version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@mui/icons-material':
|
'@mui/icons-material':
|
||||||
specifier: ^7.3.5
|
specifier: ^7.3.5
|
||||||
version: 7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)
|
version: 7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@mui/material':
|
'@mui/material':
|
||||||
specifier: ^7.3.5
|
specifier: ^7.3.5
|
||||||
version: 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
version: 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||||
'@preact/compat':
|
'@preact/compat':
|
||||||
specifier: ^18.3.1
|
specifier: ^18.3.1
|
||||||
version: 18.3.1(preact@10.27.2)
|
version: 18.3.1(preact@10.27.2)
|
||||||
'@table-library/react-table-library':
|
'@table-library/react-table-library':
|
||||||
specifier: 4.1.15
|
specifier: 4.1.15
|
||||||
version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||||
alova:
|
alova:
|
||||||
specifier: 3.3.4
|
specifier: 3.3.4
|
||||||
version: 3.3.4
|
version: 3.3.4
|
||||||
@@ -91,11 +91,11 @@ importers:
|
|||||||
specifier: ^24.10.1
|
specifier: ^24.10.1
|
||||||
version: 24.10.1
|
version: 24.10.1
|
||||||
'@types/react':
|
'@types/react':
|
||||||
specifier: ^19.2.6
|
specifier: ^19.2.7
|
||||||
version: 19.2.6
|
version: 19.2.7
|
||||||
'@types/react-dom':
|
'@types/react-dom':
|
||||||
specifier: ^19.2.3
|
specifier: ^19.2.3
|
||||||
version: 19.2.3(@types/react@19.2.6)
|
version: 19.2.3(@types/react@19.2.7)
|
||||||
axe-core:
|
axe-core:
|
||||||
specifier: ^4.11.0
|
specifier: ^4.11.0
|
||||||
version: 4.11.0
|
version: 4.11.0
|
||||||
@@ -118,8 +118,8 @@ importers:
|
|||||||
specifier: ^5.44.1
|
specifier: ^5.44.1
|
||||||
version: 5.44.1
|
version: 5.44.1
|
||||||
typescript-eslint:
|
typescript-eslint:
|
||||||
specifier: ^8.47.0
|
specifier: ^8.48.0
|
||||||
version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
|
version: 8.48.0(eslint@9.39.1)(typescript@5.9.3)
|
||||||
vite:
|
vite:
|
||||||
specifier: ^7.2.4
|
specifier: ^7.2.4
|
||||||
version: 7.2.4(@types/node@24.10.1)(terser@5.44.1)
|
version: 7.2.4(@types/node@24.10.1)(terser@5.44.1)
|
||||||
@@ -879,8 +879,8 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': '*'
|
'@types/react': '*'
|
||||||
|
|
||||||
'@types/react@19.2.6':
|
'@types/react@19.2.7':
|
||||||
resolution: {integrity: sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==}
|
resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==}
|
||||||
|
|
||||||
'@types/responselike@1.0.3':
|
'@types/responselike@1.0.3':
|
||||||
resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
|
resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
|
||||||
@@ -888,63 +888,63 @@ packages:
|
|||||||
'@types/svgo@2.6.4':
|
'@types/svgo@2.6.4':
|
||||||
resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
|
resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.47.0':
|
'@typescript-eslint/eslint-plugin@8.48.0':
|
||||||
resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==}
|
resolution: {integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@typescript-eslint/parser': ^8.47.0
|
'@typescript-eslint/parser': ^8.48.0
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.47.0':
|
'@typescript-eslint/parser@8.48.0':
|
||||||
resolution: {integrity: sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==}
|
resolution: {integrity: sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/project-service@8.47.0':
|
'@typescript-eslint/project-service@8.48.0':
|
||||||
resolution: {integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==}
|
resolution: {integrity: sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.47.0':
|
'@typescript-eslint/scope-manager@8.48.0':
|
||||||
resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==}
|
resolution: {integrity: sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.47.0':
|
'@typescript-eslint/tsconfig-utils@8.48.0':
|
||||||
resolution: {integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==}
|
resolution: {integrity: sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.47.0':
|
'@typescript-eslint/type-utils@8.48.0':
|
||||||
resolution: {integrity: sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==}
|
resolution: {integrity: sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/types@8.47.0':
|
'@typescript-eslint/types@8.48.0':
|
||||||
resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==}
|
resolution: {integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.47.0':
|
'@typescript-eslint/typescript-estree@8.48.0':
|
||||||
resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==}
|
resolution: {integrity: sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.47.0':
|
'@typescript-eslint/utils@8.48.0':
|
||||||
resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==}
|
resolution: {integrity: sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.47.0':
|
'@typescript-eslint/visitor-keys@8.48.0':
|
||||||
resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==}
|
resolution: {integrity: sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
acorn-jsx@5.3.2:
|
acorn-jsx@5.3.2:
|
||||||
@@ -1117,8 +1117,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
|
resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001756:
|
caniuse-lite@1.0.30001757:
|
||||||
resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==}
|
resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==}
|
||||||
|
|
||||||
caw@2.0.1:
|
caw@2.0.1:
|
||||||
resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==}
|
resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==}
|
||||||
@@ -1185,8 +1185,8 @@ packages:
|
|||||||
convert-source-map@2.0.0:
|
convert-source-map@2.0.0:
|
||||||
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
|
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
|
||||||
|
|
||||||
cookie@1.0.2:
|
cookie@1.1.0:
|
||||||
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
|
resolution: {integrity: sha512-vXiThu1/rlos7EGu8TuNZQEg2e9TvhH9dmS4T4ZVzB7Ao1agEZ6EG3sn5n+hZRYUgduISd1HpngFzAZiDGm5vQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
core-util-is@1.0.3:
|
core-util-is@1.0.3:
|
||||||
@@ -1337,8 +1337,8 @@ packages:
|
|||||||
duplexer3@0.1.5:
|
duplexer3@0.1.5:
|
||||||
resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
|
resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
|
||||||
|
|
||||||
electron-to-chromium@1.5.259:
|
electron-to-chromium@1.5.260:
|
||||||
resolution: {integrity: sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==}
|
resolution: {integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==}
|
||||||
|
|
||||||
emoji-regex@8.0.0:
|
emoji-regex@8.0.0:
|
||||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||||
@@ -2927,8 +2927,8 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=3.5.1'
|
typescript: '>=3.5.1'
|
||||||
|
|
||||||
typescript-eslint@8.47.0:
|
typescript-eslint@8.48.0:
|
||||||
resolution: {integrity: sha512-Lwe8i2XQ3WoMjua/r1PHrCTpkubPYJCAfOurtn+mtTzqB6jNd+14n9UN1bJ4s3F49x9ixAm0FLflB/JzQ57M8Q==}
|
resolution: {integrity: sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
@@ -3268,7 +3268,7 @@ snapshots:
|
|||||||
|
|
||||||
'@emotion/memoize@0.9.0': {}
|
'@emotion/memoize@0.9.0': {}
|
||||||
|
|
||||||
'@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0)':
|
'@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
'@emotion/babel-plugin': 11.13.5
|
'@emotion/babel-plugin': 11.13.5
|
||||||
@@ -3280,7 +3280,7 @@ snapshots:
|
|||||||
hoist-non-react-statics: 3.3.2
|
hoist-non-react-statics: 3.3.2
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@@ -3294,18 +3294,18 @@ snapshots:
|
|||||||
|
|
||||||
'@emotion/sheet@1.4.0': {}
|
'@emotion/sheet@1.4.0': {}
|
||||||
|
|
||||||
'@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)':
|
'@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
'@emotion/babel-plugin': 11.13.5
|
'@emotion/babel-plugin': 11.13.5
|
||||||
'@emotion/is-prop-valid': 1.4.0
|
'@emotion/is-prop-valid': 1.4.0
|
||||||
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0)
|
'@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@emotion/serialize': 1.3.3
|
'@emotion/serialize': 1.3.3
|
||||||
'@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0)
|
'@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0)
|
||||||
'@emotion/utils': 1.4.2
|
'@emotion/utils': 1.4.2
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@@ -3489,23 +3489,23 @@ snapshots:
|
|||||||
|
|
||||||
'@mui/core-downloads-tracker@7.3.5': {}
|
'@mui/core-downloads-tracker@7.3.5': {}
|
||||||
|
|
||||||
'@mui/icons-material@7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)':
|
'@mui/icons-material@7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
'@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
'@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
|
|
||||||
'@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
|
'@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
'@mui/core-downloads-tracker': 7.3.5
|
'@mui/core-downloads-tracker': 7.3.5
|
||||||
'@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)
|
'@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@mui/types': 7.4.8(@types/react@19.2.6)
|
'@mui/types': 7.4.8(@types/react@19.2.7)
|
||||||
'@mui/utils': 7.3.5(@types/react@19.2.6)(react@19.2.0)
|
'@mui/utils': 7.3.5(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@popperjs/core': 2.11.8
|
'@popperjs/core': 2.11.8
|
||||||
'@types/react-transition-group': 4.4.12(@types/react@19.2.6)
|
'@types/react-transition-group': 4.4.12(@types/react@19.2.7)
|
||||||
clsx: 2.1.1
|
clsx: 2.1.1
|
||||||
csstype: 3.2.3
|
csstype: 3.2.3
|
||||||
prop-types: 15.8.1
|
prop-types: 15.8.1
|
||||||
@@ -3514,20 +3514,20 @@ snapshots:
|
|||||||
react-is: 19.2.0
|
react-is: 19.2.0
|
||||||
react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0)
|
'@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)
|
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
|
|
||||||
'@mui/private-theming@7.3.5(@types/react@19.2.6)(react@19.2.0)':
|
'@mui/private-theming@7.3.5(@types/react@19.2.7)(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
'@mui/utils': 7.3.5(@types/react@19.2.6)(react@19.2.0)
|
'@mui/utils': 7.3.5(@types/react@19.2.7)(react@19.2.0)
|
||||||
prop-types: 15.8.1
|
prop-types: 15.8.1
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
|
|
||||||
'@mui/styled-engine@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(react@19.2.0)':
|
'@mui/styled-engine@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
'@emotion/cache': 11.14.0
|
'@emotion/cache': 11.14.0
|
||||||
@@ -3537,42 +3537,42 @@ snapshots:
|
|||||||
prop-types: 15.8.1
|
prop-types: 15.8.1
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0)
|
'@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)
|
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
|
||||||
|
|
||||||
'@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)':
|
'@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
'@mui/private-theming': 7.3.5(@types/react@19.2.6)(react@19.2.0)
|
'@mui/private-theming': 7.3.5(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@mui/styled-engine': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(react@19.2.0)
|
'@mui/styled-engine': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(react@19.2.0)
|
||||||
'@mui/types': 7.4.8(@types/react@19.2.6)
|
'@mui/types': 7.4.8(@types/react@19.2.7)
|
||||||
'@mui/utils': 7.3.5(@types/react@19.2.6)(react@19.2.0)
|
'@mui/utils': 7.3.5(@types/react@19.2.7)(react@19.2.0)
|
||||||
clsx: 2.1.1
|
clsx: 2.1.1
|
||||||
csstype: 3.2.3
|
csstype: 3.2.3
|
||||||
prop-types: 15.8.1
|
prop-types: 15.8.1
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0)
|
'@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)
|
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
|
|
||||||
'@mui/types@7.4.8(@types/react@19.2.6)':
|
'@mui/types@7.4.8(@types/react@19.2.7)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
|
|
||||||
'@mui/utils@7.3.5(@types/react@19.2.6)(react@19.2.0)':
|
'@mui/utils@7.3.5(@types/react@19.2.7)(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.28.4
|
'@babel/runtime': 7.28.4
|
||||||
'@mui/types': 7.4.8(@types/react@19.2.6)
|
'@mui/types': 7.4.8(@types/react@19.2.7)
|
||||||
'@types/prop-types': 15.7.15
|
'@types/prop-types': 15.7.15
|
||||||
clsx: 2.1.1
|
clsx: 2.1.1
|
||||||
prop-types: 15.8.1
|
prop-types: 15.8.1
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
react-is: 19.2.0
|
react-is: 19.2.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
|
|
||||||
'@noble/hashes@1.8.0': {}
|
'@noble/hashes@1.8.0': {}
|
||||||
|
|
||||||
@@ -3707,9 +3707,9 @@ snapshots:
|
|||||||
|
|
||||||
'@sindresorhus/is@0.7.0': {}
|
'@sindresorhus/is@0.7.0': {}
|
||||||
|
|
||||||
'@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
|
'@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0)
|
'@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
|
||||||
clsx: 1.1.1
|
clsx: 1.1.1
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
react-dom: 19.2.0(react@19.2.0)
|
react-dom: 19.2.0(react@19.2.0)
|
||||||
@@ -3786,15 +3786,15 @@ snapshots:
|
|||||||
|
|
||||||
'@types/prop-types@15.7.15': {}
|
'@types/prop-types@15.7.15': {}
|
||||||
|
|
||||||
'@types/react-dom@19.2.3(@types/react@19.2.6)':
|
'@types/react-dom@19.2.3(@types/react@19.2.7)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
|
|
||||||
'@types/react-transition-group@4.4.12(@types/react@19.2.6)':
|
'@types/react-transition-group@4.4.12(@types/react@19.2.7)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 19.2.6
|
'@types/react': 19.2.7
|
||||||
|
|
||||||
'@types/react@19.2.6':
|
'@types/react@19.2.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
csstype: 3.2.3
|
csstype: 3.2.3
|
||||||
|
|
||||||
@@ -3806,14 +3806,14 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 24.10.1
|
'@types/node': 24.10.1
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)':
|
'@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.2
|
'@eslint-community/regexpp': 4.12.2
|
||||||
'@typescript-eslint/parser': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
|
'@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.47.0
|
'@typescript-eslint/scope-manager': 8.48.0
|
||||||
'@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
|
'@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
|
||||||
'@typescript-eslint/utils': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.47.0
|
'@typescript-eslint/visitor-keys': 8.48.0
|
||||||
eslint: 9.39.1
|
eslint: 9.39.1
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
ignore: 7.0.5
|
ignore: 7.0.5
|
||||||
@@ -3823,41 +3823,41 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3)':
|
'@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.47.0
|
'@typescript-eslint/scope-manager': 8.48.0
|
||||||
'@typescript-eslint/types': 8.47.0
|
'@typescript-eslint/types': 8.48.0
|
||||||
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
|
'@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.47.0
|
'@typescript-eslint/visitor-keys': 8.48.0
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
eslint: 9.39.1
|
eslint: 9.39.1
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/project-service@8.47.0(typescript@5.9.3)':
|
'@typescript-eslint/project-service@8.48.0(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3)
|
'@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.47.0
|
'@typescript-eslint/types': 8.48.0
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.47.0':
|
'@typescript-eslint/scope-manager@8.48.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.47.0
|
'@typescript-eslint/types': 8.48.0
|
||||||
'@typescript-eslint/visitor-keys': 8.47.0
|
'@typescript-eslint/visitor-keys': 8.48.0
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.9.3)':
|
'@typescript-eslint/tsconfig-utils@8.48.0(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.47.0(eslint@9.39.1)(typescript@5.9.3)':
|
'@typescript-eslint/type-utils@8.48.0(eslint@9.39.1)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.47.0
|
'@typescript-eslint/types': 8.48.0
|
||||||
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
|
'@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3)
|
||||||
'@typescript-eslint/utils': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
eslint: 9.39.1
|
eslint: 9.39.1
|
||||||
ts-api-utils: 2.1.0(typescript@5.9.3)
|
ts-api-utils: 2.1.0(typescript@5.9.3)
|
||||||
@@ -3865,38 +3865,37 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/types@8.47.0': {}
|
'@typescript-eslint/types@8.48.0': {}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.47.0(typescript@5.9.3)':
|
'@typescript-eslint/typescript-estree@8.48.0(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/project-service': 8.47.0(typescript@5.9.3)
|
'@typescript-eslint/project-service': 8.48.0(typescript@5.9.3)
|
||||||
'@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3)
|
'@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.47.0
|
'@typescript-eslint/types': 8.48.0
|
||||||
'@typescript-eslint/visitor-keys': 8.47.0
|
'@typescript-eslint/visitor-keys': 8.48.0
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
fast-glob: 3.3.3
|
|
||||||
is-glob: 4.0.3
|
|
||||||
minimatch: 9.0.5
|
minimatch: 9.0.5
|
||||||
semver: 7.7.3
|
semver: 7.7.3
|
||||||
|
tinyglobby: 0.2.15
|
||||||
ts-api-utils: 2.1.0(typescript@5.9.3)
|
ts-api-utils: 2.1.0(typescript@5.9.3)
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.47.0(eslint@9.39.1)(typescript@5.9.3)':
|
'@typescript-eslint/utils@8.48.0(eslint@9.39.1)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
|
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
|
||||||
'@typescript-eslint/scope-manager': 8.47.0
|
'@typescript-eslint/scope-manager': 8.48.0
|
||||||
'@typescript-eslint/types': 8.47.0
|
'@typescript-eslint/types': 8.48.0
|
||||||
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
|
'@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3)
|
||||||
eslint: 9.39.1
|
eslint: 9.39.1
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.47.0':
|
'@typescript-eslint/visitor-keys@8.48.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.47.0
|
'@typescript-eslint/types': 8.48.0
|
||||||
eslint-visitor-keys: 4.2.1
|
eslint-visitor-keys: 4.2.1
|
||||||
|
|
||||||
acorn-jsx@5.3.2(acorn@8.15.0):
|
acorn-jsx@5.3.2(acorn@8.15.0):
|
||||||
@@ -4021,8 +4020,8 @@ snapshots:
|
|||||||
browserslist@4.28.0:
|
browserslist@4.28.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
baseline-browser-mapping: 2.8.31
|
baseline-browser-mapping: 2.8.31
|
||||||
caniuse-lite: 1.0.30001756
|
caniuse-lite: 1.0.30001757
|
||||||
electron-to-chromium: 1.5.259
|
electron-to-chromium: 1.5.260
|
||||||
node-releases: 2.0.27
|
node-releases: 2.0.27
|
||||||
update-browserslist-db: 1.1.4(browserslist@4.28.0)
|
update-browserslist-db: 1.1.4(browserslist@4.28.0)
|
||||||
|
|
||||||
@@ -4080,7 +4079,7 @@ snapshots:
|
|||||||
|
|
||||||
camelcase@2.1.1: {}
|
camelcase@2.1.1: {}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001756: {}
|
caniuse-lite@1.0.30001757: {}
|
||||||
|
|
||||||
caw@2.0.1:
|
caw@2.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -4152,7 +4151,7 @@ snapshots:
|
|||||||
|
|
||||||
convert-source-map@2.0.0: {}
|
convert-source-map@2.0.0: {}
|
||||||
|
|
||||||
cookie@1.0.2: {}
|
cookie@1.1.0: {}
|
||||||
|
|
||||||
core-util-is@1.0.3: {}
|
core-util-is@1.0.3: {}
|
||||||
|
|
||||||
@@ -4367,7 +4366,7 @@ snapshots:
|
|||||||
|
|
||||||
duplexer3@0.1.5: {}
|
duplexer3@0.1.5: {}
|
||||||
|
|
||||||
electron-to-chromium@1.5.259: {}
|
electron-to-chromium@1.5.260: {}
|
||||||
|
|
||||||
emoji-regex@8.0.0: {}
|
emoji-regex@8.0.0: {}
|
||||||
|
|
||||||
@@ -5534,7 +5533,7 @@ snapshots:
|
|||||||
|
|
||||||
react-router@7.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
|
react-router@7.9.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
cookie: 1.0.2
|
cookie: 1.1.0
|
||||||
react: 19.2.0
|
react: 19.2.0
|
||||||
set-cookie-parser: 2.7.2
|
set-cookie-parser: 2.7.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -5919,12 +5918,12 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
|
|
||||||
typescript-eslint@8.47.0(eslint@9.39.1)(typescript@5.9.3):
|
typescript-eslint@8.48.0(eslint@9.39.1)(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
|
'@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
|
||||||
'@typescript-eslint/parser': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
|
'@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
|
||||||
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
|
'@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3)
|
||||||
'@typescript-eslint/utils': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3)
|
||||||
eslint: 9.39.1
|
eslint: 9.39.1
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import DeviceHubIcon from '@mui/icons-material/DeviceHub';
|
|||||||
import DirectionsBusIcon from '@mui/icons-material/DirectionsBus';
|
import DirectionsBusIcon from '@mui/icons-material/DirectionsBus';
|
||||||
import LogoDevIcon from '@mui/icons-material/LogoDev';
|
import LogoDevIcon from '@mui/icons-material/LogoDev';
|
||||||
import MemoryIcon from '@mui/icons-material/Memory';
|
import MemoryIcon from '@mui/icons-material/Memory';
|
||||||
|
import MonitorHeartIcon from '@mui/icons-material/MonitorHeart';
|
||||||
import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew';
|
import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew';
|
||||||
import RouterIcon from '@mui/icons-material/Router';
|
import RouterIcon from '@mui/icons-material/Router';
|
||||||
import SettingsInputAntennaIcon from '@mui/icons-material/SettingsInputAntenna';
|
import SettingsInputAntennaIcon from '@mui/icons-material/SettingsInputAntenna';
|
||||||
import TimerIcon from '@mui/icons-material/Timer';
|
|
||||||
import WifiIcon from '@mui/icons-material/Wifi';
|
import WifiIcon from '@mui/icons-material/Wifi';
|
||||||
import {
|
import {
|
||||||
Avatar,
|
Avatar,
|
||||||
@@ -37,7 +37,7 @@ import { FormLoader, SectionContent, useLayoutTitle } from 'components';
|
|||||||
import ListMenuItem from 'components/layout/ListMenuItem';
|
import ListMenuItem from 'components/layout/ListMenuItem';
|
||||||
import { AuthenticatedContext } from 'contexts/authentication';
|
import { AuthenticatedContext } from 'contexts/authentication';
|
||||||
import { useI18nContext } from 'i18n/i18n-react';
|
import { useI18nContext } from 'i18n/i18n-react';
|
||||||
import { NTPSyncStatus, NetworkConnectionStatus } from 'types';
|
import { NTPSyncStatus, NetworkConnectionStatus, SystemStatusCodes } from 'types';
|
||||||
import { useInterval } from 'utils';
|
import { useInterval } from 'utils';
|
||||||
import { formatDateTime } from 'utils/time';
|
import { formatDateTime } from 'utils/time';
|
||||||
|
|
||||||
@@ -113,6 +113,27 @@ const SystemStatus = () => {
|
|||||||
}
|
}
|
||||||
}, [data?.bus_status, data?.bus_uptime, LL]);
|
}, [data?.bus_status, data?.bus_uptime, LL]);
|
||||||
|
|
||||||
|
// Memoize derived status values to avoid recalculation on every render
|
||||||
|
const systemStatus = useMemo(() => {
|
||||||
|
if (!data) return '??';
|
||||||
|
|
||||||
|
switch (data.status) {
|
||||||
|
case SystemStatusCodes.SYSTEM_STATUS_PENDING_UPLOAD:
|
||||||
|
case SystemStatusCodes.SYSTEM_STATUS_UPLOADING:
|
||||||
|
return LL.WAIT_FIRMWARE();
|
||||||
|
case SystemStatusCodes.SYSTEM_STATUS_ERROR_UPLOAD:
|
||||||
|
return LL.ERROR();
|
||||||
|
case SystemStatusCodes.SYSTEM_STATUS_PENDING_RESTART:
|
||||||
|
case SystemStatusCodes.SYSTEM_STATUS_RESTART_REQUESTED:
|
||||||
|
return LL.RESTARTING_PRE();
|
||||||
|
case SystemStatusCodes.SYSTEM_STATUS_INVALID_GPIO:
|
||||||
|
return LL.GPIO_OF(LL.FAILED(0));
|
||||||
|
default:
|
||||||
|
// SystemStatusCodes.SYSTEM_STATUS_NORMAL
|
||||||
|
return 'OK';
|
||||||
|
}
|
||||||
|
}, [data?.status, LL]);
|
||||||
|
|
||||||
const busStatusHighlight = useMemo(() => {
|
const busStatusHighlight = useMemo(() => {
|
||||||
if (!data) return theme.palette.warning.main;
|
if (!data) return theme.palette.warning.main;
|
||||||
|
|
||||||
@@ -313,10 +334,13 @@ const SystemStatus = () => {
|
|||||||
<ListItem>
|
<ListItem>
|
||||||
<ListItemAvatar>
|
<ListItemAvatar>
|
||||||
<Avatar sx={{ bgcolor: '#c5572c', color: 'white' }}>
|
<Avatar sx={{ bgcolor: '#c5572c', color: 'white' }}>
|
||||||
<TimerIcon />
|
<MonitorHeartIcon />
|
||||||
</Avatar>
|
</Avatar>
|
||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
<ListItemText primary={LL.UPTIME()} secondary={uptimeText} />
|
<ListItemText
|
||||||
|
primary={LL.STATUS_OF(LL.SYSTEM(0))}
|
||||||
|
secondary={`${systemStatus} (${LL.UPTIME()}: ${uptimeText})`}
|
||||||
|
/>
|
||||||
{me.admin && (
|
{me.admin && (
|
||||||
<Button
|
<Button
|
||||||
startIcon={<PowerSettingsNewIcon />}
|
startIcon={<PowerSettingsNewIcon />}
|
||||||
|
|||||||
@@ -18,12 +18,10 @@ import WarningIcon from '@mui/icons-material/Warning';
|
|||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
Checkbox,
|
|
||||||
Dialog,
|
Dialog,
|
||||||
DialogActions,
|
DialogActions,
|
||||||
DialogContent,
|
DialogContent,
|
||||||
DialogTitle,
|
DialogTitle,
|
||||||
FormControlLabel,
|
|
||||||
Grid,
|
Grid,
|
||||||
IconButton,
|
IconButton,
|
||||||
Link,
|
Link,
|
||||||
@@ -511,48 +509,11 @@ const Version = () => {
|
|||||||
<Grid size={{ xs: 4, md: 2 }}>
|
<Grid size={{ xs: 4, md: 2 }}>
|
||||||
<Typography color="secondary">{LL.RELEASE_TYPE()}</Typography>
|
<Typography color="secondary">{LL.RELEASE_TYPE()}</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid size={{ xs: 8, md: 10 }}>
|
{isDev ? (
|
||||||
<FormControlLabel
|
<Typography>{LL.DEVELOPMENT()}</Typography>
|
||||||
disabled={!isDev}
|
) : (
|
||||||
control={
|
<Typography>{LL.STABLE()}</Typography>
|
||||||
<Checkbox
|
)}
|
||||||
sx={{
|
|
||||||
'&.Mui-checked': {
|
|
||||||
color: 'lightblue'
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
slotProps={{
|
|
||||||
typography: {
|
|
||||||
color: 'grey'
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
checked={!isDev}
|
|
||||||
label={LL.STABLE()}
|
|
||||||
sx={{ '& .MuiSvgIcon-root': { fontSize: 16 } }}
|
|
||||||
/>
|
|
||||||
<FormControlLabel
|
|
||||||
disabled={isDev}
|
|
||||||
control={
|
|
||||||
<Checkbox
|
|
||||||
sx={{
|
|
||||||
'&.Mui-checked': {
|
|
||||||
color: 'lightblue'
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
slotProps={{
|
|
||||||
typography: {
|
|
||||||
color: 'grey'
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
checked={isDev}
|
|
||||||
label={LL.DEVELOPMENT()}
|
|
||||||
sx={{ '& .MuiSvgIcon-root': { fontSize: 16 } }}
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
{internetLive ? (
|
{internetLive ? (
|
||||||
|
|||||||
@@ -2,13 +2,15 @@ import type { busConnectionStatus } from 'app/main/types';
|
|||||||
|
|
||||||
import type { NetworkConnectionStatus } from './network';
|
import type { NetworkConnectionStatus } from './network';
|
||||||
|
|
||||||
|
// match SYSTEM_STATUS in System.h
|
||||||
export enum SystemStatusCodes {
|
export enum SystemStatusCodes {
|
||||||
SYSTEM_STATUS_NORMAL = 0,
|
SYSTEM_STATUS_NORMAL = 0,
|
||||||
SYSTEM_STATUS_PENDING_UPLOAD = 1,
|
SYSTEM_STATUS_PENDING_UPLOAD = 1,
|
||||||
SYSTEM_STATUS_UPLOADING = 100,
|
SYSTEM_STATUS_UPLOADING = 100,
|
||||||
SYSTEM_STATUS_ERROR_UPLOAD = 3,
|
SYSTEM_STATUS_ERROR_UPLOAD = 3,
|
||||||
SYSTEM_STATUS_PENDING_RESTART = 4,
|
SYSTEM_STATUS_PENDING_RESTART = 4,
|
||||||
SYSTEM_STATUS_RESTART_REQUESTED = 5
|
SYSTEM_STATUS_RESTART_REQUESTED = 5,
|
||||||
|
SYSTEM_STATUS_INVALID_GPIO = 6
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SystemStatus {
|
export interface SystemStatus {
|
||||||
@@ -50,7 +52,7 @@ export interface SystemStatus {
|
|||||||
model: string;
|
model: string;
|
||||||
has_loader: boolean;
|
has_loader: boolean;
|
||||||
has_partition: boolean;
|
has_partition: boolean;
|
||||||
status: number; // SystemStatusCodes which matches SYSTEM_STATUS in System.h
|
status: number; // System Status Codes which matches SYSTEM_STATUS in System.h
|
||||||
temperature?: number;
|
temperature?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -346,7 +346,6 @@ void SyslogService::loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool SyslogService::can_transmit() {
|
bool SyslogService::can_transmit() {
|
||||||
// TODO this should be checked also for Eth
|
|
||||||
if (!host_.empty() && (uint32_t)ip_ == 0) {
|
if (!host_.empty() && (uint32_t)ip_ == 0) {
|
||||||
WiFi.hostByName(host_.c_str(), ip_);
|
WiFi.hostByName(host_.c_str(), ip_);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -116,8 +116,8 @@ let system_status = {
|
|||||||
let DEV_VERSION_IS_UPGRADEABLE: boolean;
|
let DEV_VERSION_IS_UPGRADEABLE: boolean;
|
||||||
let STABLE_VERSION_IS_UPGRADEABLE: boolean;
|
let STABLE_VERSION_IS_UPGRADEABLE: boolean;
|
||||||
let THIS_VERSION: string;
|
let THIS_VERSION: string;
|
||||||
let LATEST_STABLE_VERSION = '3.7.2';
|
let LATEST_STABLE_VERSION = '3.7.3';
|
||||||
let LATEST_DEV_VERSION = '3.7.3-dev.6';
|
let LATEST_DEV_VERSION = '3.7.4-dev.2';
|
||||||
|
|
||||||
// scenarios for testing versioning
|
// scenarios for testing versioning
|
||||||
let version_test = 0; // on latest stable, or switch to dev
|
let version_test = 0; // on latest stable, or switch to dev
|
||||||
@@ -142,19 +142,19 @@ switch (version_test as number) {
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
// upgrade an older stable to latest stable or switch to latest dev
|
// upgrade an older stable to latest stable or switch to latest dev
|
||||||
THIS_VERSION = '3.6.5';
|
THIS_VERSION = '3.7.2';
|
||||||
STABLE_VERSION_IS_UPGRADEABLE = true;
|
STABLE_VERSION_IS_UPGRADEABLE = true;
|
||||||
DEV_VERSION_IS_UPGRADEABLE = true;
|
DEV_VERSION_IS_UPGRADEABLE = true;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
// upgrade dev to latest, or switch to stable
|
// upgrade dev to latest, or switch to stable
|
||||||
THIS_VERSION = '3.7.3-dev.2';
|
THIS_VERSION = '3.7.4-dev.3';
|
||||||
STABLE_VERSION_IS_UPGRADEABLE = false;
|
STABLE_VERSION_IS_UPGRADEABLE = false;
|
||||||
DEV_VERSION_IS_UPGRADEABLE = true;
|
DEV_VERSION_IS_UPGRADEABLE = true;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
// downgrade to an older dev, or switch back to stable
|
// downgrade to an older dev, or switch back to stable
|
||||||
THIS_VERSION = '3.7.3-dev.9';
|
THIS_VERSION = '3.7.3-dev.1';
|
||||||
STABLE_VERSION_IS_UPGRADEABLE = true;
|
STABLE_VERSION_IS_UPGRADEABLE = true;
|
||||||
DEV_VERSION_IS_UPGRADEABLE = false;
|
DEV_VERSION_IS_UPGRADEABLE = false;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1444,3 +1444,5 @@ chimneysweeper
|
|||||||
pumpopt
|
pumpopt
|
||||||
intergral
|
intergral
|
||||||
vchip
|
vchip
|
||||||
|
SPIIO
|
||||||
|
SPIDQS
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ def move_file(source, target, env):
|
|||||||
print("app version: " + app_version)
|
print("app version: " + app_version)
|
||||||
print("platform: " + platform)
|
print("platform: " + platform)
|
||||||
|
|
||||||
# TODO do we need to add a .exe extension for windows? - need to test
|
|
||||||
variant = "native"
|
variant = "native"
|
||||||
|
|
||||||
# check if output directories exist and create if necessary
|
# check if output directories exist and create if necessary
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ static bool formatBssid(const String & bssid, uint8_t (&mac)[6]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void NetworkSettingsService::begin() {
|
void NetworkSettingsService::begin() {
|
||||||
// TODO: may need to change this for Arduino Core 3.1 / IDF 5.x
|
|
||||||
// We want the device to come up in opmode=0 (WIFI_OFF), when erasing the flash this is not the default.
|
// We want the device to come up in opmode=0 (WIFI_OFF), when erasing the flash this is not the default.
|
||||||
// If needed, we save opmode=0 before disabling persistence so the device boots with WiFi disabled in the future.
|
// If needed, we save opmode=0 before disabling persistence so the device boots with WiFi disabled in the future.
|
||||||
if (WiFi.getMode() != WIFI_OFF) {
|
if (WiFi.getMode() != WIFI_OFF) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -413,7 +413,7 @@ uint8_t Command::call(const uint8_t device_type, const char * command, const cha
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string err = "no entity '" + std::string(cmd) + "' in " + dname;
|
std::string err = "no '" + std::string(cmd) + "' in " + dname;
|
||||||
output["message"] = err;
|
output["message"] = err;
|
||||||
LOG_WARNING("Command failed: %s", err.c_str());
|
LOG_WARNING("Command failed: %s", err.c_str());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -632,6 +632,9 @@ void EMSdevice::add_device_value(int8_t tag, // to b
|
|||||||
devicevalues_.emplace_back(
|
devicevalues_.emplace_back(
|
||||||
device_type_, tag, value_p, type, options, options_single, numeric_operator, short_name, fullname, custom_fullname, uom, has_cmd, min, max, state);
|
device_type_, tag, value_p, type, options, options_single, numeric_operator, short_name, fullname, custom_fullname, uom, has_cmd, min, max, state);
|
||||||
|
|
||||||
|
// add to index for fast lookup by (tag, short_name)
|
||||||
|
devicevalue_index_[{static_cast<uint8_t>(tag), short_name}] = devicevalues_.size() - 1;
|
||||||
|
|
||||||
// add a new command if it has a function attached
|
// add a new command if it has a function attached
|
||||||
if (has_cmd) {
|
if (has_cmd) {
|
||||||
uint8_t flags = CommandFlag::ADMIN_ONLY; // executing commands require admin privileges
|
uint8_t flags = CommandFlag::ADMIN_ONLY; // executing commands require admin privileges
|
||||||
@@ -2032,14 +2035,13 @@ std::string EMSdevice::name() {
|
|||||||
// copy a raw value (i.e. without applying the numeric_operator) to the output buffer.
|
// copy a raw value (i.e. without applying the numeric_operator) to the output buffer.
|
||||||
// returns true on success.
|
// returns true on success.
|
||||||
int EMSdevice::get_modbus_value(uint8_t tag, const std::string & shortname, std::vector<uint16_t> & result) {
|
int EMSdevice::get_modbus_value(uint8_t tag, const std::string & shortname, std::vector<uint16_t> & result) {
|
||||||
// find device value by shortname
|
// find device value by shortname using hash map index
|
||||||
// TODO replace linear search which is inefficient
|
auto index_it = devicevalue_index_.find({tag, shortname});
|
||||||
const auto & it = std::find_if(devicevalues_.begin(), devicevalues_.end(), [&](const DeviceValue & x) { return x.tag == tag && x.short_name == shortname; });
|
if (index_it == devicevalue_index_.end()) {
|
||||||
if (it == devicevalues_.end() && (it->short_name != shortname || it->tag != tag)) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto & dv = *it;
|
auto & dv = devicevalues_[index_it->second];
|
||||||
|
|
||||||
// check if it exists, there is a value for the entity. Set the flag to ACTIVE
|
// check if it exists, there is a value for the entity. Set the flag to ACTIVE
|
||||||
// not that this will override any previously removed states
|
// not that this will override any previously removed states
|
||||||
@@ -2120,13 +2122,13 @@ int EMSdevice::get_modbus_value(uint8_t tag, const std::string & shortname, std:
|
|||||||
int EMSdevice::modbus_value_to_json(uint8_t tag, const std::string & shortname, const std::vector<uint8_t> & modbus_data, JsonObject jsonValue) {
|
int EMSdevice::modbus_value_to_json(uint8_t tag, const std::string & shortname, const std::vector<uint8_t> & modbus_data, JsonObject jsonValue) {
|
||||||
// LOG_DEBUG("modbus_value_to_json(%d,%s,[%d bytes])\n", tag, shortname.c_str(), modbus_data.size());
|
// LOG_DEBUG("modbus_value_to_json(%d,%s,[%d bytes])\n", tag, shortname.c_str(), modbus_data.size());
|
||||||
|
|
||||||
// find device value by shortname
|
// find device value by shortname using hash map index
|
||||||
const auto & it = std::find_if(devicevalues_.begin(), devicevalues_.end(), [&](const DeviceValue & x) { return x.tag == tag && x.short_name == shortname; });
|
auto index_it = devicevalue_index_.find({tag, shortname});
|
||||||
if (it == devicevalues_.end() && (it->short_name != shortname || it->tag != tag)) {
|
if (index_it == devicevalue_index_.end()) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto & dv = *it;
|
auto & dv = devicevalues_[index_it->second];
|
||||||
|
|
||||||
// handle Booleans
|
// handle Booleans
|
||||||
if (dv.type == DeviceValueType::BOOL) {
|
if (dv.type == DeviceValueType::BOOL) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -25,6 +25,8 @@
|
|||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
#include "emsdevicevalue.h"
|
#include "emsdevicevalue.h"
|
||||||
|
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
namespace emsesp {
|
namespace emsesp {
|
||||||
|
|
||||||
class EMSdevice {
|
class EMSdevice {
|
||||||
@@ -553,6 +555,26 @@ class EMSdevice {
|
|||||||
#endif
|
#endif
|
||||||
std::vector<TelegramFunction> telegram_functions_; // each EMS device has its own set of registered telegram types
|
std::vector<TelegramFunction> telegram_functions_; // each EMS device has its own set of registered telegram types
|
||||||
std::vector<DeviceValue> devicevalues_; // all the device values
|
std::vector<DeviceValue> devicevalues_; // all the device values
|
||||||
|
|
||||||
|
// added for modbus
|
||||||
|
// Hash map for O(1) lookup of device values by (tag, short_name) key
|
||||||
|
struct DeviceValueKey {
|
||||||
|
uint8_t tag;
|
||||||
|
std::string short_name;
|
||||||
|
|
||||||
|
bool operator==(const DeviceValueKey & other) const {
|
||||||
|
return tag == other.tag && short_name == other.short_name;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DeviceValueKeyHash {
|
||||||
|
std::size_t operator()(const DeviceValueKey & key) const {
|
||||||
|
// Combine hash of tag and short_name
|
||||||
|
return std::hash<uint8_t>()(key.tag) ^ (std::hash<std::string>()(key.short_name) << 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
std::unordered_map<DeviceValueKey, size_t, DeviceValueKeyHash> devicevalue_index_; // index: key -> devicevalues_ position
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -1777,12 +1777,23 @@ void EMSESP::shell_prompt() {
|
|||||||
|
|
||||||
// main loop calling all services
|
// main loop calling all services
|
||||||
void EMSESP::loop() {
|
void EMSESP::loop() {
|
||||||
|
uuid::loop(); // store system uptime
|
||||||
esp32React.loop(); // web services
|
esp32React.loop(); // web services
|
||||||
system_.loop(); // does LED and checks system health, and syslog service
|
system_.loop(); // does LED and checks system health, and syslog service
|
||||||
webLogService.loop(); // log in Web UI
|
webLogService.loop(); // log in Web UI
|
||||||
|
|
||||||
// run the loop, unless we're in the middle of an OTA upload
|
// run the loop, unless we're in the middle of an OTA upload
|
||||||
if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_NORMAL) {
|
if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_NORMAL || EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO) {
|
||||||
|
// check for GPIO Errors
|
||||||
|
if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO) {
|
||||||
|
static bool only_once = false;
|
||||||
|
if (!only_once) {
|
||||||
|
LOG_ERROR("Invalid GPIOs used. Please check your settings and log");
|
||||||
|
only_once = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// loop through the services
|
||||||
rxservice_.loop(); // process any incoming Rx telegrams
|
rxservice_.loop(); // process any incoming Rx telegrams
|
||||||
shower_.loop(); // check for shower on/off
|
shower_.loop(); // check for shower on/off
|
||||||
temperaturesensor_.loop(); // read sensor temperatures
|
temperaturesensor_.loop(); // read sensor temperatures
|
||||||
@@ -1807,28 +1818,19 @@ void EMSESP::loop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO) {
|
// telnet service
|
||||||
static bool only_once = false;
|
|
||||||
if (!only_once) {
|
|
||||||
LOG_ERROR("Invalid GPIOs used. Please check your settings and log");
|
|
||||||
only_once = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uuid::loop();
|
|
||||||
|
|
||||||
#ifndef EMSESP_STANDALONE
|
#ifndef EMSESP_STANDALONE
|
||||||
if (system_.telnet_enabled()) {
|
if (system_.telnet_enabled()) {
|
||||||
telnet_.loop();
|
telnet_.loop();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// console service
|
||||||
Shell::loop_all();
|
Shell::loop_all();
|
||||||
|
|
||||||
static bool show_prompt = true;
|
|
||||||
|
|
||||||
// user has to CTRL-D to create a serial console stream, exit command will close it
|
// user has to CTRL-D to create a serial console stream, exit command will close it
|
||||||
// this saves around 2kb of heap memory
|
// this saves around 2kb of heap memory
|
||||||
|
static bool show_prompt = true;
|
||||||
if (shell_) {
|
if (shell_) {
|
||||||
if (!shell_->running()) {
|
if (!shell_->running()) {
|
||||||
shell_.reset();
|
shell_.reset();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -1903,7 +1903,7 @@ bool System::command_test(const char * value, const int8_t id) {
|
|||||||
// 0=led, 1=dallas, 2=rx, 3=tx, 4=button, 5=phy_type, 6=eth_power, 7=eth_phy_addr, 8=eth_clock_mode, 9=led_type
|
// 0=led, 1=dallas, 2=rx, 3=tx, 4=button, 5=phy_type, 6=eth_power, 7=eth_phy_addr, 8=eth_clock_mode, 9=led_type
|
||||||
//
|
//
|
||||||
bool System::load_board_profile(std::vector<int8_t> & data, const std::string & board_profile) {
|
bool System::load_board_profile(std::vector<int8_t> & data, const std::string & board_profile) {
|
||||||
if (board_profile == EMSESP_DEFAULT_BOARD_PROFILE) {
|
if (board_profile == "default") {
|
||||||
return false; // unknown, return false
|
return false; // unknown, return false
|
||||||
} else if (board_profile == "S32") {
|
} else if (board_profile == "S32") {
|
||||||
data = {2, 18, 23, 5, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // BBQKees Gateway S32
|
data = {2, 18, 23, 5, 0, PHY_type::PHY_TYPE_NONE, 0, 0, 0, 0}; // BBQKees Gateway S32
|
||||||
@@ -2306,11 +2306,7 @@ std::vector<uint8_t> System::string_range_to_vector(const std::string & range) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// initialize a list of valid GPIOs based on the ESP32 board
|
// initialize a list of valid GPIOs based on the ESP32 board
|
||||||
// notes:
|
// note: we always allow 0, which is used to indicate Dallas or LED is disabled
|
||||||
// - we always allow 0, which is used to indicate Dallas or LED is disabled
|
|
||||||
// - GPIO 1 and 3 are disabled for Serial (UART0's TX0, RX0)
|
|
||||||
// - we also allow input only pins are accepted (34-39) on some boards
|
|
||||||
// - and allow pins 33-38 for octal SPI for 32M vchip version on some boards
|
|
||||||
void System::set_valid_system_gpios() {
|
void System::set_valid_system_gpios() {
|
||||||
valid_system_gpios_.clear(); // reset system list
|
valid_system_gpios_.clear(); // reset system list
|
||||||
used_gpios_.clear(); // reset used list
|
used_gpios_.clear(); // reset used list
|
||||||
@@ -2318,12 +2314,20 @@ void System::set_valid_system_gpios() {
|
|||||||
// get free gpios based on board/platform type
|
// get free gpios based on board/platform type
|
||||||
#if CONFIG_IDF_TARGET_ESP32C3
|
#if CONFIG_IDF_TARGET_ESP32C3
|
||||||
// https://www.wemos.cc/en/latest/c3/c3_mini.html
|
// https://www.wemos.cc/en/latest/c3/c3_mini.html
|
||||||
valid_system_gpios_ = string_range_to_vector("0-10");
|
valid_system_gpios_ = string_range_to_vector("0-10"); // UART0=20,21
|
||||||
#elif CONFIG_IDF_TARGET_ESP32S2
|
#elif CONFIG_IDF_TARGET_ESP32S2
|
||||||
valid_system_gpios_ = string_range_to_vector("0, 2, 4-14, 19, 20, 21, 33-38, 45, 46");
|
// 43 and 44 are UART0 pins
|
||||||
|
// 38 and 39 are strapping pins, input only
|
||||||
|
valid_system_gpios_ = string_range_to_vector("0-14, 19, 20, 21, 33-37, 45, 46");
|
||||||
#elif CONFIG_IDF_TARGET_ESP32S3
|
#elif CONFIG_IDF_TARGET_ESP32S3
|
||||||
valid_system_gpios_ = string_range_to_vector("0, 2, 4-14, 17, 18, 21, 33-38, 45, 46");
|
// 43 and 44 are UART0 pins
|
||||||
|
// 33-37 for Octal SPI (SPIIO4 through SPIIO7 and SPIDQS)
|
||||||
|
// 38 and 39 are input only
|
||||||
|
// 45 and 36 are strapping pins, input only
|
||||||
|
valid_system_gpios_ = string_range_to_vector("0-14, 17, 18, 21, 33-39, 45, 46");
|
||||||
#elif CONFIG_IDF_TARGET_ESP32 || defined(EMSESP_STANDALONE)
|
#elif CONFIG_IDF_TARGET_ESP32 || defined(EMSESP_STANDALONE)
|
||||||
|
// 1 and 3 are UART0 pins
|
||||||
|
// 32-39 is ADC1, input only
|
||||||
valid_system_gpios_ = string_range_to_vector("0, 2, 4, 5, 12-19, 23, 25-27, 32-39");
|
valid_system_gpios_ = string_range_to_vector("0, 2, 4, 5, 12-19, 23, 25-27, 32-39");
|
||||||
#else
|
#else
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define EMSESP_APP_VERSION "3.7.3-dev.31"
|
#define EMSESP_APP_VERSION "3.7.3-dev.32"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -62,7 +62,7 @@ namespace emsesp {
|
|||||||
// #define EMSESP_DEBUG_DEFAULT "ls"
|
// #define EMSESP_DEBUG_DEFAULT "ls"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "upload"
|
// #define EMSESP_DEBUG_DEFAULT "upload"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "hpmode"
|
// #define EMSESP_DEBUG_DEFAULT "hpmode"
|
||||||
#define EMSESP_DEBUG_DEFAULT "shuntingyard"
|
// #define EMSESP_DEBUG_DEFAULT "shuntingyard"
|
||||||
// #define EMSESP_DEBUG_DEFAULT "src"
|
// #define EMSESP_DEBUG_DEFAULT "src"
|
||||||
|
|
||||||
#ifndef EMSESP_DEBUG_DEFAULT
|
#ifndef EMSESP_DEBUG_DEFAULT
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -154,8 +154,8 @@ StateUpdateResult WebSettings::update(JsonObject root, WebSettings & settings) {
|
|||||||
// ETH has changed, so we need to check the ethernet pins. Only if ETH is being used.
|
// ETH has changed, so we need to check the ethernet pins. Only if ETH is being used.
|
||||||
if (settings.phy_type != PHY_type::PHY_TYPE_NONE) {
|
if (settings.phy_type != PHY_type::PHY_TYPE_NONE) {
|
||||||
if (settings.eth_power != -1) {
|
if (settings.eth_power != -1) {
|
||||||
// Ethernet Power -1 means disabled
|
// Always remove Ethernet Power gpio unless disabled (-1)
|
||||||
have_valid_gpios = have_valid_gpios && EMSESP::system_.add_gpio(settings.eth_power, "Ethernet Power");
|
EMSESP::system_.remove_gpio(settings.eth_power, true);
|
||||||
}
|
}
|
||||||
// all valid so far, now remove the ethernet pins from valid list, regardless of whether the GPIOs are valid or not
|
// all valid so far, now remove the ethernet pins from valid list, regardless of whether the GPIOs are valid or not
|
||||||
EMSESP::system_.remove_gpio(23, true); // MDC
|
EMSESP::system_.remove_gpio(23, true); // MDC
|
||||||
@@ -422,7 +422,7 @@ void WebSettings::set_board_profile(WebSettings & settings) {
|
|||||||
|
|
||||||
// load the board profile into the data vector
|
// load the board profile into the data vector
|
||||||
// 0=led, 1=dallas, 2=rx, 3=tx, 4=button, 5=phy_type, 6=eth_power, 7=eth_phy_addr, 8=eth_clock_mode, 9=led_type
|
// 0=led, 1=dallas, 2=rx, 3=tx, 4=button, 5=phy_type, 6=eth_power, 7=eth_phy_addr, 8=eth_clock_mode, 9=led_type
|
||||||
std::vector<int8_t> data(10, 255); // initialize with 255 for all values
|
std::vector<int8_t> data(99, 0); // initialize with 99 for all values, just as a safe guard to catch bad gpios
|
||||||
if (settings.board_profile != "default") {
|
if (settings.board_profile != "default") {
|
||||||
if (!System::load_board_profile(data, settings.board_profile.c_str())) {
|
if (!System::load_board_profile(data, settings.board_profile.c_str())) {
|
||||||
#if defined(EMSESP_DEBUG)
|
#if defined(EMSESP_DEBUG)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
* EMS-ESP - https://github.com/emsesp/EMS-ESP
|
||||||
* Copyright 2020-2024 emsesp.org - proddy, MichaelDvP
|
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ void test_21() {
|
|||||||
"\"publish2command\":false,\"sendResponse\":false},\"syslog\":{\"enabled\":false},\"sensor\":{\"temperatureSensors\":3,\"temperatureSensorReads\":0,"
|
"\"publish2command\":false,\"sendResponse\":false},\"syslog\":{\"enabled\":false},\"sensor\":{\"temperatureSensors\":3,\"temperatureSensorReads\":0,"
|
||||||
"\"temperatureSensorFails\":0,\"analogSensors\":5,\"analogSensorReads\":0,\"analogSensorFails\":0},\"api\":{\"APICalls\":0,\"APIFails\":0},\"bus\":{"
|
"\"temperatureSensorFails\":0,\"analogSensors\":5,\"analogSensorReads\":0,\"analogSensorFails\":0},\"api\":{\"APICalls\":0,\"APIFails\":0},\"bus\":{"
|
||||||
"\"busStatus\":\"connected\",\"busProtocol\":\"Buderus\",\"busTelegramsReceived\":8,\"busReads\":0,\"busWrites\":0,\"busIncompleteTelegrams\":0,"
|
"\"busStatus\":\"connected\",\"busProtocol\":\"Buderus\",\"busTelegramsReceived\":8,\"busReads\":0,\"busWrites\":0,\"busIncompleteTelegrams\":0,"
|
||||||
"\"busReadsFailed\":0,\"busWritesFailed\":0,\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"default\",\"locale\":"
|
"\"busReadsFailed\":0,\"busWritesFailed\":0,\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"S32\",\"locale\":"
|
||||||
"\"en\",\"txMode\":8,\"emsBusID\":11,\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,"
|
"\"en\",\"txMode\":8,\"emsBusID\":11,\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,"
|
||||||
"\"readonlyMode\":false,\"fahrenheit\":false,\"dallasParasite\":false,\"boolFormat\":1,\"boolDashboard\":1,\"enumFormat\":1,\"analogEnabled\":true,"
|
"\"readonlyMode\":false,\"fahrenheit\":false,\"dallasParasite\":false,\"boolFormat\":1,\"boolDashboard\":1,\"enumFormat\":1,\"analogEnabled\":true,"
|
||||||
"\"telnetEnabled\":true,\"maxWebLogBuffer\":25,\"modbusEnabled\":false,\"forceHeatingOff\":false,\"developerMode\":false},\"devices\":[{\"type\":"
|
"\"telnetEnabled\":true,\"maxWebLogBuffer\":25,\"modbusEnabled\":false,\"forceHeatingOff\":false,\"developerMode\":false},\"devices\":[{\"type\":"
|
||||||
@@ -201,7 +201,7 @@ void test_22() {
|
|||||||
"\"publish2command\":false,\"sendResponse\":false},\"syslog\":{\"enabled\":false},\"sensor\":{\"temperatureSensors\":3,\"temperatureSensorReads\":0,"
|
"\"publish2command\":false,\"sendResponse\":false},\"syslog\":{\"enabled\":false},\"sensor\":{\"temperatureSensors\":3,\"temperatureSensorReads\":0,"
|
||||||
"\"temperatureSensorFails\":0,\"analogSensors\":5,\"analogSensorReads\":0,\"analogSensorFails\":0},\"api\":{\"APICalls\":0,\"APIFails\":0},\"bus\":{"
|
"\"temperatureSensorFails\":0,\"analogSensors\":5,\"analogSensorReads\":0,\"analogSensorFails\":0},\"api\":{\"APICalls\":0,\"APIFails\":0},\"bus\":{"
|
||||||
"\"busStatus\":\"connected\",\"busProtocol\":\"Buderus\",\"busTelegramsReceived\":8,\"busReads\":0,\"busWrites\":0,\"busIncompleteTelegrams\":0,"
|
"\"busStatus\":\"connected\",\"busProtocol\":\"Buderus\",\"busTelegramsReceived\":8,\"busReads\":0,\"busWrites\":0,\"busIncompleteTelegrams\":0,"
|
||||||
"\"busReadsFailed\":0,\"busWritesFailed\":0,\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"default\",\"locale\":"
|
"\"busReadsFailed\":0,\"busWritesFailed\":0,\"busRxLineQuality\":100,\"busTxLineQuality\":100},\"settings\":{\"boardProfile\":\"S32\",\"locale\":"
|
||||||
"\"en\",\"txMode\":8,\"emsBusID\":11,\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,"
|
"\"en\",\"txMode\":8,\"emsBusID\":11,\"showerTimer\":false,\"showerMinDuration\":180,\"showerAlert\":false,\"hideLed\":false,\"noTokenApi\":false,"
|
||||||
"\"readonlyMode\":false,\"fahrenheit\":false,\"dallasParasite\":false,\"boolFormat\":1,\"boolDashboard\":1,\"enumFormat\":1,\"analogEnabled\":true,"
|
"\"readonlyMode\":false,\"fahrenheit\":false,\"dallasParasite\":false,\"boolFormat\":1,\"boolDashboard\":1,\"enumFormat\":1,\"analogEnabled\":true,"
|
||||||
"\"telnetEnabled\":true,\"maxWebLogBuffer\":25,\"modbusEnabled\":false,\"forceHeatingOff\":false,\"developerMode\":false},\"devices\":[{\"type\":"
|
"\"telnetEnabled\":true,\"maxWebLogBuffer\":25,\"modbusEnabled\":false,\"forceHeatingOff\":false,\"developerMode\":false},\"devices\":[{\"type\":"
|
||||||
@@ -314,22 +314,22 @@ void test_40() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void test_41() {
|
void test_41() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'settings' in system\"}]";
|
auto expected_response = "[{\"message\":\"no 'settings' in system\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings/locale2"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings/locale2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_42() {
|
void test_42() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'settings2' in system\"}]";
|
auto expected_response = "[{\"message\":\"no 'settings2' in system\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings2"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_43() {
|
void test_43() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'settings2' in system\"}]";
|
auto expected_response = "[{\"message\":\"no 'settings2' in system\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings2/locale2"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/system/settings2/locale2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_44() {
|
void test_44() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'test_scheduler2' in scheduler\"}]";
|
auto expected_response = "[{\"message\":\"no 'test_scheduler2' in scheduler\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/test_scheduler2"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/test_scheduler2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -339,12 +339,12 @@ void test_45() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void test_46() {
|
void test_46() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'test_scheduler2' in scheduler\"}]";
|
auto expected_response = "[{\"message\":\"no 'test_scheduler2' in scheduler\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/test_scheduler2/val2"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/scheduler/test_scheduler2/val2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_47() {
|
void test_47() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'test_seltemp2' in custom\"}]";
|
auto expected_response = "[{\"message\":\"no 'test_seltemp2' in custom\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom/test_seltemp2"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/custom/test_seltemp2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,12 +354,12 @@ void test_48() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void test_49() {
|
void test_49() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'test_sensor20' in temperaturesensor\"}]";
|
auto expected_response = "[{\"message\":\"no 'test_sensor20' in temperaturesensor\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/test_sensor20"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/test_sensor20"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_50() {
|
void test_50() {
|
||||||
auto expected_response = "[{\"message\":\"no entity '0b_0c0d_0e0f_xxxx' in temperaturesensor\"}]";
|
auto expected_response = "[{\"message\":\"no '0b_0c0d_0e0f_xxxx' in temperaturesensor\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/0B_0C0D_0E0F_XXXX"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/temperaturesensor/0B_0C0D_0E0F_XXXX"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -374,12 +374,12 @@ void test_52() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void test_53() {
|
void test_53() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'test_analog10' in analogsensor\"}]";
|
auto expected_response = "[{\"message\":\"no 'test_analog10' in analogsensor\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analog10"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analog10"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_54() {
|
void test_54() {
|
||||||
auto expected_response = "[{\"message\":\"no entity 'test_analog10' in analogsensor\"}]";
|
auto expected_response = "[{\"message\":\"no 'test_analog10' in analogsensor\"}]";
|
||||||
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analog10/bad2"));
|
TEST_ASSERT_EQUAL_STRING(expected_response, call_url("/api/analogsensor/test_analog10/bad2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user