Compare commits

...
33 Commits
Author SHA1 Message Date
Proddy 8eb1a47b5a Merge pull request #3195 from proddy/dev
minor changes
2026-08-25 21:28:43 +02:00
proddy fe972db8c5 pkg update 2026-08-25 21:28:06 +02:00
proddy be224265f9 show mqtt disconnect once 2026-08-25 18:59:25 +02:00
proddy 5fcd9bfd2d 3.9.0-dev.5 2026-08-25 18:26:33 +02:00
proddy 69b6af4069 pkg update 2026-08-25 18:26:06 +02:00
proddy cdade5f999 show 'Starting MQTT Service' only once, and connection failure errors after 2026-08-23 22:19:58 +02:00
proddy 97af64c53b text change 2026-08-23 22:19:16 +02:00
proddy bcb47912c0 refactor mqtt disconnect reason 2026-08-23 22:19:09 +02:00
proddy badd8f2241 pkg update 2026-08-23 22:18:51 +02:00
proddy 5aed596140 RESTART button is green 2026-08-23 22:18:42 +02:00
proddy 015da730bf move factory reset button to the left 2026-08-23 13:01:49 +02:00
proddy 0b47e5ec05 remove unused translations 2026-08-23 12:54:49 +02:00
proddy b0255d726b check text for online version check 2026-08-23 12:41:23 +02:00
proddy fce46f7613 auto-formatting 2026-08-23 12:31:27 +02:00
proddy c3cd4ac6b6 if there is no internet, keep trying every few seconds 2026-08-23 12:23:25 +02:00
proddy 91955689a2 include system name 2026-08-23 12:23:07 +02:00
proddy 89e88135bc comment changes 2026-08-23 12:22:55 +02:00
proddy 42f86cd12b get and send system name in AuthenticaionContext to prevent /rest/settings on each render 2026-08-23 12:22:45 +02:00
proddy 6efc7113b3 suppress rollout timings 2026-08-23 12:21:32 +02:00
proddy 48d425e0b6 remove useMemo 2026-08-22 15:45:48 +02:00
proddy b18b27d2f6 remove useMemo 2026-08-22 15:45:34 +02:00
proddy 5d992e5a70 remove useMemo 2026-08-22 15:45:24 +02:00
proddy 80e48430f5 pkg update - eslint 2026-08-22 15:44:41 +02:00
proddy cedafbd462 move reconnect count to onConnect. always show MQTT disconnect error 2026-08-22 13:25:31 +02:00
proddy 9d3eaa5ff7 rename connecting_ 2026-08-22 13:24:51 +02:00
proddy bc6351cc22 move MQTT and NTP to main loop 2026-08-22 13:24:40 +02:00
proddy 9b0ee07ee1 remove comments 2026-08-22 13:24:18 +02:00
proddy 4fe64fbff8 set system status to SYSTEM_STATUS_UPLOADING to pause MQTT/NTP etc during upload 2026-08-22 13:24:05 +02:00
proddy 51b689d91b text changes 2026-08-22 13:23:36 +02:00
proddy f5189b4d09 mention how to update unit tests 2026-08-22 13:23:21 +02:00
proddy 55b882cec2 update unit tests 2026-08-22 13:23:10 +02:00
proddy c16f12990a package update 2026-08-22 13:23:00 +02:00
proddy ed4b247d28 chore: update generated files for v3.9.0-dev.4 2026-08-20 11:48:53 +00:00
38 changed files with 6933 additions and 7027 deletions
+1
View File
@@ -34,4 +34,5 @@ This release is based on the latest Espressif/Arduino core version 3. It brings
- 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` - set `None` for undefined values in HA `val_tpl`
- changes in WebUI - remove multiple calls systemInfo endpoint, Vewrsion pages checks for internet connection [#3195](https://github.com/emsesp/EMS-ESP32/pull/3195)
File diff suppressed because it is too large Load Diff
+6008 -6008
View File
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -29,7 +29,7 @@
"@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.4", "alova": "^3.5.5",
"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",
@@ -44,9 +44,9 @@
"@trivago/prettier-plugin-sort-imports": "^6.0.2", "@trivago/prettier-plugin-sort-imports": "^6.0.2",
"@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.5",
"concurrently": "^10.0.5", "concurrently": "^10.0.5",
"eslint": "^10.8.1", "eslint": "^10.9.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",
@@ -54,9 +54,9 @@
"rollup-plugin-visualizer": "^7.1.1", "rollup-plugin-visualizer": "^7.1.1",
"terser": "^5.50.0", "terser": "^5.50.0",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"typescript-eslint": "^8.67.0", "typescript-eslint": "^8.68.0",
"vite": "^8.2.1", "vite": "^8.2.2",
"vite-plugin-imagemin": "^0.6.1" "vite-plugin-imagemin": "^0.6.1"
}, },
"packageManager": "pnpm@11.22.0+sha512.1ff870c4c6133dfd88fb2afc46dd13d47f09c9794b438c6fdb47ca98caf3bc16381ee0be93a091b8e3824cf01f889f46d7d9e20910fb0be1ab0fb5baa80dd621" "packageManager": "pnpm@11.24.0+sha512.bd27e345e976dcb0be0b7a1228217b049a817e21b1f355c90dbe7dc46671895a8bc1e6d06c24554505ea93ea0b45f489a27ec1bfbc8de6a9659fca0f16fa0000"
} }
+206 -196
View File
@@ -10,7 +10,7 @@ importers:
dependencies: dependencies:
'@alova/adapter-xhr': '@alova/adapter-xhr':
specifier: 2.3.3 specifier: 2.3.3
version: 2.3.3(alova@3.5.4) version: 2.3.3(alova@3.5.5)
'@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.4 specifier: ^3.5.5
version: 3.5.4 version: 3.5.5
jwt-decode: jwt-decode:
specifier: ^4.0.0 specifier: ^4.0.0
version: 4.0.0 version: 4.0.0
@@ -53,10 +53,10 @@ importers:
devDependencies: devDependencies:
'@eslint/js': '@eslint/js':
specifier: ^10.0.1 specifier: ^10.0.1
version: 10.0.1(eslint@10.8.1(supports-color@10.2.2)) version: 10.0.1(eslint@10.9.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.50.0)) 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.2(@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)
@@ -67,17 +67,17 @@ importers:
specifier: ^19.2.18 specifier: ^19.2.18
version: 19.2.18 version: 19.2.18
'@types/react-dom': '@types/react-dom':
specifier: ^19.2.4 specifier: ^19.2.5
version: 19.2.4(@types/react@19.2.18) version: 19.2.5(@types/react@19.2.18)
concurrently: concurrently:
specifier: ^10.0.5 specifier: ^10.0.5
version: 10.0.5 version: 10.0.5
eslint: eslint:
specifier: ^10.8.1 specifier: ^10.9.1
version: 10.8.1(supports-color@10.2.2) version: 10.9.1(supports-color@10.2.2)
eslint-config-prettier: eslint-config-prettier:
specifier: ^10.1.8 specifier: ^10.1.8
version: 10.1.8(eslint@10.8.1(supports-color@10.2.2)) version: 10.1.8(eslint@10.9.1(supports-color@10.2.2))
etag: etag:
specifier: ^1.8.1 specifier: ^1.8.1
version: 1.8.1 version: 1.8.1
@@ -89,7 +89,7 @@ importers:
version: 3.9.6 version: 3.9.6
rollup-plugin-visualizer: rollup-plugin-visualizer:
specifier: ^7.1.1 specifier: ^7.1.1
version: 7.1.1(rolldown@1.2.4) version: 7.1.1(rolldown@1.2.5)
terser: terser:
specifier: ^5.50.0 specifier: ^5.50.0
version: 5.50.0 version: 5.50.0
@@ -97,14 +97,14 @@ importers:
specifier: ^6.0.3 specifier: ^6.0.3
version: 6.0.3 version: 6.0.3
typescript-eslint: typescript-eslint:
specifier: ^8.67.0 specifier: ^8.68.0
version: 8.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) version: 8.68.0(eslint@10.9.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
vite: vite:
specifier: ^8.2.1 specifier: ^8.2.2
version: 8.2.1(@types/node@26.2.0)(terser@5.50.0) version: 8.2.2(@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.50.0)) version: 0.6.1(supports-color@10.2.2)(vite@8.2.2(@types/node@26.2.0)(terser@5.50.0))
packages: packages:
@@ -454,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.144.0': '@oxc-project/types@0.146.0':
resolution: {integrity: sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==} resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==}
'@popperjs/core@2.11.8': '@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
@@ -483,92 +483,98 @@ 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.4': '@rolldown/binding-android-arm-eabi@1.2.5':
resolution: {integrity: sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==} resolution: {integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
'@rolldown/binding-android-arm64@1.2.5':
resolution: {integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==}
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.4': '@rolldown/binding-darwin-arm64@1.2.5':
resolution: {integrity: sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==} resolution: {integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==}
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.4': '@rolldown/binding-darwin-x64@1.2.5':
resolution: {integrity: sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==} resolution: {integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==}
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.4': '@rolldown/binding-freebsd-x64@1.2.5':
resolution: {integrity: sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==} resolution: {integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==}
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.4': '@rolldown/binding-linux-arm-gnueabihf@1.2.5':
resolution: {integrity: sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==} resolution: {integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==}
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.4': '@rolldown/binding-linux-arm64-gnu@1.2.5':
resolution: {integrity: sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==} resolution: {integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==}
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.4': '@rolldown/binding-linux-arm64-musl@1.2.5':
resolution: {integrity: sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==} resolution: {integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==}
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.4': '@rolldown/binding-linux-ppc64-gnu@1.2.5':
resolution: {integrity: sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==} resolution: {integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==}
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.4': '@rolldown/binding-linux-s390x-gnu@1.2.5':
resolution: {integrity: sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==} resolution: {integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==}
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.4': '@rolldown/binding-linux-x64-gnu@1.2.5':
resolution: {integrity: sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==} resolution: {integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==}
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.4': '@rolldown/binding-linux-x64-musl@1.2.5':
resolution: {integrity: sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==} resolution: {integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==}
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.4': '@rolldown/binding-openharmony-arm64@1.2.5':
resolution: {integrity: sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==} resolution: {integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==}
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.4': '@rolldown/binding-win32-arm64-msvc@1.2.5':
resolution: {integrity: sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==} resolution: {integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==}
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.4': '@rolldown/binding-win32-x64-msvc@1.2.5':
resolution: {integrity: sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==} resolution: {integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==}
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -671,8 +677,8 @@ packages:
'@types/prop-types@15.7.15': '@types/prop-types@15.7.15':
resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
'@types/react-dom@19.2.4': '@types/react-dom@19.2.5':
resolution: {integrity: sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==} resolution: {integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==}
peerDependencies: peerDependencies:
'@types/react': ^19.2.0 '@types/react': ^19.2.0
@@ -690,63 +696,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.67.0': '@typescript-eslint/eslint-plugin@8.68.0':
resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} resolution: {integrity: sha512-WASHDpCm6qO5jj9g1a+8NiW5+GCkAyLReR56/4VruYmNgfUmqpxOfZ2Yfb8xGfJPWv5Qi6LSD8sXdces3vbp/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:
'@typescript-eslint/parser': ^8.67.0 '@typescript-eslint/parser': ^8.68.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.67.0': '@typescript-eslint/parser@8.68.0':
resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} resolution: {integrity: sha512-fHq2VC1kpyYfvEcbiMjOpySY4WS7voEp89yAThrHRX5sm9j2lzYppCb2umFMEed4fWcyeLjHxrz0mpjNBaBxMQ==}
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.67.0': '@typescript-eslint/project-service@8.68.0':
resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} resolution: {integrity: sha512-5GQtWZCXFcFYux955pvoS02WLc49pXNlvIxocKjS0clvwo3in1RdlzVKyiqQH9vE5AKWFLTaUgeQkOrTS+0Qxw==}
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.67.0': '@typescript-eslint/scope-manager@8.68.0':
resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} resolution: {integrity: sha512-T5eXpcaJNg8bhjHJ8Rjp68Vq/QBteYtTKY8TZqVNPaUbuz0f6jI9t6aDkylwvalpAB9XTTFeFOjrjXAZ3YvmVA==}
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.67.0': '@typescript-eslint/tsconfig-utils@8.68.0':
resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} resolution: {integrity: sha512-F7zrGQfiJHojPwi8vhxZQC1tWtJzvL74cK/nqri2lk8YUXvYaYwl263xOJ69jDWPUk1hmcdoayFwk9lX09npVw==}
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.67.0': '@typescript-eslint/type-utils@8.68.0':
resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} resolution: {integrity: sha512-X77zqoY1EjeWGs/0JNxeaMfp5C5lIz4Tw8y66F1Ne8Faq6g424sBNYM6xBAqElfGZPLpWS+CZAp0DXyKDzWiHg==}
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.67.0': '@typescript-eslint/types@8.68.0':
resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} resolution: {integrity: sha512-9RnpsGJjrAllCMefGVVsImJM24YurhC0Q1h4UbvivtvOqXmR/vEJge2OoE++z9m6hyg8T1Q8t5SNT6tHSbrxcg==}
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.67.0': '@typescript-eslint/typescript-estree@8.68.0':
resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} resolution: {integrity: sha512-OKKsD0tYmoNiU5PW2zehO1yO56jYOm1ShYlxon/Z0SJNidAkdVg86eg9ruRuoXf8xfnuWZGbwDsStkoXbZtIIA==}
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.67.0': '@typescript-eslint/utils@8.68.0':
resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} resolution: {integrity: sha512-PB5gJMMOg0Q5P1tsgWtEAqQacJXq0qEqRHDX/YJ4FaTMLfZPpHB3gjl2EJuiZyPABxmj4ZQYiY9m1bdAJ5y7tQ==}
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.67.0': '@typescript-eslint/visitor-keys@8.68.0':
resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} resolution: {integrity: sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A==}
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:
@@ -762,8 +768,8 @@ packages:
ajv@6.15.0: ajv@6.15.0:
resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
alova@3.5.4: alova@3.5.5:
resolution: {integrity: sha512-F4NHWWqnTZiqu0pg0X666LEyp04TbM2wWjZJ2vWxuhb1o4KRhh7xZiw74SP6ruXBAdTJLmems77qYWa0TGHYoQ==} resolution: {integrity: sha512-V/w9xLNBpmBxx7Zeb+OAJapt9yD1L/hBoqi86xlRtug94F2xUkA1GFsJMeDeV/oL/iQCvW8fQyplGOiLXDkACg==}
engines: {node: '>= 18.0.0'} engines: {node: '>= 18.0.0'}
ansi-regex@2.1.1: ansi-regex@2.1.1:
@@ -1341,8 +1347,8 @@ packages:
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24} engines: {node: ^20.19.0 || ^22.13.0 || >=24}
eslint@10.8.1: eslint@10.9.1:
resolution: {integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==} resolution: {integrity: sha512-9VaAkDURekixUQJy0oJYl2DcN6oKMfxay7XzaGYAWQwsb6qfKf+x76R2k1L8kb1boc+FyCAaTA9GmiKaaiaF+A==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24} engines: {node: ^20.19.0 || ^22.13.0 || >=24}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -2307,8 +2313,8 @@ packages:
resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
engines: {node: '>=8.6'} engines: {node: '>=8.6'}
picomatch@4.0.5: picomatch@4.0.7:
resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
engines: {node: '>=12'} engines: {node: '>=12'}
pify@2.3.0: pify@2.3.0:
@@ -2499,8 +2505,8 @@ 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.4: rolldown@1.2.5:
resolution: {integrity: sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==} resolution: {integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==}
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true hasBin: true
@@ -2727,8 +2733,8 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
svgo@2.8.3: svgo@2.8.4:
resolution: {integrity: sha512-5EZD0pafXX6PphdwOGCiVLDSaV1xyuQao2blHajHLsPxr07q4mmEjdtXEWgG07ae2mIz8Ex2CDXNCTiXhy3Khw==} resolution: {integrity: sha512-2GJ4h3rl13qYTdwllaK6QlL8tG+UrM8626V2Ylcd/yBUv2Y/EwLsYisVV6UDCRmlk+C74G8nMpxJCk0RWPdDCw==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
hasBin: true hasBin: true
@@ -2810,8 +2816,8 @@ packages:
peerDependencies: peerDependencies:
typescript: '>=3.5.1' typescript: '>=3.5.1'
typescript-eslint@8.67.0: typescript-eslint@8.68.0:
resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} resolution: {integrity: sha512-MHy0Y0ynqeEbx/S45+i/bBssdy3X6KNBfmJAP35GrgtNxu2TQ5K5xsFDhAnmsq1jvpdoZOPG1LGtJo0HWqYCrQ==}
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
@@ -2874,13 +2880,13 @@ packages:
peerDependencies: peerDependencies:
vite: 5.x || 6.x || 7.x || 8.x vite: 5.x || 6.x || 7.x || 8.x
vite@8.2.1: vite@8.2.2:
resolution: {integrity: sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==} resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==}
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0 '@types/node': ^20.19.0 || >=22.12.0
'@vitejs/devtools': ^0.4.0 '@vitejs/devtools': ^0.4.0 || ^0.5.0
esbuild: ^0.27.0 || ^0.28.0 esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0' jiti: '>=1.21.0'
less: ^4.0.0 less: ^4.0.0
@@ -2987,10 +2993,10 @@ packages:
snapshots: snapshots:
'@alova/adapter-xhr@2.3.3(alova@3.5.4)': '@alova/adapter-xhr@2.3.3(alova@3.5.5)':
dependencies: dependencies:
'@alova/shared': 1.3.4 '@alova/shared': 1.3.4
alova: 3.5.4 alova: 3.5.5
'@alova/shared@1.3.4': {} '@alova/shared@1.3.4': {}
@@ -3211,9 +3217,9 @@ snapshots:
'@esbuild/linux-loong64@0.14.54': '@esbuild/linux-loong64@0.14.54':
optional: true optional: true
'@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.9.1(supports-color@10.2.2))':
dependencies: dependencies:
eslint: 10.8.1(supports-color@10.2.2) eslint: 10.9.1(supports-color@10.2.2)
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {} '@eslint-community/regexpp@4.12.2': {}
@@ -3234,9 +3240,9 @@ snapshots:
dependencies: dependencies:
'@types/json-schema': 7.0.15 '@types/json-schema': 7.0.15
'@eslint/js@10.0.1(eslint@10.8.1(supports-color@10.2.2))': '@eslint/js@10.0.1(eslint@10.9.1(supports-color@10.2.2))':
optionalDependencies: optionalDependencies:
eslint: 10.8.1(supports-color@10.2.2) eslint: 10.9.1(supports-color@10.2.2)
'@eslint/object-schema@3.0.5': {} '@eslint/object-schema@3.0.5': {}
@@ -3384,23 +3390,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.144.0': {} '@oxc-project/types@0.146.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.50.0))': '@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.2(@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.50.0)) '@prefresh/vite': 2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.2(@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.50.0) vite: 8.2.2(@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.50.0)) vite-prerender-plugin: 0.5.13(vite@8.2.2(@types/node@26.2.0)(terser@5.50.0))
zimmerframe: 1.1.4 zimmerframe: 1.1.4
transitivePeerDependencies: transitivePeerDependencies:
- preact - preact
@@ -3415,7 +3421,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.50.0))': '@prefresh/vite@2.4.12(preact@10.29.8)(supports-color@10.2.2)(vite@8.2.2(@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
@@ -3423,50 +3429,53 @@ 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.50.0) vite: 8.2.2(@types/node@26.2.0)(terser@5.50.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@rolldown/binding-android-arm64@1.2.4': '@rolldown/binding-android-arm-eabi@1.2.5':
optional: true optional: true
'@rolldown/binding-darwin-arm64@1.2.4': '@rolldown/binding-android-arm64@1.2.5':
optional: true optional: true
'@rolldown/binding-darwin-x64@1.2.4': '@rolldown/binding-darwin-arm64@1.2.5':
optional: true optional: true
'@rolldown/binding-freebsd-x64@1.2.4': '@rolldown/binding-darwin-x64@1.2.5':
optional: true optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.2.4': '@rolldown/binding-freebsd-x64@1.2.5':
optional: true optional: true
'@rolldown/binding-linux-arm64-gnu@1.2.4': '@rolldown/binding-linux-arm-gnueabihf@1.2.5':
optional: true optional: true
'@rolldown/binding-linux-arm64-musl@1.2.4': '@rolldown/binding-linux-arm64-gnu@1.2.5':
optional: true optional: true
'@rolldown/binding-linux-ppc64-gnu@1.2.4': '@rolldown/binding-linux-arm64-musl@1.2.5':
optional: true optional: true
'@rolldown/binding-linux-s390x-gnu@1.2.4': '@rolldown/binding-linux-ppc64-gnu@1.2.5':
optional: true optional: true
'@rolldown/binding-linux-x64-gnu@1.2.4': '@rolldown/binding-linux-s390x-gnu@1.2.5':
optional: true optional: true
'@rolldown/binding-linux-x64-musl@1.2.4': '@rolldown/binding-linux-x64-gnu@1.2.5':
optional: true optional: true
'@rolldown/binding-openharmony-arm64@1.2.4': '@rolldown/binding-linux-x64-musl@1.2.5':
optional: true optional: true
'@rolldown/binding-win32-arm64-msvc@1.2.4': '@rolldown/binding-openharmony-arm64@1.2.5':
optional: true optional: true
'@rolldown/binding-win32-x64-msvc@1.2.4': '@rolldown/binding-win32-arm64-msvc@1.2.5':
optional: true
'@rolldown/binding-win32-x64-msvc@1.2.5':
optional: true optional: true
'@rolldown/pluginutils@1.0.1': {} '@rolldown/pluginutils@1.0.1': {}
@@ -3480,7 +3489,7 @@ snapshots:
dependencies: dependencies:
'@types/estree': 1.0.9 '@types/estree': 1.0.9
estree-walker: 2.0.2 estree-walker: 2.0.2
picomatch: 4.0.5 picomatch: 4.0.7
'@sindresorhus/is@0.7.0': {} '@sindresorhus/is@0.7.0': {}
@@ -3567,7 +3576,7 @@ snapshots:
'@types/prop-types@15.7.15': {} '@types/prop-types@15.7.15': {}
'@types/react-dom@19.2.4(@types/react@19.2.18)': '@types/react-dom@19.2.5(@types/react@19.2.18)':
dependencies: dependencies:
'@types/react': 19.2.18 '@types/react': 19.2.18
@@ -3587,15 +3596,15 @@ snapshots:
dependencies: dependencies:
'@types/node': 26.2.0 '@types/node': 26.2.0
'@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/eslint-plugin@8.68.0(@typescript-eslint/parser@8.68.0(eslint@10.9.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.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.67.0(eslint@10.8.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/parser': 8.68.0(eslint@10.9.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
'@typescript-eslint/scope-manager': 8.67.0 '@typescript-eslint/scope-manager': 8.68.0
'@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/type-utils': 8.68.0(eslint@10.9.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/utils': 8.68.0(eslint@10.9.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)
'@typescript-eslint/visitor-keys': 8.67.0 '@typescript-eslint/visitor-keys': 8.68.0
eslint: 10.8.1(supports-color@10.2.2) eslint: 10.9.1(supports-color@10.2.2)
ignore: 7.0.6 ignore: 7.0.6
natural-compare: 1.4.0 natural-compare: 1.4.0
ts-api-utils: 2.5.0(typescript@6.0.3) ts-api-utils: 2.5.0(typescript@6.0.3)
@@ -3603,56 +3612,56 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@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/parser@8.68.0(eslint@10.9.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
dependencies: dependencies:
'@typescript-eslint/scope-manager': 8.67.0 '@typescript-eslint/scope-manager': 8.68.0
'@typescript-eslint/types': 8.67.0 '@typescript-eslint/types': 8.68.0
'@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/typescript-estree': 8.68.0(supports-color@10.2.2)(typescript@6.0.3)
'@typescript-eslint/visitor-keys': 8.67.0 '@typescript-eslint/visitor-keys': 8.68.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.9.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.67.0(supports-color@10.2.2)(typescript@6.0.3)': '@typescript-eslint/project-service@8.68.0(supports-color@10.2.2)(typescript@6.0.3)':
dependencies: dependencies:
'@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) '@typescript-eslint/tsconfig-utils': 8.68.0(typescript@6.0.3)
'@typescript-eslint/types': 8.67.0 '@typescript-eslint/types': 8.68.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.67.0': '@typescript-eslint/scope-manager@8.68.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.67.0 '@typescript-eslint/types': 8.68.0
'@typescript-eslint/visitor-keys': 8.67.0 '@typescript-eslint/visitor-keys': 8.68.0
'@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)': '@typescript-eslint/tsconfig-utils@8.68.0(typescript@6.0.3)':
dependencies: dependencies:
typescript: 6.0.3 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/type-utils@8.68.0(eslint@10.9.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)':
dependencies: dependencies:
'@typescript-eslint/types': 8.67.0 '@typescript-eslint/types': 8.68.0
'@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/typescript-estree': 8.68.0(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/utils': 8.68.0(eslint@10.9.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.9.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)
typescript: 6.0.3 typescript: 6.0.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/types@8.67.0': {} '@typescript-eslint/types@8.68.0': {}
'@typescript-eslint/typescript-estree@8.67.0(supports-color@10.2.2)(typescript@6.0.3)': '@typescript-eslint/typescript-estree@8.68.0(supports-color@10.2.2)(typescript@6.0.3)':
dependencies: dependencies:
'@typescript-eslint/project-service': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/project-service': 8.68.0(supports-color@10.2.2)(typescript@6.0.3)
'@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) '@typescript-eslint/tsconfig-utils': 8.68.0(typescript@6.0.3)
'@typescript-eslint/types': 8.67.0 '@typescript-eslint/types': 8.68.0
'@typescript-eslint/visitor-keys': 8.67.0 '@typescript-eslint/visitor-keys': 8.68.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
@@ -3662,20 +3671,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@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/utils@8.68.0(eslint@10.9.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.9.1(supports-color@10.2.2))
'@typescript-eslint/scope-manager': 8.67.0 '@typescript-eslint/scope-manager': 8.68.0
'@typescript-eslint/types': 8.67.0 '@typescript-eslint/types': 8.68.0
'@typescript-eslint/typescript-estree': 8.67.0(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/typescript-estree': 8.68.0(supports-color@10.2.2)(typescript@6.0.3)
eslint: 10.8.1(supports-color@10.2.2) eslint: 10.9.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.67.0': '@typescript-eslint/visitor-keys@8.68.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.67.0 '@typescript-eslint/types': 8.68.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):
@@ -3691,7 +3700,7 @@ 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.4: alova@3.5.5:
dependencies: dependencies:
'@alova/shared': 1.3.4 '@alova/shared': 1.3.4
rate-limiter-flexible: 5.0.5 rate-limiter-flexible: 5.0.5
@@ -4272,9 +4281,9 @@ snapshots:
escape-string-regexp@4.0.0: {} escape-string-regexp@4.0.0: {}
eslint-config-prettier@10.1.8(eslint@10.8.1(supports-color@10.2.2)): eslint-config-prettier@10.1.8(eslint@10.9.1(supports-color@10.2.2)):
dependencies: dependencies:
eslint: 10.8.1(supports-color@10.2.2) eslint: 10.9.1(supports-color@10.2.2)
eslint-scope@9.1.2: eslint-scope@9.1.2:
dependencies: dependencies:
@@ -4287,9 +4296,9 @@ snapshots:
eslint-visitor-keys@5.0.1: {} eslint-visitor-keys@5.0.1: {}
eslint@10.8.1(supports-color@10.2.2): eslint@10.9.1(supports-color@10.2.2):
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.9.1(supports-color@10.2.2))
'@eslint-community/regexpp': 4.12.2 '@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5(supports-color@10.2.2) '@eslint/config-array': 0.23.5(supports-color@10.2.2)
'@eslint/config-helpers': 0.7.0 '@eslint/config-helpers': 0.7.0
@@ -4435,9 +4444,9 @@ snapshots:
dependencies: dependencies:
pend: 1.2.0 pend: 1.2.0
fdir@6.5.0(picomatch@4.0.5): fdir@6.5.0(picomatch@4.0.7):
optionalDependencies: optionalDependencies:
picomatch: 4.0.5 picomatch: 4.0.7
figures@1.7.0: figures@1.7.0:
dependencies: dependencies:
@@ -4735,7 +4744,7 @@ snapshots:
imagemin-svgo@9.0.0: imagemin-svgo@9.0.0:
dependencies: dependencies:
is-svg: 4.4.0 is-svg: 4.4.0
svgo: 2.8.3 svgo: 2.8.4
imagemin-webp@6.1.0: imagemin-webp@6.1.0:
dependencies: dependencies:
@@ -5258,7 +5267,7 @@ snapshots:
picomatch@2.3.2: {} picomatch@2.3.2: {}
picomatch@4.0.5: {} picomatch@4.0.7: {}
pify@2.3.0: {} pify@2.3.0: {}
@@ -5423,34 +5432,35 @@ snapshots:
dependencies: dependencies:
glob: 7.2.3 glob: 7.2.3
rolldown@1.2.4: rolldown@1.2.5:
dependencies: dependencies:
'@oxc-project/types': 0.144.0 '@oxc-project/types': 0.146.0
'@rolldown/pluginutils': 1.0.1 '@rolldown/pluginutils': 1.0.1
optionalDependencies: optionalDependencies:
'@rolldown/binding-android-arm64': 1.2.4 '@rolldown/binding-android-arm-eabi': 1.2.5
'@rolldown/binding-darwin-arm64': 1.2.4 '@rolldown/binding-android-arm64': 1.2.5
'@rolldown/binding-darwin-x64': 1.2.4 '@rolldown/binding-darwin-arm64': 1.2.5
'@rolldown/binding-freebsd-x64': 1.2.4 '@rolldown/binding-darwin-x64': 1.2.5
'@rolldown/binding-linux-arm-gnueabihf': 1.2.4 '@rolldown/binding-freebsd-x64': 1.2.5
'@rolldown/binding-linux-arm64-gnu': 1.2.4 '@rolldown/binding-linux-arm-gnueabihf': 1.2.5
'@rolldown/binding-linux-arm64-musl': 1.2.4 '@rolldown/binding-linux-arm64-gnu': 1.2.5
'@rolldown/binding-linux-ppc64-gnu': 1.2.4 '@rolldown/binding-linux-arm64-musl': 1.2.5
'@rolldown/binding-linux-s390x-gnu': 1.2.4 '@rolldown/binding-linux-ppc64-gnu': 1.2.5
'@rolldown/binding-linux-x64-gnu': 1.2.4 '@rolldown/binding-linux-s390x-gnu': 1.2.5
'@rolldown/binding-linux-x64-musl': 1.2.4 '@rolldown/binding-linux-x64-gnu': 1.2.5
'@rolldown/binding-openharmony-arm64': 1.2.4 '@rolldown/binding-linux-x64-musl': 1.2.5
'@rolldown/binding-win32-arm64-msvc': 1.2.4 '@rolldown/binding-openharmony-arm64': 1.2.5
'@rolldown/binding-win32-x64-msvc': 1.2.4 '@rolldown/binding-win32-arm64-msvc': 1.2.5
'@rolldown/binding-win32-x64-msvc': 1.2.5
rollup-plugin-visualizer@7.1.1(rolldown@1.2.4): rollup-plugin-visualizer@7.1.1(rolldown@1.2.5):
dependencies: dependencies:
open: 11.0.1 open: 11.0.1
picomatch: 4.0.5 picomatch: 4.0.7
source-map: 0.8.0 source-map: 0.8.0
yargs: 18.1.0 yargs: 18.1.0
optionalDependencies: optionalDependencies:
rolldown: 1.2.4 rolldown: 1.2.5
run-applescript@7.1.0: {} run-applescript@7.1.0: {}
@@ -5627,7 +5637,7 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {} supports-preserve-symlinks-flag@1.0.0: {}
svgo@2.8.3: svgo@2.8.4:
dependencies: dependencies:
commander: 7.2.0 commander: 7.2.0
css-select: 4.3.0 css-select: 4.3.0
@@ -5667,8 +5677,8 @@ snapshots:
tinyglobby@0.2.17: tinyglobby@0.2.17:
dependencies: dependencies:
fdir: 6.5.0(picomatch@4.0.5) fdir: 6.5.0(picomatch@4.0.7)
picomatch: 4.0.5 picomatch: 4.0.7
to-buffer@1.2.2: to-buffer@1.2.2:
dependencies: dependencies:
@@ -5714,13 +5724,13 @@ snapshots:
dependencies: dependencies:
typescript: 6.0.3 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): typescript-eslint@8.68.0(eslint@10.9.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3):
dependencies: dependencies:
'@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/eslint-plugin': 8.68.0(@typescript-eslint/parser@8.68.0(eslint@10.9.1(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.9.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/parser': 8.68.0(eslint@10.9.1(supports-color@10.2.2))(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/typescript-estree': 8.68.0(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/utils': 8.68.0(eslint@10.9.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.9.1(supports-color@10.2.2)
typescript: 6.0.3 typescript: 6.0.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -5765,7 +5775,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.50.0)): vite-plugin-imagemin@0.6.1(supports-color@10.2.2)(vite@8.2.2(@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
@@ -5790,11 +5800,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.50.0) vite: 8.2.2(@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.50.0)): vite-prerender-plugin@0.5.13(vite@8.2.2(@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
@@ -5802,14 +5812,14 @@ 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.50.0) vite: 8.2.2(@types/node@26.2.0)(terser@5.50.0)
vite@8.2.1(@types/node@26.2.0)(terser@5.50.0): vite@8.2.2(@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.7
postcss: 8.5.26 postcss: 8.5.26
rolldown: 1.2.4 rolldown: 1.2.5
tinyglobby: 0.2.17 tinyglobby: 0.2.17
optionalDependencies: optionalDependencies:
'@types/node': 26.2.0 '@types/node': 26.2.0
+8 -12
View File
@@ -1,4 +1,4 @@
import { memo, useCallback, useContext, useEffect, useMemo, useState } from 'react'; import { memo, useContext, useEffect, useState } from 'react';
import ForwardIcon from '@mui/icons-material/Forward'; import ForwardIcon from '@mui/icons-material/Forward';
import { Box, Button, Paper, Typography } from '@mui/material'; import { Box, Button, Paper, Typography } from '@mui/material';
@@ -43,17 +43,13 @@ const SignIn = memo(() => {
} }
}); });
const updateLoginRequestValue = useMemo( const updateLoginRequestValue = updateValue((updater) =>
() => setSignInRequest(
updateValue((updater) => updater as unknown as (prevState: SignInRequest) => SignInRequest
setSignInRequest( )
updater as unknown as (prevState: SignInRequest) => SignInRequest
)
),
[]
); );
const signIn = useCallback(async () => { const signIn = async () => {
await callSignIn(signInRequest).catch((event: Error) => { await callSignIn(signInRequest).catch((event: Error) => {
if (event.message === 'Unauthorized') { if (event.message === 'Unauthorized') {
toast.warning(LL.INVALID_LOGIN()); toast.warning(LL.INVALID_LOGIN());
@@ -62,7 +58,7 @@ const SignIn = memo(() => {
} }
setProcessing(false); setProcessing(false);
}); });
}, [callSignIn, signInRequest, LL]); };
const validateAndSignIn = async () => { const validateAndSignIn = async () => {
setProcessing(true); setProcessing(true);
@@ -78,7 +74,7 @@ const SignIn = memo(() => {
} }
}; };
const submitOnEnter = useMemo(() => onEnterCallback(signIn), [signIn]); const submitOnEnter = onEnterCallback(signIn);
// get rid of scrollbar // get rid of scrollbar
useEffect(() => { useEffect(() => {
+1 -1
View File
@@ -2,7 +2,7 @@ import type { LogSettings, SystemStatus } from 'types';
import { alovaInstance } from './endpoints'; import { alovaInstance } from './endpoints';
// systemStatus - also used to ping in System Monitor for pinging // systemStatus - also used in System Monitor to ping the ESP
export const readSystemStatus = () => export const readSystemStatus = () =>
alovaInstance.Get<SystemStatus>('/rest/systemStatus'); alovaInstance.Get<SystemStatus>('/rest/systemStatus');
@@ -1,4 +1,4 @@
import { useState } from 'react'; import { useContext, useEffect, useState } from 'react';
import CancelIcon from '@mui/icons-material/Cancel'; import CancelIcon from '@mui/icons-material/Cancel';
import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew'; import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew';
@@ -31,6 +31,7 @@ import {
useLayoutTitle useLayoutTitle
} from 'components'; } from 'components';
import { toast } from 'components/toast'; import { toast } from 'components/toast';
import { AuthenticatedContext } from 'contexts/authentication';
import { useI18nContext } from 'i18n/i18n-react'; import { useI18nContext } from 'i18n/i18n-react';
import { numberValue, updateValueDirty, useRest } from 'utils'; import { numberValue, updateValueDirty, useRest } from 'utils';
import { ValidationError, validate } from 'validators'; import { ValidationError, validate } from 'validators';
@@ -68,6 +69,14 @@ const ApplicationSettings = () => {
update: writeSettings update: writeSettings
}); });
// the menu drawer reads the system name from the authentication context
const { setSystemName } = useContext(AuthenticatedContext);
useEffect(() => {
if (origData?.system_name !== undefined) {
setSystemName(origData.system_name);
}
}, [origData?.system_name, setSystemName]);
const [restarting, setRestarting] = useState<boolean>(); const [restarting, setRestarting] = useState<boolean>();
const { LL } = useI18nContext(); const { LL } = useI18nContext();
+30 -28
View File
@@ -1,4 +1,4 @@
import { memo, useContext, useMemo, useState } from 'react'; import { memo, useContext, useEffect, useState } from 'react';
import { Link } from 'react-router'; import { Link } from 'react-router';
import CancelIcon from '@mui/icons-material/Cancel'; import CancelIcon from '@mui/icons-material/Cancel';
@@ -412,7 +412,7 @@ const getPlatform = (data: VersionData): string => {
const Version = () => { const Version = () => {
const { LL, locale } = useI18nContext(); const { LL, locale } = useI18nContext();
const { me, versions } = useContext(AuthenticatedContext); const { me, versions, refreshVersions } = useContext(AuthenticatedContext);
const [restarting, setRestarting] = useState<boolean>(false); const [restarting, setRestarting] = useState<boolean>(false);
const [confirmFactoryReset, setConfirmFactoryReset] = useState<boolean>(false); const [confirmFactoryReset, setConfirmFactoryReset] = useState<boolean>(false);
@@ -430,25 +430,27 @@ const Version = () => {
const [showVersionInfo, setShowVersionInfo] = useState<number>(0); // 1 = stable, 2 = dev, 3 = partition const [showVersionInfo, setShowVersionInfo] = useState<number>(0); // 1 = stable, 2 = dev, 3 = partition
const [firmwareSize, setFirmwareSize] = useState<number>(0); const [firmwareSize, setFirmwareSize] = useState<number>(0);
const latestVersion = useMemo<VersionInfo | undefined>( const latestVersion: VersionInfo | undefined = versions?.stable
() => ? { version: versions.stable.version, date: versions.stable.date }
versions?.stable : undefined;
? { version: versions.stable.version, date: versions.stable.date } const latestDevVersion: VersionInfo | undefined = versions?.dev
: undefined, ? { version: versions.dev.version, date: versions.dev.date }
[versions?.stable] : undefined;
);
const latestDevVersion = useMemo<VersionInfo | undefined>(
() =>
versions?.dev
? { version: versions.dev.version, date: versions.dev.date }
: undefined,
[versions?.dev]
);
const usingDevVersion = versions?.current?.type === 'dev'; const usingDevVersion = versions?.current?.type === 'dev';
const stableUpgradeAvailable = versions?.stable?.upgradeable ?? false; const stableUpgradeAvailable = versions?.stable?.upgradeable ?? false;
const devUpgradeAvailable = versions?.dev?.upgradeable ?? false; const devUpgradeAvailable = versions?.dev?.upgradeable ?? false;
const internetLive = Boolean(versions?.stable || versions?.dev); const internetLive = Boolean(versions?.stable || versions?.dev);
useEffect(() => {
if (internetLive) {
return;
}
const interval = setInterval(() => {
void refreshVersions();
}, 3000);
return () => clearInterval(interval);
}, [internetLive, refreshVersions]);
const { send: sendSetPartition } = useRequest( const { send: sendSetPartition } = useRequest(
(partition: string) => callAction({ action: 'setPartition', param: partition }), (partition: string) => callAction({ action: 'setPartition', param: partition }),
{ immediate: false } { immediate: false }
@@ -805,8 +807,7 @@ const Version = () => {
</> </>
) : ( ) : (
<Typography sx={{ mt: 2 }} color="warning"> <Typography sx={{ mt: 2 }} color="warning">
<WarningIcon color="warning" sx={{ verticalAlign: 'middle', mr: 2 }} /> {LL.INTERNET_CONNECTION_CHECK()}&hellip;
{LL.INTERNET_CONNECTION_REQUIRED()}
</Typography> </Typography>
)} )}
{me.admin && ( {me.admin && (
@@ -899,7 +900,7 @@ const Version = () => {
startIcon={<PowerSettingsNewIcon />} startIcon={<PowerSettingsNewIcon />}
variant="outlined" variant="outlined"
onClick={doRestart} onClick={doRestart}
color="error" color="success"
> >
{LL.RESTART()} {LL.RESTART()}
</Button> </Button>
@@ -910,20 +911,13 @@ const Version = () => {
sx={{ sx={{
mt: 2, mt: 2,
display: 'flex', display: 'flex',
justifyContent: 'flex-end', justifyContent: 'space-between',
alignItems: 'center',
flexWrap: 'nowrap', flexWrap: 'nowrap',
whiteSpace: 'nowrap', whiteSpace: 'nowrap',
gap: 1 gap: 1
}} }}
> >
<Button
startIcon={<PowerSettingsNewIcon />}
variant="outlined"
onClick={handleRestartClick}
color="error"
>
{LL.RESTART()}
</Button>
{!data.disable_reset && ( {!data.disable_reset && (
<Button <Button
startIcon={<SettingsBackupRestoreIcon />} startIcon={<SettingsBackupRestoreIcon />}
@@ -934,6 +928,14 @@ const Version = () => {
{LL.FACTORY_RESET()} {LL.FACTORY_RESET()}
</Button> </Button>
)} )}
<Button
startIcon={<PowerSettingsNewIcon />}
variant="outlined"
onClick={handleRestartClick}
color="success"
>
{LL.RESTART()}
</Button>
</Box> </Box>
</> </>
)} )}
@@ -1,10 +1,8 @@
import { memo } from 'react'; import { memo, useContext } from 'react';
import { Box, Divider, Drawer, Toolbar, Typography, styled } from '@mui/material'; import { Box, Divider, Drawer, Toolbar, Typography, styled } from '@mui/material';
import { readSettings } from 'api/app'; import { AuthenticatedContext } from 'contexts/authentication';
import { useRequest } from 'alova/client';
import { PROJECT_NAME } from 'env'; import { PROJECT_NAME } from 'env';
import { DRAWER_WIDTH } from './Layout'; import { DRAWER_WIDTH } from './Layout';
@@ -27,8 +25,7 @@ interface LayoutDrawerProps {
} }
const LayoutDrawerComponent = ({ mobileOpen, onClose }: LayoutDrawerProps) => { const LayoutDrawerComponent = ({ mobileOpen, onClose }: LayoutDrawerProps) => {
const { data: settings } = useRequest(readSettings); const { systemName } = useContext(AuthenticatedContext);
const system_name = settings?.system_name;
const drawer = ( const drawer = (
<> <>
@@ -43,9 +40,9 @@ const LayoutDrawerComponent = ({ mobileOpen, onClose }: LayoutDrawerProps) => {
}} }}
> >
<Typography>{PROJECT_NAME}</Typography> <Typography>{PROJECT_NAME}</Typography>
{system_name && ( {systemName && (
<Typography color="secondary" variant="body2"> <Typography color="secondary" variant="body2">
{system_name} {systemName}
</Typography> </Typography>
)} )}
</Box> </Box>
@@ -1,4 +1,4 @@
import { useCallback, useEffect, useMemo, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import type { FC } from 'react'; import type { FC } from 'react';
import { useNavigate } from 'react-router'; import { useNavigate } from 'react-router';
@@ -23,6 +23,7 @@ const Authentication: FC<RequiredChildrenProps> = ({ children }) => {
const [initialized, setInitialized] = useState<boolean>(false); const [initialized, setInitialized] = useState<boolean>(false);
const [me, setMe] = useState<Me>(); const [me, setMe] = useState<Me>();
const [versions, setVersions] = useState<VersionsResponse>(); const [versions, setVersions] = useState<VersionsResponse>();
const [systemName, setSystemName] = useState<string>();
const { send: sendVerifyAuthorization } = useRequest(verifyAuthorization(), { const { send: sendVerifyAuthorization } = useRequest(verifyAuthorization(), {
immediate: false immediate: false
@@ -33,7 +34,9 @@ const Authentication: FC<RequiredChildrenProps> = ({ children }) => {
{ immediate: false } { immediate: false }
) )
.onSuccess((event) => { .onSuccess((event) => {
setVersions(event.data as VersionsResponse); const response = event.data as VersionsResponse;
setVersions(response);
setSystemName(response.system_name);
}) })
.onError(() => { .onError(() => {
setVersions(undefined); setVersions(undefined);
@@ -60,6 +63,7 @@ const Authentication: FC<RequiredChildrenProps> = ({ children }) => {
AuthenticationApi.clearAccessToken(); AuthenticationApi.clearAccessToken();
setMe(undefined); setMe(undefined);
setVersions(undefined); setVersions(undefined);
setSystemName(undefined);
if (doRedirect) { if (doRedirect) {
void navigate('/', { replace: true }); void navigate('/', { replace: true });
} }
@@ -88,21 +92,20 @@ const Authentication: FC<RequiredChildrenProps> = ({ children }) => {
void refresh(); void refresh();
}, [refresh]); }, [refresh]);
const obj = useMemo(
() => ({
signIn,
signOut,
refresh,
refreshVersions,
...(me && { me }),
...(versions && { versions })
}),
[signIn, signOut, me, refresh, refreshVersions, versions]
);
if (initialized) { if (initialized) {
return ( return (
<AuthenticationContext.Provider value={obj}> <AuthenticationContext.Provider
value={{
signIn,
signOut,
refresh,
refreshVersions,
setSystemName,
...(me && { me }),
...(versions && { versions }),
...(systemName !== undefined && { systemName })
}}
>
{children} {children}
</AuthenticationContext.Provider> </AuthenticationContext.Provider>
); );
@@ -9,6 +9,8 @@ export interface AuthenticationContextValue {
me?: Me; me?: Me;
versions?: VersionsResponse; versions?: VersionsResponse;
refreshVersions: () => Promise<void>; refreshVersions: () => Promise<void>;
systemName?: string;
setSystemName: (systemName: string) => void;
} }
const AuthenticationContextDefaultValue = {} as AuthenticationContextValue; const AuthenticationContextDefaultValue = {} as AuthenticationContextValue;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const cs: Translation = { const cs: Translation = {
LANGUAGE: 'Jazyk', LANGUAGE: 'Jazyk',
RETRY: 'Zkusit znovu', RETRY: 'Zkusit znovu',
LOADING: 'Načítání',
IS_REQUIRED: '{0} je vyžadováno', IS_REQUIRED: '{0} je vyžadováno',
SIGN_IN: 'Přihlásit se', SIGN_IN: 'Přihlásit se',
SIGN_OUT: 'Odhlásit se', SIGN_OUT: 'Odhlásit se',
@@ -50,8 +49,6 @@ const cs: Translation = {
SETTINGS: 'Nastavení', SETTINGS: 'Nastavení',
UPDATED_OF: '{0} Aktualizováno', UPDATED_OF: '{0} Aktualizováno',
UPDATE_OF: '{0} Aktualizace', UPDATE_OF: '{0} Aktualizace',
REMOVED_OF: '{0} Odebráno',
DELETION_OF: '{0} Smazání',
OFFSET: 'Offset', OFFSET: 'Offset',
FACTOR: 'Faktor', FACTOR: 'Faktor',
FREQ: 'Frekvence', FREQ: 'Frekvence',
@@ -64,17 +61,14 @@ const cs: Translation = {
TEMP_SENSORS: 'Teplotní senzory', TEMP_SENSORS: 'Teplotní senzory',
WRITE_CMD_SENT: 'Zapisovací příkaz odeslán', WRITE_CMD_SENT: 'Zapisovací příkaz odeslán',
EMS_BUS_WARNING: 'EMS sběrnice je odpojena. Pokud toto varování přetrvává i po několika sekundách, zkontrolujte nastavení a profil desky', EMS_BUS_WARNING: 'EMS sběrnice je odpojena. Pokud toto varování přetrvává i po několika sekundách, zkontrolujte nastavení a profil desky',
EMS_BUS_SCANNING: 'Prohledávání zařízení na EMS sběrnici...',
CONNECTED: 'Připojeno', CONNECTED: 'Připojeno',
TX_ISSUES: 'Problémy s Tx - zkontrolujte režim Tx', TX_ISSUES: 'Problémy s Tx - zkontrolujte režim Tx',
DISCONNECTED: 'Odpojeno', DISCONNECTED: 'Odpojeno',
EMS_SCAN: 'Opravdu chcete zahájit úplné skenování zařízení na EMS sběrnici?',
DATA_TRAFFIC: 'Datový provoz', DATA_TRAFFIC: 'Datový provoz',
EMS_DEVICE: 'EMS zařízení', EMS_DEVICE: 'EMS zařízení',
SUCCESS: 'ÚSPĚCH', SUCCESS: 'ÚSPĚCH',
FAIL: 'SELHÁNÍ', FAIL: 'SELHÁNÍ',
QUALITY: 'KVALITA', QUALITY: 'KVALITA',
SCAN: 'Skenovat',
STATUS_NAMES: [ STATUS_NAMES: [
'Přijaté EMS telegramy (Rx)', 'Přijaté EMS telegramy (Rx)',
'Čtení EMS (Tx)', 'Čtení EMS (Tx)',
@@ -125,7 +119,6 @@ const cs: Translation = {
ENUM_FORMAT: 'Formát enum v API/MQTT', ENUM_FORMAT: 'Formát enum v API/MQTT',
INDEX: 'Index', INDEX: 'Index',
ENABLE_PARASITE: 'Povolit 1-Wire parazitní napájení', ENABLE_PARASITE: 'Povolit 1-Wire parazitní napájení',
LOGGING: 'Protokolování',
LOG_HEX: 'Protokolovat EMS telegramy v hexadecimálním formátu', LOG_HEX: 'Protokolovat EMS telegramy v hexadecimálním formátu',
ENABLE_SYSLOG: 'Povolit Syslog', ENABLE_SYSLOG: 'Povolit Syslog',
LOG_LEVEL: 'Úroveň protokolování', LOG_LEVEL: 'Úroveň protokolování',
@@ -170,7 +163,6 @@ const cs: Translation = {
CLOSE: 'Zavřít', CLOSE: 'Zavřít',
USE: 'Použít', USE: 'Použít',
FACTORY_RESET: 'Obnovení továrního nastavení', FACTORY_RESET: 'Obnovení továrního nastavení',
SYSTEM_FACTORY_TEXT: 'Zařízení bylo obnoveno do továrního nastavení a nyní se restartuje',
SYSTEM_FACTORY_TEXT_DIALOG: 'Opravdu chcete resetovat zařízení EMS-ESP do továrního nastavení?', SYSTEM_FACTORY_TEXT_DIALOG: 'Opravdu chcete resetovat zařízení EMS-ESP do továrního nastavení?',
AVAILABLE_VERSION: 'Nejnovější dostupné verze', AVAILABLE_VERSION: 'Nejnovější dostupné verze',
STABLE: 'Stabilní', STABLE: 'Stabilní',
@@ -255,9 +247,7 @@ const cs: Translation = {
NETWORK_SCAN: 'Skenovat WiFi sítě', NETWORK_SCAN: 'Skenovat WiFi sítě',
IDLE: 'Nečinný', IDLE: 'Nečinný',
LOST: 'Ztraceno', LOST: 'Ztraceno',
SCANNING: 'Skenování',
SCAN_AGAIN: 'Skenovat znovu', SCAN_AGAIN: 'Skenovat znovu',
NETWORK_SCANNER: 'Síťový skener',
NETWORK_NO_WIFI: 'Nenalezeny žádné WiFi sítě', NETWORK_NO_WIFI: 'Nenalezeny žádné WiFi sítě',
NETWORK_BLANK_BSSID: 'ponechte prázdné pokud použijete jen SSID', NETWORK_BLANK_BSSID: 'ponechte prázdné pokud použijete jen SSID',
TX_POWER: 'Vysílací výkon', TX_POWER: 'Vysílací výkon',
@@ -292,9 +282,6 @@ const cs: Translation = {
ONCHANGE: 'Při změně', ONCHANGE: 'Při změně',
CONDITION: 'Podmínka', CONDITION: 'Podmínka',
SCHEDULE_UPDATED: 'Harmonogram aktualizován', SCHEDULE_UPDATED: 'Harmonogram aktualizován',
SCHEDULE_TIMER_1: 'při startu',
SCHEDULE_TIMER_2: 'každou minutu',
SCHEDULE_TIMER_3: 'každou hodinu',
CUSTOM_ENTITIES: 'Vlastní entity', CUSTOM_ENTITIES: 'Vlastní entity',
ENTITIES_HELP_1: 'Definujte vlastní EMS entity nebo dynamické uživatelské proměnné', ENTITIES_HELP_1: 'Definujte vlastní EMS entity nebo dynamické uživatelské proměnné',
ENTITIES_UPDATED: 'Entity aktualizovány', ENTITIES_UPDATED: 'Entity aktualizovány',
@@ -310,9 +297,7 @@ const cs: Translation = {
ACTIVELOW: 'Aktivní nízká', ACTIVELOW: 'Aktivní nízká',
UNCHANGED: 'Beze změny', UNCHANGED: 'Beze změny',
ALWAYS: 'Vždy', ALWAYS: 'Vždy',
ACTIVITY: 'Aktivita',
CONFIGURE: '{0} Konfigurovat', CONFIGURE: '{0} Konfigurovat',
SYSTEM_MEMORY: 'Paměť systému',
APPLICATION_SETTINGS_1: 'Upravit nastavení aplikace EMS-ESP', APPLICATION_SETTINGS_1: 'Upravit nastavení aplikace EMS-ESP',
SECURITY_1: 'Přidat nebo odebrat uživatele', SECURITY_1: 'Přidat nebo odebrat uživatele',
DOWNLOAD_UPLOAD_1: 'Stáhnout a nahrát nastavení a firmware', DOWNLOAD_UPLOAD_1: 'Stáhnout a nahrát nastavení a firmware',
@@ -324,7 +309,6 @@ const cs: Translation = {
RENAME: 'Přejmenovat', RENAME: 'Přejmenovat',
ENABLE_MODBUS: 'Povolit Modbus', ENABLE_MODBUS: 'Povolit Modbus',
VIEW_LOG: 'Zobrazit záznam pro diagnostiku problémů', VIEW_LOG: 'Zobrazit záznam pro diagnostiku problémů',
UPLOAD_DRAG: 'přetáhněte soubor sem nebo klikněte pro výběr',
SERVICES: 'Služby', SERVICES: 'Služby',
ALLVALUES: 'Všechny hodnoty', ALLVALUES: 'Všechny hodnoty',
SPECIAL_FUNCTIONS: 'Speciální funkce', SPECIAL_FUNCTIONS: 'Speciální funkce',
@@ -350,10 +334,8 @@ const cs: Translation = {
THIS_VERSION: 'Tato verze', THIS_VERSION: 'Tato verze',
PLATFORM: 'Platforma', PLATFORM: 'Platforma',
RELEASE_TYPE: 'Typ sestavení', RELEASE_TYPE: 'Typ sestavení',
INTERNET_CONNECTION_REQUIRED: 'Pro automatickou kontrolu a instalaci aktualizací je třeba internetové připojení',
SWITCH_RELEASE_TYPE: 'Přepnout na {0} verzi', SWITCH_RELEASE_TYPE: 'Přepnout na {0} verzi',
FIRMWARE_VERSION_INFO: 'Informace o verzi firmwaru', FIRMWARE_VERSION_INFO: 'Informace o verzi firmwaru',
NO_DATA: 'žádné údaje',
USER_PROFILE: 'Uživatelský profil', USER_PROFILE: 'Uživatelský profil',
STORED_VERSIONS: 'Uložené verze', STORED_VERSIONS: 'Uložené verze',
ONLINE_HELP: 'online nápověda', ONLINE_HELP: 'online nápověda',
@@ -364,10 +346,10 @@ const cs: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email byl úspěšně odeslán', TEST_EMAIL_SUCCESSFUL: 'Test email byl úspěšně odeslán',
SYSTEM_NAME: 'Název systému', SYSTEM_NAME: 'Název systému',
COMMANDS: 'Příkazy', COMMANDS: 'Příkazy',
COMMANDS_UPDATED: 'Příkazy byly aktualizovány',
COMMANDS_HELP_1: 'Definujte vlastní příkazy pro magistrali EMS', COMMANDS_HELP_1: 'Definujte vlastní příkazy pro magistrali EMS',
COMMAND_SENT: 'Příkaz odeslán', COMMAND_SENT: 'Příkaz odeslán',
RUN: 'Spustit příkaz' RUN: 'Spustit příkaz',
INTERNET_CONNECTION_CHECK: 'Kontrola online pro dostupné verze'
}; };
export default cs; export default cs;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const de: Translation = { const de: Translation = {
LANGUAGE: 'Sprache', LANGUAGE: 'Sprache',
RETRY: 'Neuer Versuch', RETRY: 'Neuer Versuch',
LOADING: 'Laden',
IS_REQUIRED: '{0} ist erforderlich', IS_REQUIRED: '{0} ist erforderlich',
SIGN_IN: 'Einloggen', SIGN_IN: 'Einloggen',
SIGN_OUT: 'Ausloggen', SIGN_OUT: 'Ausloggen',
@@ -50,8 +49,6 @@ const de: Translation = {
SETTINGS: 'Einstellungen', SETTINGS: 'Einstellungen',
UPDATED_OF: '{0} Aktualisiert', UPDATED_OF: '{0} Aktualisiert',
UPDATE_OF: '{0} Aktualisieren', UPDATE_OF: '{0} Aktualisieren',
REMOVED_OF: '{0} Entfernt',
DELETION_OF: '{0} Löschung',
OFFSET: 'Position', OFFSET: 'Position',
FACTOR: 'Faktor', FACTOR: 'Faktor',
FREQ: 'Frequenz', FREQ: 'Frequenz',
@@ -64,17 +61,14 @@ const de: Translation = {
TEMP_SENSORS: 'Temperatursensoren', TEMP_SENSORS: 'Temperatursensoren',
WRITE_CMD_SENT: 'Befehl schreiben wurde gesendet', WRITE_CMD_SENT: 'Befehl schreiben wurde gesendet',
EMS_BUS_WARNING: 'EMS-Bus getrennt. Wenn diese Warnung nach einigen Sekunden immer noch besteht, überprüfen Sie bitte die Einstellungen und das Board-Profil.', EMS_BUS_WARNING: 'EMS-Bus getrennt. Wenn diese Warnung nach einigen Sekunden immer noch besteht, überprüfen Sie bitte die Einstellungen und das Board-Profil.',
EMS_BUS_SCANNING: 'Suche nach EMS Geräten...',
CONNECTED: 'Verbunden', CONNECTED: 'Verbunden',
TX_ISSUES: 'Tx-Probleme - Versuchen Sie einen anderen Tx-Modus', TX_ISSUES: 'Tx-Probleme - Versuchen Sie einen anderen Tx-Modus',
DISCONNECTED: 'Getrennt', DISCONNECTED: 'Getrennt',
EMS_SCAN: 'Möchten Sie wirklich eine vollständige Gerätesuche des EMS-Busses starten?',
DATA_TRAFFIC: 'Datenverkehr', DATA_TRAFFIC: 'Datenverkehr',
EMS_DEVICE: 'EMS Gerät', EMS_DEVICE: 'EMS Gerät',
SUCCESS: 'ERFOLG', SUCCESS: 'ERFOLG',
FAIL: 'FEHLER', FAIL: 'FEHLER',
QUALITY: 'QUALITÄT', QUALITY: 'QUALITÄT',
SCAN: 'Suche',
STATUS_NAMES: [ STATUS_NAMES: [
'EMS-Telegramme empfangen (Rx)', 'EMS-Telegramme empfangen (Rx)',
'EMS-Telegramme gelesen (Tx)', 'EMS-Telegramme gelesen (Tx)',
@@ -125,7 +119,6 @@ const de: Translation = {
ENUM_FORMAT: 'Enum Format API/MQTT', ENUM_FORMAT: 'Enum Format API/MQTT',
INDEX: 'Index', INDEX: 'Index',
ENABLE_PARASITE: '1-Wire parasitäre Stomversorgung', ENABLE_PARASITE: '1-Wire parasitäre Stomversorgung',
LOGGING: 'Protokollierung',
LOG_HEX: 'EMS-Telegramme hexadezimal protokollieren', LOG_HEX: 'EMS-Telegramme hexadezimal protokollieren',
ENABLE_SYSLOG: 'Syslog aktivieren', ENABLE_SYSLOG: 'Syslog aktivieren',
LOG_LEVEL: 'Protokollebene', LOG_LEVEL: 'Protokollebene',
@@ -170,7 +163,6 @@ const de: Translation = {
CLOSE: 'Schließen', CLOSE: 'Schließen',
USE: 'Verwenden Sie', USE: 'Verwenden Sie',
FACTORY_RESET: 'Werkseinstellung', FACTORY_RESET: 'Werkseinstellung',
SYSTEM_FACTORY_TEXT: 'EMS-ESP wurde auf Werkseinstellung gesetzt und startet als Zugangspunkt neu.',
SYSTEM_FACTORY_TEXT_DIALOG: 'Sind Sie sicher, alle Einstellungen auf Werkseinstellung zu setzen?', SYSTEM_FACTORY_TEXT_DIALOG: 'Sind Sie sicher, alle Einstellungen auf Werkseinstellung zu setzen?',
AVAILABLE_VERSION: 'Neuesten verfügbaren Versionen', AVAILABLE_VERSION: 'Neuesten verfügbaren Versionen',
STABLE: 'Stabil', STABLE: 'Stabil',
@@ -255,9 +247,7 @@ const de: Translation = {
NETWORK_SCAN: 'Suche nach WiFi-Netzwerken', NETWORK_SCAN: 'Suche nach WiFi-Netzwerken',
IDLE: 'Leerlauf', IDLE: 'Leerlauf',
LOST: 'Verloren', LOST: 'Verloren',
SCANNING: 'Suche',
SCAN_AGAIN: 'Erneute Suche', SCAN_AGAIN: 'Erneute Suche',
NETWORK_SCANNER: 'Netzwerksuche',
NETWORK_NO_WIFI: 'Keine WiFi-Netzwerke gefunden', NETWORK_NO_WIFI: 'Keine WiFi-Netzwerke gefunden',
NETWORK_BLANK_BSSID: 'Freilassen, um nur SSID für die Verbindung zu nutzen.', NETWORK_BLANK_BSSID: 'Freilassen, um nur SSID für die Verbindung zu nutzen.',
TX_POWER: 'Tx Leistung', TX_POWER: 'Tx Leistung',
@@ -292,9 +282,6 @@ const de: Translation = {
ONCHANGE: 'Bei Änderung', ONCHANGE: 'Bei Änderung',
CONDITION: 'Zustand', CONDITION: 'Zustand',
SCHEDULE_UPDATED: 'Zeitplan aktualisiert', SCHEDULE_UPDATED: 'Zeitplan aktualisiert',
SCHEDULE_TIMER_1: 'beim Start',
SCHEDULE_TIMER_2: 'jede Minute',
SCHEDULE_TIMER_3: 'jede Stunde',
CUSTOM_ENTITIES: 'Individuelle Entitäten', CUSTOM_ENTITIES: 'Individuelle Entitäten',
ENTITIES_HELP_1: 'Definition eigener EMS-Werte oder dynamischer Variablen', ENTITIES_HELP_1: 'Definition eigener EMS-Werte oder dynamischer Variablen',
ENTITIES_UPDATED: 'Entitäten gespeichert', ENTITIES_UPDATED: 'Entitäten gespeichert',
@@ -310,9 +297,7 @@ const de: Translation = {
ACTIVELOW: 'Aktiv Negativ', ACTIVELOW: 'Aktiv Negativ',
UNCHANGED: 'Unverändert', UNCHANGED: 'Unverändert',
ALWAYS: 'Immer', ALWAYS: 'Immer',
ACTIVITY: 'Aktivität',
CONFIGURE: 'Konfiguriere {0}', CONFIGURE: 'Konfiguriere {0}',
SYSTEM_MEMORY: 'Systemspeicher',
APPLICATION_SETTINGS_1: 'Ändern Sie die EMS-ESP-Anwendungseinstellungen.', APPLICATION_SETTINGS_1: 'Ändern Sie die EMS-ESP-Anwendungseinstellungen.',
SECURITY_1: 'Benutzer hinzufügen oder entfernen', SECURITY_1: 'Benutzer hinzufügen oder entfernen',
DOWNLOAD_UPLOAD_1: 'Einstellungen und Firmware herunterladen/hochladen', DOWNLOAD_UPLOAD_1: 'Einstellungen und Firmware herunterladen/hochladen',
@@ -324,7 +309,6 @@ const de: Translation = {
RENAME: 'Umbenennen', RENAME: 'Umbenennen',
ENABLE_MODBUS: 'Modbus aktivieren', ENABLE_MODBUS: 'Modbus aktivieren',
VIEW_LOG: 'Sehen Sie sich das Protokoll an, um Probleme zu diagnostizieren.', VIEW_LOG: 'Sehen Sie sich das Protokoll an, um Probleme zu diagnostizieren.',
UPLOAD_DRAG: 'Ziehen Sie eine Datei hierher oder klicken Sie, um eine auszuwählen.',
SERVICES: 'Dienste', SERVICES: 'Dienste',
ALLVALUES: 'Alle Werte', ALLVALUES: 'Alle Werte',
SPECIAL_FUNCTIONS: 'Sonderfunktionen', SPECIAL_FUNCTIONS: 'Sonderfunktionen',
@@ -350,10 +334,8 @@ const de: Translation = {
THIS_VERSION: 'Diese Version', THIS_VERSION: 'Diese Version',
PLATFORM: 'Plattform', PLATFORM: 'Plattform',
RELEASE_TYPE: 'Release Typ', RELEASE_TYPE: 'Release Typ',
INTERNET_CONNECTION_REQUIRED: 'Für die automatische Versionsprüfung und Aktualisierung ist eine Internetverbindung erforderlich',
SWITCH_RELEASE_TYPE: 'Zum {0}-Release wechseln', SWITCH_RELEASE_TYPE: 'Zum {0}-Release wechseln',
FIRMWARE_VERSION_INFO: 'Firmware-Versionsinformation', FIRMWARE_VERSION_INFO: 'Firmware-Versionsinformation',
NO_DATA: 'Keine Daten',
USER_PROFILE: 'Benutzerprofil', USER_PROFILE: 'Benutzerprofil',
STORED_VERSIONS: 'Gespeicherte Versionen', STORED_VERSIONS: 'Gespeicherte Versionen',
ONLINE_HELP: 'Online-Hilfe', ONLINE_HELP: 'Online-Hilfe',
@@ -364,10 +346,10 @@ const de: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email erfolgreich gesendet', TEST_EMAIL_SUCCESSFUL: 'Test email erfolgreich gesendet',
SYSTEM_NAME: 'Systemname', SYSTEM_NAME: 'Systemname',
COMMANDS: 'Befehle', COMMANDS: 'Befehle',
COMMANDS_UPDATED: 'Befehle wurden aktualisiert',
COMMANDS_HELP_1: 'Definieren Sie eigene Befehle für die EMS-Magistral', COMMANDS_HELP_1: 'Definieren Sie eigene Befehle für die EMS-Magistral',
COMMAND_SENT: 'Befehl gesendet', COMMAND_SENT: 'Befehl gesendet',
RUN: 'Befehl ausführen' RUN: 'Befehl ausführen',
INTERNET_CONNECTION_CHECK: 'Online-Prüfung auf verfügbare Versionen'
}; };
export default de; export default de;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const en: Translation = { const en: Translation = {
LANGUAGE: 'Language', LANGUAGE: 'Language',
RETRY: 'Retry', RETRY: 'Retry',
LOADING: 'Loading',
IS_REQUIRED: '{0} is required', IS_REQUIRED: '{0} is required',
SIGN_IN: 'Sign In', SIGN_IN: 'Sign In',
SIGN_OUT: 'Sign Out', SIGN_OUT: 'Sign Out',
@@ -50,8 +49,6 @@ const en: Translation = {
SETTINGS: 'Settings', SETTINGS: 'Settings',
UPDATED_OF: '{0} Updated', UPDATED_OF: '{0} Updated',
UPDATE_OF: '{0} Update', UPDATE_OF: '{0} Update',
REMOVED_OF: '{0} Removed',
DELETION_OF: '{0} Deletion',
OFFSET: 'Offset', OFFSET: 'Offset',
FACTOR: 'Factor', FACTOR: 'Factor',
FREQ: 'Frequency', FREQ: 'Frequency',
@@ -64,17 +61,14 @@ const en: Translation = {
TEMP_SENSORS: 'Temperature Sensors', TEMP_SENSORS: 'Temperature Sensors',
WRITE_CMD_SENT: 'Write command sent', WRITE_CMD_SENT: 'Write command sent',
EMS_BUS_WARNING: 'EMS bus disconnected. If this warning still persists after a few seconds please check settings and board profile', EMS_BUS_WARNING: 'EMS bus disconnected. If this warning still persists after a few seconds please check settings and board profile',
EMS_BUS_SCANNING: 'Scanning for EMS devices...',
CONNECTED: 'Connected', CONNECTED: 'Connected',
TX_ISSUES: 'Tx issues - check Tx Mode', TX_ISSUES: 'Tx issues - check Tx Mode',
DISCONNECTED: 'Disconnected', DISCONNECTED: 'Disconnected',
EMS_SCAN: 'Are you sure you want to initiate a full device scan of the EMS bus?',
DATA_TRAFFIC: 'Data Traffic', DATA_TRAFFIC: 'Data Traffic',
EMS_DEVICE: 'EMS Device', EMS_DEVICE: 'EMS Device',
SUCCESS: 'SUCCESS', SUCCESS: 'SUCCESS',
FAIL: 'FAIL', FAIL: 'FAIL',
QUALITY: 'QUALITY', QUALITY: 'QUALITY',
SCAN: 'Scan',
STATUS_NAMES: [ STATUS_NAMES: [
'EMS Telegrams Received (Rx)', 'EMS Telegrams Received (Rx)',
'EMS Reads (Tx)', 'EMS Reads (Tx)',
@@ -125,7 +119,6 @@ const en: Translation = {
ENUM_FORMAT: 'Enum Format API/MQTT', ENUM_FORMAT: 'Enum Format API/MQTT',
INDEX: 'Index', INDEX: 'Index',
ENABLE_PARASITE: 'Enable 1-Wire Parasite-Power', ENABLE_PARASITE: 'Enable 1-Wire Parasite-Power',
LOGGING: 'Logging',
LOG_HEX: 'Log EMS telegrams in hexadecimal', LOG_HEX: 'Log EMS telegrams in hexadecimal',
ENABLE_SYSLOG: 'Enable Syslog', ENABLE_SYSLOG: 'Enable Syslog',
LOG_LEVEL: 'Log Level', LOG_LEVEL: 'Log Level',
@@ -170,7 +163,6 @@ const en: Translation = {
CLOSE: 'Close', CLOSE: 'Close',
USE: 'Use', USE: 'Use',
FACTORY_RESET: 'Factory Reset', FACTORY_RESET: 'Factory Reset',
SYSTEM_FACTORY_TEXT: 'Device has been factory reset and will now restart',
SYSTEM_FACTORY_TEXT_DIALOG: 'Are you sure you want to reset EMS-ESP to its factory defaults?', SYSTEM_FACTORY_TEXT_DIALOG: 'Are you sure you want to reset EMS-ESP to its factory defaults?',
AVAILABLE_VERSION: 'Latest Available Versions', AVAILABLE_VERSION: 'Latest Available Versions',
STABLE: 'Stable', STABLE: 'Stable',
@@ -255,9 +247,7 @@ const en: Translation = {
NETWORK_SCAN: 'Scan WiFi Networks', NETWORK_SCAN: 'Scan WiFi Networks',
IDLE: 'Idle', IDLE: 'Idle',
LOST: 'Lost', LOST: 'Lost',
SCANNING: 'Scanning',
SCAN_AGAIN: 'Scan again', SCAN_AGAIN: 'Scan again',
NETWORK_SCANNER: 'Network Scanner',
NETWORK_NO_WIFI: 'No WiFi networks found', NETWORK_NO_WIFI: 'No WiFi networks found',
NETWORK_BLANK_BSSID: 'leave blank to use only SSID', NETWORK_BLANK_BSSID: 'leave blank to use only SSID',
TX_POWER: 'Tx Power', TX_POWER: 'Tx Power',
@@ -292,9 +282,6 @@ const en: Translation = {
ONCHANGE: 'On Change', ONCHANGE: 'On Change',
CONDITION: 'Condition', CONDITION: 'Condition',
SCHEDULE_UPDATED: 'Schedule updated', SCHEDULE_UPDATED: 'Schedule updated',
SCHEDULE_TIMER_1: 'on startup',
SCHEDULE_TIMER_2: 'every minute',
SCHEDULE_TIMER_3: 'every hour',
CUSTOM_ENTITIES: 'Custom Entities', CUSTOM_ENTITIES: 'Custom Entities',
ENTITIES_HELP_1: 'Define custom EMS entities or dynamic user variables', ENTITIES_HELP_1: 'Define custom EMS entities or dynamic user variables',
ENTITIES_UPDATED: 'Entities updated', ENTITIES_UPDATED: 'Entities updated',
@@ -310,9 +297,7 @@ const en: Translation = {
ACTIVELOW: 'Active Low', ACTIVELOW: 'Active Low',
UNCHANGED: 'Unchanged', UNCHANGED: 'Unchanged',
ALWAYS: 'Always', ALWAYS: 'Always',
ACTIVITY: 'Activity',
CONFIGURE: 'Configure {0}', CONFIGURE: 'Configure {0}',
SYSTEM_MEMORY: 'System Memory',
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings',
SECURITY_1: 'Add or remove users', SECURITY_1: 'Add or remove users',
DOWNLOAD_UPLOAD_1: 'Download and Upload Settings and Firmware', DOWNLOAD_UPLOAD_1: 'Download and Upload Settings and Firmware',
@@ -324,7 +309,6 @@ const en: Translation = {
RENAME: 'Rename', RENAME: 'Rename',
ENABLE_MODBUS: 'Enable Modbus', ENABLE_MODBUS: 'Enable Modbus',
VIEW_LOG: 'View log to diagnose issues', VIEW_LOG: 'View log to diagnose issues',
UPLOAD_DRAG: 'drag and drop a file here or click to select one',
SERVICES: 'Services', SERVICES: 'Services',
ALLVALUES: 'All Values', ALLVALUES: 'All Values',
SPECIAL_FUNCTIONS: 'Special Functions', SPECIAL_FUNCTIONS: 'Special Functions',
@@ -350,10 +334,8 @@ const en: Translation = {
THIS_VERSION: 'This Version', THIS_VERSION: 'This Version',
PLATFORM: 'Platform', PLATFORM: 'Platform',
RELEASE_TYPE: 'Release Type', RELEASE_TYPE: 'Release Type',
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading',
SWITCH_RELEASE_TYPE: 'Switch to {0} release', SWITCH_RELEASE_TYPE: 'Switch to {0} release',
FIRMWARE_VERSION_INFO: 'Firmware Version Information', FIRMWARE_VERSION_INFO: 'Firmware Version Information',
NO_DATA: 'No data',
USER_PROFILE: 'User Profile', USER_PROFILE: 'User Profile',
STORED_VERSIONS: 'Stored Versions', STORED_VERSIONS: 'Stored Versions',
ONLINE_HELP: 'online help', ONLINE_HELP: 'online help',
@@ -364,10 +346,10 @@ const en: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email sent successfully', TEST_EMAIL_SUCCESSFUL: 'Test email sent successfully',
SYSTEM_NAME: 'System Name', SYSTEM_NAME: 'System Name',
COMMANDS: 'Commands', COMMANDS: 'Commands',
COMMANDS_UPDATED: 'Commands updated',
COMMANDS_HELP_1: 'Define reusable named commands below. These can be executed from the console, API/MQTT, or referenced by the Scheduler', COMMANDS_HELP_1: 'Define reusable named commands below. These can be executed from the console, API/MQTT, or referenced by the Scheduler',
COMMAND_SENT: 'Command sent', COMMAND_SENT: 'Command sent',
RUN: 'Run' RUN: 'Run',
INTERNET_CONNECTION_CHECK: 'Checking online for available versions'
}; };
export default en; export default en;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const fr: Translation = { const fr: Translation = {
LANGUAGE: 'Langue', LANGUAGE: 'Langue',
RETRY: 'Réessayer', RETRY: 'Réessayer',
LOADING: 'Chargement',
IS_REQUIRED: '{0} est requis', IS_REQUIRED: '{0} est requis',
SIGN_IN: 'Se connecter', SIGN_IN: 'Se connecter',
SIGN_OUT: 'Se déconnecter', SIGN_OUT: 'Se déconnecter',
@@ -50,8 +49,6 @@ const fr: Translation = {
SETTINGS: 'Paramètres', SETTINGS: 'Paramètres',
UPDATED_OF: '{0} mis à jour', UPDATED_OF: '{0} mis à jour',
UPDATE_OF: 'Mise à jour de {0}', UPDATE_OF: 'Mise à jour de {0}',
REMOVED_OF: '{0} enlevé',
DELETION_OF: '{0} supprimé',
OFFSET: 'Offset', OFFSET: 'Offset',
FACTOR: 'Facteur', FACTOR: 'Facteur',
FREQ: 'Fréquence', FREQ: 'Fréquence',
@@ -64,17 +61,14 @@ const fr: Translation = {
TEMP_SENSORS: 'Capteurs de température', TEMP_SENSORS: 'Capteurs de température',
WRITE_CMD_SENT: 'Envoyer la commande sent', WRITE_CMD_SENT: 'Envoyer la commande sent',
EMS_BUS_WARNING: 'Bus EMS déconnecté. Si ce message persiste après quelques secondes, vérifiez les paramètres et la configuration de la carte.', EMS_BUS_WARNING: 'Bus EMS déconnecté. Si ce message persiste après quelques secondes, vérifiez les paramètres et la configuration de la carte.',
EMS_BUS_SCANNING: 'Scan des appareils EMS...',
CONNECTED: 'Connecté', CONNECTED: 'Connecté',
TX_ISSUES: 'Problèmes de transmission (Tx) - Essayez un autre mode Tx', TX_ISSUES: 'Problèmes de transmission (Tx) - Essayez un autre mode Tx',
DISCONNECTED: 'Déconnecté', DISCONNECTED: 'Déconnecté',
EMS_SCAN: 'Etes-vous sûr de vouloir lancer un scan complet du bus EMS ?',
DATA_TRAFFIC: 'Traffic des données', DATA_TRAFFIC: 'Traffic des données',
EMS_DEVICE: 'Appareils EMS', EMS_DEVICE: 'Appareils EMS',
SUCCESS: 'SUCCÈS', SUCCESS: 'SUCCÈS',
FAIL: 'ÉCHEC', FAIL: 'ÉCHEC',
QUALITY: 'QUALITÉ', QUALITY: 'QUALITÉ',
SCAN: 'Scan',
STATUS_NAMES: [ STATUS_NAMES: [
'Télégrammes EMS reçus (Rx)', 'Télégrammes EMS reçus (Rx)',
'Lectures EMS (Tx)', 'Lectures EMS (Tx)',
@@ -125,7 +119,6 @@ const fr: Translation = {
ENUM_FORMAT: 'Format enum API/MQTT', ENUM_FORMAT: 'Format enum API/MQTT',
INDEX: 'Index', INDEX: 'Index',
ENABLE_PARASITE: 'Activer la puissance 1-wire parasite', ENABLE_PARASITE: 'Activer la puissance 1-wire parasite',
LOGGING: 'Journal',
LOG_HEX: 'Enregistrer les télégrammes EMS en hexadécimal', LOG_HEX: 'Enregistrer les télégrammes EMS en hexadécimal',
ENABLE_SYSLOG: 'Activer les logs système', ENABLE_SYSLOG: 'Activer les logs système',
LOG_LEVEL: 'Niveau de log', LOG_LEVEL: 'Niveau de log',
@@ -170,7 +163,6 @@ const fr: Translation = {
CLOSE: 'Fermer', CLOSE: 'Fermer',
USE: 'Utiliser', USE: 'Utiliser',
FACTORY_RESET: 'Réinitialisation', FACTORY_RESET: 'Réinitialisation',
SYSTEM_FACTORY_TEXT: "L'appareil a été réinitialisé et va maintenant redémarrer",
SYSTEM_FACTORY_TEXT_DIALOG: "Êtes-vous sûr de vouloir réinitialiser l'appareil à ses paramètres d'usine ?", SYSTEM_FACTORY_TEXT_DIALOG: "Êtes-vous sûr de vouloir réinitialiser l'appareil à ses paramètres d'usine ?",
AVAILABLE_VERSION: 'Versions disponibles', AVAILABLE_VERSION: 'Versions disponibles',
STABLE: 'Stable', STABLE: 'Stable',
@@ -255,9 +247,7 @@ const fr: Translation = {
NETWORK_SCAN: 'Scanner les réseaux WiFi', NETWORK_SCAN: 'Scanner les réseaux WiFi',
IDLE: 'Inactif', IDLE: 'Inactif',
LOST: 'Perdu', LOST: 'Perdu',
SCANNING: 'Scan en cours',
SCAN_AGAIN: 'Rescanner', SCAN_AGAIN: 'Rescanner',
NETWORK_SCANNER: 'Scan réseau',
NETWORK_NO_WIFI: 'Pas de réseau WiFi trouvé', NETWORK_NO_WIFI: 'Pas de réseau WiFi trouvé',
NETWORK_BLANK_BSSID: 'laisser vide pour utiliser uniquement le SSID', NETWORK_BLANK_BSSID: 'laisser vide pour utiliser uniquement le SSID',
TX_POWER: 'Puissance Tx', TX_POWER: 'Puissance Tx',
@@ -292,9 +282,6 @@ const fr: Translation = {
ONCHANGE: 'Sur le changement', ONCHANGE: 'Sur le changement',
CONDITION: 'Condition', CONDITION: 'Condition',
SCHEDULE_UPDATED: 'Programme mis à jour', SCHEDULE_UPDATED: 'Programme mis à jour',
SCHEDULE_TIMER_1: 'au démarrage',
SCHEDULE_TIMER_2: 'toutes les minutes',
SCHEDULE_TIMER_3: 'toutes les heures',
CUSTOM_ENTITIES: 'Entités personnalisées', CUSTOM_ENTITIES: 'Entités personnalisées',
ENTITIES_HELP_1: 'Récupérer les entités personnalisées du bus EMS', ENTITIES_HELP_1: 'Récupérer les entités personnalisées du bus EMS',
ENTITIES_UPDATED: 'Entités mises à jour', ENTITIES_UPDATED: 'Entités mises à jour',
@@ -310,9 +297,7 @@ const fr: Translation = {
ACTIVELOW: 'Actif bas', ACTIVELOW: 'Actif bas',
UNCHANGED: 'Inchangé', UNCHANGED: 'Inchangé',
ALWAYS: 'Toujours', ALWAYS: 'Toujours',
ACTIVITY: 'Activité',
CONFIGURE: 'Configurer {0}', CONFIGURE: 'Configurer {0}',
SYSTEM_MEMORY: 'Mémoire système',
APPLICATION_SETTINGS_1: 'Modifier les paramètres de l\'application EMS-ESP', APPLICATION_SETTINGS_1: 'Modifier les paramètres de l\'application EMS-ESP',
SECURITY_1: 'Ajouter ou supprimer des utilisateurs', SECURITY_1: 'Ajouter ou supprimer des utilisateurs',
DOWNLOAD_UPLOAD_1: 'Télécharger et mettre à jour les paramètres et le firmware', DOWNLOAD_UPLOAD_1: 'Télécharger et mettre à jour les paramètres et le firmware',
@@ -324,7 +309,6 @@ const fr: Translation = {
RENAME: 'Renommer', RENAME: 'Renommer',
ENABLE_MODBUS: 'Activer Modbus', ENABLE_MODBUS: 'Activer Modbus',
VIEW_LOG: 'Voir le journal pour diagnostiquer les problèmes', VIEW_LOG: 'Voir le journal pour diagnostiquer les problèmes',
UPLOAD_DRAG: 'glisser-déposer un fichier ici ou cliquer pour en sélectionner un',
SERVICES: 'Services', SERVICES: 'Services',
ALLVALUES: 'Toutes les valeurs', ALLVALUES: 'Toutes les valeurs',
SPECIAL_FUNCTIONS: 'Fonctions spéciales', SPECIAL_FUNCTIONS: 'Fonctions spéciales',
@@ -350,10 +334,8 @@ const fr: Translation = {
THIS_VERSION: 'Cette version', THIS_VERSION: 'Cette version',
PLATFORM: 'Plateforme', PLATFORM: 'Plateforme',
RELEASE_TYPE: 'Type de version', RELEASE_TYPE: 'Type de version',
INTERNET_CONNECTION_REQUIRED: 'Connexion Internet requise pour la vérification automatique des versions et la mise à niveau',
SWITCH_RELEASE_TYPE: 'Passer à la version {0}', SWITCH_RELEASE_TYPE: 'Passer à la version {0}',
FIRMWARE_VERSION_INFO: 'Informations sur la version du firmware', FIRMWARE_VERSION_INFO: 'Informations sur la version du firmware',
NO_DATA: 'Aucune donnée',
USER_PROFILE: 'Profil utilisateur', USER_PROFILE: 'Profil utilisateur',
STORED_VERSIONS: 'Versions stockées', STORED_VERSIONS: 'Versions stockées',
ONLINE_HELP: 'aide en ligne', ONLINE_HELP: 'aide en ligne',
@@ -364,10 +346,10 @@ const fr: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email envoyé avec succès', TEST_EMAIL_SUCCESSFUL: 'Test email envoyé avec succès',
SYSTEM_NAME: 'Nom du système', SYSTEM_NAME: 'Nom du système',
COMMANDS: 'Commandes', COMMANDS: 'Commandes',
COMMANDS_UPDATED: 'Commandes mises à jour',
COMMANDS_HELP_1: 'Définir des commandes personnalisées pour la magistral EMS', COMMANDS_HELP_1: 'Définir des commandes personnalisées pour la magistral EMS',
COMMAND_SENT: 'Commande envoyée', COMMAND_SENT: 'Commande envoyée',
RUN: 'Exécuter une commande' RUN: 'Exécuter une commande',
INTERNET_CONNECTION_CHECK: 'Vérification en ligne pour les versions disponibles'
}; };
export default fr; export default fr;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const it: Translation = { const it: Translation = {
LANGUAGE: 'Lingua', LANGUAGE: 'Lingua',
RETRY: 'Riprovare', RETRY: 'Riprovare',
LOADING: 'Caricamento',
IS_REQUIRED: '{0} é richiesto', IS_REQUIRED: '{0} é richiesto',
SIGN_IN: 'Connettersi', SIGN_IN: 'Connettersi',
SIGN_OUT: 'Disconnettersi', SIGN_OUT: 'Disconnettersi',
@@ -50,8 +49,6 @@ const it: Translation = {
SETTINGS: 'Settings', SETTINGS: 'Settings',
UPDATED_OF: '{0} Aggiornati', UPDATED_OF: '{0} Aggiornati',
UPDATE_OF: 'Aggiorna {0}', UPDATE_OF: 'Aggiorna {0}',
REMOVED_OF: '{0} Rimossi',
DELETION_OF: '{0} Cancellati',
OFFSET: 'Offset', OFFSET: 'Offset',
FACTOR: 'Fattore', FACTOR: 'Fattore',
FREQ: 'Frequenza', FREQ: 'Frequenza',
@@ -64,17 +61,14 @@ const it: Translation = {
TEMP_SENSORS: 'Sensori Temperatura', TEMP_SENSORS: 'Sensori Temperatura',
WRITE_CMD_SENT: 'Scrittura comando inviata', WRITE_CMD_SENT: 'Scrittura comando inviata',
EMS_BUS_WARNING: 'EMS bus disconnesso. Se questo avvertimento persiste dopo alcuni secondi prego verificare impostazioni scheda', EMS_BUS_WARNING: 'EMS bus disconnesso. Se questo avvertimento persiste dopo alcuni secondi prego verificare impostazioni scheda',
EMS_BUS_SCANNING: 'Scansione dispositivi EMS ...',
CONNECTED: 'Connesso', CONNECTED: 'Connesso',
TX_ISSUES: 'Problema di Tx - prova una modalità differente', TX_ISSUES: 'Problema di Tx - prova una modalità differente',
DISCONNECTED: 'Disconnesso', DISCONNECTED: 'Disconnesso',
EMS_SCAN: 'Sei sicuro di voler iniziare una scansione completa del bus EMS ?',
DATA_TRAFFIC: 'Traffico dati', DATA_TRAFFIC: 'Traffico dati',
EMS_DEVICE: 'Dispositivo EMS ', EMS_DEVICE: 'Dispositivo EMS ',
SUCCESS: 'SUCCESSO', SUCCESS: 'SUCCESSO',
FAIL: 'FALLITO', FAIL: 'FALLITO',
QUALITY: 'QUALITÂ', QUALITY: 'QUALITÂ',
SCAN: 'Scansione',
STATUS_NAMES: [ STATUS_NAMES: [
'Telegrammi EMS Ricevuti (Rx)', 'Telegrammi EMS Ricevuti (Rx)',
'EMS Letti (Tx)', 'EMS Letti (Tx)',
@@ -125,7 +119,6 @@ const it: Translation = {
ENUM_FORMAT: 'Enum Format API/MQTT', ENUM_FORMAT: 'Enum Format API/MQTT',
INDEX: 'Indice', INDEX: 'Indice',
ENABLE_PARASITE: 'Abilita potenza 1-wire parassita', ENABLE_PARASITE: 'Abilita potenza 1-wire parassita',
LOGGING: 'Registrazione',
LOG_HEX: 'Registra telegrammi EMS in esadecimale', LOG_HEX: 'Registra telegrammi EMS in esadecimale',
ENABLE_SYSLOG: 'Abilita Syslog', ENABLE_SYSLOG: 'Abilita Syslog',
LOG_LEVEL: 'Livello registrazione', LOG_LEVEL: 'Livello registrazione',
@@ -170,7 +163,6 @@ const it: Translation = {
CLOSE: 'Chiudere', CLOSE: 'Chiudere',
USE: 'Usa', USE: 'Usa',
FACTORY_RESET: 'Impostazioni di fabbrica', FACTORY_RESET: 'Impostazioni di fabbrica',
SYSTEM_FACTORY_TEXT: 'Il dispositivo è stato ripristinato alle impostazioni di fabbrica e ora verrà riavviato',
SYSTEM_FACTORY_TEXT_DIALOG: 'Sei sicuro di voler ripristinare il dispositivo alle impostazioni di fabbrica??', SYSTEM_FACTORY_TEXT_DIALOG: 'Sei sicuro di voler ripristinare il dispositivo alle impostazioni di fabbrica??',
AVAILABLE_VERSION: 'Versioni disponibili', AVAILABLE_VERSION: 'Versioni disponibili',
STABLE: 'Stabile', STABLE: 'Stabile',
@@ -255,9 +247,7 @@ const it: Translation = {
NETWORK_SCAN: 'Scansione reti WiFi', NETWORK_SCAN: 'Scansione reti WiFi',
IDLE: 'Inattivo', IDLE: 'Inattivo',
LOST: 'Perso', LOST: 'Perso',
SCANNING: 'Scansione',
SCAN_AGAIN: 'Scansiona ancora', SCAN_AGAIN: 'Scansiona ancora',
NETWORK_SCANNER: 'Scansione Rete',
NETWORK_NO_WIFI: 'Nessuana rete WiFi trovata', NETWORK_NO_WIFI: 'Nessuana rete WiFi trovata',
NETWORK_BLANK_BSSID: 'lasciare vuoto per usare solo SSID', NETWORK_BLANK_BSSID: 'lasciare vuoto per usare solo SSID',
TX_POWER: 'Potenza Tx', TX_POWER: 'Potenza Tx',
@@ -292,9 +282,6 @@ const it: Translation = {
ONCHANGE: 'Sul cambiamento', ONCHANGE: 'Sul cambiamento',
CONDITION: 'Condizione', CONDITION: 'Condizione',
SCHEDULE_UPDATED: 'Calendario aggiornato', SCHEDULE_UPDATED: 'Calendario aggiornato',
SCHEDULE_TIMER_1: 'All avvio',
SCHEDULE_TIMER_2: 'Ogni minuto',
SCHEDULE_TIMER_3: 'Ogni ora',
CUSTOM_ENTITIES: 'Entità personalizzate', CUSTOM_ENTITIES: 'Entità personalizzate',
ENTITIES_HELP_1: 'Recupera entità personalizzate dal BUS EMS', ENTITIES_HELP_1: 'Recupera entità personalizzate dal BUS EMS',
ENTITIES_UPDATED: 'Entità aggiornate', ENTITIES_UPDATED: 'Entità aggiornate',
@@ -310,9 +297,7 @@ const it: Translation = {
ACTIVELOW: 'Active Low', ACTIVELOW: 'Active Low',
UNCHANGED: 'Unchanged', UNCHANGED: 'Unchanged',
ALWAYS: 'Always', ALWAYS: 'Always',
ACTIVITY: 'Activity',
CONFIGURE: 'Configure {0}', CONFIGURE: 'Configure {0}',
SYSTEM_MEMORY: 'System Memory',
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings',
SECURITY_1: 'Add or remove users', SECURITY_1: 'Add or remove users',
DOWNLOAD_UPLOAD_1: 'Download and Upload Settings and Firmware', DOWNLOAD_UPLOAD_1: 'Download and Upload Settings and Firmware',
@@ -324,7 +309,6 @@ const it: Translation = {
RENAME: 'Rename', RENAME: 'Rename',
ENABLE_MODBUS: 'Abilita Modbus', ENABLE_MODBUS: 'Abilita Modbus',
VIEW_LOG: 'Visualizza log per diagnosticare problemi', VIEW_LOG: 'Visualizza log per diagnosticare problemi',
UPLOAD_DRAG: 'trascina e rilascia un file qui o clicca per selezionare uno',
SERVICES: 'Servizi', SERVICES: 'Servizi',
ALLVALUES: 'Tutti i valori', ALLVALUES: 'Tutti i valori',
SPECIAL_FUNCTIONS: 'Funzioni speciali', SPECIAL_FUNCTIONS: 'Funzioni speciali',
@@ -350,10 +334,8 @@ const it: Translation = {
THIS_VERSION: 'Questa versione', THIS_VERSION: 'Questa versione',
PLATFORM: 'Piattaforma', PLATFORM: 'Piattaforma',
RELEASE_TYPE: 'Tipo di rilascio', RELEASE_TYPE: 'Tipo di rilascio',
INTERNET_CONNECTION_REQUIRED: 'Connessione internet richiesta per il controllo automatico delle versioni e l\'aggiornamento',
SWITCH_RELEASE_TYPE: 'Cambia in {0} rilascio', SWITCH_RELEASE_TYPE: 'Cambia in {0} rilascio',
FIRMWARE_VERSION_INFO: 'Informazioni sulla versione del firmware', FIRMWARE_VERSION_INFO: 'Informazioni sulla versione del firmware',
NO_DATA: 'Nessun dato',
USER_PROFILE: 'Profilo utente', USER_PROFILE: 'Profilo utente',
STORED_VERSIONS: 'Versioni memorizzate', STORED_VERSIONS: 'Versioni memorizzate',
ONLINE_HELP: 'aiuto online', ONLINE_HELP: 'aiuto online',
@@ -364,10 +346,10 @@ const it: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email inviata con successo', TEST_EMAIL_SUCCESSFUL: 'Test email inviata con successo',
SYSTEM_NAME: 'Nome del sistema', SYSTEM_NAME: 'Nome del sistema',
COMMANDS: 'Comandi', COMMANDS: 'Comandi',
COMMANDS_UPDATED: 'Comandi aggiornati',
COMMANDS_HELP_1: 'Definisci comandi personalizzati per la magistrali EMS', COMMANDS_HELP_1: 'Definisci comandi personalizzati per la magistrali EMS',
COMMAND_SENT: 'Comando inviato', COMMAND_SENT: 'Comando inviato',
RUN: 'Esegui comando' RUN: 'Esegui comando',
INTERNET_CONNECTION_CHECK: 'Controllo online per le versioni disponibili'
}; };
export default it; export default it;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const nl: Translation = { const nl: Translation = {
LANGUAGE: 'Taal', LANGUAGE: 'Taal',
RETRY: 'Opnieuw proberen', RETRY: 'Opnieuw proberen',
LOADING: 'Laden',
IS_REQUIRED: '{0} is verplicht', IS_REQUIRED: '{0} is verplicht',
SIGN_IN: 'Inloggen', SIGN_IN: 'Inloggen',
SIGN_OUT: 'Uitloggen', SIGN_OUT: 'Uitloggen',
@@ -50,8 +49,6 @@ const nl: Translation = {
SETTINGS: 'Instellingen', SETTINGS: 'Instellingen',
UPDATED_OF: '{0} Bijgewerkt', UPDATED_OF: '{0} Bijgewerkt',
UPDATE_OF: '{0} Bijwerken', UPDATE_OF: '{0} Bijwerken',
REMOVED_OF: '{0} Verwijderd',
DELETION_OF: '{0} Verwijder',
OFFSET: 'Offset', OFFSET: 'Offset',
FACTOR: 'Factor', FACTOR: 'Factor',
FREQ: 'Frequentie', FREQ: 'Frequentie',
@@ -64,17 +61,14 @@ const nl: Translation = {
TEMP_SENSORS: 'Temperatuur Sensoren', TEMP_SENSORS: 'Temperatuur Sensoren',
WRITE_CMD_SENT: 'Schrijf commando gestuurd', WRITE_CMD_SENT: 'Schrijf commando gestuurd',
EMS_BUS_WARNING: 'EMS bus niet gevonden. Als deze waarschuwing blijft staan na een paar seconden loop dan de instellingen na en in het bijzonder het apparaat type profiel.', EMS_BUS_WARNING: 'EMS bus niet gevonden. Als deze waarschuwing blijft staan na een paar seconden loop dan de instellingen na en in het bijzonder het apparaat type profiel.',
EMS_BUS_SCANNING: 'Scannen naar EMS apparaten...',
CONNECTED: 'Verbonden', CONNECTED: 'Verbonden',
TX_ISSUES: 'Tx bus probleem. Probeer een andere Tx verzendmodus', TX_ISSUES: 'Tx bus probleem. Probeer een andere Tx verzendmodus',
DISCONNECTED: 'Niet verbonden', DISCONNECTED: 'Niet verbonden',
EMS_SCAN: 'Weet je zeker dat je een volledige EMS bus scan uit wilt voeren?',
DATA_TRAFFIC: 'Dataverkeer', DATA_TRAFFIC: 'Dataverkeer',
EMS_DEVICE: 'EMS Apparaat', EMS_DEVICE: 'EMS Apparaat',
SUCCESS: 'SUCCESS', SUCCESS: 'SUCCESS',
FAIL: 'MISLUKT', FAIL: 'MISLUKT',
QUALITY: 'KWALITEIT', QUALITY: 'KWALITEIT',
SCAN: 'Scan',
STATUS_NAMES: [ STATUS_NAMES: [
'EMS Telegrammen ontvangen (Rx)', 'EMS Telegrammen ontvangen (Rx)',
'EMS Leesopdrachten (Tx)', 'EMS Leesopdrachten (Tx)',
@@ -125,7 +119,6 @@ const nl: Translation = {
ENUM_FORMAT: 'Enum formaat API/MQTT', ENUM_FORMAT: 'Enum formaat API/MQTT',
INDEX: 'Index', INDEX: 'Index',
ENABLE_PARASITE: 'Activeer 1-wire parasitaire modus', ENABLE_PARASITE: 'Activeer 1-wire parasitaire modus',
LOGGING: 'Logging',
LOG_HEX: 'Log EMS telegrammen in hexadecimaal', LOG_HEX: 'Log EMS telegrammen in hexadecimaal',
ENABLE_SYSLOG: 'Activeer Syslog', ENABLE_SYSLOG: 'Activeer Syslog',
LOG_LEVEL: 'Log Level', LOG_LEVEL: 'Log Level',
@@ -170,7 +163,6 @@ const nl: Translation = {
CLOSE: 'Sluiten', CLOSE: 'Sluiten',
USE: 'Gebruik', USE: 'Gebruik',
FACTORY_RESET: 'Fabrieksinstellingen', FACTORY_RESET: 'Fabrieksinstellingen',
SYSTEM_FACTORY_TEXT: 'Gateway is gereset en start nu weer op met fabrieksinstellingen',
SYSTEM_FACTORY_TEXT_DIALOG: 'Weet je zeker dat je een reset naar fabrieksinstellingen uit wilt voeren?', SYSTEM_FACTORY_TEXT_DIALOG: 'Weet je zeker dat je een reset naar fabrieksinstellingen uit wilt voeren?',
AVAILABLE_VERSION: 'Nieuwste beschikbare versies', AVAILABLE_VERSION: 'Nieuwste beschikbare versies',
STABLE: 'Stable', STABLE: 'Stable',
@@ -255,9 +247,7 @@ const nl: Translation = {
NETWORK_SCAN: 'Scan WiFi Netwerken', NETWORK_SCAN: 'Scan WiFi Netwerken',
IDLE: 'Inactief', IDLE: 'Inactief',
LOST: 'Verloren', LOST: 'Verloren',
SCANNING: 'Scannen',
SCAN_AGAIN: 'Opnieuw scannen', SCAN_AGAIN: 'Opnieuw scannen',
NETWORK_SCANNER: 'Netwerk Scannen',
NETWORK_NO_WIFI: 'Geen WiFi netwerken gevonden', NETWORK_NO_WIFI: 'Geen WiFi netwerken gevonden',
NETWORK_BLANK_BSSID: 'laat leeg om alleen SSID te bebruiken', NETWORK_BLANK_BSSID: 'laat leeg om alleen SSID te bebruiken',
TX_POWER: 'Tx Vermogen', TX_POWER: 'Tx Vermogen',
@@ -292,9 +282,6 @@ const nl: Translation = {
ONCHANGE: 'Op verandering', ONCHANGE: 'Op verandering',
CONDITION: 'Voorwaarde', CONDITION: 'Voorwaarde',
SCHEDULE_UPDATED: 'Schema bijgewerkt', SCHEDULE_UPDATED: 'Schema bijgewerkt',
SCHEDULE_TIMER_1: 'bij het opstarten',
SCHEDULE_TIMER_2: 'elke minuut',
SCHEDULE_TIMER_3: 'elke huur',
CUSTOM_ENTITIES: 'Eigen entiteiten', CUSTOM_ENTITIES: 'Eigen entiteiten',
ENTITIES_HELP_1: 'Eigen entiteiten ophalen uit de EMS-bus', ENTITIES_HELP_1: 'Eigen entiteiten ophalen uit de EMS-bus',
ENTITIES_UPDATED: 'Entiteiten bijgewerkt', ENTITIES_UPDATED: 'Entiteiten bijgewerkt',
@@ -310,9 +297,7 @@ const nl: Translation = {
ACTIVELOW: 'Actiev Laag', ACTIVELOW: 'Actiev Laag',
UNCHANGED: 'Ongewijzigd', UNCHANGED: 'Ongewijzigd',
ALWAYS: 'Altijd', ALWAYS: 'Altijd',
ACTIVITY: 'Activiteit',
CONFIGURE: '{0} Configureren', CONFIGURE: '{0} Configureren',
SYSTEM_MEMORY: 'System Geheugen',
APPLICATION_SETTINGS_1: 'Applicatie-instellingen wijzigen', APPLICATION_SETTINGS_1: 'Applicatie-instellingen wijzigen',
SECURITY_1: 'Gebruikers toevoegen of verwijderen', SECURITY_1: 'Gebruikers toevoegen of verwijderen',
DOWNLOAD_UPLOAD_1: 'Download en upload instellingen en firmware', DOWNLOAD_UPLOAD_1: 'Download en upload instellingen en firmware',
@@ -324,7 +309,6 @@ const nl: Translation = {
RENAME: 'Hernoemen', RENAME: 'Hernoemen',
ENABLE_MODBUS: 'Activeer Modbus', ENABLE_MODBUS: 'Activeer Modbus',
VIEW_LOG: 'Log weergeven om problemen te diagnosticeren', VIEW_LOG: 'Log weergeven om problemen te diagnosticeren',
UPLOAD_DRAG: 'sleep hier een bestand en zet het neer of klik om er een te selecteren',
SERVICES: 'Services', SERVICES: 'Services',
ALLVALUES: 'All waarden', ALLVALUES: 'All waarden',
SPECIAL_FUNCTIONS: 'Speciale functies', SPECIAL_FUNCTIONS: 'Speciale functies',
@@ -350,10 +334,8 @@ const nl: Translation = {
THIS_VERSION: 'Deze Versie', THIS_VERSION: 'Deze Versie',
PLATFORM: 'Platform', PLATFORM: 'Platform',
RELEASE_TYPE: 'Release Typ', RELEASE_TYPE: 'Release Typ',
INTERNET_CONNECTION_REQUIRED: 'Internetverbinding vereist voor automatische versiecontrole en -upgrade',
SWITCH_RELEASE_TYPE: 'Switch naar {0} release', SWITCH_RELEASE_TYPE: 'Switch naar {0} release',
FIRMWARE_VERSION_INFO: 'Informatie over firmwareversie', FIRMWARE_VERSION_INFO: 'Informatie over firmwareversie',
NO_DATA: 'Geen data',
USER_PROFILE: 'Gebruikersprofiel', USER_PROFILE: 'Gebruikersprofiel',
STORED_VERSIONS: 'Opgeslagen versies', STORED_VERSIONS: 'Opgeslagen versies',
ONLINE_HELP: 'online help', ONLINE_HELP: 'online help',
@@ -364,10 +346,10 @@ const nl: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email verzonden succesvol', TEST_EMAIL_SUCCESSFUL: 'Test email verzonden succesvol',
SYSTEM_NAME: 'Systeemnaam', SYSTEM_NAME: 'Systeemnaam',
COMMANDS: 'Commando\'s', COMMANDS: 'Commando\'s',
COMMANDS_UPDATED: 'Commando\'s bijgewerkt',
COMMANDS_HELP_1: 'Definieer hergebruikbare benoemde commando\'s hieronder. Deze kunnen worden uitgevoerd vanuit de console, API/MQTT, of worden aangeroepen door de Scheduler', COMMANDS_HELP_1: 'Definieer hergebruikbare benoemde commando\'s hieronder. Deze kunnen worden uitgevoerd vanuit de console, API/MQTT, of worden aangeroepen door de Scheduler',
COMMAND_SENT: 'Commando verzonden', COMMAND_SENT: 'Commando verzonden',
RUN: 'Commando uitvoeren' RUN: 'Commando uitvoeren',
INTERNET_CONNECTION_CHECK: 'Controleren op online beschikbare versies'
}; };
export default nl; export default nl;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const no: Translation = { const no: Translation = {
LANGUAGE: 'Språk', LANGUAGE: 'Språk',
RETRY: 'Forsøk igjen', RETRY: 'Forsøk igjen',
LOADING: 'Laster',
IS_REQUIRED: '{0} er nødvendig', IS_REQUIRED: '{0} er nødvendig',
SIGN_IN: 'Logg inn', SIGN_IN: 'Logg inn',
SIGN_OUT: 'Logg ut', SIGN_OUT: 'Logg ut',
@@ -50,8 +49,6 @@ const no: Translation = {
SETTINGS: 'Innstillinger', SETTINGS: 'Innstillinger',
UPDATED_OF: '{0} Oppdatert', UPDATED_OF: '{0} Oppdatert',
UPDATE_OF: '{0} Oppdater', UPDATE_OF: '{0} Oppdater',
REMOVED_OF: '{0} Slettet',
DELETION_OF: '{0} Sletting',
OFFSET: 'Kompensering', OFFSET: 'Kompensering',
FACTOR: 'Faktor', FACTOR: 'Faktor',
FREQ: 'Frekvens', FREQ: 'Frekvens',
@@ -64,17 +61,14 @@ const no: Translation = {
TEMP_SENSORS: 'Temperaturesensorer', TEMP_SENSORS: 'Temperaturesensorer',
WRITE_CMD_SENT: 'Skriv kommando sent', WRITE_CMD_SENT: 'Skriv kommando sent',
EMS_BUS_WARNING: 'EMS bussen koblet ned. Hvis denne advarselen fortsetter etter noen f¨sekunder sjekk instillinger og prosessorkort', EMS_BUS_WARNING: 'EMS bussen koblet ned. Hvis denne advarselen fortsetter etter noen f¨sekunder sjekk instillinger og prosessorkort',
EMS_BUS_SCANNING: 'Søker etter EMS enheter...',
CONNECTED: 'Tilkoblet', CONNECTED: 'Tilkoblet',
TX_ISSUES: 'Tx problemer - prøv en annen Tx Modus', TX_ISSUES: 'Tx problemer - prøv en annen Tx Modus',
DISCONNECTED: 'Frakoblet', DISCONNECTED: 'Frakoblet',
EMS_SCAN: 'Er du sikker på du vil starte full søking av EMS bussen?',
DATA_TRAFFIC: 'Data trafikk', DATA_TRAFFIC: 'Data trafikk',
EMS_DEVICE: 'EMS Enhet', EMS_DEVICE: 'EMS Enhet',
SUCCESS: 'VELLYKKET', SUCCESS: 'VELLYKKET',
FAIL: 'MISLYKKET', FAIL: 'MISLYKKET',
QUALITY: 'KVALITET', QUALITY: 'KVALITET',
SCAN: 'Søk',
STATUS_NAMES: [ STATUS_NAMES: [
'EMS Telegrammer Mottatt (Rx)', 'EMS Telegrammer Mottatt (Rx)',
'EMS Lest (Tx)', 'EMS Lest (Tx)',
@@ -125,7 +119,6 @@ const no: Translation = {
ENUM_FORMAT: 'Enum Format API/MQTT', ENUM_FORMAT: 'Enum Format API/MQTT',
INDEX: 'Indeks', INDEX: 'Indeks',
ENABLE_PARASITE: 'Aktiver 1-wire parasitt strømforsyning', ENABLE_PARASITE: 'Aktiver 1-wire parasitt strømforsyning',
LOGGING: 'Logging',
LOG_HEX: 'Logg EMS telegrammer i hexadesimal', LOG_HEX: 'Logg EMS telegrammer i hexadesimal',
ENABLE_SYSLOG: 'Aktiver Syslog', ENABLE_SYSLOG: 'Aktiver Syslog',
LOG_LEVEL: 'Log Level', LOG_LEVEL: 'Log Level',
@@ -170,7 +163,6 @@ const no: Translation = {
CLOSE: 'Steng', CLOSE: 'Steng',
USE: 'Bruk', USE: 'Bruk',
FACTORY_RESET: 'Sett tilbake til fabrikkinstilling', FACTORY_RESET: 'Sett tilbake til fabrikkinstilling',
SYSTEM_FACTORY_TEXT: 'Enhet har blitt satt tilbake til fabrikkinstilling og vil restarte',
SYSTEM_FACTORY_TEXT_DIALOG: 'Er du sikker på at du vil resette enheten til fabrikkinstillinger?', SYSTEM_FACTORY_TEXT_DIALOG: 'Er du sikker på at du vil resette enheten til fabrikkinstillinger?',
AVAILABLE_VERSION: 'Tilgjengelige versjoner', AVAILABLE_VERSION: 'Tilgjengelige versjoner',
STABLE: 'Stabil', STABLE: 'Stabil',
@@ -255,9 +247,7 @@ const no: Translation = {
NETWORK_SCAN: 'Søk etter trådløst nettverk', NETWORK_SCAN: 'Søk etter trådløst nettverk',
IDLE: 'Klar', IDLE: 'Klar',
LOST: 'Mistet', LOST: 'Mistet',
SCANNING: 'Søker',
SCAN_AGAIN: 'Søk igjen', SCAN_AGAIN: 'Søk igjen',
NETWORK_SCANNER: 'Nettverk Scanner',
NETWORK_NO_WIFI: 'Ingen trådløse nett funnet', NETWORK_NO_WIFI: 'Ingen trådløse nett funnet',
NETWORK_BLANK_BSSID: 'la feltet være blankt for å bruke kun SSID', NETWORK_BLANK_BSSID: 'la feltet være blankt for å bruke kun SSID',
TX_POWER: 'Tx Effekt', TX_POWER: 'Tx Effekt',
@@ -292,9 +282,6 @@ const no: Translation = {
ONCHANGE: 'På endring', ONCHANGE: 'På endring',
CONDITION: 'Betingelse', CONDITION: 'Betingelse',
SCHEDULE_UPDATED: 'Planlegger er oppdatert', SCHEDULE_UPDATED: 'Planlegger er oppdatert',
SCHEDULE_TIMER_1: 'ved oppstart',
SCHEDULE_TIMER_2: 'hvert minutt',
SCHEDULE_TIMER_3: 'hver time',
CUSTOM_ENTITIES: 'Personlige entiteter', CUSTOM_ENTITIES: 'Personlige entiteter',
ENTITIES_HELP_1: 'Hent personlige entiteter fra EMS bussen', ENTITIES_HELP_1: 'Hent personlige entiteter fra EMS bussen',
ENTITIES_UPDATED: 'Entiteter oppdatert', ENTITIES_UPDATED: 'Entiteter oppdatert',
@@ -310,9 +297,7 @@ const no: Translation = {
ACTIVELOW: 'Active Low', ACTIVELOW: 'Active Low',
UNCHANGED: 'Unchanged', UNCHANGED: 'Unchanged',
ALWAYS: 'Always', ALWAYS: 'Always',
ACTIVITY: 'Aktivitet',
CONFIGURE: 'Konfigurer {0}', CONFIGURE: 'Konfigurer {0}',
SYSTEM_MEMORY: 'System Memory',
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings',
SECURITY_1: 'Add or remove users', SECURITY_1: 'Add or remove users',
DOWNLOAD_UPLOAD_1: 'Download and Upload Settings and Firmware', DOWNLOAD_UPLOAD_1: 'Download and Upload Settings and Firmware',
@@ -324,7 +309,6 @@ const no: Translation = {
RENAME: 'Gi nytt navn', RENAME: 'Gi nytt navn',
ENABLE_MODBUS: 'Aktiver Modbus', ENABLE_MODBUS: 'Aktiver Modbus',
VIEW_LOG: 'Se logg for å diagnostisere problemer', VIEW_LOG: 'Se logg for å diagnostisere problemer',
UPLOAD_DRAG: 'dra og slippe en fil her eller klikk for å velge en',
SERVICES: 'Tjenester', SERVICES: 'Tjenester',
ALLVALUES: 'Alle verdier', ALLVALUES: 'Alle verdier',
SPECIAL_FUNCTIONS: 'Spesielle funksjoner', SPECIAL_FUNCTIONS: 'Spesielle funksjoner',
@@ -350,10 +334,8 @@ const no: Translation = {
THIS_VERSION: 'Denne versjonen', THIS_VERSION: 'Denne versjonen',
PLATFORM: 'Plattform', PLATFORM: 'Plattform',
RELEASE_TYPE: 'Utgivelses type', RELEASE_TYPE: 'Utgivelses type',
INTERNET_CONNECTION_REQUIRED: 'Internettilkobling kreves for automatisk versjonskontroll og oppgradering',
SWITCH_RELEASE_TYPE: 'Bytt til {0} utgivelse', SWITCH_RELEASE_TYPE: 'Bytt til {0} utgivelse',
FIRMWARE_VERSION_INFO: 'Informasjon om firmwareversjon', FIRMWARE_VERSION_INFO: 'Informasjon om firmwareversjon',
NO_DATA: 'Ingen data',
USER_PROFILE: 'Brukerprofil', USER_PROFILE: 'Brukerprofil',
STORED_VERSIONS: 'Lagret versjoner', STORED_VERSIONS: 'Lagret versjoner',
ONLINE_HELP: 'online hjelp', ONLINE_HELP: 'online hjelp',
@@ -364,10 +346,10 @@ const no: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email sendt suksessfullt', TEST_EMAIL_SUCCESSFUL: 'Test email sendt suksessfullt',
SYSTEM_NAME: 'Systemnavn', SYSTEM_NAME: 'Systemnavn',
COMMANDS: 'Kommandoer', COMMANDS: 'Kommandoer',
COMMANDS_UPDATED: 'Kommandoer oppdatert',
COMMANDS_HELP_1: 'Definer egne kommandoer for EMS-Magistral', COMMANDS_HELP_1: 'Definer egne kommandoer for EMS-Magistral',
COMMAND_SENT: 'Kommando sendt', COMMAND_SENT: 'Kommando sendt',
RUN: 'Kjør' RUN: 'Kjør',
INTERNET_CONNECTION_CHECK: 'Kontrollerer online for tilgjengelige versjoner'
}; };
export default no; export default no;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { BaseTranslation } from '../i18n-types';
const pl: BaseTranslation = { const pl: BaseTranslation = {
LANGUAGE: 'Język', LANGUAGE: 'Język',
RETRY: 'Ponów', RETRY: 'Ponów',
LOADING: 'Ładowanie',
IS_REQUIRED: 'Pole {0} nie może być puste!', IS_REQUIRED: 'Pole {0} nie może być puste!',
SIGN_IN: 'Zaloguj się', SIGN_IN: 'Zaloguj się',
SIGN_OUT: 'Wyloguj się', SIGN_OUT: 'Wyloguj się',
@@ -50,8 +49,6 @@ const pl: BaseTranslation = {
SETTINGS: '{{U|u|}}stawienia', SETTINGS: '{{U|u|}}stawienia',
UPDATED_OF: 'Zaktualizowano {0}.', UPDATED_OF: 'Zaktualizowano {0}.',
UPDATE_OF: 'Aktualizacja {0}', UPDATE_OF: 'Aktualizacja {0}',
REMOVED_OF: 'Usunięto ustawienia {0}.',
DELETION_OF: 'Kasowanie {0}',
OFFSET: 'Korekta ±', OFFSET: 'Korekta ±',
FACTOR: 'Mnożnik', FACTOR: 'Mnożnik',
FREQ: 'Częstotliwość', FREQ: 'Częstotliwość',
@@ -64,17 +61,14 @@ const pl: BaseTranslation = {
TEMP_SENSORS: 'Czujniki temperatury 1-Wire®', TEMP_SENSORS: 'Czujniki temperatury 1-Wire®',
WRITE_CMD_SENT: 'Komenda zapisu została wysłana.', WRITE_CMD_SENT: 'Komenda zapisu została wysłana.',
EMS_BUS_WARNING: 'Brak połączenia z magistralą EMS. Jeśli ten błąd występuje dłużej niż kilka sekund, sprawdź ustawienia oraz profil płytki interfejsu.', EMS_BUS_WARNING: 'Brak połączenia z magistralą EMS. Jeśli ten błąd występuje dłużej niż kilka sekund, sprawdź ustawienia oraz profil płytki interfejsu.',
EMS_BUS_SCANNING: 'Trwa skanowanie urządzeń na magistrali EMS...',
CONNECTED: '{{połączono|połączenie|}}', CONNECTED: '{{połączono|połączenie|}}',
TX_ISSUES: 'problem z zapisem na magistralę EMS, spróbuj wybrać inny "Tryb transmisji (Tx)"', TX_ISSUES: 'problem z zapisem na magistralę EMS, spróbuj wybrać inny "Tryb transmisji (Tx)"',
DISCONNECTED: 'brak połączenia', DISCONNECTED: 'brak połączenia',
EMS_SCAN: 'Czy na pewno wykonać pełne skanowanie magistrali EMS?',
DATA_TRAFFIC: 'Ruch Danych', DATA_TRAFFIC: 'Ruch Danych',
EMS_DEVICE: 'Urządzenie EMS', EMS_DEVICE: 'Urządzenie EMS',
SUCCESS: 'Udane', SUCCESS: 'Udane',
FAIL: 'Nieudane', FAIL: 'Nieudane',
QUALITY: 'Jakość', QUALITY: 'Jakość',
SCAN: 'Skanuj',
STATUS_NAMES: [ STATUS_NAMES: [
'EMS, telegramy odebrane (Rx)', 'EMS, telegramy odebrane (Rx)',
'EMS, wysłane telegramy "odczyt" (Tx)', 'EMS, wysłane telegramy "odczyt" (Tx)',
@@ -125,7 +119,6 @@ const pl: BaseTranslation = {
ENUM_FORMAT: 'Wartości z listy w API/MQTT', ENUM_FORMAT: 'Wartości z listy w API/MQTT',
INDEX: 'indeks', INDEX: 'indeks',
ENABLE_PARASITE: 'Aktywuj zasilanie 1-wire pasożytnicze', ENABLE_PARASITE: 'Aktywuj zasilanie 1-wire pasożytnicze',
LOGGING: 'Logowanie',
LOG_HEX: 'Loguj telegramy EMS w systemie szesnastkowym (hex)', LOG_HEX: 'Loguj telegramy EMS w systemie szesnastkowym (hex)',
ENABLE_SYSLOG: 'Aktywuj SysLog', ENABLE_SYSLOG: 'Aktywuj SysLog',
LOG_LEVEL: 'Poziom logowania', LOG_LEVEL: 'Poziom logowania',
@@ -170,7 +163,6 @@ const pl: BaseTranslation = {
CLOSE: 'Zamknij', CLOSE: 'Zamknij',
USE: 'Aby zaktualizować firmware skorzystaj z funkcji', USE: 'Aby zaktualizować firmware skorzystaj z funkcji',
FACTORY_RESET: 'Ustawienia fabryczne', FACTORY_RESET: 'Ustawienia fabryczne',
SYSTEM_FACTORY_TEXT: 'Interfejs EMS-ESP został przywrócony do ustawień fabrycznych i zostanie teraz ponownie uruchomiony.',
SYSTEM_FACTORY_TEXT_DIALOG: 'Na pewno chcesz przywrócić ustawienia fabryczne interfejsu EMS-ESP?', SYSTEM_FACTORY_TEXT_DIALOG: 'Na pewno chcesz przywrócić ustawienia fabryczne interfejsu EMS-ESP?',
AVAILABLE_VERSION: 'Najnowsze dostępne wersje', AVAILABLE_VERSION: 'Najnowsze dostępne wersje',
STABLE: 'Stabilna', STABLE: 'Stabilna',
@@ -255,9 +247,7 @@ const pl: BaseTranslation = {
NETWORK_SCAN: 'Skanowanie sieci WiFi', NETWORK_SCAN: 'Skanowanie sieci WiFi',
IDLE: 'bezczynna', IDLE: 'bezczynna',
LOST: 'zostało utracone.', LOST: 'zostało utracone.',
SCANNING: 'Skanuję',
SCAN_AGAIN: 'Skanuj ponownie', SCAN_AGAIN: 'Skanuj ponownie',
NETWORK_SCANNER: 'Skaner sieci WiFi',
NETWORK_NO_WIFI: 'Brak sieci WiFi w zasięgu', NETWORK_NO_WIFI: 'Brak sieci WiFi w zasięgu',
NETWORK_BLANK_BSSID: 'pozostaw puste aby używać tylko SSID', NETWORK_BLANK_BSSID: 'pozostaw puste aby używać tylko SSID',
TX_POWER: 'Moc nadawania', TX_POWER: 'Moc nadawania',
@@ -292,9 +282,6 @@ const pl: BaseTranslation = {
ONCHANGE: 'O zmianie', ONCHANGE: 'O zmianie',
CONDITION: 'Stan', CONDITION: 'Stan',
SCHEDULE_UPDATED: 'Harmonogram został uaktualniony.', SCHEDULE_UPDATED: 'Harmonogram został uaktualniony.',
SCHEDULE_TIMER_1: 'przy starcie',
SCHEDULE_TIMER_2: 'co minutę',
SCHEDULE_TIMER_3: 'co godzinę',
CUSTOM_ENTITIES: '{{N|n|}}iestandardowe{{|j|}} encj{{e|i|}}', CUSTOM_ENTITIES: '{{N|n|}}iestandardowe{{|j|}} encj{{e|i|}}',
ENTITIES_HELP_1: 'Zdefiniuj niestandardowe encje dla magistrali EMS', ENTITIES_HELP_1: 'Zdefiniuj niestandardowe encje dla magistrali EMS',
ENTITIES_UPDATED: 'Niestandardowe encje zostały uaktualnione.', ENTITIES_UPDATED: 'Niestandardowe encje zostały uaktualnione.',
@@ -310,9 +297,7 @@ const pl: BaseTranslation = {
ACTIVELOW: 'Wyzwalany stanem niskim', ACTIVELOW: 'Wyzwalany stanem niskim',
UNCHANGED: 'Zachowaj stan', UNCHANGED: 'Zachowaj stan',
ALWAYS: 'Zawsze', ALWAYS: 'Zawsze',
ACTIVITY: 'Aktywność',
CONFIGURE: 'Konfiguracja {0}', CONFIGURE: 'Konfiguracja {0}',
SYSTEM_MEMORY: 'Pamięć systemowa',
APPLICATION_SETTINGS_1: 'Modyfikacja ustawień aplikacji EMS-ESP', APPLICATION_SETTINGS_1: 'Modyfikacja ustawień aplikacji EMS-ESP',
SECURITY_1: 'Dodawanie i usuwanie użytkowników', SECURITY_1: 'Dodawanie i usuwanie użytkowników',
DOWNLOAD_UPLOAD_1: 'Pobieranie/wysyłanie ustawień i firmware', DOWNLOAD_UPLOAD_1: 'Pobieranie/wysyłanie ustawień i firmware',
@@ -324,7 +309,6 @@ const pl: BaseTranslation = {
RENAME: 'Zmień nazwę', RENAME: 'Zmień nazwę',
ENABLE_MODBUS: 'Aktywuj Modbus', ENABLE_MODBUS: 'Aktywuj Modbus',
VIEW_LOG: 'Zdiagnozuj problemy', VIEW_LOG: 'Zdiagnozuj problemy',
UPLOAD_DRAG: 'przeciągnij i upuść plik lub kliknij tutaj',
SERVICES: 'Usługi', SERVICES: 'Usługi',
ALLVALUES: 'Wszystkie wartości', ALLVALUES: 'Wszystkie wartości',
SPECIAL_FUNCTIONS: 'Specjalne funkcje', SPECIAL_FUNCTIONS: 'Specjalne funkcje',
@@ -350,10 +334,8 @@ const pl: BaseTranslation = {
THIS_VERSION: 'Ta wersja', THIS_VERSION: 'Ta wersja',
PLATFORM: 'Platforma', PLATFORM: 'Platforma',
RELEASE_TYPE: 'Typ wydania', RELEASE_TYPE: 'Typ wydania',
INTERNET_CONNECTION_REQUIRED: 'Połączenie internetowe jest wymagane do automatycznej kontroli wersji i aktualizacji',
SWITCH_RELEASE_TYPE: 'Zmień na {0} wydanie', SWITCH_RELEASE_TYPE: 'Zmień na {0} wydanie',
FIRMWARE_VERSION_INFO: 'Informacje o wersji firmware', FIRMWARE_VERSION_INFO: 'Informacje o wersji firmware',
NO_DATA: 'Brak danych',
USER_PROFILE: 'Profil użytkownika', USER_PROFILE: 'Profil użytkownika',
STORED_VERSIONS: 'Zapisane wersje', STORED_VERSIONS: 'Zapisane wersje',
ONLINE_HELP: 'pomoc online', ONLINE_HELP: 'pomoc online',
@@ -364,10 +346,10 @@ const pl: BaseTranslation = {
TEST_EMAIL_SUCCESSFUL: 'Test email wysłany pomyślnie', TEST_EMAIL_SUCCESSFUL: 'Test email wysłany pomyślnie',
SYSTEM_NAME: 'Nazwa systemu', SYSTEM_NAME: 'Nazwa systemu',
COMMANDS: 'Komendy', COMMANDS: 'Komendy',
COMMANDS_UPDATED: 'Komendy zostały zaktualizowane',
COMMANDS_HELP_1: 'Zdefiniuj niestandardowe komendy dla magistrali EMS', COMMANDS_HELP_1: 'Zdefiniuj niestandardowe komendy dla magistrali EMS',
COMMAND_SENT: 'Komenda wysłana', COMMAND_SENT: 'Komenda wysłana',
RUN: 'Wykonaj' RUN: 'Wykonaj',
INTERNET_CONNECTION_CHECK: 'Sprawdzanie online dla dostępnych wersji'
}; };
export default pl; export default pl;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const sk: Translation = { const sk: Translation = {
LANGUAGE: 'Jazyk', LANGUAGE: 'Jazyk',
RETRY: 'Opakovať', RETRY: 'Opakovať',
LOADING: 'Načítanie',
IS_REQUIRED: '{0} je požadovaná', IS_REQUIRED: '{0} je požadovaná',
SIGN_IN: 'Prihlásiť sa', SIGN_IN: 'Prihlásiť sa',
SIGN_OUT: 'Odhlásiť sa', SIGN_OUT: 'Odhlásiť sa',
@@ -50,8 +49,6 @@ const sk: Translation = {
SETTINGS: 'Nastavenia', SETTINGS: 'Nastavenia',
UPDATED_OF: '{0} aktualizovaných', UPDATED_OF: '{0} aktualizovaných',
UPDATE_OF: '{0} aktualizované', UPDATE_OF: '{0} aktualizované',
REMOVED_OF: '{0} odstránených',
DELETION_OF: '{0} zmazaných',
OFFSET: 'Ofset', OFFSET: 'Ofset',
FACTOR: 'Faktor', FACTOR: 'Faktor',
FREQ: 'Frekvencia', FREQ: 'Frekvencia',
@@ -64,17 +61,14 @@ const sk: Translation = {
TEMP_SENSORS: 'Snímače teploty', TEMP_SENSORS: 'Snímače teploty',
WRITE_CMD_SENT: 'Príkaz zápisu bol odoslaný', WRITE_CMD_SENT: 'Príkaz zápisu bol odoslaný',
EMS_BUS_WARNING: 'Zbernica EMS odpojená. Ak toto upozornenie pretrváva aj po niekoľkých sekundách, skontrolujte nastavenia a profil dosky', EMS_BUS_WARNING: 'Zbernica EMS odpojená. Ak toto upozornenie pretrváva aj po niekoľkých sekundách, skontrolujte nastavenia a profil dosky',
EMS_BUS_SCANNING: 'Zisťovanie EMS zariadení...',
CONNECTED: 'Pripojené', CONNECTED: 'Pripojené',
TX_ISSUES: 'Problémy s Tx skontrolujte Tx režim', TX_ISSUES: 'Problémy s Tx skontrolujte Tx režim',
DISCONNECTED: 'Odpojené', DISCONNECTED: 'Odpojené',
EMS_SCAN: 'Naozaj chcete spustiť úplnú kontrolu zariadenia zbernice EMS?',
DATA_TRAFFIC: 'Dátová prevádzka', DATA_TRAFFIC: 'Dátová prevádzka',
EMS_DEVICE: 'EMS zariadenie', EMS_DEVICE: 'EMS zariadenie',
SUCCESS: 'ÚSPEŠNÉ', SUCCESS: 'ÚSPEŠNÉ',
FAIL: 'ZLYHANIE', FAIL: 'ZLYHANIE',
QUALITY: 'KVALITA', QUALITY: 'KVALITA',
SCAN: 'Scan',
STATUS_NAMES: [ STATUS_NAMES: [
'EMS Telegramy prijaté (Rx)', 'EMS Telegramy prijaté (Rx)',
'EMS Čítania (Tx)', 'EMS Čítania (Tx)',
@@ -125,7 +119,6 @@ const sk: Translation = {
ENUM_FORMAT: 'Enum formát API/MQTT', ENUM_FORMAT: 'Enum formát API/MQTT',
INDEX: 'Index', INDEX: 'Index',
ENABLE_PARASITE: 'Povoliť 1-wire parazitné napájanie DS18B20', ENABLE_PARASITE: 'Povoliť 1-wire parazitné napájanie DS18B20',
LOGGING: 'Logovanie',
LOG_HEX: 'Záznam telegramov EMS v hexadecimálnej sústave', LOG_HEX: 'Záznam telegramov EMS v hexadecimálnej sústave',
ENABLE_SYSLOG: 'Povoliť Syslog', ENABLE_SYSLOG: 'Povoliť Syslog',
LOG_LEVEL: 'Log úroveň', LOG_LEVEL: 'Log úroveň',
@@ -170,7 +163,6 @@ const sk: Translation = {
CLOSE: 'Zatvoriť', CLOSE: 'Zatvoriť',
USE: 'Použiť', USE: 'Použiť',
FACTORY_RESET: 'Továrenské nastavenia', FACTORY_RESET: 'Továrenské nastavenia',
SYSTEM_FACTORY_TEXT: 'Zariadenie bolo obnovené z výroby a teraz sa reštartuje',
SYSTEM_FACTORY_TEXT_DIALOG: 'Naozaj chcete resetovať EMS-ESP na predvolené výrobné nastavenia?', SYSTEM_FACTORY_TEXT_DIALOG: 'Naozaj chcete resetovať EMS-ESP na predvolené výrobné nastavenia?',
AVAILABLE_VERSION: 'Najnovšie dostupné verzie', AVAILABLE_VERSION: 'Najnovšie dostupné verzie',
STABLE: 'Stabilná', STABLE: 'Stabilná',
@@ -255,9 +247,7 @@ const sk: Translation = {
NETWORK_SCAN: 'Scan WiFi siete', NETWORK_SCAN: 'Scan WiFi siete',
IDLE: 'Nečinné', IDLE: 'Nečinné',
LOST: 'Stratené', LOST: 'Stratené',
SCANNING: 'Skenovanie',
SCAN_AGAIN: 'Skenovať znova', SCAN_AGAIN: 'Skenovať znova',
NETWORK_SCANNER: 'Sieťový skener',
NETWORK_NO_WIFI: 'WiFi siete nenájdené', NETWORK_NO_WIFI: 'WiFi siete nenájdené',
NETWORK_BLANK_BSSID: 'ponechajte prázdne, ak chcete používať iba SSID', NETWORK_BLANK_BSSID: 'ponechajte prázdne, ak chcete používať iba SSID',
TX_POWER: 'Tx výkon', TX_POWER: 'Tx výkon',
@@ -292,9 +282,6 @@ const sk: Translation = {
ONCHANGE: 'Pri zmene', ONCHANGE: 'Pri zmene',
CONDITION: 'Podmienka', CONDITION: 'Podmienka',
SCHEDULE_UPDATED: 'Plánovanie aktualizované', SCHEDULE_UPDATED: 'Plánovanie aktualizované',
SCHEDULE_TIMER_1: 'pri spustení',
SCHEDULE_TIMER_2: 'každú minútu',
SCHEDULE_TIMER_3: 'každú hodinu',
CUSTOM_ENTITIES: 'Vlastné entity', CUSTOM_ENTITIES: 'Vlastné entity',
ENTITIES_HELP_1: 'Získavanie vlastných entít zo zbernice EMS', ENTITIES_HELP_1: 'Získavanie vlastných entít zo zbernice EMS',
ENTITIES_UPDATED: 'Aktualizované entity', ENTITIES_UPDATED: 'Aktualizované entity',
@@ -310,9 +297,7 @@ const sk: Translation = {
ACTIVELOW: 'Aktívny Nízky', ACTIVELOW: 'Aktívny Nízky',
UNCHANGED: 'Nezmenené', UNCHANGED: 'Nezmenené',
ALWAYS: 'Vždy', ALWAYS: 'Vždy',
ACTIVITY: 'Aktivita',
CONFIGURE: 'Konfigurácia {0}', CONFIGURE: 'Konfigurácia {0}',
SYSTEM_MEMORY: 'Systémová pamäť',
APPLICATION_SETTINGS_1: 'Zmeniť nastavenia aplikácie EMS-ESP', APPLICATION_SETTINGS_1: 'Zmeniť nastavenia aplikácie EMS-ESP',
SECURITY_1: 'Pridať, alebo odstrániť používateľov', SECURITY_1: 'Pridať, alebo odstrániť používateľov',
DOWNLOAD_UPLOAD_1: 'Stiahnuť a nahrať nastavenia a firmware', DOWNLOAD_UPLOAD_1: 'Stiahnuť a nahrať nastavenia a firmware',
@@ -324,7 +309,6 @@ const sk: Translation = {
RENAME: 'Premenovať', RENAME: 'Premenovať',
ENABLE_MODBUS: 'Povoliť Modbus', ENABLE_MODBUS: 'Povoliť Modbus',
VIEW_LOG: 'Zobrazte log na diagnostiku problémov', VIEW_LOG: 'Zobrazte log na diagnostiku problémov',
UPLOAD_DRAG: 'presuňte sem súbor alebo ho kliknutím vyberte',
SERVICES: 'Služby', SERVICES: 'Služby',
ALLVALUES: 'Všetky hodnoty', ALLVALUES: 'Všetky hodnoty',
SPECIAL_FUNCTIONS: 'Špeciálne funkcie', SPECIAL_FUNCTIONS: 'Špeciálne funkcie',
@@ -350,10 +334,8 @@ const sk: Translation = {
THIS_VERSION: 'Táto verzia', THIS_VERSION: 'Táto verzia',
PLATFORM: 'Platforma', PLATFORM: 'Platforma',
RELEASE_TYPE: 'Typ vydania', RELEASE_TYPE: 'Typ vydania',
INTERNET_CONNECTION_REQUIRED: 'Internetové pripojenie je potrebné pre automatickú kontrolu a aktualizáciu',
SWITCH_RELEASE_TYPE: 'Prepnúť na {0} verziu', SWITCH_RELEASE_TYPE: 'Prepnúť na {0} verziu',
FIRMWARE_VERSION_INFO: 'Informácie o verzii firmware', FIRMWARE_VERSION_INFO: 'Informácie o verzii firmware',
NO_DATA: 'Žiadne dáta',
USER_PROFILE: 'Profil používateľa', USER_PROFILE: 'Profil používateľa',
STORED_VERSIONS: 'Uložené verzie', STORED_VERSIONS: 'Uložené verzie',
ONLINE_HELP: 'online pomoc', ONLINE_HELP: 'online pomoc',
@@ -364,10 +346,10 @@ const sk: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email bol úspešne odoslaný', TEST_EMAIL_SUCCESSFUL: 'Test email bol úspešne odoslaný',
SYSTEM_NAME: 'Názov systému', SYSTEM_NAME: 'Názov systému',
COMMANDS: 'Príkazy', COMMANDS: 'Príkazy',
COMMANDS_UPDATED: 'Príkazy aktualizované',
COMMANDS_HELP_1: 'Definujte vlastné príkazy pre magistrali EMS', COMMANDS_HELP_1: 'Definujte vlastné príkazy pre magistrali EMS',
COMMAND_SENT: 'Príkaz odoslaný', COMMAND_SENT: 'Príkaz odoslaný',
RUN: 'Volať príkaz' RUN: 'Volať príkaz',
INTERNET_CONNECTION_CHECK: 'Kontrola online pre dostupné verzie'
}; };
export default sk; export default sk;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const sv: Translation = { const sv: Translation = {
LANGUAGE: 'Språk', LANGUAGE: 'Språk',
RETRY: 'Försök igen', RETRY: 'Försök igen',
LOADING: 'Laddar',
IS_REQUIRED: '{0} Krävs', IS_REQUIRED: '{0} Krävs',
SIGN_IN: 'Logga in', SIGN_IN: 'Logga in',
SIGN_OUT: 'Logga ut', SIGN_OUT: 'Logga ut',
@@ -50,8 +49,6 @@ const sv: Translation = {
SETTINGS: 'Inställningar', SETTINGS: 'Inställningar',
UPDATED_OF: '{0} Uppdaterad', UPDATED_OF: '{0} Uppdaterad',
UPDATE_OF: '{0} Uppdatera', UPDATE_OF: '{0} Uppdatera',
REMOVED_OF: '{0} Raderad',
DELETION_OF: '{0} Radering',
OFFSET: 'Offset', OFFSET: 'Offset',
FACTOR: 'Faktor', FACTOR: 'Faktor',
FREQ: 'Frekvens', FREQ: 'Frekvens',
@@ -64,17 +61,14 @@ const sv: Translation = {
TEMP_SENSORS: 'Temperatursensorer', TEMP_SENSORS: 'Temperatursensorer',
WRITE_CMD_SENT: 'Skrivkommandon skickade', WRITE_CMD_SENT: 'Skrivkommandon skickade',
EMS_BUS_WARNING: 'EMS-buss nedkopplad. Om denna varning kvarstår efter några sekunder, kontrollera inställningar och enhets-profil.', EMS_BUS_WARNING: 'EMS-buss nedkopplad. Om denna varning kvarstår efter några sekunder, kontrollera inställningar och enhets-profil.',
EMS_BUS_SCANNING: 'Söker efter EMS-enheter...',
CONNECTED: 'Ansluten', CONNECTED: 'Ansluten',
TX_ISSUES: 'Sändfel - Prova ett annat TX-läge', TX_ISSUES: 'Sändfel - Prova ett annat TX-läge',
DISCONNECTED: 'Nedkopplad', DISCONNECTED: 'Nedkopplad',
EMS_SCAN: 'Är du säker på att du vill starta en full genomsökning av EMS-bussen?',
DATA_TRAFFIC: 'Datatrafik', DATA_TRAFFIC: 'Datatrafik',
EMS_DEVICE: 'EMS enhet', EMS_DEVICE: 'EMS enhet',
SUCCESS: 'Lyckades', SUCCESS: 'Lyckades',
FAIL: 'Misslyckades', FAIL: 'Misslyckades',
QUALITY: 'Kvalitet', QUALITY: 'Kvalitet',
SCAN: 'Sök',
STATUS_NAMES: [ STATUS_NAMES: [
'EMS-telegram (Rx)', 'EMS-telegram (Rx)',
'EMS-läsningar (Tx)', 'EMS-läsningar (Tx)',
@@ -125,7 +119,6 @@ const sv: Translation = {
ENUM_FORMAT: 'Enum-format API/MQTT', ENUM_FORMAT: 'Enum-format API/MQTT',
INDEX: 'Index', INDEX: 'Index',
ENABLE_PARASITE: 'Aktivera 1-wire parasitström', ENABLE_PARASITE: 'Aktivera 1-wire parasitström',
LOGGING: 'Loggning',
LOG_HEX: 'Logga EMS-telegram i hexadecimalformat', LOG_HEX: 'Logga EMS-telegram i hexadecimalformat',
ENABLE_SYSLOG: 'Aktivera Syslog', ENABLE_SYSLOG: 'Aktivera Syslog',
LOG_LEVEL: 'Loggnivå', LOG_LEVEL: 'Loggnivå',
@@ -170,7 +163,6 @@ const sv: Translation = {
CLOSE: 'Stäng', CLOSE: 'Stäng',
USE: 'Använd', USE: 'Använd',
FACTORY_RESET: 'Fabriksåterställning', FACTORY_RESET: 'Fabriksåterställning',
SYSTEM_FACTORY_TEXT: 'Enheten har blivit fabriksåterställd och startar nu om',
SYSTEM_FACTORY_TEXT_DIALOG: 'Är du säker på att du vill fabriksåterställa enheten?', SYSTEM_FACTORY_TEXT_DIALOG: 'Är du säker på att du vill fabriksåterställa enheten?',
AVAILABLE_VERSION: 'Senaste tillgängliga versioner', AVAILABLE_VERSION: 'Senaste tillgängliga versioner',
STABLE: 'Stabil', STABLE: 'Stabil',
@@ -255,9 +247,7 @@ const sv: Translation = {
NETWORK_SCAN: 'Sök efter WiFi-nätverk', NETWORK_SCAN: 'Sök efter WiFi-nätverk',
IDLE: 'Vilande', IDLE: 'Vilande',
LOST: 'Förlorad', LOST: 'Förlorad',
SCANNING: 'Söker',
SCAN_AGAIN: 'Sök igen', SCAN_AGAIN: 'Sök igen',
NETWORK_SCANNER: 'Hittade nätverk',
NETWORK_NO_WIFI: 'Inga WiFi-nätverk hittades', NETWORK_NO_WIFI: 'Inga WiFi-nätverk hittades',
NETWORK_BLANK_BSSID: 'lämna blankt för att bara använda SSID', NETWORK_BLANK_BSSID: 'lämna blankt för att bara använda SSID',
TX_POWER: 'Tx effekt', TX_POWER: 'Tx effekt',
@@ -292,9 +282,6 @@ const sv: Translation = {
ONCHANGE: 'Vid förändring', ONCHANGE: 'Vid förändring',
CONDITION: 'Villkor', CONDITION: 'Villkor',
SCHEDULE_UPDATED: 'Schema uppdaterat', SCHEDULE_UPDATED: 'Schema uppdaterat',
SCHEDULE_TIMER_1: 'vid uppstart',
SCHEDULE_TIMER_2: 'varje minut',
SCHEDULE_TIMER_3: 'varje timme',
CUSTOM_ENTITIES: 'Anpassade entiteter', CUSTOM_ENTITIES: 'Anpassade entiteter',
ENTITIES_HELP_1: 'Hämta anpassade entiteter från EMS bussen', ENTITIES_HELP_1: 'Hämta anpassade entiteter från EMS bussen',
ENTITIES_UPDATED: 'Entiteter uppdaterade', ENTITIES_UPDATED: 'Entiteter uppdaterade',
@@ -310,9 +297,7 @@ const sv: Translation = {
ACTIVELOW: 'Aktivt låg', ACTIVELOW: 'Aktivt låg',
UNCHANGED: 'Oändrad', UNCHANGED: 'Oändrad',
ALWAYS: 'Alltid', ALWAYS: 'Alltid',
ACTIVITY: 'Aktivitet',
CONFIGURE: 'Konfigurera {0}', CONFIGURE: 'Konfigurera {0}',
SYSTEM_MEMORY: 'Systemminne',
APPLICATION_SETTINGS_1: 'Ändra EMS-ESP Applikationsinställningar', APPLICATION_SETTINGS_1: 'Ändra EMS-ESP Applikationsinställningar',
SECURITY_1: 'Lägg till eller ta bort användare', SECURITY_1: 'Lägg till eller ta bort användare',
DOWNLOAD_UPLOAD_1: 'Ladda ner eller ladda upp inställningar och firmware', DOWNLOAD_UPLOAD_1: 'Ladda ner eller ladda upp inställningar och firmware',
@@ -324,7 +309,6 @@ const sv: Translation = {
RENAME: 'Byt namn', RENAME: 'Byt namn',
ENABLE_MODBUS: 'Aktivera Modbus', ENABLE_MODBUS: 'Aktivera Modbus',
VIEW_LOG: 'Titta i loggen för att felsöka problem', VIEW_LOG: 'Titta i loggen för att felsöka problem',
UPLOAD_DRAG: 'dra och släpp en fil här eller klicka för att välja en',
SERVICES: 'Tjänster', SERVICES: 'Tjänster',
ALLVALUES: 'Alla värden', ALLVALUES: 'Alla värden',
SPECIAL_FUNCTIONS: 'Specialfunktioner', SPECIAL_FUNCTIONS: 'Specialfunktioner',
@@ -350,10 +334,8 @@ const sv: Translation = {
THIS_VERSION: 'Denna version', THIS_VERSION: 'Denna version',
PLATFORM: 'Plattform', PLATFORM: 'Plattform',
RELEASE_TYPE: 'Utgivelsestyp', RELEASE_TYPE: 'Utgivelsestyp',
INTERNET_CONNECTION_REQUIRED: 'Internetanslutning krävs för automatisk version kontroll och uppdatering',
SWITCH_RELEASE_TYPE: 'Byt till {0} utgåva', SWITCH_RELEASE_TYPE: 'Byt till {0} utgåva',
FIRMWARE_VERSION_INFO: 'Information om firmwareversion', FIRMWARE_VERSION_INFO: 'Information om firmwareversion',
NO_DATA: 'Ingen data',
USER_PROFILE: 'Användarprofil', USER_PROFILE: 'Användarprofil',
STORED_VERSIONS: 'Lagrad versioner', STORED_VERSIONS: 'Lagrad versioner',
ONLINE_HELP: 'online hjälp', ONLINE_HELP: 'online hjälp',
@@ -364,10 +346,10 @@ const sv: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email skickad lyckades', TEST_EMAIL_SUCCESSFUL: 'Test email skickad lyckades',
SYSTEM_NAME: 'Systemnamn', SYSTEM_NAME: 'Systemnamn',
COMMANDS: 'Kommandon', COMMANDS: 'Kommandon',
COMMANDS_UPDATED: 'Kommandon uppdaterade',
COMMANDS_HELP_1: 'Definiera egna kommandon för EMS-Magistral', COMMANDS_HELP_1: 'Definiera egna kommandon för EMS-Magistral',
COMMAND_SENT: 'Kommando skickat', COMMAND_SENT: 'Kommando skickat',
RUN: 'Kör kommando' RUN: 'Kör kommando',
INTERNET_CONNECTION_CHECK: 'Kontrollerar online för tillgängliga versioner'
}; };
export default sv; export default sv;
+2 -20
View File
@@ -3,7 +3,6 @@ import type { Translation } from '../i18n-types';
const tr: Translation = { const tr: Translation = {
LANGUAGE: 'Dil', LANGUAGE: 'Dil',
RETRY: 'Tekrar Dene', RETRY: 'Tekrar Dene',
LOADING: 'Yükleniyor',
IS_REQUIRED: '{0} gerekiyor', IS_REQUIRED: '{0} gerekiyor',
SIGN_IN: 'Giriş Yap', SIGN_IN: 'Giriş Yap',
SIGN_OUT: 'Çıkış Yap', SIGN_OUT: 'Çıkış Yap',
@@ -50,8 +49,6 @@ const tr: Translation = {
SETTINGS: 'Ayarlar', SETTINGS: 'Ayarlar',
UPDATED_OF: '{0} Güncellendi', UPDATED_OF: '{0} Güncellendi',
UPDATE_OF: '{0} Güncelleme', UPDATE_OF: '{0} Güncelleme',
REMOVED_OF: '{0} Kaldırıldı',
DELETION_OF: '{0} Silindi',
OFFSET: 'Fark', OFFSET: 'Fark',
FACTOR: 'Etmen', FACTOR: 'Etmen',
FREQ: 'Frekans', FREQ: 'Frekans',
@@ -64,17 +61,14 @@ const tr: Translation = {
TEMP_SENSORS: 'Sıcaklık Sensörleri', TEMP_SENSORS: 'Sıcaklık Sensörleri',
WRITE_CMD_SENT: 'Yazma komutu gönderildi', WRITE_CMD_SENT: 'Yazma komutu gönderildi',
EMS_BUS_WARNING: 'EMS hat bağlantısı kesildi. Eğer bu uyarı birkaç saniye sonra devam ediyorsa lütfen ayarları ve kart tipini kontrol edin', EMS_BUS_WARNING: 'EMS hat bağlantısı kesildi. Eğer bu uyarı birkaç saniye sonra devam ediyorsa lütfen ayarları ve kart tipini kontrol edin',
EMS_BUS_SCANNING: 'EMS cihazları aranıyor...',
CONNECTED: 'Bağlandı', CONNECTED: 'Bağlandı',
TX_ISSUES: 'Tx sorunu - başka bir Tx Modu deneyin', TX_ISSUES: 'Tx sorunu - başka bir Tx Modu deneyin',
DISCONNECTED: 'Bağlantı kesildi', DISCONNECTED: 'Bağlantı kesildi',
EMS_SCAN: 'EMS Hattında tam bir cihaz taraması başlatmak istediğinizden emin misiniz?',
DATA_TRAFFIC: 'Veri trafiği', DATA_TRAFFIC: 'Veri trafiği',
EMS_DEVICE: 'EMS Cihazı', EMS_DEVICE: 'EMS Cihazı',
SUCCESS: 'BAŞARILI', SUCCESS: 'BAŞARILI',
FAIL: 'HATA', FAIL: 'HATA',
QUALITY: 'KALİTE', QUALITY: 'KALİTE',
SCAN: 'Tara',
STATUS_NAMES: [ STATUS_NAMES: [
'EMS Telegramlar Alındı (Rx)', 'EMS Telegramlar Alındı (Rx)',
'EMS Okuması (Tx)', 'EMS Okuması (Tx)',
@@ -125,7 +119,6 @@ const tr: Translation = {
ENUM_FORMAT: 'Enum Biçimleme API/MQTT', ENUM_FORMAT: 'Enum Biçimleme API/MQTT',
INDEX: 'İndeks', INDEX: 'İndeks',
ENABLE_PARASITE: '1-wire parazit gücü devreye al', ENABLE_PARASITE: '1-wire parazit gücü devreye al',
LOGGING: 'Kayıt ediliyor',
LOG_HEX: 'EMS telegramlarını hexadecimal olarak kayıt et', LOG_HEX: 'EMS telegramlarını hexadecimal olarak kayıt et',
ENABLE_SYSLOG: 'Sistem Kaydını Devreye Al', ENABLE_SYSLOG: 'Sistem Kaydını Devreye Al',
LOG_LEVEL: 'Kayıt Seviyesi', LOG_LEVEL: 'Kayıt Seviyesi',
@@ -170,7 +163,6 @@ const tr: Translation = {
CLOSE: 'Kapat', CLOSE: 'Kapat',
USE: 'KUllan', USE: 'KUllan',
FACTORY_RESET: 'Fabrika ayarına dönme', FACTORY_RESET: 'Fabrika ayarına dönme',
SYSTEM_FACTORY_TEXT: 'Cihaz fabrika ayarlarına döndü ve şimdi yendiden başlatılacak',
SYSTEM_FACTORY_TEXT_DIALOG: 'Cihazı fabrika ayarlarına döndürmek istediğinize emin misiniz?', SYSTEM_FACTORY_TEXT_DIALOG: 'Cihazı fabrika ayarlarına döndürmek istediğinize emin misiniz?',
AVAILABLE_VERSION: 'En son kullanılabilir sürümler', AVAILABLE_VERSION: 'En son kullanılabilir sürümler',
STABLE: 'Kararlı', STABLE: 'Kararlı',
@@ -255,9 +247,7 @@ const tr: Translation = {
NETWORK_SCAN: 'Kablosuz Ağları Tara', NETWORK_SCAN: 'Kablosuz Ağları Tara',
IDLE: 'Serbest', IDLE: 'Serbest',
LOST: 'Kayıp', LOST: 'Kayıp',
SCANNING: 'Tarıyor',
SCAN_AGAIN: 'Tekrar tara', SCAN_AGAIN: 'Tekrar tara',
NETWORK_SCANNER: 'Ağ Tarayıcısı',
NETWORK_NO_WIFI: 'Hiçbir Kablosuz Ağ bulunamadı', NETWORK_NO_WIFI: 'Hiçbir Kablosuz Ağ bulunamadı',
NETWORK_BLANK_BSSID: 'sadece SSID kullanmak için boş bırakın', NETWORK_BLANK_BSSID: 'sadece SSID kullanmak için boş bırakın',
TX_POWER: 'Aktarım gücü', TX_POWER: 'Aktarım gücü',
@@ -292,9 +282,6 @@ const tr: Translation = {
ONCHANGE: 'Değişimde', ONCHANGE: 'Değişimde',
CONDITION: 'Durum', CONDITION: 'Durum',
SCHEDULE_UPDATED: 'Zamanlama güncellendi', SCHEDULE_UPDATED: 'Zamanlama güncellendi',
SCHEDULE_TIMER_1: 'Başlangıçta',
SCHEDULE_TIMER_2: 'her dakikada',
SCHEDULE_TIMER_3: 'her saatte',
CUSTOM_ENTITIES: 'Özel Varlıklar', CUSTOM_ENTITIES: 'Özel Varlıklar',
ENTITIES_HELP_1: 'Özel varlıkları EMS hattından alın', ENTITIES_HELP_1: 'Özel varlıkları EMS hattından alın',
ENTITIES_UPDATED: 'Varlıklar güncellendi', ENTITIES_UPDATED: 'Varlıklar güncellendi',
@@ -310,9 +297,7 @@ const tr: Translation = {
ACTIVELOW: 'Aktif Düşük', ACTIVELOW: 'Aktif Düşük',
UNCHANGED: 'Değiştirilmedi', UNCHANGED: 'Değiştirilmedi',
ALWAYS: 'Her zaman', ALWAYS: 'Her zaman',
ACTIVITY: 'Faaliyet',
CONFIGURE: 'Yapılandır {0}', CONFIGURE: 'Yapılandır {0}',
SYSTEM_MEMORY: 'Sistem Belleği',
APPLICATION_SETTINGS_1: 'EMS-ESP Uygulama Ayarlarını Değiştir', APPLICATION_SETTINGS_1: 'EMS-ESP Uygulama Ayarlarını Değiştir',
SECURITY_1: 'Kullanıcıları ekle veya kaldır', SECURITY_1: 'Kullanıcıları ekle veya kaldır',
DOWNLOAD_UPLOAD_1: 'Ayarları ve firmware dosyasını indir ve yükle', DOWNLOAD_UPLOAD_1: 'Ayarları ve firmware dosyasını indir ve yükle',
@@ -324,7 +309,6 @@ const tr: Translation = {
RENAME: 'Yeniden Adlandır', RENAME: 'Yeniden Adlandır',
ENABLE_MODBUS: 'Modbus\'ı etkinleştir', ENABLE_MODBUS: 'Modbus\'ı etkinleştir',
VIEW_LOG: 'Sorunu tanımlamak için günlüğü görüntüleyin', VIEW_LOG: 'Sorunu tanımlamak için günlüğü görüntüleyin',
UPLOAD_DRAG: 'Bir dosya buraya sürükleyip bırakın veya seçmek için tıklayın',
SERVICES: 'Hizmetler', SERVICES: 'Hizmetler',
ALLVALUES: 'Tüm Değerler', ALLVALUES: 'Tüm Değerler',
SPECIAL_FUNCTIONS: 'Özel Fonksiyonlar', SPECIAL_FUNCTIONS: 'Özel Fonksiyonlar',
@@ -350,10 +334,8 @@ const tr: Translation = {
THIS_VERSION: 'Bu Sürüm', THIS_VERSION: 'Bu Sürüm',
PLATFORM: 'Platforma', PLATFORM: 'Platforma',
RELEASE_TYPE: 'Sürüm Tipi', RELEASE_TYPE: 'Sürüm Tipi',
INTERNET_CONNECTION_REQUIRED: 'Otomatik sürüm kontrolü ve güncelleme için internet bağlantısı gereklidir',
SWITCH_RELEASE_TYPE: '{0} sürümüne geç', SWITCH_RELEASE_TYPE: '{0} sürümüne geç',
FIRMWARE_VERSION_INFO: 'Firmware Sürüm Bilgisi', FIRMWARE_VERSION_INFO: 'Firmware Sürüm Bilgisi',
NO_DATA: 'Hiçbir veri yok',
USER_PROFILE: 'Kullanıcı Profili', USER_PROFILE: 'Kullanıcı Profili',
STORED_VERSIONS: 'Kaydedilmiş Sürümler', STORED_VERSIONS: 'Kaydedilmiş Sürümler',
ONLINE_HELP: 'online yardım', ONLINE_HELP: 'online yardım',
@@ -364,10 +346,10 @@ const tr: Translation = {
TEST_EMAIL_SUCCESSFUL: 'Test email başarıyla gönderildi', TEST_EMAIL_SUCCESSFUL: 'Test email başarıyla gönderildi',
SYSTEM_NAME: 'Sistem Adı', SYSTEM_NAME: 'Sistem Adı',
COMMANDS: 'Komutlar', COMMANDS: 'Komutlar',
COMMANDS_UPDATED: 'Komutlar güncellendi',
COMMANDS_HELP_1: 'Özel komutları EMS hattına tanımlayın', COMMANDS_HELP_1: 'Özel komutları EMS hattına tanımlayın',
COMMAND_SENT: 'Komut gönderildi', COMMAND_SENT: 'Komut gönderildi',
RUN: 'Komutu çalıştır' RUN: 'Komutu çalıştır',
INTERNET_CONNECTION_CHECK: 'Online bağlantısı kontrol ediliyor'
}; };
export default tr; export default tr;
+3 -1
View File
@@ -1,6 +1,7 @@
// Types for the `getVersions` action response coming from the device. // Types for the `getVersions` action response coming from the device.
// The device proxies the request to emsesp.org/versions.json. If the device // The device proxies the request to emsesp.org/versions.json. If the device
// is offline the `stable` and `dev` fields are omitted. // is offline the `stable` and `dev` fields are omitted, but `system_name` is
// always sent as it comes from the device itself.
export interface VersionInfo { export interface VersionInfo {
version: string; version: string;
@@ -20,4 +21,5 @@ export interface VersionsResponse {
current: CurrentVersionInfo; current: CurrentVersionInfo;
stable?: RemoteVersionInfo; stable?: RemoteVersionInfo;
dev?: RemoteVersionInfo; dev?: RemoteVersionInfo;
system_name?: string;
} }
+6
View File
@@ -257,6 +257,9 @@ export default defineConfig(
minify: 'terser' as const, minify: 'terser' as const,
terserOptions: createHostedTerserOptions(), terserOptions: createHostedTerserOptions(),
rollupOptions: { rollupOptions: {
checks: {
pluginTimings: false
},
treeshake: { treeshake: {
moduleSideEffects: false moduleSideEffects: false
}, },
@@ -292,6 +295,9 @@ export default defineConfig(
minify: 'terser' as const, minify: 'terser' as const,
terserOptions: createProductionTerserOptions(), terserOptions: createProductionTerserOptions(),
rollupOptions: { rollupOptions: {
checks: {
pluginTimings: false
},
treeshake: { treeshake: {
moduleSideEffects: false, moduleSideEffects: false,
propertyReadSideEffects: false as const, propertyReadSideEffects: false as const,
+1 -1
View File
@@ -18,5 +18,5 @@
"@trivago/prettier-plugin-sort-imports": "^6.0.2", "@trivago/prettier-plugin-sort-imports": "^6.0.2",
"prettier": "^3.9.6" "prettier": "^3.9.6"
}, },
"packageManager": "pnpm@11.21.0+sha512.521705bce689924eac72f5a3587122f362689ef6571e55ba80076fd637c11132ecffada26fad4ea79c485bfddbfd3d5a2a5b05805a77e893de71ec8a6cca3bb1" "packageManager": "pnpm@11.24.0+sha512.bd27e345e976dcb0be0b7a1228217b049a817e21b1f355c90dbe7dc46671895a8bc1e6d06c24554505ea93ea0b45f489a27ec1bfbc8de6a9659fca0f16fa0000"
} }
+4
View File
@@ -450,6 +450,8 @@ function upgradeImportantMessages(version: string) {
// called by Action endpoint getVersions // called by Action endpoint getVersions
// Set MOCK_OFFLINE = true to simulate a device with no internet (omits stable/dev). // Set MOCK_OFFLINE = true to simulate a device with no internet (omits stable/dev).
const MOCK_OFFLINE = false; const MOCK_OFFLINE = false;
// const MOCK_OFFLINE = true;
function get_versions() { function get_versions() {
const isDev = THIS_VERSION.includes('dev'); const isDev = THIS_VERSION.includes('dev');
const currentUpgradeable = const currentUpgradeable =
@@ -457,6 +459,7 @@ function get_versions() {
(isDev ? DEV_VERSION_IS_UPGRADEABLE : STABLE_VERSION_IS_UPGRADEABLE); (isDev ? DEV_VERSION_IS_UPGRADEABLE : STABLE_VERSION_IS_UPGRADEABLE);
const data: { const data: {
system_name: string;
current: { current: {
version: string; version: string;
type: 'stable' | 'dev'; type: 'stable' | 'dev';
@@ -466,6 +469,7 @@ function get_versions() {
stable?: { version: string; date: string; upgradeable: boolean }; stable?: { version: string; date: string; upgradeable: boolean };
dev?: { version: string; date: string; upgradeable: boolean }; dev?: { version: string; date: string; upgradeable: boolean };
} = { } = {
system_name: settings.system_name,
current: { current: {
version: THIS_VERSION, version: THIS_VERSION,
type: isDev ? 'dev' : 'stable', type: isDev ? 'dev' : 'stable',
+2 -1
View File
@@ -196,9 +196,10 @@ lib_ldf_mode = off
lib_deps = lib_deps =
; unit tests ; unit tests
; The test code is in ./test/test_api.cpp and the test_api.h file is created by the native-test-create environment. ; The test code is in ./test/test_api.cpp and the test_api.h file is generated by the native-test-create environment.
; to run use `platformio run -e native-test -t exec`. All tests should PASS. ; to run use `platformio run -e native-test -t exec`. All tests should PASS.
; tip: use https://jsondiff.com/ to compare the expected and actual responses. ; tip: use https://jsondiff.com/ to compare the expected and actual responses.
; to update the test output run `python3 scripts/generate_test_api.py`
[env:native-test] [env:native-test]
platform = native platform = native
test_build_src = true test_build_src = true
+16 -16
View File
@@ -7,7 +7,7 @@ MqttSettingsService::MqttSettingsService(AsyncWebServer * server, FS * fs, Secur
, _fsPersistence(MqttSettings::read, MqttSettings::update, this, fs, MQTT_SETTINGS_FILE) , _fsPersistence(MqttSettings::read, MqttSettings::update, this, fs, MQTT_SETTINGS_FILE)
, _reconfigureMqtt(false) , _reconfigureMqtt(false)
, _disconnectedAt(0) , _disconnectedAt(0)
, _disconnectReason(espMqttClientTypes::DisconnectReason::TCP_DISCONNECTED) , _disconnectReason(espMqttClientTypes::DisconnectReason::USER_OK)
, _mqttClient(nullptr) { , _mqttClient(nullptr) {
addUpdateHandler([this] { onConfigUpdated(); }, false); addUpdateHandler([this] { onConfigUpdated(); }, false);
} }
@@ -41,6 +41,7 @@ void MqttSettingsService::startClient() {
delete _mqttClient; delete _mqttClient;
_mqttClient = nullptr; _mqttClient = nullptr;
} }
if (_state.enableTLS) { if (_state.enableTLS) {
isSecure = true; isSecure = true;
if (emsesp::EMSESP::system_.PSram() == 0) { if (emsesp::EMSESP::system_.PSram() == 0) {
@@ -82,7 +83,10 @@ void MqttSettingsService::loop() {
_mqttClient->disconnect(true); _mqttClient->disconnect(true);
} }
if (_reconfigureMqtt || (_disconnectedAt && static_cast<uint32_t>(uuid::get_uptime() - _disconnectedAt) >= MQTT_RECONNECTION_DELAY)) { if (_reconfigureMqtt || (_disconnectedAt && static_cast<uint32_t>(uuid::get_uptime() - _disconnectedAt) >= MQTT_RECONNECTION_DELAY)) {
// reconfigure MQTT client // configure MQTT client
if (_reconfigureMqtt) {
emsesp::EMSESP::logger().info("Starting MQTT service");
}
_disconnectedAt = configureMqtt() ? 0 : uuid::get_uptime(); _disconnectedAt = configureMqtt() ? 0 : uuid::get_uptime();
_reconfigureMqtt = false; _reconfigureMqtt = false;
} }
@@ -129,11 +133,14 @@ void MqttSettingsService::onMqttConnect(bool sessionPresent) {
} }
void MqttSettingsService::onMqttDisconnect(espMqttClientTypes::DisconnectReason reason) { void MqttSettingsService::onMqttDisconnect(espMqttClientTypes::DisconnectReason reason) {
_disconnectReason = reason; if (reason != _disconnectReason) {
emsesp::EMSESP::mqtt_.on_disconnect(reason);
_disconnectReason = reason;
}
if (!_disconnectedAt) { if (!_disconnectedAt) {
_disconnectedAt = uuid::get_uptime(); _disconnectedAt = uuid::get_uptime();
} }
emsesp::EMSESP::mqtt_.on_disconnect(reason);
} }
void MqttSettingsService::onConfigUpdated() { void MqttSettingsService::onConfigUpdated() {
@@ -147,7 +154,9 @@ void MqttSettingsService::onConfigUpdated() {
bool MqttSettingsService::configureMqtt() { bool MqttSettingsService::configureMqtt() {
// disconnect if already connected // disconnect if already connected
if (_mqttClient->connected()) { if (_mqttClient->connected()) {
// emsesp::EMSESP::logger().info("Disconnecting to configure"); #if defined(EMSESP_DEBUG)
emsesp::EMSESP::logger().debug("Disconnecting to configure");
#endif
_mqttClient->disconnect(true); _mqttClient->disconnect(true);
} }
@@ -184,12 +193,7 @@ 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) {
@@ -199,11 +203,7 @@ 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;
+5 -2
View File
@@ -94,11 +94,14 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri
} }
#endif #endif
// it's firmware - initialize the ArduinoOTA updater // it's firmware - initialize the ArduinoOTA updater
emsesp::EMSESP::logger().info("Uploading firmware file %s (size: %dKB). Please wait...", filename.c_str(), filesize / 1024); emsesp::EMSESP::logger().info("Firmware uploading (file %s, size: %dKB). Please wait...", filename.c_str(), filesize / 1024);
// turn off UART to prevent interference with the upload // turn off UART to prevent interference with the upload
emsesp::EMSuart::stop(); emsesp::EMSuart::stop();
// tell main loop we're uploading so services as paused (e.g. MQTT)
emsesp::EMSESP::system_.systemStatus(emsesp::SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING);
if (Update.begin(filesize - sizeof(esp_image_header_t))) { if (Update.begin(filesize - sizeof(esp_image_header_t))) {
if (strlen(_md5.data()) == _md5.size() - 1) { if (strlen(_md5.data()) == _md5.size() - 1) {
Update.setMD5(_md5.data()); Update.setMD5(_md5.data());
@@ -111,7 +114,7 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri
} }
} else if (_is_filesystem) { } else if (_is_filesystem) {
// LittleFS filesystem image - flash directly to the spiffs/littlefs partition // LittleFS filesystem image - flash directly to the spiffs/littlefs partition
emsesp::EMSESP::logger().info("Uploading filesystem image %s (size: %uKB). Please wait...", filename.c_str(), static_cast<unsigned>(filesize / 1024)); emsesp::EMSESP::logger().info("Uploading filesystem file %s (size: %uKB). Please wait...", filename.c_str(), static_cast<unsigned>(filesize / 1024));
emsesp::EMSuart::stop(); emsesp::EMSuart::stop();
LittleFS.end(); // unmount LittleFS before we overwrite the partition under it LittleFS.end(); // unmount LittleFS before we overwrite the partition under it
+4 -4
View File
@@ -1893,7 +1893,7 @@ void EMSESP::shell_prompt() {
void EMSESP::loop() { void EMSESP::loop() {
uuid::loop(); // store system uptime uuid::loop(); // store system uptime
// handle network // handle network (Wifi, ETH and AP)
network_.loop(); network_.loop();
// handles LED and checks system health, and syslog service // handles LED and checks system health, and syslog service
@@ -1901,14 +1901,13 @@ void EMSESP::loop() {
return; // LED flashing is active meaning its about to reboot, skip the rest of the loop return; // LED flashing is active meaning its about to reboot, skip the rest of the loop
} }
esp32React.loop(); // core services: Network, AP, MQTT and NTP
webLogService.loop(); // log in Web UI webLogService.loop(); // log in Web UI
// run the loop, unless we're in the middle of an OTA upload // run the main loop, unless we're in the middle of an OTA upload
// if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_NORMAL || EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO) { // if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_NORMAL || EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO) {
if (EMSESP::system_.systemStatus() != SYSTEM_STATUS::SYSTEM_STATUS_PENDING_UPLOAD if (EMSESP::system_.systemStatus() != SYSTEM_STATUS::SYSTEM_STATUS_PENDING_UPLOAD
&& EMSESP::system_.systemStatus() != SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING) { && EMSESP::system_.systemStatus() != SYSTEM_STATUS::SYSTEM_STATUS_UPLOADING) {
// loop through the services esp32React.loop(); // MQTT and NTP
webStatusService.loop(); // periodic refresh of cached versions.json webStatusService.loop(); // periodic refresh of cached versions.json
rxservice_.loop(); // process any incoming Rx telegrams rxservice_.loop(); // process any incoming Rx telegrams
shower_.loop(); // check for shower on/off shower_.loop(); // check for shower on/off
@@ -1921,6 +1920,7 @@ void EMSESP::loop() {
scheduled_fetch_values(); // force a query on the EMS devices to fetch latest data at a set interval (1 min) scheduled_fetch_values(); // force a query on the EMS devices to fetch latest data at a set interval (1 min)
compact_entities_if_stable(); // reclaim over-reserved entity vector capacity once device discovery settles compact_entities_if_stable(); // reclaim over-reserved entity vector capacity once device discovery settles
} }
// check for GPIO Errors - this is called once when booting // check for GPIO Errors - this is called once when booting
if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO) { if (EMSESP::system_.systemStatus() == SYSTEM_STATUS::SYSTEM_STATUS_INVALID_GPIO) {
static bool only_once = false; static bool only_once = false;
+35 -25
View File
@@ -51,7 +51,7 @@ bool Mqtt::publish_single2cmd_;
std::vector<Mqtt::MQTTSubFunction, AllocatorPSRAM<Mqtt::MQTTSubFunction>> Mqtt::mqtt_subfunctions_; std::vector<Mqtt::MQTTSubFunction, AllocatorPSRAM<Mqtt::MQTTSubFunction>> Mqtt::mqtt_subfunctions_;
uint32_t Mqtt::mqtt_publish_fails_ = 0; uint32_t Mqtt::mqtt_publish_fails_ = 0;
bool Mqtt::connecting_ = false; bool Mqtt::connected_ = false;
bool Mqtt::initialized_ = false; bool Mqtt::initialized_ = false;
uint16_t Mqtt::queuecount_ = 0; uint16_t Mqtt::queuecount_ = 0;
uint8_t Mqtt::connectcount_ = 0; uint8_t Mqtt::connectcount_ = 0;
@@ -472,30 +472,39 @@ bool Mqtt::get_publish_onchange(uint8_t device_type) {
} }
return false; return false;
} }
void Mqtt::on_disconnect(espMqttClientTypes::DisconnectReason reason) {
// only show the error once on the first connect failure
if (!connecting_) {
return;
}
connecting_ = false;
connectcount_++; // count # reconnects
if (reason == espMqttClientTypes::DisconnectReason::TCP_DISCONNECTED) { // human-readable cause for a MQTT disconnect reason, nullptr if not recognized
LOG_WARNING("MQTT disconnected: TCP"); static const char * mqtt_disconnect_cause(espMqttClientTypes::DisconnectReason reason) {
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_UNACCEPTABLE_PROTOCOL_VERSION) { using espMqttClientTypes::DisconnectReason;
LOG_WARNING("MQTT disconnected: Unacceptable protocol version");
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_IDENTIFIER_REJECTED) { switch (reason) {
LOG_WARNING("MQTT disconnected: Identifier Rejected"); case DisconnectReason::TCP_DISCONNECTED:
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_SERVER_UNAVAILABLE) { return "TCP";
LOG_WARNING("MQTT disconnected: Server unavailable"); case DisconnectReason::MQTT_UNACCEPTABLE_PROTOCOL_VERSION:
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_MALFORMED_CREDENTIALS) { return "Unaccepted protocol version";
LOG_WARNING("MQTT disconnected: Malformed credentials"); case DisconnectReason::MQTT_IDENTIFIER_REJECTED:
} else if (reason == espMqttClientTypes::DisconnectReason::MQTT_NOT_AUTHORIZED) { return "Identifier Rejected";
LOG_WARNING("MQTT disconnected: Not authorized"); case DisconnectReason::MQTT_SERVER_UNAVAILABLE:
} else if (reason == espMqttClientTypes::DisconnectReason::TLS_BAD_FINGERPRINT) { return "Server unavailable";
LOG_WARNING("MQTT disconnected: Server fingerprint invalid"); case DisconnectReason::MQTT_MALFORMED_CREDENTIALS:
return "Malformed credentials";
case DisconnectReason::MQTT_NOT_AUTHORIZED:
return "Not authorized";
case DisconnectReason::TLS_BAD_FINGERPRINT:
return "Server fingerprint invalid";
default:
return nullptr;
}
}
void Mqtt::on_disconnect(espMqttClientTypes::DisconnectReason reason) {
connected_ = false;
const char * cause = mqtt_disconnect_cause(reason);
if (cause) {
LOG_ERROR("MQTT connection failure: %s. Retrying...", cause);
} else { } else {
LOG_WARNING("MQTT disconnected: code %d", reason); LOG_ERROR("MQTT connection failure: code %d. Retrying...", static_cast<int>(reason));
} }
mqttClient_->clearQueue(true); mqttClient_->clearQueue(true);
@@ -503,13 +512,14 @@ void Mqtt::on_disconnect(espMqttClientTypes::DisconnectReason reason) {
// MQTT on_connect - when an MQTT connect is established // MQTT on_connect - when an MQTT connect is established
void Mqtt::on_connect() { void Mqtt::on_connect() {
if (connecting_) { if (connected_) {
return; // prevent duplicated connections return; // prevent duplicated connections
} }
LOG_INFO("MQTT connected"); LOG_INFO("MQTT connected");
connecting_ = true; connected_ = true;
connectcount_++;
queuecount_ = mqttClient_->queueSize(); queuecount_ = mqttClient_->queueSize();
if (ha_enabled_) { if (ha_enabled_) {
+3 -3
View File
@@ -61,8 +61,8 @@ class Mqtt {
enum Operation : uint8_t { PUBLISH, SUBSCRIBE, UNSUBSCRIBE }; enum Operation : uint8_t { PUBLISH, SUBSCRIBE, UNSUBSCRIBE };
enum NestedFormat : uint8_t { NESTED = 1, SINGLE }; enum NestedFormat : uint8_t { NESTED = 1, SINGLE };
static constexpr uint8_t MQTT_TOPIC_MAX_SIZE = 128; // fixed, not a user setting anymore static constexpr uint8_t MQTT_TOPIC_MAX_SIZE = 128; // fixed, not a user setting anymore
static constexpr uint16_t MQTT_QUEUE_MAX_SIZE = 300; static constexpr uint16_t MQTT_QUEUE_MAX_SIZE = 300;
static constexpr uint32_t MQTT_DISCONNECT_TIMEOUT = 1000; // max ms to flush a graceful disconnect on non-PSRAM boards static constexpr uint32_t MQTT_DISCONNECT_TIMEOUT = 1000; // max ms to flush a graceful disconnect on non-PSRAM boards
static void on_connect(); static void on_connect();
@@ -297,7 +297,7 @@ class Mqtt {
uint32_t last_publish_heartbeat_ = 0; uint32_t last_publish_heartbeat_ = 0;
// uint32_t last_publish_queue_ = 0; // uint32_t last_publish_queue_ = 0;
static bool connecting_; static bool connected_;
static bool initialized_; static bool initialized_;
static uint32_t mqtt_publish_fails_; static uint32_t mqtt_publish_fails_;
static uint16_t queuecount_; static uint16_t queuecount_;
+2 -2
View File
@@ -842,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;
@@ -2922,7 +2922,7 @@ bool System::command_restart(const char * value, const int8_t id) {
return true; return true;
} }
LOG_INFO("Restarting system immediately"); LOG_INFO("Restarting system...");
// restart will be handled by the main loop // restart will be handled by the main loop
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_RESTART_REQUESTED); EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_RESTART_REQUESTED);
return true; return true;
+1 -1
View File
@@ -222,7 +222,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
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, add back for 0xE6, #3193 // 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,
+1 -1
View File
@@ -1 +1 @@
#define EMSESP_APP_VERSION "3.9.0-dev.4" #define EMSESP_APP_VERSION "3.9.0-dev.5"
+8 -4
View File
@@ -321,12 +321,15 @@ uint8_t WebStatusService::upgradeImportantMessages(std::string & version) {
} }
// action = getVersions // action = getVersions
// returns the device's current version for dev and stable // returns the device's current version for dev and stable, plus the system name
// The remote fetch runs from the main loop task via WebStatusService::loop() so that we never block the AsyncTCP callback // The remote fetch runs from the main loop task via WebStatusService::loop() so that we never block the AsyncTCP callback
void WebStatusService::getVersions(JsonObject root) { void WebStatusService::getVersions(JsonObject root) {
FirmwareVersion current_version(current_version_s); FirmwareVersion current_version(current_version_s);
bool is_dev = current_version.prerelease().find("dev") != std::string::npos; bool is_dev = current_version.prerelease().find("dev") != std::string::npos;
// the WebUI shows this in the menu drawer. It's included here because this action is called once after login
root["system_name"] = EMSESP::system_.system_name();
JsonObject current = root["current"].to<JsonObject>(); JsonObject current = root["current"].to<JsonObject>();
current["version"] = current_version_s; current["version"] = current_version_s;
current["type"] = is_dev ? "dev" : "stable"; current["type"] = is_dev ? "dev" : "stable";
@@ -426,13 +429,13 @@ bool WebStatusService::refresh_versions_cache() {
JsonDocument doc; JsonDocument doc;
auto http_code = http_request(VERSIONS_URL, "GET", "", doc.as<JsonObjectConst>(), result); auto http_code = http_request(VERSIONS_URL, "GET", "", doc.as<JsonObjectConst>(), result);
if (http_code != 200) { if (http_code != 200) {
EMSESP::logger().warning("versions.json: HTTP error code %d", http_code); EMSESP::logger().warning("refresh_versions_cache() HTTP error code %d", http_code);
return false; return false;
} }
DeserializationError err = deserializeJson(doc, result); DeserializationError err = deserializeJson(doc, result);
if (err) { if (err) {
#if defined(EMSESP_DEBUG) #if defined(EMSESP_DEBUG)
EMSESP::logger().debug("versions.json: parse error"); EMSESP::logger().debug("refresh_versions_cache() parse error");
#endif #endif
return false; return false;
} }
@@ -455,7 +458,8 @@ bool WebStatusService::refresh_versions_cache() {
versions_cache_valid_ = true; versions_cache_valid_ = true;
#if defined(EMSESP_DEBUG) #if defined(EMSESP_DEBUG)
EMSESP::logger().debug("versions.json: fetched stable=%s, dev=%s, current=%s", EMSESP::logger().debug("Fetched from %s: stable=%s, dev=%s, current=%s",
VERSIONS_URL,
versions_stable_.version.c_str(), versions_stable_.version.c_str(),
versions_dev_.version.c_str(), versions_dev_.version.c_str(),
current_version_s.c_str()); current_version_s.c_str());
File diff suppressed because one or more lines are too long