mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-09-13 21:54:07 +00:00
Compare commits
26
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed4b247d28 | ||
|
|
afb8efec53 | ||
|
|
84b23f19e5 | ||
|
|
668d59a2cd | ||
|
|
88f258d7e9 | ||
|
|
c45441e3be | ||
|
|
2994535158 | ||
|
|
fdfb560cf9 | ||
|
|
d56c5897fa | ||
|
|
cec0fbc95d | ||
|
|
8f118e07a3 | ||
|
|
b05ae6dbbb | ||
|
|
469ca8bf05 | ||
|
|
edd1677526 | ||
|
|
c363e0e2c8 | ||
|
|
d397a14b41 | ||
|
|
822096b635 | ||
|
|
0defebfdb6 | ||
|
|
574c4e45d5 | ||
|
|
48c118fed7 | ||
|
|
ef4335156c | ||
|
|
4d4269cdf7 | ||
|
|
95a8b78d1d | ||
|
|
982b0f304e | ||
|
|
1d9a0b6257 | ||
|
|
52486ed5b4 |
+2
-1
@@ -21,7 +21,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings
|
|||||||
- Ethernet MAC address changed with the new SDK, breaking DHCP reservations (currently disabled)
|
- Ethernet MAC address changed with the new SDK, breaking DHCP reservations (currently disabled)
|
||||||
- "IPv4 nameserver" showed an IPv6 address when IPv6 was in use
|
- "IPv4 nameserver" showed an IPv6 address when IPv6 was in use
|
||||||
- HA Discovery warning on Uptime after EMS-ESP boot due to NTP not ready
|
- HA Discovery warning on Uptime after EMS-ESP boot due to NTP not ready
|
||||||
- show MQTT connection error only once on the first connect failure
|
- hc/control setting for UI800 thermostats [#3181](https://github.com/emsesp/EMS-ESP32/discussions/3181)
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
||||||
@@ -33,4 +33,5 @@ This release is based on the latest Espressif/Arduino core version 3. It brings
|
|||||||
- show control setting only for master thermostats (0x10) [#3173](https://github.com/emsesp/EMS-ESP32/issues/3173)
|
- show control setting only for master thermostats (0x10) [#3173](https://github.com/emsesp/EMS-ESP32/issues/3173)
|
||||||
- remove devices without entities not listed in 0x07 telegram
|
- remove devices without entities not listed in 0x07 telegram
|
||||||
- changes to the Dialogs in Dashboard page, removed the run icon in the Commands page. Renamed Execute to Run.
|
- changes to the Dialogs in Dashboard page, removed the run icon in the Commands page. Renamed Execute to Run.
|
||||||
|
- set `None` for undefined values in HA `val_tpl`
|
||||||
|
|
||||||
|
|||||||
+521
-467
File diff suppressed because it is too large
Load Diff
+494
-467
File diff suppressed because it is too large
Load Diff
@@ -23,13 +23,13 @@
|
|||||||
"standalone-devcontainer": "concurrently -c \"auto\" \"typesafe-i18n\" \"pnpm:mock-rest\" \"vite --host\""
|
"standalone-devcontainer": "concurrently -c \"auto\" \"typesafe-i18n\" \"pnpm:mock-rest\" \"vite --host\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@alova/adapter-xhr": "2.3.1",
|
"@alova/adapter-xhr": "2.3.3",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
"@emotion/styled": "^11.14.1",
|
"@emotion/styled": "^11.14.1",
|
||||||
"@mui/icons-material": "^9.3.1",
|
"@mui/icons-material": "^9.3.1",
|
||||||
"@mui/material": "^9.3.1",
|
"@mui/material": "^9.3.1",
|
||||||
"@table-library/react-table-library": "4.1.15",
|
"@table-library/react-table-library": "4.1.15",
|
||||||
"alova": "^3.5.3",
|
"alova": "^3.5.4",
|
||||||
"jwt-decode": "^4.0.0",
|
"jwt-decode": "^4.0.0",
|
||||||
"preact": "^10.29.8",
|
"preact": "^10.29.8",
|
||||||
"react": "^19.2.8",
|
"react": "^19.2.8",
|
||||||
@@ -45,18 +45,18 @@
|
|||||||
"@types/node": "^26.2.0",
|
"@types/node": "^26.2.0",
|
||||||
"@types/react": "^19.2.18",
|
"@types/react": "^19.2.18",
|
||||||
"@types/react-dom": "^19.2.4",
|
"@types/react-dom": "^19.2.4",
|
||||||
"concurrently": "^10.0.4",
|
"concurrently": "^10.0.5",
|
||||||
"eslint": "^10.8.1",
|
"eslint": "^10.8.1",
|
||||||
"eslint-config-prettier": "^10.1.8",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"etag": "^1.8.1",
|
"etag": "^1.8.1",
|
||||||
"mime-types": "^3.0.2",
|
"mime-types": "^3.0.2",
|
||||||
"prettier": "^3.9.6",
|
"prettier": "^3.9.6",
|
||||||
"rollup-plugin-visualizer": "^7.0.1",
|
"rollup-plugin-visualizer": "^7.1.1",
|
||||||
"terser": "^5.49.2",
|
"terser": "^5.50.0",
|
||||||
"typescript": "^6.0.3",
|
"typescript": "^6.0.3",
|
||||||
"typescript-eslint": "^8.66.0",
|
"typescript-eslint": "^8.67.0",
|
||||||
"vite": "^8.2.1",
|
"vite": "^8.2.1",
|
||||||
"vite-plugin-imagemin": "^0.6.1"
|
"vite-plugin-imagemin": "^0.6.1"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@11.21.0+sha512.521705bce689924eac72f5a3587122f362689ef6571e55ba80076fd637c11132ecffada26fad4ea79c485bfddbfd3d5a2a5b05805a77e893de71ec8a6cca3bb1"
|
"packageManager": "pnpm@11.22.0+sha512.1ff870c4c6133dfd88fb2afc46dd13d47f09c9794b438c6fdb47ca98caf3bc16381ee0be93a091b8e3824cf01f889f46d7d9e20910fb0be1ab0fb5baa80dd621"
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+201
-194
@@ -9,8 +9,8 @@ importers:
|
|||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@alova/adapter-xhr':
|
'@alova/adapter-xhr':
|
||||||
specifier: 2.3.1
|
specifier: 2.3.3
|
||||||
version: 2.3.1(alova@3.5.3)
|
version: 2.3.3(alova@3.5.4)
|
||||||
'@emotion/react':
|
'@emotion/react':
|
||||||
specifier: ^11.14.0
|
specifier: ^11.14.0
|
||||||
version: 11.14.0(@types/react@19.2.18)(react@19.2.8)(supports-color@10.2.2)
|
version: 11.14.0(@types/react@19.2.18)(react@19.2.8)(supports-color@10.2.2)
|
||||||
@@ -27,8 +27,8 @@ importers:
|
|||||||
specifier: 4.1.15
|
specifier: 4.1.15
|
||||||
version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.18)(react@19.2.8)(supports-color@10.2.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
version: 4.1.15(@emotion/react@11.14.0(@types/react@19.2.18)(react@19.2.8)(supports-color@10.2.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
|
||||||
alova:
|
alova:
|
||||||
specifier: ^3.5.3
|
specifier: ^3.5.4
|
||||||
version: 3.5.3
|
version: 3.5.4
|
||||||
jwt-decode:
|
jwt-decode:
|
||||||
specifier: ^4.0.0
|
specifier: ^4.0.0
|
||||||
version: 4.0.0
|
version: 4.0.0
|
||||||
@@ -56,7 +56,7 @@ importers:
|
|||||||
version: 10.0.1(eslint@10.8.1(supports-color@10.2.2))
|
version: 10.0.1(eslint@10.8.1(supports-color@10.2.2))
|
||||||
'@preact/preset-vite':
|
'@preact/preset-vite':
|
||||||
specifier: ^2.10.6
|
specifier: ^2.10.6
|
||||||
version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.49.2))
|
version: 2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.50.0))
|
||||||
'@trivago/prettier-plugin-sort-imports':
|
'@trivago/prettier-plugin-sort-imports':
|
||||||
specifier: ^6.0.2
|
specifier: ^6.0.2
|
||||||
version: 6.0.2(prettier@3.9.6)(supports-color@10.2.2)
|
version: 6.0.2(prettier@3.9.6)(supports-color@10.2.2)
|
||||||
@@ -70,8 +70,8 @@ importers:
|
|||||||
specifier: ^19.2.4
|
specifier: ^19.2.4
|
||||||
version: 19.2.4(@types/react@19.2.18)
|
version: 19.2.4(@types/react@19.2.18)
|
||||||
concurrently:
|
concurrently:
|
||||||
specifier: ^10.0.4
|
specifier: ^10.0.5
|
||||||
version: 10.0.4
|
version: 10.0.5
|
||||||
eslint:
|
eslint:
|
||||||
specifier: ^10.8.1
|
specifier: ^10.8.1
|
||||||
version: 10.8.1(supports-color@10.2.2)
|
version: 10.8.1(supports-color@10.2.2)
|
||||||
@@ -88,34 +88,31 @@ importers:
|
|||||||
specifier: ^3.9.6
|
specifier: ^3.9.6
|
||||||
version: 3.9.6
|
version: 3.9.6
|
||||||
rollup-plugin-visualizer:
|
rollup-plugin-visualizer:
|
||||||
specifier: ^7.0.1
|
specifier: ^7.1.1
|
||||||
version: 7.0.1(rolldown@1.2.3)
|
version: 7.1.1(rolldown@1.2.4)
|
||||||
terser:
|
terser:
|
||||||
specifier: ^5.49.2
|
specifier: ^5.50.0
|
||||||
version: 5.49.2
|
version: 5.50.0
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^6.0.3
|
specifier: ^6.0.3
|
||||||
version: 6.0.3
|
version: 6.0.3
|
||||||
typescript-eslint:
|
typescript-eslint:
|
||||||
specifier: ^8.66.0
|
specifier: ^8.67.0
|
||||||
version: 8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
version: 8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
vite:
|
vite:
|
||||||
specifier: ^8.2.1
|
specifier: ^8.2.1
|
||||||
version: 8.2.1(@types/node@26.2.0)(terser@5.49.2)
|
version: 8.2.1(@types/node@26.2.0)(terser@5.50.0)
|
||||||
vite-plugin-imagemin:
|
vite-plugin-imagemin:
|
||||||
specifier: ^0.6.1
|
specifier: ^0.6.1
|
||||||
version: 0.6.1(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.49.2))
|
version: 0.6.1(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.50.0))
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
'@alova/adapter-xhr@2.3.1':
|
'@alova/adapter-xhr@2.3.3':
|
||||||
resolution: {integrity: sha512-mhViueeSJ6yfyEUvHIWyZlb6V8+9GJCzwU1hUsvjXSZHpkzGCeNUefxjjFC++K9UBsvUzJ5KGeyeqoToUQg3gg==}
|
resolution: {integrity: sha512-+ZtON7Gw/1bVsX3IXRaQ3g93CbO+OYfhDO6Q8IAiVTToBOaGX9NZTdziziEhHCFu5xlx4cVFVm7TJw+OT3H4GQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
alova: ^3.0.20
|
alova: ^3.0.20
|
||||||
|
|
||||||
'@alova/shared@1.3.2':
|
|
||||||
resolution: {integrity: sha512-1XvDLWgYpVZ99MmLl1f3Fw4T6S6pPYk5afz5cwRVjuq8JXEGsDn9IygDKfvRyWqkqCBx7Jif07LIct1O+MVEow==}
|
|
||||||
|
|
||||||
'@alova/shared@1.3.4':
|
'@alova/shared@1.3.4':
|
||||||
resolution: {integrity: sha512-kdYHUqO35AEdnQHnzevyf+VhhfD0jc+EBbZv/aYkA4rwjVjf+vB6D/ZkTwiYFH1yQjwiGwF1ZbJv5a7rKGyNiw==}
|
resolution: {integrity: sha512-kdYHUqO35AEdnQHnzevyf+VhhfD0jc+EBbZv/aYkA4rwjVjf+vB6D/ZkTwiYFH1yQjwiGwF1ZbJv5a7rKGyNiw==}
|
||||||
|
|
||||||
@@ -457,8 +454,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
||||||
'@oxc-project/types@0.143.0':
|
'@oxc-project/types@0.144.0':
|
||||||
resolution: {integrity: sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==}
|
resolution: {integrity: sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==}
|
||||||
|
|
||||||
'@popperjs/core@2.11.8':
|
'@popperjs/core@2.11.8':
|
||||||
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
|
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
|
||||||
@@ -486,92 +483,92 @@ packages:
|
|||||||
preact: ^10.4.0 || ^11.0.0-0
|
preact: ^10.4.0 || ^11.0.0-0
|
||||||
vite: '>=2.0.0'
|
vite: '>=2.0.0'
|
||||||
|
|
||||||
'@rolldown/binding-android-arm64@1.2.3':
|
'@rolldown/binding-android-arm64@1.2.4':
|
||||||
resolution: {integrity: sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==}
|
resolution: {integrity: sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
|
||||||
'@rolldown/binding-darwin-arm64@1.2.3':
|
'@rolldown/binding-darwin-arm64@1.2.4':
|
||||||
resolution: {integrity: sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==}
|
resolution: {integrity: sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@rolldown/binding-darwin-x64@1.2.3':
|
'@rolldown/binding-darwin-x64@1.2.4':
|
||||||
resolution: {integrity: sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==}
|
resolution: {integrity: sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@rolldown/binding-freebsd-x64@1.2.3':
|
'@rolldown/binding-freebsd-x64@1.2.4':
|
||||||
resolution: {integrity: sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==}
|
resolution: {integrity: sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [freebsd]
|
os: [freebsd]
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm-gnueabihf@1.2.3':
|
'@rolldown/binding-linux-arm-gnueabihf@1.2.4':
|
||||||
resolution: {integrity: sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==}
|
resolution: {integrity: sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm64-gnu@1.2.3':
|
'@rolldown/binding-linux-arm64-gnu@1.2.4':
|
||||||
resolution: {integrity: sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==}
|
resolution: {integrity: sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm64-musl@1.2.3':
|
'@rolldown/binding-linux-arm64-musl@1.2.4':
|
||||||
resolution: {integrity: sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==}
|
resolution: {integrity: sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@rolldown/binding-linux-ppc64-gnu@1.2.3':
|
'@rolldown/binding-linux-ppc64-gnu@1.2.4':
|
||||||
resolution: {integrity: sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==}
|
resolution: {integrity: sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rolldown/binding-linux-s390x-gnu@1.2.3':
|
'@rolldown/binding-linux-s390x-gnu@1.2.4':
|
||||||
resolution: {integrity: sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==}
|
resolution: {integrity: sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [s390x]
|
cpu: [s390x]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rolldown/binding-linux-x64-gnu@1.2.3':
|
'@rolldown/binding-linux-x64-gnu@1.2.4':
|
||||||
resolution: {integrity: sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==}
|
resolution: {integrity: sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rolldown/binding-linux-x64-musl@1.2.3':
|
'@rolldown/binding-linux-x64-musl@1.2.4':
|
||||||
resolution: {integrity: sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==}
|
resolution: {integrity: sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@rolldown/binding-openharmony-arm64@1.2.3':
|
'@rolldown/binding-openharmony-arm64@1.2.4':
|
||||||
resolution: {integrity: sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==}
|
resolution: {integrity: sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [openharmony]
|
os: [openharmony]
|
||||||
|
|
||||||
'@rolldown/binding-win32-arm64-msvc@1.2.3':
|
'@rolldown/binding-win32-arm64-msvc@1.2.4':
|
||||||
resolution: {integrity: sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==}
|
resolution: {integrity: sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@rolldown/binding-win32-x64-msvc@1.2.3':
|
'@rolldown/binding-win32-x64-msvc@1.2.4':
|
||||||
resolution: {integrity: sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==}
|
resolution: {integrity: sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@@ -693,63 +690,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.66.0':
|
'@typescript-eslint/eslint-plugin@8.67.0':
|
||||||
resolution: {integrity: sha512-p088eaGrzYz1s+7cov0aMOCkNGTJlVxF4jgubf28c8L0Cv9Rloj8YBHnv4hXLq6IIEE1AsjNWavO+k+8kP2Y0A==}
|
resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==}
|
||||||
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.66.0
|
'@typescript-eslint/parser': ^8.67.0
|
||||||
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.66.0':
|
'@typescript-eslint/parser@8.67.0':
|
||||||
resolution: {integrity: sha512-X6ypGChaWYk6PBtUg2BwuTZEFFcHJAtGTVJ9/lCTOufhZ4i9fNolQNnktq+kkMCwMj7V8Svsq7+TxSDslmhE0g==}
|
resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==}
|
||||||
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 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/project-service@8.66.0':
|
'@typescript-eslint/project-service@8.67.0':
|
||||||
resolution: {integrity: sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==}
|
resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==}
|
||||||
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.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.66.0':
|
'@typescript-eslint/scope-manager@8.67.0':
|
||||||
resolution: {integrity: sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==}
|
resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==}
|
||||||
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.66.0':
|
'@typescript-eslint/tsconfig-utils@8.67.0':
|
||||||
resolution: {integrity: sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==}
|
resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==}
|
||||||
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.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.66.0':
|
'@typescript-eslint/type-utils@8.67.0':
|
||||||
resolution: {integrity: sha512-LG2dWfjZQQp0ADtAu/EWJVayefGL2UEZ3CDeI44D9v3rXB/WYUqE/jpO28KrEKul5AySrmI+Zh1v6v+xW2U9+g==}
|
resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==}
|
||||||
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 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/types@8.66.0':
|
'@typescript-eslint/types@8.67.0':
|
||||||
resolution: {integrity: sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==}
|
resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==}
|
||||||
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.66.0':
|
'@typescript-eslint/typescript-estree@8.67.0':
|
||||||
resolution: {integrity: sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==}
|
resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==}
|
||||||
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.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.66.0':
|
'@typescript-eslint/utils@8.67.0':
|
||||||
resolution: {integrity: sha512-jasearZPolBw5NJNYGMwxzHMF83niVWmMU1VdHzG1CyfI2VS7f7nZltnKtHcg20hW+7Uo5GfK4MeDPoU3qI8EA==}
|
resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==}
|
||||||
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 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.66.0':
|
'@typescript-eslint/visitor-keys@8.67.0':
|
||||||
resolution: {integrity: sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==}
|
resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==}
|
||||||
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:
|
||||||
@@ -765,16 +762,16 @@ packages:
|
|||||||
ajv@6.15.0:
|
ajv@6.15.0:
|
||||||
resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
|
resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
|
||||||
|
|
||||||
alova@3.5.3:
|
alova@3.5.4:
|
||||||
resolution: {integrity: sha512-p+kLE+DvK5Oo5P3R8Z81GMKKR1n0pJXfp0pxmHHRBsF6zcBZbENxYPkCDMtw92uRz+UPaJ5q1sPQjRymIhlVdg==}
|
resolution: {integrity: sha512-F4NHWWqnTZiqu0pg0X666LEyp04TbM2wWjZJ2vWxuhb1o4KRhh7xZiw74SP6ruXBAdTJLmems77qYWa0TGHYoQ==}
|
||||||
engines: {node: '>= 18.0.0'}
|
engines: {node: '>= 18.0.0'}
|
||||||
|
|
||||||
ansi-regex@2.1.1:
|
ansi-regex@2.1.1:
|
||||||
resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
|
resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
ansi-regex@6.2.2:
|
ansi-regex@6.3.0:
|
||||||
resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
|
resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
ansi-styles@2.2.1:
|
ansi-styles@2.2.1:
|
||||||
@@ -977,8 +974,8 @@ packages:
|
|||||||
concat-map@0.0.1:
|
concat-map@0.0.1:
|
||||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||||
|
|
||||||
concurrently@10.0.4:
|
concurrently@10.0.5:
|
||||||
resolution: {integrity: sha512-trZql+7l/0+WRAsAnEdctr4+iiOS6ZrViI6H8QWcCF9MFS/LT0dKpe8vluB1to6it+OxSI4VospFTIFMW8DJRw==}
|
resolution: {integrity: sha512-JaP/CoftUrCcAFW/g//RbgEGwlelnEae6cfBLgH6ZdO6s8jPkn6p9SB9u6pdVxYXoiSnFqseOlHfrEfF82TVOg==}
|
||||||
engines: {node: '>=22'}
|
engines: {node: '>=22'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -1097,8 +1094,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
|
resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
default-browser@5.5.0:
|
default-browser@5.5.1:
|
||||||
resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
|
resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
define-data-property@1.1.4:
|
define-data-property@1.1.4:
|
||||||
@@ -2175,8 +2172,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
open@11.0.0:
|
open@11.0.1:
|
||||||
resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==}
|
resolution: {integrity: sha512-NzwMUB6C1D0+Kd+9iMS/H4k+Ck3cTX6Ckyfr/gAGlmvSE1LUQZnEZvWBi4PYmMwH/S5SMeTXnE+9uAz8uF+pWw==}
|
||||||
engines: {node: '>=20'}
|
engines: {node: '>=20'}
|
||||||
|
|
||||||
optionator@0.9.4:
|
optionator@0.9.4:
|
||||||
@@ -2351,6 +2348,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==}
|
resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==}
|
||||||
engines: {node: '>=20'}
|
engines: {node: '>=20'}
|
||||||
|
|
||||||
|
powershell-utils@0.2.0:
|
||||||
|
resolution: {integrity: sha512-ZlsFlG7MtSFCoc5xreOvBAozCJ6Pf06opgJjh9ONEv418xpZSAzNjstD36C6+JwOnfSqOW/9uDkqKjezTdxZhw==}
|
||||||
|
engines: {node: '>=20'}
|
||||||
|
|
||||||
preact@10.29.8:
|
preact@10.29.8:
|
||||||
resolution: {integrity: sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==}
|
resolution: {integrity: sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -2498,13 +2499,13 @@ packages:
|
|||||||
deprecated: Rimraf versions prior to v4 are no longer supported
|
deprecated: Rimraf versions prior to v4 are no longer supported
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
rolldown@1.2.3:
|
rolldown@1.2.4:
|
||||||
resolution: {integrity: sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==}
|
resolution: {integrity: sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
rollup-plugin-visualizer@7.0.1:
|
rollup-plugin-visualizer@7.1.1:
|
||||||
resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==}
|
resolution: {integrity: sha512-ThaGiHTU8XW02OkK80TrTHATraJmM9OAduU4otal+7gyXLpYEtmGBLfx5kW+EHvvLwn03YGW2NnwKUIqsYlJAA==}
|
||||||
engines: {node: '>=22'}
|
engines: {node: '>=22'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -2629,6 +2630,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
|
resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
|
||||||
engines: {node: '>= 12'}
|
engines: {node: '>= 12'}
|
||||||
|
|
||||||
|
source-map@0.8.0:
|
||||||
|
resolution: {integrity: sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==}
|
||||||
|
engines: {node: '>= 12'}
|
||||||
|
|
||||||
spdx-correct@3.2.0:
|
spdx-correct@3.2.0:
|
||||||
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
|
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
|
||||||
|
|
||||||
@@ -2739,8 +2744,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==}
|
resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
|
||||||
terser@5.49.2:
|
terser@5.50.0:
|
||||||
resolution: {integrity: sha512-rGbJiKeQ4WDe3EXlDAIaQcwftVfv2Q8o1awFNfvXolJYKkb1AuZY1RTOmqx4LJXZENbWZA7eIsYGHuEzHsi1nQ==}
|
resolution: {integrity: sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@@ -2805,8 +2810,8 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=3.5.1'
|
typescript: '>=3.5.1'
|
||||||
|
|
||||||
typescript-eslint@8.66.0:
|
typescript-eslint@8.67.0:
|
||||||
resolution: {integrity: sha512-QlEbBPz/RuJ1XUHj29nm3t0F/O/cSlEnntozqPOYHnnTGAXFamnMBu5i9Vn6vhUPHGAjR+Vl+5J8vPN/BMUrJw==}
|
resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==}
|
||||||
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 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
@@ -2936,8 +2941,8 @@ packages:
|
|||||||
wrappy@1.0.2:
|
wrappy@1.0.2:
|
||||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
|
|
||||||
wsl-utils@0.3.1:
|
wsl-utils@1.0.0:
|
||||||
resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==}
|
resolution: {integrity: sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==}
|
||||||
engines: {node: '>=20'}
|
engines: {node: '>=20'}
|
||||||
|
|
||||||
xtend@4.0.2:
|
xtend@4.0.2:
|
||||||
@@ -2982,12 +2987,10 @@ packages:
|
|||||||
|
|
||||||
snapshots:
|
snapshots:
|
||||||
|
|
||||||
'@alova/adapter-xhr@2.3.1(alova@3.5.3)':
|
'@alova/adapter-xhr@2.3.3(alova@3.5.4)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@alova/shared': 1.3.2
|
'@alova/shared': 1.3.4
|
||||||
alova: 3.5.3
|
alova: 3.5.4
|
||||||
|
|
||||||
'@alova/shared@1.3.2': {}
|
|
||||||
|
|
||||||
'@alova/shared@1.3.4': {}
|
'@alova/shared@1.3.4': {}
|
||||||
|
|
||||||
@@ -3381,23 +3384,23 @@ snapshots:
|
|||||||
'@nodelib/fs.scandir': 2.1.5
|
'@nodelib/fs.scandir': 2.1.5
|
||||||
fastq: 1.20.1
|
fastq: 1.20.1
|
||||||
|
|
||||||
'@oxc-project/types@0.143.0': {}
|
'@oxc-project/types@0.144.0': {}
|
||||||
|
|
||||||
'@popperjs/core@2.11.8': {}
|
'@popperjs/core@2.11.8': {}
|
||||||
|
|
||||||
'@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.49.2))':
|
'@preact/preset-vite@2.10.6(@babel/core@7.29.7(supports-color@10.2.2))(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.50.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.29.7(supports-color@10.2.2)
|
'@babel/core': 7.29.7(supports-color@10.2.2)
|
||||||
'@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
|
'@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
|
||||||
'@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
|
'@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
|
||||||
'@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.49.2))
|
'@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.50.0))
|
||||||
'@rollup/pluginutils': 5.4.0
|
'@rollup/pluginutils': 5.4.0
|
||||||
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2))
|
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.29.7(supports-color@10.2.2))
|
||||||
debug: 4.4.3(supports-color@10.2.2)
|
debug: 4.4.3(supports-color@10.2.2)
|
||||||
magic-string: 0.30.21
|
magic-string: 0.30.21
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
vite: 8.2.1(@types/node@26.2.0)(terser@5.49.2)
|
vite: 8.2.1(@types/node@26.2.0)(terser@5.50.0)
|
||||||
vite-prerender-plugin: 0.5.13(vite@8.2.1(@types/node@26.2.0)(terser@5.49.2))
|
vite-prerender-plugin: 0.5.13(vite@8.2.1(@types/node@26.2.0)(terser@5.50.0))
|
||||||
zimmerframe: 1.1.4
|
zimmerframe: 1.1.4
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- preact
|
- preact
|
||||||
@@ -3412,7 +3415,7 @@ snapshots:
|
|||||||
|
|
||||||
'@prefresh/utils@1.2.1': {}
|
'@prefresh/utils@1.2.1': {}
|
||||||
|
|
||||||
'@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.49.2))':
|
'@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.50.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.29.7(supports-color@10.2.2)
|
'@babel/core': 7.29.7(supports-color@10.2.2)
|
||||||
'@prefresh/babel-plugin': 0.5.3
|
'@prefresh/babel-plugin': 0.5.3
|
||||||
@@ -3420,50 +3423,50 @@ snapshots:
|
|||||||
'@prefresh/utils': 1.2.1
|
'@prefresh/utils': 1.2.1
|
||||||
'@rollup/pluginutils': 4.2.1
|
'@rollup/pluginutils': 4.2.1
|
||||||
preact: 10.29.8
|
preact: 10.29.8
|
||||||
vite: 8.2.1(@types/node@26.2.0)(terser@5.49.2)
|
vite: 8.2.1(@types/node@26.2.0)(terser@5.50.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@rolldown/binding-android-arm64@1.2.3':
|
'@rolldown/binding-android-arm64@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-darwin-arm64@1.2.3':
|
'@rolldown/binding-darwin-arm64@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-darwin-x64@1.2.3':
|
'@rolldown/binding-darwin-x64@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-freebsd-x64@1.2.3':
|
'@rolldown/binding-freebsd-x64@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm-gnueabihf@1.2.3':
|
'@rolldown/binding-linux-arm-gnueabihf@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm64-gnu@1.2.3':
|
'@rolldown/binding-linux-arm64-gnu@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm64-musl@1.2.3':
|
'@rolldown/binding-linux-arm64-musl@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-ppc64-gnu@1.2.3':
|
'@rolldown/binding-linux-ppc64-gnu@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-s390x-gnu@1.2.3':
|
'@rolldown/binding-linux-s390x-gnu@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-x64-gnu@1.2.3':
|
'@rolldown/binding-linux-x64-gnu@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-x64-musl@1.2.3':
|
'@rolldown/binding-linux-x64-musl@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-openharmony-arm64@1.2.3':
|
'@rolldown/binding-openharmony-arm64@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-win32-arm64-msvc@1.2.3':
|
'@rolldown/binding-win32-arm64-msvc@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-win32-x64-msvc@1.2.3':
|
'@rolldown/binding-win32-x64-msvc@1.2.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/pluginutils@1.0.1': {}
|
'@rolldown/pluginutils@1.0.1': {}
|
||||||
@@ -3584,14 +3587,14 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 26.2.0
|
'@types/node': 26.2.0
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
|
'@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.2
|
'@eslint-community/regexpp': 4.12.2
|
||||||
'@typescript-eslint/parser': 8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/parser': 8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/scope-manager': 8.66.0
|
'@typescript-eslint/scope-manager': 8.67.0
|
||||||
'@typescript-eslint/type-utils': 8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/type-utils': 8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/utils': 8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.66.0
|
'@typescript-eslint/visitor-keys': 8.67.0
|
||||||
eslint: 10.8.1(supports-color@10.2.2)
|
eslint: 10.8.1(supports-color@10.2.2)
|
||||||
ignore: 7.0.6
|
ignore: 7.0.6
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
@@ -3600,41 +3603,41 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
|
'@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.66.0
|
'@typescript-eslint/scope-manager': 8.67.0
|
||||||
'@typescript-eslint/types': 8.66.0
|
'@typescript-eslint/types': 8.67.0
|
||||||
'@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.66.0
|
'@typescript-eslint/visitor-keys': 8.67.0
|
||||||
debug: 4.4.3(supports-color@10.2.2)
|
debug: 4.4.3(supports-color@10.2.2)
|
||||||
eslint: 10.8.1(supports-color@10.2.2)
|
eslint: 10.8.1(supports-color@10.2.2)
|
||||||
typescript: 6.0.3
|
typescript: 6.0.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/project-service@8.66.0(supports-color@10.2.2)(typescript@6.0.3)':
|
'@typescript-eslint/project-service@8.67.0(supports-color@10.2.2)(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3)
|
'@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3)
|
||||||
'@typescript-eslint/types': 8.66.0
|
'@typescript-eslint/types': 8.67.0
|
||||||
debug: 4.4.3(supports-color@10.2.2)
|
debug: 4.4.3(supports-color@10.2.2)
|
||||||
typescript: 6.0.3
|
typescript: 6.0.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.66.0':
|
'@typescript-eslint/scope-manager@8.67.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.66.0
|
'@typescript-eslint/types': 8.67.0
|
||||||
'@typescript-eslint/visitor-keys': 8.66.0
|
'@typescript-eslint/visitor-keys': 8.67.0
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.66.0(typescript@6.0.3)':
|
'@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 6.0.3
|
typescript: 6.0.3
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
|
'@typescript-eslint/type-utils@8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.66.0
|
'@typescript-eslint/types': 8.67.0
|
||||||
'@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/utils': 8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
debug: 4.4.3(supports-color@10.2.2)
|
debug: 4.4.3(supports-color@10.2.2)
|
||||||
eslint: 10.8.1(supports-color@10.2.2)
|
eslint: 10.8.1(supports-color@10.2.2)
|
||||||
ts-api-utils: 2.5.0(typescript@6.0.3)
|
ts-api-utils: 2.5.0(typescript@6.0.3)
|
||||||
@@ -3642,14 +3645,14 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/types@8.66.0': {}
|
'@typescript-eslint/types@8.67.0': {}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.66.0(supports-color@10.2.2)(typescript@6.0.3)':
|
'@typescript-eslint/typescript-estree@8.67.0(supports-color@10.2.2)(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/project-service': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/project-service': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3)
|
'@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3)
|
||||||
'@typescript-eslint/types': 8.66.0
|
'@typescript-eslint/types': 8.67.0
|
||||||
'@typescript-eslint/visitor-keys': 8.66.0
|
'@typescript-eslint/visitor-keys': 8.67.0
|
||||||
debug: 4.4.3(supports-color@10.2.2)
|
debug: 4.4.3(supports-color@10.2.2)
|
||||||
minimatch: 10.2.6
|
minimatch: 10.2.6
|
||||||
semver: 7.8.5
|
semver: 7.8.5
|
||||||
@@ -3659,20 +3662,20 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
|
'@typescript-eslint/utils@8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(supports-color@10.2.2))
|
'@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(supports-color@10.2.2))
|
||||||
'@typescript-eslint/scope-manager': 8.66.0
|
'@typescript-eslint/scope-manager': 8.67.0
|
||||||
'@typescript-eslint/types': 8.66.0
|
'@typescript-eslint/types': 8.67.0
|
||||||
'@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
eslint: 10.8.1(supports-color@10.2.2)
|
eslint: 10.8.1(supports-color@10.2.2)
|
||||||
typescript: 6.0.3
|
typescript: 6.0.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.66.0':
|
'@typescript-eslint/visitor-keys@8.67.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.66.0
|
'@typescript-eslint/types': 8.67.0
|
||||||
eslint-visitor-keys: 5.0.1
|
eslint-visitor-keys: 5.0.1
|
||||||
|
|
||||||
acorn-jsx@5.3.2(acorn@8.18.0):
|
acorn-jsx@5.3.2(acorn@8.18.0):
|
||||||
@@ -3688,14 +3691,14 @@ snapshots:
|
|||||||
json-schema-traverse: 0.4.1
|
json-schema-traverse: 0.4.1
|
||||||
uri-js: 4.4.1
|
uri-js: 4.4.1
|
||||||
|
|
||||||
alova@3.5.3:
|
alova@3.5.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@alova/shared': 1.3.4
|
'@alova/shared': 1.3.4
|
||||||
rate-limiter-flexible: 5.0.5
|
rate-limiter-flexible: 5.0.5
|
||||||
|
|
||||||
ansi-regex@2.1.1: {}
|
ansi-regex@2.1.1: {}
|
||||||
|
|
||||||
ansi-regex@6.2.2: {}
|
ansi-regex@6.3.0: {}
|
||||||
|
|
||||||
ansi-styles@2.2.1: {}
|
ansi-styles@2.2.1: {}
|
||||||
|
|
||||||
@@ -3910,7 +3913,7 @@ snapshots:
|
|||||||
|
|
||||||
concat-map@0.0.1: {}
|
concat-map@0.0.1: {}
|
||||||
|
|
||||||
concurrently@10.0.4:
|
concurrently@10.0.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: 5.6.2
|
chalk: 5.6.2
|
||||||
rxjs: 7.8.2
|
rxjs: 7.8.2
|
||||||
@@ -4060,7 +4063,7 @@ snapshots:
|
|||||||
|
|
||||||
default-browser-id@5.0.1: {}
|
default-browser-id@5.0.1: {}
|
||||||
|
|
||||||
default-browser@5.5.0:
|
default-browser@5.5.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
bundle-name: 4.1.0
|
bundle-name: 4.1.0
|
||||||
default-browser-id: 5.0.1
|
default-browser-id: 5.0.1
|
||||||
@@ -5133,14 +5136,14 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
mimic-fn: 2.1.0
|
mimic-fn: 2.1.0
|
||||||
|
|
||||||
open@11.0.0:
|
open@11.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
default-browser: 5.5.0
|
default-browser: 5.5.1
|
||||||
define-lazy-prop: 3.0.0
|
define-lazy-prop: 3.0.0
|
||||||
is-in-ssh: 1.0.0
|
is-in-ssh: 1.0.0
|
||||||
is-inside-container: 1.0.0
|
is-inside-container: 1.0.0
|
||||||
powershell-utils: 0.1.0
|
powershell-utils: 0.2.0
|
||||||
wsl-utils: 0.3.1
|
wsl-utils: 1.0.0
|
||||||
|
|
||||||
optionator@0.9.4:
|
optionator@0.9.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5285,6 +5288,8 @@ snapshots:
|
|||||||
|
|
||||||
powershell-utils@0.1.0: {}
|
powershell-utils@0.1.0: {}
|
||||||
|
|
||||||
|
powershell-utils@0.2.0: {}
|
||||||
|
|
||||||
preact@10.29.8: {}
|
preact@10.29.8: {}
|
||||||
|
|
||||||
prelude-ls@1.2.1: {}
|
prelude-ls@1.2.1: {}
|
||||||
@@ -5418,34 +5423,34 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob: 7.2.3
|
glob: 7.2.3
|
||||||
|
|
||||||
rolldown@1.2.3:
|
rolldown@1.2.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@oxc-project/types': 0.143.0
|
'@oxc-project/types': 0.144.0
|
||||||
'@rolldown/pluginutils': 1.0.1
|
'@rolldown/pluginutils': 1.0.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@rolldown/binding-android-arm64': 1.2.3
|
'@rolldown/binding-android-arm64': 1.2.4
|
||||||
'@rolldown/binding-darwin-arm64': 1.2.3
|
'@rolldown/binding-darwin-arm64': 1.2.4
|
||||||
'@rolldown/binding-darwin-x64': 1.2.3
|
'@rolldown/binding-darwin-x64': 1.2.4
|
||||||
'@rolldown/binding-freebsd-x64': 1.2.3
|
'@rolldown/binding-freebsd-x64': 1.2.4
|
||||||
'@rolldown/binding-linux-arm-gnueabihf': 1.2.3
|
'@rolldown/binding-linux-arm-gnueabihf': 1.2.4
|
||||||
'@rolldown/binding-linux-arm64-gnu': 1.2.3
|
'@rolldown/binding-linux-arm64-gnu': 1.2.4
|
||||||
'@rolldown/binding-linux-arm64-musl': 1.2.3
|
'@rolldown/binding-linux-arm64-musl': 1.2.4
|
||||||
'@rolldown/binding-linux-ppc64-gnu': 1.2.3
|
'@rolldown/binding-linux-ppc64-gnu': 1.2.4
|
||||||
'@rolldown/binding-linux-s390x-gnu': 1.2.3
|
'@rolldown/binding-linux-s390x-gnu': 1.2.4
|
||||||
'@rolldown/binding-linux-x64-gnu': 1.2.3
|
'@rolldown/binding-linux-x64-gnu': 1.2.4
|
||||||
'@rolldown/binding-linux-x64-musl': 1.2.3
|
'@rolldown/binding-linux-x64-musl': 1.2.4
|
||||||
'@rolldown/binding-openharmony-arm64': 1.2.3
|
'@rolldown/binding-openharmony-arm64': 1.2.4
|
||||||
'@rolldown/binding-win32-arm64-msvc': 1.2.3
|
'@rolldown/binding-win32-arm64-msvc': 1.2.4
|
||||||
'@rolldown/binding-win32-x64-msvc': 1.2.3
|
'@rolldown/binding-win32-x64-msvc': 1.2.4
|
||||||
|
|
||||||
rollup-plugin-visualizer@7.0.1(rolldown@1.2.3):
|
rollup-plugin-visualizer@7.1.1(rolldown@1.2.4):
|
||||||
dependencies:
|
dependencies:
|
||||||
open: 11.0.0
|
open: 11.0.1
|
||||||
picomatch: 4.0.5
|
picomatch: 4.0.5
|
||||||
source-map: 0.7.6
|
source-map: 0.8.0
|
||||||
yargs: 18.1.0
|
yargs: 18.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
rolldown: 1.2.3
|
rolldown: 1.2.4
|
||||||
|
|
||||||
run-applescript@7.1.0: {}
|
run-applescript@7.1.0: {}
|
||||||
|
|
||||||
@@ -5537,6 +5542,8 @@ snapshots:
|
|||||||
|
|
||||||
source-map@0.7.6: {}
|
source-map@0.7.6: {}
|
||||||
|
|
||||||
|
source-map@0.8.0: {}
|
||||||
|
|
||||||
spdx-correct@3.2.0:
|
spdx-correct@3.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
spdx-expression-parse: 3.0.1
|
spdx-expression-parse: 3.0.1
|
||||||
@@ -5584,7 +5591,7 @@ snapshots:
|
|||||||
|
|
||||||
strip-ansi@7.2.0:
|
strip-ansi@7.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex: 6.2.2
|
ansi-regex: 6.3.0
|
||||||
|
|
||||||
strip-bom@2.0.0:
|
strip-bom@2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5647,7 +5654,7 @@ snapshots:
|
|||||||
temp-dir: 1.0.0
|
temp-dir: 1.0.0
|
||||||
uuid: 3.4.0
|
uuid: 3.4.0
|
||||||
|
|
||||||
terser@5.49.2:
|
terser@5.50.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/source-map': 0.3.11
|
'@jridgewell/source-map': 0.3.11
|
||||||
acorn: 8.18.0
|
acorn: 8.18.0
|
||||||
@@ -5707,12 +5714,12 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
typescript: 6.0.3
|
typescript: 6.0.3
|
||||||
|
|
||||||
typescript-eslint@8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3):
|
typescript-eslint@8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 8.66.0(@typescript-eslint/parser@8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/parser': 8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/parser': 8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/typescript-estree': 8.66.0(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
'@typescript-eslint/utils': 8.66.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
'@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
|
||||||
eslint: 10.8.1(supports-color@10.2.2)
|
eslint: 10.8.1(supports-color@10.2.2)
|
||||||
typescript: 6.0.3
|
typescript: 6.0.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -5758,7 +5765,7 @@ snapshots:
|
|||||||
spdx-correct: 3.2.0
|
spdx-correct: 3.2.0
|
||||||
spdx-expression-parse: 3.0.1
|
spdx-expression-parse: 3.0.1
|
||||||
|
|
||||||
vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.49.2)):
|
vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.2.1(@types/node@26.2.0)(terser@5.50.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/imagemin': 7.0.1
|
'@types/imagemin': 7.0.1
|
||||||
'@types/imagemin-gifsicle': 7.0.4
|
'@types/imagemin-gifsicle': 7.0.4
|
||||||
@@ -5783,11 +5790,11 @@ snapshots:
|
|||||||
imagemin-webp: 6.1.0
|
imagemin-webp: 6.1.0
|
||||||
jpegtran-bin: 6.0.1
|
jpegtran-bin: 6.0.1
|
||||||
pathe: 0.2.0
|
pathe: 0.2.0
|
||||||
vite: 8.2.1(@types/node@26.2.0)(terser@5.49.2)
|
vite: 8.2.1(@types/node@26.2.0)(terser@5.50.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
vite-prerender-plugin@0.5.13(vite@8.2.1(@types/node@26.2.0)(terser@5.49.2)):
|
vite-prerender-plugin@0.5.13(vite@8.2.1(@types/node@26.2.0)(terser@5.50.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
kolorist: 1.8.0
|
kolorist: 1.8.0
|
||||||
magic-string: 0.30.21
|
magic-string: 0.30.21
|
||||||
@@ -5795,19 +5802,19 @@ snapshots:
|
|||||||
simple-code-frame: 1.3.0
|
simple-code-frame: 1.3.0
|
||||||
source-map: 0.7.6
|
source-map: 0.7.6
|
||||||
stack-trace: 1.0.0
|
stack-trace: 1.0.0
|
||||||
vite: 8.2.1(@types/node@26.2.0)(terser@5.49.2)
|
vite: 8.2.1(@types/node@26.2.0)(terser@5.50.0)
|
||||||
|
|
||||||
vite@8.2.1(@types/node@26.2.0)(terser@5.49.2):
|
vite@8.2.1(@types/node@26.2.0)(terser@5.50.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
lightningcss: 1.33.0
|
lightningcss: 1.33.0
|
||||||
picomatch: 4.0.5
|
picomatch: 4.0.5
|
||||||
postcss: 8.5.26
|
postcss: 8.5.26
|
||||||
rolldown: 1.2.3
|
rolldown: 1.2.4
|
||||||
tinyglobby: 0.2.17
|
tinyglobby: 0.2.17
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 26.2.0
|
'@types/node': 26.2.0
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
terser: 5.49.2
|
terser: 5.50.0
|
||||||
|
|
||||||
which-typed-array@1.1.22:
|
which-typed-array@1.1.22:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5837,7 +5844,7 @@ snapshots:
|
|||||||
|
|
||||||
wrappy@1.0.2: {}
|
wrappy@1.0.2: {}
|
||||||
|
|
||||||
wsl-utils@0.3.1:
|
wsl-utils@1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-wsl: 3.1.1
|
is-wsl: 3.1.1
|
||||||
powershell-utils: 0.1.0
|
powershell-utils: 0.1.0
|
||||||
|
|||||||
@@ -64,9 +64,11 @@ class ESP_SSLClient : public Stream {
|
|||||||
}
|
}
|
||||||
void flush() override {
|
void flush() override {
|
||||||
}
|
}
|
||||||
|
|
||||||
void stop() {
|
void stop() {
|
||||||
}
|
}
|
||||||
|
void setTimeout(uint32_t) {
|
||||||
|
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ESP_SSLClient_h
|
#endif // ESP_SSLClient_h
|
||||||
|
|||||||
@@ -39,7 +39,9 @@ class WiFiClient {
|
|||||||
}
|
}
|
||||||
void stop() {
|
void stop() {
|
||||||
}
|
}
|
||||||
|
void setTimeout(uint32_t){
|
||||||
|
|
||||||
|
}
|
||||||
// ESP32 socket option passthrough (e.g. TCP_NODELAY)
|
// ESP32 socket option passthrough (e.g. TCP_NODELAY)
|
||||||
int setSocketOption(int, int, const void *, size_t) {
|
int setSocketOption(int, int, const void *, size_t) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -184,7 +184,12 @@ bool MqttSettingsService::configureMqtt() {
|
|||||||
static_cast<espMqttClientSecure *>(_mqttClient)->setKeepAlive(_state.keepAlive);
|
static_cast<espMqttClientSecure *>(_mqttClient)->setKeepAlive(_state.keepAlive);
|
||||||
static_cast<espMqttClientSecure *>(_mqttClient)->setCleanSession(_state.cleanSession);
|
static_cast<espMqttClientSecure *>(_mqttClient)->setCleanSession(_state.cleanSession);
|
||||||
static_cast<espMqttClientSecure *>(_mqttClient)->setWill(will_topic, 1, true, "offline"); // QOS 1, retain
|
static_cast<espMqttClientSecure *>(_mqttClient)->setWill(will_topic, 1, true, "offline"); // QOS 1, retain
|
||||||
return _mqttClient->connect();
|
// return _mqttClient->connect();
|
||||||
|
if (_mqttClient->connect()) {
|
||||||
|
emsesp::EMSESP::logger().info("Starting MQTT service");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
static_cast<espMqttClient *>(_mqttClient)->setServer(_state.host.c_str(), _state.port);
|
static_cast<espMqttClient *>(_mqttClient)->setServer(_state.host.c_str(), _state.port);
|
||||||
if (_state.username.length() > 0) {
|
if (_state.username.length() > 0) {
|
||||||
@@ -194,7 +199,11 @@ bool MqttSettingsService::configureMqtt() {
|
|||||||
static_cast<espMqttClient *>(_mqttClient)->setKeepAlive(_state.keepAlive);
|
static_cast<espMqttClient *>(_mqttClient)->setKeepAlive(_state.keepAlive);
|
||||||
static_cast<espMqttClient *>(_mqttClient)->setCleanSession(_state.cleanSession);
|
static_cast<espMqttClient *>(_mqttClient)->setCleanSession(_state.cleanSession);
|
||||||
static_cast<espMqttClient *>(_mqttClient)->setWill(will_topic, 1, true, "offline"); // QOS 1, retain
|
static_cast<espMqttClient *>(_mqttClient)->setWill(will_topic, 1, true, "offline"); // QOS 1, retain
|
||||||
return _mqttClient->connect();
|
// return _mqttClient->connect();
|
||||||
|
if (_mqttClient->connect()) {
|
||||||
|
emsesp::EMSESP::logger().info("Starting MQTT service");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -111,6 +111,12 @@ void AnalogSensor::start(const bool factory_settings) {
|
|||||||
Mqtt::subscribe(EMSdevice::DeviceType::ANALOGSENSOR, topic, nullptr); // use empty function callback
|
Mqtt::subscribe(EMSdevice::DeviceType::ANALOGSENSOR, topic, nullptr); // use empty function callback
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AnalogSensor::ha_reset() {
|
||||||
|
for (const auto & sensor : sensors_) {
|
||||||
|
remove_ha_topic(sensor.type(), sensor.gpio());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// load settings from the customization file, sorts them and initializes the GPIOs
|
// load settings from the customization file, sorts them and initializes the GPIOs
|
||||||
void AnalogSensor::reload(bool get_nvs) {
|
void AnalogSensor::reload(bool get_nvs) {
|
||||||
exclude_types_.clear();
|
exclude_types_.clear();
|
||||||
@@ -729,7 +735,7 @@ void AnalogSensor::publish_values(const bool force) {
|
|||||||
}
|
}
|
||||||
// don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery
|
// don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery
|
||||||
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
||||||
config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + "}}";
|
config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else 'None'}}";
|
||||||
} else {
|
} else {
|
||||||
config["val_tpl"] = (std::string) "{{" + val_obj + "}}";
|
config["val_tpl"] = (std::string) "{{" + val_obj + "}}";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ class AnalogSensor {
|
|||||||
void publish_values(const bool force);
|
void publish_values(const bool force);
|
||||||
void reload(bool get_nvs = false);
|
void reload(bool get_nvs = false);
|
||||||
bool updated_values();
|
bool updated_values();
|
||||||
|
void ha_reset();
|
||||||
|
|
||||||
// return back reference to the sensor list, used by other classes
|
// return back reference to the sensor list, used by other classes
|
||||||
const std::vector<Sensor, AllocatorPSRAM<Sensor>> & sensors() const {
|
const std::vector<Sensor, AllocatorPSRAM<Sensor>> & sensors() const {
|
||||||
|
|||||||
+2
-2
@@ -657,8 +657,8 @@ void EMSESP::reset_mqtt_ha() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// force the re-creating of the temperature and analog sensor topics (for HA)
|
// force the re-creating of the temperature and analog sensor topics (for HA)
|
||||||
temperaturesensor_.reload();
|
temperaturesensor_.ha_reset();
|
||||||
analogsensor_.reload();
|
analogsensor_.ha_reset();
|
||||||
|
|
||||||
// rebuild MQTT HA config topics for shower, custom entities and scheduler
|
// rebuild MQTT HA config topics for shower, custom entities and scheduler
|
||||||
shower_.ha_reset();
|
shower_.ha_reset();
|
||||||
|
|||||||
@@ -179,28 +179,29 @@ const std::initializer_list<Modbus::EntityModbusInfo> Modbus::modbus_register_ma
|
|||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 257, 1), // fanwork
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(fanWork), 257, 1), // fanwork
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 258, 1), // ignwork
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(ignWork), 258, 1), // ignwork
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 259, 1), // oilpreheat
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(oilPreHeat), 259, 1), // oilpreheat
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 260, 1), // burnmaxpower
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPower), 260, 1), // burnminpower
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 261, 1), // burnminperiod
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMaxPower), 261, 1), // burnmaxpower
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 262, 1), // absburnpow
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(burnMinPeriod), 262, 1), // burnminperiod
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 263, 1), // heatblock
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(absBurnPow), 263, 1), // absburnpow
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 264, 1), // boilhyston
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatblock), 264, 1), // heatblock
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 265, 1), // boilhystoff
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOn), 265, 1), // boilhyston
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 266, 1), // boil2hyston
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boilHystOff), 266, 1), // boilhystoff
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 267, 1), // boil2hystoff
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOn), 267, 1), // boil2hyston
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 268, 1), // curveon
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(boil2HystOff), 268, 1), // boil2hystoff
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 269, 1), // curvebase
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveOn), 269, 1), // curveon
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 270, 1), // curveend
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveBase), 270, 1), // curvebase
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 271, 1), // summertemp
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(curveEnd), 271, 1), // curveend
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 272, 1), // nofrostmode
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(summertemp), 272, 1), // summertemp
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 273, 1), // nofrosttemp
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrostmode), 273, 1), // nofrostmode
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 274, 2), // gasmeterheat
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nofrosttemp), 274, 1), // nofrosttemp
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 276, 2), // nrgheat2
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(gasMeterHeat), 275, 2), // gasmeterheat
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 278, 1), // nompower
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nrgHeat2), 277, 2), // nrgheat2
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 279, 1), // netflowtemp
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(nomPower), 279, 1), // nompower
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 280, 1), // heatvalve
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(netFlowTemp), 280, 1), // netflowtemp
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 281, 1), // keepwarmtemp
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatValve), 281, 1), // heatvalve
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 282, 1), // setreturntemp
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(keepWarmTemp), 282, 1), // keepwarmtemp
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 283, 1), // heating
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(setReturnTemp), 283, 1), // setreturntemp
|
||||||
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DEVICE_DATA, FL_(heatingOn), 284, 1), // heating
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw), 0, 2), // nrg
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(nrgWw), 0, 2), // nrg
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(meterWw), 2, 2), // meter
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(meterWw), 2, 2), // meter
|
||||||
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(upTimeCompWw), 4, 2), // uptimecomp
|
REGISTER_MAPPING(dt::BOILER, TAG_TYPE_DHW, FL_(upTimeCompWw), 4, 2), // uptimecomp
|
||||||
|
|||||||
+7
-17
@@ -351,6 +351,7 @@ void Mqtt::reset_mqtt() {
|
|||||||
if (mqttClient_->connected()) {
|
if (mqttClient_->connected()) {
|
||||||
mqttClient_->disconnect(true); // force a disconnect
|
mqttClient_->disconnect(true); // force a disconnect
|
||||||
}
|
}
|
||||||
|
load_settings(); // reload MQTT settings
|
||||||
}
|
}
|
||||||
|
|
||||||
// load the settings from service
|
// load the settings from service
|
||||||
@@ -473,7 +474,7 @@ bool Mqtt::get_publish_onchange(uint8_t device_type) {
|
|||||||
}
|
}
|
||||||
void Mqtt::on_disconnect(espMqttClientTypes::DisconnectReason reason) {
|
void Mqtt::on_disconnect(espMqttClientTypes::DisconnectReason reason) {
|
||||||
// only show the error once on the first connect failure
|
// only show the error once on the first connect failure
|
||||||
if (connectcount_) {
|
if (!connecting_) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
connecting_ = false;
|
connecting_ = false;
|
||||||
@@ -511,8 +512,6 @@ void Mqtt::on_connect() {
|
|||||||
connecting_ = true;
|
connecting_ = true;
|
||||||
queuecount_ = mqttClient_->queueSize();
|
queuecount_ = mqttClient_->queueSize();
|
||||||
|
|
||||||
load_settings(); // reload MQTT settings - in case they have changes
|
|
||||||
|
|
||||||
if (ha_enabled_) {
|
if (ha_enabled_) {
|
||||||
queue_unsubscribe_message(discovery_prefix_ + "/+/" + Mqtt::basename() + "/#");
|
queue_unsubscribe_message(discovery_prefix_ + "/+/" + Mqtt::basename() + "/#");
|
||||||
EMSESP::reset_mqtt_ha(); // re-create all HA devices if there are any
|
EMSESP::reset_mqtt_ha(); // re-create all HA devices if there are any
|
||||||
@@ -1019,8 +1018,6 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
|
|||||||
std::string topic_str(topic);
|
std::string topic_str(topic);
|
||||||
doc["def_ent_id"] = Helpers::toLower(topic_str.substr(0, topic_str.find("/"))) + "." + Helpers::toLower(uniq_id);
|
doc["def_ent_id"] = Helpers::toLower(topic_str.substr(0, topic_str.find("/"))) + "." + Helpers::toLower(uniq_id);
|
||||||
|
|
||||||
char sample_val[30] = "0"; // sample, correct(!) entity value, used only to prevent warning/error in HA if real value is not published yet
|
|
||||||
|
|
||||||
// we add the command topic parameter for commands
|
// we add the command topic parameter for commands
|
||||||
if (has_cmd) {
|
if (has_cmd) {
|
||||||
// add category
|
// add category
|
||||||
@@ -1043,13 +1040,11 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
|
|||||||
for (uint8_t i = 0; i < options_size; i++) {
|
for (uint8_t i = 0; i < options_size; i++) {
|
||||||
option_list.add(Helpers::itoa(i)); // as a string
|
option_list.add(Helpers::itoa(i)); // as a string
|
||||||
}
|
}
|
||||||
snprintf(sample_val, sizeof(sample_val), "'0'");
|
|
||||||
} else {
|
} else {
|
||||||
// use strings
|
// use strings
|
||||||
for (uint8_t i = 0; i < options_size; i++) {
|
for (uint8_t i = 0; i < options_size; i++) {
|
||||||
option_list.add(Helpers::translated_word(options[i]));
|
option_list.add(Helpers::translated_word(options[i]));
|
||||||
}
|
}
|
||||||
snprintf(sample_val, sizeof(sample_val), "'%s'", Helpers::translated_word(options[0]));
|
|
||||||
}
|
}
|
||||||
} else if (type != DeviceValueType::STRING && type != DeviceValueType::BOOL) {
|
} else if (type != DeviceValueType::STRING && type != DeviceValueType::BOOL) {
|
||||||
// For numeric's add the range and mode
|
// For numeric's add the range and mode
|
||||||
@@ -1071,7 +1066,6 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
|
|||||||
if (dv_set_min != 0 || dv_set_max != 0) {
|
if (dv_set_min != 0 || dv_set_max != 0) {
|
||||||
doc["min"] = dv_set_min;
|
doc["min"] = dv_set_min;
|
||||||
doc["max"] = dv_set_max;
|
doc["max"] = dv_set_max;
|
||||||
snprintf(sample_val, sizeof(sample_val), "%i", dv_set_min);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1123,7 +1117,6 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
|
|||||||
// has no unit of measure or icon, and must be true/false (not on/off or 1/0)
|
// has no unit of measure or icon, and must be true/false (not on/off or 1/0)
|
||||||
if (type == DeviceValueType::BOOL) {
|
if (type == DeviceValueType::BOOL) {
|
||||||
add_ha_bool(doc.as<JsonObject>());
|
add_ha_bool(doc.as<JsonObject>());
|
||||||
strlcpy(sample_val, "false", sizeof(sample_val)); // default is "false"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery
|
// don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery
|
||||||
@@ -1134,12 +1127,9 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
|
|||||||
char val_tpl[100];
|
char val_tpl[100];
|
||||||
snprintf(val_tpl, sizeof(val_tpl), "{{ (value_json.%s | as_datetime).isoformat() }}", entity);
|
snprintf(val_tpl, sizeof(val_tpl), "{{ (value_json.%s | as_datetime).isoformat() }}", entity);
|
||||||
doc["val_tpl"] = val_tpl;
|
doc["val_tpl"] = val_tpl;
|
||||||
} else if (uom == DeviceValueUOM::UPTIME) {
|
|
||||||
// uptime
|
|
||||||
doc["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else '' }}";
|
|
||||||
} else {
|
} else {
|
||||||
// default
|
// default
|
||||||
doc["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else " + sample_val + "}}";
|
doc["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else 'None'}}";
|
||||||
}
|
}
|
||||||
add_ha_avty_section(doc.as<JsonObject>(), stat_t, val_cond); // adds availability section
|
add_ha_avty_section(doc.as<JsonObject>(), stat_t, val_cond); // adds availability section
|
||||||
} else {
|
} else {
|
||||||
@@ -1436,7 +1426,7 @@ bool Mqtt::publish_ha_climate_config(const DeviceValue & dv, const bool has_room
|
|||||||
|
|
||||||
snprintf(mode_str_tpl,
|
snprintf(mode_str_tpl,
|
||||||
sizeof(mode_str_tpl),
|
sizeof(mode_str_tpl),
|
||||||
"{%%if %s%%}off{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}off{%%elif %s=='%s'%%}off{%%elif "
|
"{%%if %s%%}None{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}heat{%%elif %s=='%s'%%}off{%%elif %s=='%s'%%}off{%%elif "
|
||||||
"%s=='%s'%%}off{%%else%%}auto{%%endif%%}",
|
"%s=='%s'%%}off{%%else%%}auto{%%endif%%}",
|
||||||
hc_mode_cond,
|
hc_mode_cond,
|
||||||
hc_mode_s,
|
hc_mode_s,
|
||||||
@@ -1473,15 +1463,15 @@ bool Mqtt::publish_ha_climate_config(const DeviceValue & dv, const bool has_room
|
|||||||
doc["mode_stat_tpl"] = mode_str_tpl;
|
doc["mode_stat_tpl"] = mode_str_tpl;
|
||||||
doc["temp_cmd_t"] = temp_cmd_s;
|
doc["temp_cmd_t"] = temp_cmd_s;
|
||||||
doc["temp_stat_t"] = topic_t;
|
doc["temp_stat_t"] = topic_t;
|
||||||
doc["temp_stat_tpl"] = (std::string) "{{" + seltemp_s + " if " + seltemp_cond + " else 0}}";
|
doc["temp_stat_tpl"] = (std::string) "{{" + seltemp_s + " if " + seltemp_cond + " else 'None'}}";
|
||||||
|
|
||||||
if (has_roomtemp) {
|
if (has_roomtemp) {
|
||||||
doc["curr_temp_t"] = topic_t;
|
doc["curr_temp_t"] = topic_t;
|
||||||
doc["curr_temp_tpl"] = (std::string) "{{" + currtemp_s + " if " + currtemp_cond + " else 0}}";
|
doc["curr_temp_tpl"] = (std::string) "{{" + currtemp_s + " if " + currtemp_cond + " else 'None'}}";
|
||||||
}
|
}
|
||||||
if (tag >= DeviceValueTAG::TAG_SRC1) {
|
if (tag >= DeviceValueTAG::TAG_SRC1) {
|
||||||
doc["curr_hum_t"] = topic_t;
|
doc["curr_hum_t"] = topic_t;
|
||||||
doc["curr_hum_tpl"] = (std::string) "{{" + currhum_s + " if " + currhum_cond + " else 0}}";
|
doc["curr_hum_tpl"] = (std::string) "{{" + currhum_s + " if " + currhum_cond + " else 'None'}}";
|
||||||
}
|
}
|
||||||
|
|
||||||
doc["min_temp"] = Helpers::render_value(min_s, min, 0, EMSESP::system_.fahrenheit() ? 2 : 0);
|
doc["min_temp"] = Helpers::render_value(min_s, min, 0, EMSESP::system_.fahrenheit() ? 2 : 0);
|
||||||
|
|||||||
@@ -268,6 +268,10 @@ void Network::loop() {
|
|||||||
reconnect_pending_ = false;
|
reconnect_pending_ = false;
|
||||||
reconnect();
|
reconnect();
|
||||||
}
|
}
|
||||||
|
// already have a connection: verify it's still alive
|
||||||
|
if (network_ip_ != 0 || last_disconnect_reason_ != 0) {
|
||||||
|
checkConnection();
|
||||||
|
}
|
||||||
|
|
||||||
// if we already have a Wifi or Ethernet connection then re-check every NETWORK_RECONNECTION_DELAY_LONG, otherwise NETWORK_RECONNECTION_DELAY_SHORT
|
// if we already have a Wifi or Ethernet connection then re-check every NETWORK_RECONNECTION_DELAY_LONG, otherwise NETWORK_RECONNECTION_DELAY_SHORT
|
||||||
const unsigned long currentMillis = uuid::get_uptime_ms();
|
const unsigned long currentMillis = uuid::get_uptime_ms();
|
||||||
@@ -281,11 +285,6 @@ void Network::loop() {
|
|||||||
startWIFI(); // WiFi
|
startWIFI(); // WiFi
|
||||||
startAP(); // Captive Portal (AP)
|
startAP(); // Captive Portal (AP)
|
||||||
|
|
||||||
// already have a connection: verify it's still alive
|
|
||||||
if (network_ip_ != 0 || last_disconnect_reason_ != 0) {
|
|
||||||
checkConnection();
|
|
||||||
}
|
|
||||||
|
|
||||||
findNetworks(); // detect any new network connections
|
findNetworks(); // detect any new network connections
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -229,7 +229,7 @@ void Shower::create_ha_discovery() {
|
|||||||
|
|
||||||
// don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery
|
// don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery
|
||||||
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
||||||
doc["val_tpl"] = "{{value_json.duration if value_json.duration is defined else 0}}";
|
doc["val_tpl"] = "{{value_json.duration if value_json.duration is defined else 'None'}}";
|
||||||
} else {
|
} else {
|
||||||
doc["val_tpl"] = "{{value_json.duration}}";
|
doc["val_tpl"] = "{{value_json.duration}}";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -712,9 +712,11 @@ int http_request(std::string url, const std::string & method, const std::string
|
|||||||
// assets / large CDN responses. Such servers do not negotiate max_fragment_length, so the body
|
// assets / large CDN responses. Such servers do not negotiate max_fragment_length, so the body
|
||||||
// can't be decoded and reads return 0. If this path is ever used to fetch large or CDN-hosted
|
// can't be decoded and reads return 0. If this path is ever used to fetch large or CDN-hosted
|
||||||
// payloads, bump the RX buffer to 16384 (see uploadFirmwareURL in core/system.cpp for reference).
|
// payloads, bump the RX buffer to 16384 (see uploadFirmwareURL in core/system.cpp for reference).
|
||||||
ssl_client->setBufferSizes(1024, 1024);
|
ssl_client->setBufferSizes(16384, 1024);
|
||||||
ssl_client->setSessionTimeout(120); // Set the timeout in seconds (>=120 seconds)
|
ssl_client->setSessionTimeout(120); // Set the timeout in seconds (>=120 seconds)
|
||||||
}
|
}
|
||||||
|
basic_client->setTimeout(5000); // socket-level read timeout
|
||||||
|
ssl_client->setTimeout(5); // Stream::readBytes timeout used by Update
|
||||||
ssl_client->setClient(basic_client, is_https); // enableSSL = false for plain HTTP
|
ssl_client->setClient(basic_client, is_https); // enableSSL = false for plain HTTP
|
||||||
|
|
||||||
url.replace(0, is_https ? 8 : 7, "");
|
url.replace(0, is_https ? 8 : 7, "");
|
||||||
|
|||||||
+8
-6
@@ -146,8 +146,8 @@ bool System::command_sendmail(const char * value, const int8_t) {
|
|||||||
LOG_DEBUG("Command sendmail port %d%s called with '%s'",
|
LOG_DEBUG("Command sendmail port %d%s called with '%s'",
|
||||||
port,
|
port,
|
||||||
security == EMAIL_SECURITY::SSL ? " (SSL)"
|
security == EMAIL_SECURITY::SSL ? " (SSL)"
|
||||||
: security == EMAIL_SECURITY::STARTTLS ? ""
|
: security == EMAIL_SECURITY::STARTTLS ? " (STARTTLS)"
|
||||||
: " (STARTTLS)",
|
: "",
|
||||||
value);
|
value);
|
||||||
|
|
||||||
bool success = false;
|
bool success = false;
|
||||||
@@ -160,7 +160,9 @@ bool System::command_sendmail(const char * value, const int8_t) {
|
|||||||
|
|
||||||
ssl_client->setClient(basic_client);
|
ssl_client->setClient(basic_client);
|
||||||
ssl_client->setInsecure();
|
ssl_client->setInsecure();
|
||||||
ssl_client->setBufferSizes(1024, 1024);
|
ssl_client->setBufferSizes(16384, 1024);
|
||||||
|
basic_client->setTimeout(5000); // socket-level read timeout
|
||||||
|
ssl_client->setTimeout(5); // Stream::readBytes timeout used by Update
|
||||||
r_client->addPort(port,
|
r_client->addPort(port,
|
||||||
security == EMAIL_SECURITY::NONE ? readymail_protocol_plain_text
|
security == EMAIL_SECURITY::NONE ? readymail_protocol_plain_text
|
||||||
: security == EMAIL_SECURITY::SSL ? readymail_protocol_ssl
|
: security == EMAIL_SECURITY::SSL ? readymail_protocol_ssl
|
||||||
@@ -840,7 +842,7 @@ bool System::loop() {
|
|||||||
void System::send_info_mqtt() {
|
void System::send_info_mqtt() {
|
||||||
static uint8_t _connection = 0;
|
static uint8_t _connection = 0;
|
||||||
uint8_t connection = (EMSESP::network_.ethernet_connected() ? 1 : 0) + (EMSESP::network_.wifi_connected() ? 2 : 0) + (ntp_connected_ ? 4 : 0)
|
uint8_t connection = (EMSESP::network_.ethernet_connected() ? 1 : 0) + (EMSESP::network_.wifi_connected() ? 2 : 0) + (ntp_connected_ ? 4 : 0)
|
||||||
+ (EMSESP::network_.has_ipv6() ? 8 : 0);
|
+ (EMSESP::network_.has_ipv6() ? 8 : 0);
|
||||||
// check if connection status has changed
|
// check if connection status has changed
|
||||||
if (!Mqtt::connected() || connection == _connection) {
|
if (!Mqtt::connected() || connection == _connection) {
|
||||||
return;
|
return;
|
||||||
@@ -853,7 +855,7 @@ void System::send_info_mqtt() {
|
|||||||
|
|
||||||
// if NTP is enabled send the boot_time in local time in ISO 8601 format (eg: 2022-11-15 20:46:38)
|
// if NTP is enabled send the boot_time in local time in ISO 8601 format (eg: 2022-11-15 20:46:38)
|
||||||
// https://github.com/emsesp/EMS-ESP32/issues/751
|
// https://github.com/emsesp/EMS-ESP32/issues/751
|
||||||
if (ntp_connected_) {
|
if (time(nullptr) > 1500000000L) {
|
||||||
char time_string[25];
|
char time_string[25];
|
||||||
time_t now = time(nullptr) - uuid::get_uptime_sec();
|
time_t now = time(nullptr) - uuid::get_uptime_sec();
|
||||||
strftime(time_string, 25, "%FT%T%z", localtime(&now));
|
strftime(time_string, 25, "%FT%T%z", localtime(&now));
|
||||||
@@ -3108,7 +3110,7 @@ bool System::uploadFirmwareURL(const char * url) {
|
|||||||
ssl_client.setSessionTimeout(120);
|
ssl_client.setSessionTimeout(120);
|
||||||
}
|
}
|
||||||
basic_client.setTimeout(15000); // socket-level read timeout
|
basic_client.setTimeout(15000); // socket-level read timeout
|
||||||
ssl_client.setTimeout(15000); // Stream::readBytes timeout used by Update
|
ssl_client.setTimeout(15); // Stream::readBytes timeout used by Update
|
||||||
ssl_client.setClient(&basic_client, is_https); // enableSSL = false for plain HTTP
|
ssl_client.setClient(&basic_client, is_https); // enableSSL = false for plain HTTP
|
||||||
|
|
||||||
const uint16_t port = is_https ? 443 : 80;
|
const uint16_t port = is_https ? 443 : 80;
|
||||||
|
|||||||
@@ -45,17 +45,20 @@ void TemperatureSensor::start(const bool factory_settings) {
|
|||||||
Mqtt::subscribe(EMSdevice::DeviceType::TEMPERATURESENSOR, topic, nullptr); // use empty function callback
|
Mqtt::subscribe(EMSdevice::DeviceType::TEMPERATURESENSOR, topic, nullptr); // use empty function callback
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TemperatureSensor::ha_reset() {
|
||||||
|
for (auto & sensor : sensors_) {
|
||||||
|
remove_ha_topic(sensor.id());
|
||||||
|
sensor.ha_registered = false; // force HA configs to be re-created
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// load settings
|
// load settings
|
||||||
void TemperatureSensor::reload() {
|
void TemperatureSensor::reload() {
|
||||||
EMSESP::webSettingsService.read([&](WebSettings const & settings) {
|
EMSESP::webSettingsService.read([&](WebSettings const & settings) {
|
||||||
dallas_gpio_ = settings.dallas_gpio;
|
dallas_gpio_ = settings.dallas_gpio;
|
||||||
parasite_ = settings.dallas_parasite;
|
parasite_ = settings.dallas_parasite;
|
||||||
});
|
});
|
||||||
|
ha_reset();
|
||||||
for (auto & sensor : sensors_) {
|
|
||||||
remove_ha_topic(sensor.id());
|
|
||||||
sensor.ha_registered = false; // force HA configs to be re-created
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TemperatureSensor::loop() {
|
void TemperatureSensor::loop() {
|
||||||
@@ -543,7 +546,7 @@ void TemperatureSensor::publish_values(const bool force) {
|
|||||||
// for the value template, there's a problem still with Domoticz probably due to the special characters.
|
// for the value template, there's a problem still with Domoticz probably due to the special characters.
|
||||||
// See https://github.com/emsesp/EMS-ESP32/issues/1360
|
// See https://github.com/emsesp/EMS-ESP32/issues/1360
|
||||||
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
||||||
config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else -55}}";
|
config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else 'None'}}";
|
||||||
} else {
|
} else {
|
||||||
config["val_tpl"] = (std::string) "{{" + val_obj + "}}"; // omit value conditional Jinja2 template code
|
config["val_tpl"] = (std::string) "{{" + val_obj + "}}"; // omit value conditional Jinja2 template code
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ class TemperatureSensor {
|
|||||||
void publish_sensor(const Sensor & sensor);
|
void publish_sensor(const Sensor & sensor);
|
||||||
void publish_values(const bool force);
|
void publish_values(const bool force);
|
||||||
void reload();
|
void reload();
|
||||||
|
void ha_reset();
|
||||||
bool updated_values();
|
bool updated_values();
|
||||||
bool get_value_info(JsonObject output, const char * cmd, const int8_t id = -1);
|
bool get_value_info(JsonObject output, const char * cmd, const int8_t id = -1);
|
||||||
|
|
||||||
|
|||||||
@@ -220,13 +220,13 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &fanWork_, DeviceValueType::BOOL, FL_(fanWork), DeviceValueUOM::NONE);
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &fanWork_, DeviceValueType::BOOL, FL_(fanWork), DeviceValueUOM::NONE);
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ignWork_, DeviceValueType::BOOL, FL_(ignWork), DeviceValueUOM::NONE);
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ignWork_, DeviceValueType::BOOL, FL_(ignWork), DeviceValueUOM::NONE);
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &oilPreHeat_, DeviceValueType::BOOL, FL_(oilPreHeat), DeviceValueUOM::NONE);
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &oilPreHeat_, DeviceValueType::BOOL, FL_(oilPreHeat), DeviceValueUOM::NONE);
|
||||||
// remove burnMinPower, #2918
|
// remove burnMinPower, #2918, add back for 0xE6, #3193
|
||||||
// register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
// &burnMinPower_,
|
&burnMinPower_,
|
||||||
// DeviceValueType::UINT8,
|
DeviceValueType::UINT8,
|
||||||
// FL_(burnMinPower),
|
FL_(burnMinPower),
|
||||||
// DeviceValueUOM::PERCENT,
|
DeviceValueUOM::PERCENT,
|
||||||
// MAKE_CF_CB(set_min_power));
|
MAKE_CF_CB(set_min_power));
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
&burnMaxPower_,
|
&burnMaxPower_,
|
||||||
DeviceValueType::UINT8,
|
DeviceValueType::UINT8,
|
||||||
@@ -1622,7 +1622,7 @@ void Boiler::process_UBAParametersPlus(const std::shared_ptr<const Telegram> & t
|
|||||||
has_update(telegram, heatingActivated_, 0);
|
has_update(telegram, heatingActivated_, 0);
|
||||||
has_update(telegram, heatingTemp_, 1);
|
has_update(telegram, heatingTemp_, 1);
|
||||||
has_update(telegram, burnMaxPower_, 4);
|
has_update(telegram, burnMaxPower_, 4);
|
||||||
// has_update(telegram, burnMinPower_, 5); // removed #2918
|
has_update(telegram, burnMinPower_, 5); // removed #2918
|
||||||
has_update(telegram, boilHystOff_, 8);
|
has_update(telegram, boilHystOff_, 8);
|
||||||
has_update(telegram, boilHystOn_, 9);
|
has_update(telegram, boilHystOn_, 9);
|
||||||
has_update(telegram, burnMinPeriod_, 10);
|
has_update(telegram, burnMinPeriod_, 10);
|
||||||
|
|||||||
@@ -2401,7 +2401,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
// BC400
|
// BC400
|
||||||
// 1-RC100, 2-RC100H, 3-RC200
|
// 1-RC100, 2-RC100H, 3-RC200
|
||||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_UI800) {
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) {
|
||||||
if (Helpers::value2enum(value, ctrl, FL_(enum_control2))) {
|
if (Helpers::value2enum(value, ctrl, FL_(enum_control2))) {
|
||||||
write_command(hpmode_typeids[hc->hc()], 3, ctrl);
|
write_command(hpmode_typeids[hc->hc()], 3, ctrl);
|
||||||
hc->control = ctrl; // set in advance, dont wait for verify
|
hc->control = ctrl; // set in advance, dont wait for verify
|
||||||
@@ -2421,6 +2421,20 @@ bool Thermostat::set_control(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) {
|
||||||
|
if (Helpers::value2enum(value, ctrl, FL_(enum_control3))) {
|
||||||
|
write_command(hpmode_typeids[hc->hc()], 3, ctrl);
|
||||||
|
hc->control = ctrl; // set in advance, dont wait for verify
|
||||||
|
if (hc->remotetemp != EMS_VALUE_INT16_NOTSET && ctrl > 0) {
|
||||||
|
if (ctrl == 6) {
|
||||||
|
Roomctrl::set_remotetemp(Roomctrl::RT800, hc->hc(), hc->remotetemp);
|
||||||
|
} else {
|
||||||
|
hc->remotetemp = EMS_VALUE_INT16_NOTSET;
|
||||||
|
Roomctrl::set_remotetemp(0, hc->hc(), hc->remotetemp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// RC100 or RC300
|
// RC100 or RC300
|
||||||
// 1-RC200, 2-RC100, 3-RC100H
|
// 1-RC200, 2-RC100, 3-RC100H
|
||||||
} else if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
} else if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||||
@@ -4701,7 +4715,7 @@ void Thermostat::register_device_values() {
|
|||||||
1,
|
1,
|
||||||
10);
|
10);
|
||||||
register_device_value(
|
register_device_value(
|
||||||
DeviceValueTAG::TAG_DEVICE_DATA, &coolstart, DeviceValueType::UINT8, FL_(coolstart), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_coolstart), 20, 35);
|
DeviceValueTAG::TAG_DEVICE_DATA, &coolstart, DeviceValueType::UINT8, FL_(coolstart), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_coolstart), 24, 35);
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
&heatondelay,
|
&heatondelay,
|
||||||
DeviceValueType::UINT8,
|
DeviceValueType::UINT8,
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define EMSESP_APP_VERSION "3.9.0-dev.3"
|
#define EMSESP_APP_VERSION "3.9.0-dev.4"
|
||||||
|
|||||||
@@ -501,7 +501,7 @@ void WebCustomEntityService::publish(const bool force) {
|
|||||||
snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj);
|
snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj);
|
||||||
// don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery
|
// don't bother with value template conditions if using Domoticz which doesn't fully support MQTT Discovery
|
||||||
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
||||||
config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + "}}";
|
config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else 'None'}}";
|
||||||
} else {
|
} else {
|
||||||
config["val_tpl"] = (std::string) "{{" + val_obj + "}}";
|
config["val_tpl"] = (std::string) "{{" + val_obj + "}}";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -275,7 +275,7 @@ void WebSchedulerService::publish(const bool force) {
|
|||||||
|
|
||||||
char val_tpl[150];
|
char val_tpl[150];
|
||||||
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
if (Mqtt::discovery_type() == Mqtt::discoveryType::HOMEASSISTANT) {
|
||||||
snprintf(val_tpl, sizeof(val_tpl), "{{%s if %s}}", val_obj, val_cond);
|
snprintf(val_tpl, sizeof(val_tpl), "{{%s if %s else 'None'}}", val_obj, val_cond);
|
||||||
} else {
|
} else {
|
||||||
snprintf(val_tpl, sizeof(val_tpl), "{{%s}}", val_obj); // omit value conditional Jinja2 template code
|
snprintf(val_tpl, sizeof(val_tpl), "{{%s}}", val_obj); // omit value conditional Jinja2 template code
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <WiFiClient.h>
|
#include <WiFiClient.h>
|
||||||
#include <ESP_SSLClient.h>
|
#include <ESP_SSLClient.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include "shuntingYard.h"
|
||||||
|
|
||||||
namespace emsesp {
|
namespace emsesp {
|
||||||
|
|
||||||
@@ -421,91 +422,14 @@ bool WebStatusService::refresh_versions_cache() {
|
|||||||
#ifdef EMSESP_STANDALONE
|
#ifdef EMSESP_STANDALONE
|
||||||
return false;
|
return false;
|
||||||
#else
|
#else
|
||||||
// detect scheme from VERSIONS_URL (case-insensitive). One code path for HTTP and HTTPS,
|
std::string result;
|
||||||
// using ESP_SSLClient as a plain TCP passthrough when SSL is disabled.
|
JsonDocument doc;
|
||||||
String url = VERSIONS_URL;
|
auto http_code = http_request(VERSIONS_URL, "GET", "", doc.as<JsonObjectConst>(), result);
|
||||||
String lower = url;
|
|
||||||
lower.toLowerCase();
|
|
||||||
const bool is_https = lower.startsWith("https://");
|
|
||||||
if (!is_https && !lower.startsWith("http://")) {
|
|
||||||
#if defined(EMSESP_DEBUG)
|
|
||||||
EMSESP::logger().debug("versions.json: unsupported scheme");
|
|
||||||
#endif
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const int scheme_len = is_https ? 8 : 7;
|
|
||||||
|
|
||||||
WiFiClient basic_client;
|
|
||||||
ESP_SSLClient ssl_client;
|
|
||||||
if (is_https) {
|
|
||||||
ssl_client.setInsecure();
|
|
||||||
ssl_client.setBufferSizes(16384, 1024); // versions.json fits easily but TLS records may be full-size
|
|
||||||
ssl_client.setSessionTimeout(120);
|
|
||||||
}
|
|
||||||
basic_client.setTimeout(5000);
|
|
||||||
ssl_client.setTimeout(5000);
|
|
||||||
ssl_client.setClient(&basic_client, is_https);
|
|
||||||
|
|
||||||
// split into host and path
|
|
||||||
String rest = url.substring(scheme_len);
|
|
||||||
String host;
|
|
||||||
String path;
|
|
||||||
int s = rest.indexOf('/');
|
|
||||||
if (s < 0) {
|
|
||||||
host = rest;
|
|
||||||
path = "/";
|
|
||||||
} else {
|
|
||||||
host = rest.substring(0, s);
|
|
||||||
path = rest.substring(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ssl_client.connect(host.c_str(), is_https ? 443 : 80)) {
|
|
||||||
#if defined(EMSESP_DEBUG)
|
|
||||||
EMSESP::logger().debug("versions.json: connection failed");
|
|
||||||
#endif
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// minimal HTTP/1.0 GET so we don't have to handle chunked encoding
|
|
||||||
ssl_client.print("GET ");
|
|
||||||
ssl_client.print(path);
|
|
||||||
ssl_client.println(" HTTP/1.0");
|
|
||||||
ssl_client.print("Host: ");
|
|
||||||
ssl_client.println(host);
|
|
||||||
ssl_client.println("User-Agent: EMS-ESP");
|
|
||||||
ssl_client.println("Connection: close");
|
|
||||||
ssl_client.print("\r\n");
|
|
||||||
|
|
||||||
// wait for the first byte. The 5 seconds is GitHub's SLO
|
|
||||||
uint32_t ms = millis();
|
|
||||||
while (ssl_client.connected() && !ssl_client.available() && millis() - ms < 5000) {
|
|
||||||
delay(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// parse status line
|
|
||||||
String status_line = ssl_client.readStringUntil('\n');
|
|
||||||
int sp = status_line.indexOf(' ');
|
|
||||||
int http_code = (sp >= 0) ? status_line.substring(sp + 1, sp + 4).toInt() : 0;
|
|
||||||
if (http_code != 200) {
|
if (http_code != 200) {
|
||||||
ssl_client.stop();
|
EMSESP::logger().warning("versions.json: HTTP error code %d", http_code);
|
||||||
#if defined(EMSESP_DEBUG)
|
|
||||||
EMSESP::logger().debug("versions.json: HTTP error code %d", http_code);
|
|
||||||
#endif
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
DeserializationError err = deserializeJson(doc, result);
|
||||||
// skip headers
|
|
||||||
while (ssl_client.connected() || ssl_client.available()) {
|
|
||||||
String line = ssl_client.readStringUntil('\n');
|
|
||||||
line.trim();
|
|
||||||
if (line.isEmpty()) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JsonDocument doc(PSRAM_DOC);
|
|
||||||
DeserializationError err = deserializeJson(doc, ssl_client);
|
|
||||||
ssl_client.stop();
|
|
||||||
if (err) {
|
if (err) {
|
||||||
#if defined(EMSESP_DEBUG)
|
#if defined(EMSESP_DEBUG)
|
||||||
EMSESP::logger().debug("versions.json: parse error");
|
EMSESP::logger().debug("versions.json: parse error");
|
||||||
|
|||||||
Reference in New Issue
Block a user