diff --git a/README.md b/README.md index 9771c18..a81e7c1 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ **This adapter uses Sentry libraries to automatically report exceptions and code errors to the developers.** For more details and for information how to disable the error reporting see [Sentry-Plugin Documentation](https://github.com/ioBroker/plugin-sentry#plugin-sentry)! Sentry reporting is used starting with js-controller 3.0. > [!IMPORTANT] -> This adapter can only be installed from npm. A GitHub install is not possible! +> This adapter can only be installed from npm. A GitHub installation is not possible! > For more important information please read the [Important Information](#important-information-read-first) section! ## Description @@ -21,9 +21,9 @@ TODO ## Important Information (READ FIRST!) * **Not installable via GitHub**: This adapter can only be installed via npm. * **Never delete partial matter instance objects or object trees!** The configuration for this adapter is **not** contained in just one central object like in other ore simple adapters. This means that deleting instance objects or object trees can lead to a broken configuration, and you might need to reconfigure the adapter from scratch. -* **Never reinstall the adapter by deleting the instance** if you want to keep paired devices (e.g. on Controller) or paired Controllers (e.g. on Bridges). If you delete the instance all paired devices will be deleted, and you need to pair them again. -* **Use an ioBroker Backup to back up the configuration** and restore the backup to restore it. If really needed without backup then export the whole object tree of the adapter instance (e.g. matter.0) and import it back if needed. These can be a high number of objects depending on the number of devices and controllers you have paired. -* Some objects are not shown by default because they are irrelevant for normal operation. If you need to see them you can enable the "Expert Mode" in the adapter settings. This mainly is about the "storage" objects. Please **do not** change them unless you really, really know what you are doing! +* **Never reinstall the adapter by deleting the instance** if you want to keep paired devices (e.g., on Controller) or paired Controllers (e.g., on Bridges). If you delete the instance all paired devices will be deleted, and you need to pair them again. +* **Use an ioBroker Backup to back up the configuration** and restore the backup to restore it. If really needed without a backup then export the whole object tree of the adapter instance (e.g., `matter.0`) and import it back if needed. These can be a high number of objects depending on the number of devices and controllers you have paired. +* Some objects are not shown by default because they are irrelevant for normal operation. If you need to see them, you can enable the "Expert Mode" in the adapter settings. This mainly is about the "storage" objects. Please **do not** change them unless you really, really know what you are doing! ## Prerequisites to use this adapter @@ -35,24 +35,24 @@ If you want to use the iobroker Visu App for device pairing you need: ### General prerequisites * One instance of the adapter is bound to one host (aka IP). Multiple instances require a multi-host setup. * Make sure IPv6 is enabled in your network and the host you use this adapter on has an IPv6 address - * If you use LXC containers in Proxmox this is like **not** given because Proxmox hosts are normally not configured for IPv6! A solution you can try is described in the [Wiki](https://github.com/ioBroker/ioBroker.matter/wiki/Troubleshooting) + * If you use LXC containers in Proxmox, this is like **not** given because Proxmox hosts are normally not configured for IPv6! A solution you can try is described in the [Wiki](https://github.com/ioBroker/ioBroker.matter/wiki/Troubleshooting) * Make sure that UDP packages can flow between the devices, your mobile app, the hubs and the host you use this adapter on! - * Mainly make sure to **not** use VLANs, because UDP is usually not routed between VLANs! Or find out how to configure your router to allow this (Fritzbox does not work with this!) - * If you use Docker containers make sure to use **Host Mode** to allow UDP packages to flow between the containers and the host. Bridged network mode does not work with UDP packages! + * Mainly make sure to **not** use VLANs, because UDP is usually not routed between VLANs! Or find out how to configure your router to allow this (Fritz Box! does not work with this!) + * If you use Docker containers, make sure to use **Host Mode** to allow UDP packages to flow between the containers and the host. Bridged network mode does not work with UDP packages! ### Prerequisites to Expose ioBroker devices as Matter Bridges or Devices -Important: In order to expose more than 5 Bridged devices or to expose additional separate Devices or Bridges you need to have a Matter Pro Account with an active Assistant or Remote Control License and entering this into the adapter configuration! Please support our team with the efforts we invest in Matter with this. Controller usage is not limited by this. +Important: In order to expose more than 5 Bridged devices or to expose additional separate Devices or Bridges, you need to have a Matter Pro Account with an active Assistant or Remote Control License and entering this into the adapter configuration! Please support our team with the efforts we invest in Matter with this. Controller usage is not limited by this. * The Bridges and devices that the ioBroker Adapter exposes are not officially certified by the Matter organization. This means they only work in Ecosystems that allow this. * For Google additional steps might be needed - see https://github.com/project-chip/matter.js/blob/main/docs/ECOSYSTEMS.md#google-home-ecosystem * **Aqara Hub M3** and **Yandex** are currently (as of November 2024) not allow "uncertified devices" to be paired! -* Each Ecosystem has different limits about devices per Bridge and such. So if a high number of devices (there are test results up to 64 which should work at least in Apple, Google and - a bit wonky - Amazon) one bridge makes issues. please try splitting it up to multiple bridges. I would also be happy to find out the practical limits so please report your experiences. +* Each Ecosystem has different limits about devices per Bridge and such. So if a high number of devices (there are test results up to 64 which should work at least in Apple, Google and - a bit wonky - Amazon) one bridge makes issues. please try splitting it up to multiple bridges. I would also be happy to find out the practical limits, so please report your experiences. * For Alexa currently only the "Default Bridge" can be used on a host. Multiple Bridges to use with Alexa are only possible on different hosts. ### Prerequisites to use Matter devices in ioBroker (aka "Matter Controller") -* If you plan to use Thread based devices (check the package for information) you need to have a Thread Border Router (TBR) in your network. Check https://github.com/project-chip/matter.js/blob/main/docs/ECOSYSTEMS.md for more information about the ecosystems and their Thread support. More information on Thread and also on how to add an own TBR can be found at https://github.com/project-chip/matter.js/blob/main/docs/USAGE_THREAD.md -* If you run on Linux and plan to use Thread based devices and have issues connecting to them please refer to https://github.com/project-chip/matter.js/blob/main/docs/TROUBLESHOOTING.md#ipv6-linux-system-details for instructions how to tweak the IPv6 configuration on your Linux system. -* Initial commissioning of devices is possible with the "ioBroker Visu App" which uses the BLE of your mobile device and is the most convenient way. You can also use the BLE of your ioBroker host but then the device also needs to be in BLE range of your host. When using the App you need an ioBroker Pro Account with an active Assistant or Remote Control License. +* If you plan to use Thread-based devices (check the package for information), you need to have a Thread Border Router (TBR) in your network. Check https://github.com/project-chip/matter.js/blob/main/docs/ECOSYSTEMS.md for more information about the ecosystems and their Thread support. More information on Thread and also on how to add an own TBR can be found at https://github.com/project-chip/matter.js/blob/main/docs/USAGE_THREAD.md +* If you run on Linux and plan to use Thread-based devices and have issues connecting to them, please refer to https://github.com/project-chip/matter.js/blob/main/docs/TROUBLESHOOTING.md#ipv6-linux-system-details for instructions how to tweak the IPv6 configuration on your Linux system. +* Initial commissioning of devices is possible with the "ioBroker Visu App" which uses the BLE of your mobile device and is the most convenient way. You can also use the BLE of your ioBroker host, but then the device also needs to be in BLE range of your host. When using the App you need an ioBroker Pro Account with an active Assistant or Remote Control License. ## Supported devices @@ -125,21 +125,21 @@ If you need more granularity and access to device specific functionality or sett #### Using the Application Cluster states (needs to be enabled!) Note: This is considered Advanced Usage! -Sometimes it might be handy to also see more internal details of the device or to access more specific functionality of the device. In this case you can enable the "Application Cluster states" for the node or device. This e.g. allows to set the sensitivity for a motion sensor. When enabled for a node (valid then for all devices exposed by the node) or a device you will see a lot of additional states in an objects folder "data". +Sometimes it might be handy to also see more internal details of the device or to access more specific functionality of the device. In this case you can enable the "Application Cluster states" for the node or device. This e.g., allows setting the sensitivity for a motion sensor. When enabled for a node (valid then for all devices exposed by the node) or a device, you will see a lot of additional states in an object's folder "data". The details are structured by the application cluster and separated in attributes (data states) and commands. The exact meaning, units and allowed values and ranges for the data can be taken from the Matter Application Specification document. -When commands are exposed as a "button" then the action can be triggered by just setting a boolean value to the state. But most commands require more data (these are "json" strings) and require that a json string with all command fields are provided. The exact definition of the command fields can be taken from the Matter Application Specification document. +When commands are exposed as a "button" then the action can be triggered by just setting a boolean value to the state. But most commands require more data (these are "json" strings) and require that a JSON string with all command fields are provided. The exact definition of the command fields can be taken from the Matter Application Specification document. #### Using the System Cluster states (needs to be enabled!) Note: This is considered Professional Usage! -In all normal end user cases you should not need to use the System Cluster states. They are only needed for special cases and for debugging or to deeply explore the Matter cluster data. If you enable them you will see a lot of additional states that are not needed for normal operation. Any changes to the writable states can break the functionality of the devices. So please only use them if you know what you are doing! +In all normal end user cases, you should not need to use the System Cluster states. They are only needed for special cases and for debugging or to deeply explore the Matter cluster data. If you enable them, you will see a lot of additional states that are not needed for normal operation. Any changes to the writable states can break the functionality of the devices. So please only use them if you know what you are doing! ### Using the Matter Bridges #### Recommendations -* Not all ecosystems support all device types and sometimes ecosystems react strange when you add a device type they do not support. So please check the ecosystem documentation for the supported device types, if available or try it out. We try to collect the details in the [Supported ioBroker devices](#supported-iobroker-device-types) section. Please report any new information as an issue or PR. -* If you plan to use bridges with many devices so please consider commissioning the bridge initially with just some added devices and then add more overtime. This can help to avoid issues with the ecosystems and also could be a better experience for you. +* Not all ecosystems support all device types, and sometimes ecosystems react strangely when you add a device type they do not support. So please check the ecosystem documentation for the supported device types, if available or try it out. We try to collect the details in the [Supported ioBroker devices](#supported-iobroker-device-types) section. Please report any new information as an issue or PR. +* If you plan to use bridges with many devices, so please consider commissioning the bridge initially with just some added devices and then add more overtime. This can help to avoid issues with the ecosystems and also could be a better experience for you. ### Using the Matter Devices TBD @@ -149,17 +149,17 @@ TBD ### Troubleshooting for Devices and Bridges * With Alexa only the Default bridge can be used on a host. Multiple Bridges to use with Alexa are only possible on different hosts. -* When an Ecosystem shows the device as disconnected, especially after an adapter restart, then this usually means that the controller has not yet reconnected to the device. This can take some time. If it does not reconnect after a few minutes then please check the connection information in the UI. If an ecosystem is not connecting at all please check logs and potentially debug logs and open an issue. +* When an Ecosystem shows the device as disconnected, especially after an adapter restart, then this usually means that the controller has not yet reconnected to the device. This can take some time. If it does not reconnect after a few minutes, then please check the connection information in the UI. If an ecosystem is not connecting at all, please check logs and potentially debug logs and open an issue. ### Troubleshooting for the Controller ## How to report issues * Please check [Prerequisites to use this adapter](#prerequisites-to-use-this-adapter) and [Troubleshooting](#troubleshooting) first -* Check that you are using the latest version available - or if not, if the changelog for the versions since your version contain information about your issue. Then try updating first please. -* Check existing open GitHub issues. If yours is also listed there vote for it by adding a thumbs up on first comment. This helps to prioritize the issues. "Me Too" posts are not needed. +* Check that you are using the latest version available - or if not, if the changelog for the versions since your version contains information about your issue. Then try updating first, please. +* Check existing open GitHub issues. If yours is also listed, there vote for it by adding a thumbs up on the first comment. This helps to prioritize the issues. "Me Too" posts are not needed. * Create a GitHub issue if your issue is not existing -* Turn on Debug logs fpr the matter instance, and additionally "Matter Debug" logs on the main page of the adapter settings. Include the logs (as Text file please, Logfile location usually /opt/iobroker/logs/...) as text file attachment in your issue report. Please do not cut only the error but also add some minutes of log before and after the error to get some more context. Please also include information on what exactly is seen there, what was done and such. The more context you can provide the better. +* Turn on Debug logs for the matter instance, and additionally "Matter Debug" logs on the main page of the adapter settings. Include the logs (as a Text file please, Logfile location usually `/opt/iobroker/logs/...`) as text file attachment in your issue report. Please do not cut only the error but also add some minutes of log before and after the error to get some more context. Please also include information on what exactly is seen there, what was done and such. The more context you can provide, the better. ## ToDo @@ -217,7 +217,6 @@ TBD * (0) Solar Power -> ??? * (0) Battery Storage -> ??? * (0) Heat Pump -> ??? - ## Changelog +### **WORK IN PROGRESS** +* (@GermanBluefox) Fixed GUI errors +* (@GermanBluefox) Added `Controller fabric label` to configuration +* (@GermanBluefox) Solution for QR-Code scanning on non HTTPS pages + ### 0.3.4 (2024-12-31) * (@Apollon77) Updates matter.js to address several issues * (@bluefox) Optimized UI ### 0.3.3 (2024-12-28) -* (@Apollon77) Allows to trigger commands via matter also when state already matches the value +* (@Apollon77) Allows triggering commands via matter also when the state already matches the value * (@Apollon77) Sets and updates the fabric label for paired devices (default is "ioBroker matter.X") -* (@Apollon77) Detects state deletion for ioBroker devices and updates device in UI to show device state +* (@Apollon77) Detects state deletion for ioBroker devices and updates a device in UI to show device state * (@Apollon77) Several optimizations on commissioning * (@Apollon77) Do not show commissioning QR codes in ioBroker log * (@Apollon77) Use Fabric label to try to detect if ioBroker is the controller @@ -249,7 +253,7 @@ TBD ### 0.3.0 (2024-12-20) * BREAKING: Please re-enter your ioBroker Pro Cloud Password! -* (@Apollon77) Makes sure the adapter is stopped before being updated +* (@Apollon77) Made sure the adapter is stopped before being updated * (@Apollon77) Optimizes device discovery and allows to stop it again ### 0.2.10 (2024-12-19) @@ -264,7 +268,7 @@ TBD * (@Apollon77) Fixes LightSensor state mapping * (@Apollon77) Prevents errors when only some energy states exist * (@Apollon77) Uses the IP provided by Android when commissioning devices if possible -* (@Apollon77) Restructure discovery to run in background and not block the UI +* (@Apollon77) Restructure discovery to run in the background and not block the UI * (@Apollon77) Exposes States for Enums for Matter nodes * (@Apollon77) Prevent storage to delete wrong data when a node gets removed @@ -300,7 +304,7 @@ TBD ### 0.2.5 (2024-12-06) * (@Apollon77) Sets the "no-compose" flag correctly to normally use composed if needed and adds it to a missing dialog -* (@Apollon77) Allows to use null values if needed +* (@Apollon77) Allows using null values if needed * (@Apollon77) Fixes UNREACH handling for devices * (@Apollon77) Fixes object change handling for controller * (@Apollon77) Allows Bridges to expose its name as a device name @@ -364,4 +368,4 @@ TBD ## License Apache-2.0 -Copyright (c) 2023-2024 Denis Haev +Copyright (c) 2023-2025 Denis Haev diff --git a/src-admin/package-lock.json b/src-admin/package-lock.json index 506a478..79a432f 100644 --- a/src-admin/package-lock.json +++ b/src-admin/package-lock.json @@ -1,12 +1,12 @@ { "name": "iobroker.matter", - "version": "0.3.3", + "version": "0.3.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "iobroker.matter", - "version": "0.3.3", + "version": "0.3.4", "dependencies": { "@foxriver76/iob-component-lib": "^0.2.0", "@iobroker/adapter-react-v5": "^7.4.10", @@ -15,6 +15,7 @@ "@types/react-dom": "^18.3.5", "@types/uuid": "^10.0.0", "@vitejs/plugin-react": "^4.3.4", + "@yudiel/react-qr-scanner": "^2.1.0", "qr-scanner": "^1.4.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -1970,6 +1971,18 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/dom-webcodecs": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@types/dom-webcodecs/-/dom-webcodecs-0.1.11.tgz", + "integrity": "sha512-yPEZ3z7EohrmOxbk/QTAa0yonMFkNkjnVXqbGb7D4rMr+F1dGQ8ZUFxXkyLLJuiICPejZ0AZE9Rrk9wUCczx4A==", + "license": "MIT" + }, + "node_modules/@types/emscripten": { + "version": "1.39.13", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz", + "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -2066,6 +2079,20 @@ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" } }, + "node_modules/@yudiel/react-qr-scanner": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@yudiel/react-qr-scanner/-/react-qr-scanner-2.1.0.tgz", + "integrity": "sha512-O3832Qk8YU+vnLO+tsJalfQcXRZ1pOB9l6WrI3OdwpxkQEzukpT48M6Hc2vUUe1rFE6qapQnV3RGRFNM0S7CHw==", + "license": "MIT", + "dependencies": { + "barcode-detector": "^2.3.1", + "webrtc-adapter": "9.0.1" + }, + "peerDependencies": { + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" + } + }, "node_modules/ace-builds": { "version": "1.37.1", "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.37.1.tgz", @@ -2145,6 +2172,16 @@ "npm": ">=6" } }, + "node_modules/barcode-detector": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/barcode-detector/-/barcode-detector-2.3.1.tgz", + "integrity": "sha512-D9KEtrquS1tmBZduxBZl8qublIKnRrFqD8TAHDYcLCyrHQBo+vitIxmjMJ61LvXjXyAMalOlO7q0Oh/9Rl2PbQ==", + "license": "MIT", + "dependencies": { + "@types/dom-webcodecs": "0.1.11", + "zxing-wasm": "1.3.4" + } + }, "node_modules/bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", @@ -3873,6 +3910,12 @@ "loose-envify": "^1.1.0" } }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==", + "license": "MIT" + }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -4263,6 +4306,19 @@ } } }, + "node_modules/webrtc-adapter": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-9.0.1.tgz", + "integrity": "sha512-1AQO+d4ElfVSXyzNVTOewgGT/tAomwwztX/6e3totvyyzXPvXIIuUUjAmyZGbKBKbZOXauuJooZm3g6IuFuiNQ==", + "license": "BSD-3-Clause", + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4413,6 +4469,15 @@ "engines": { "node": ">= 6" } + }, + "node_modules/zxing-wasm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/zxing-wasm/-/zxing-wasm-1.3.4.tgz", + "integrity": "sha512-9l0QymyATF19FmI92QHe7Dayb+BUN7P7zFAt5iDgTnUf0dFWokz6GVA/W9EepjW5q8s3e89fIE/7uxpX27yqEQ==", + "license": "MIT", + "dependencies": { + "@types/emscripten": "^1.39.13" + } } } } diff --git a/src-admin/package.json b/src-admin/package.json index 99e8c7d..3c391f2 100644 --- a/src-admin/package.json +++ b/src-admin/package.json @@ -13,6 +13,7 @@ "@types/react-dom": "^18.3.5", "@types/uuid": "^10.0.0", "@vitejs/plugin-react": "^4.3.4", + "@yudiel/react-qr-scanner": "^2.1.0", "qr-scanner": "^1.4.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -21,7 +22,7 @@ "uuid": "^11.0.3" }, "scripts": { - "start": "vite", + "start": "vite --host", "build": "vite build", "lint": "eslint -c eslint.config.mjs", "check-ts": "tsc --noEmit --checkJS false", diff --git a/src-admin/src/App.tsx b/src-admin/src/App.tsx index bb2515e..4c147ac 100644 --- a/src-admin/src/App.tsx +++ b/src-admin/src/App.tsx @@ -25,6 +25,8 @@ import { type GenericAppProps, type GenericAppState, type IobTheme, + SaveCloseButtons, + DialogConfirm, } from '@iobroker/adapter-react-v5'; import { clone, getText } from './Utils'; @@ -42,6 +44,7 @@ import type { MatterAdapterConfig, MatterConfig, NodeStateResponse, + Processing, } from './types'; import enLang from './i18n/en.json'; @@ -92,6 +95,8 @@ interface AppState extends GenericAppState { matter: MatterConfig; commissioning: CommissioningInfo | null; nodeStates: { [uuid: string]: NodeStateResponse }; + /** Information about nodes being processed */ + inProcessing: Processing; /** Undefined if no detection ran yet */ detectedDevices?: DetectedRoom[]; ready: boolean; @@ -169,6 +174,7 @@ class App extends GenericApp { progress: null, showWelcomeDialog: false, welcomeDialogShowed: false, + inProcessing: null, }); this.alert = window.alert; @@ -182,7 +188,7 @@ class App extends GenericApp { heartbeat?: number; } | null, ): void => { - // backend is alive, so stop connection interval + // backend is alive, so stop a connection interval if (this.connectToBackEndInterval) { console.log(`Connected after ${this.connectToBackEndCounter} attempts`); this.connectToBackEndCounter = 0; @@ -303,19 +309,35 @@ class App extends GenericApp { return null; } + const adapterSettings: MatterAdapterConfig = this.state.native as MatterAdapterConfig; + return ( { + themeType={this.state.themeType} + onClose={async ( + login?: string, + password?: string, + navigateTo?: 'controller' | 'bridges', + ): Promise => { + if (login && password) { + if (adapterSettings.login !== login || adapterSettings.pass !== password) { + this.updateNativeValue('login', login, () => this.updateNativeValue('pass', password)); + } + } if (!this.state.welcomeDialogShowed) { await this.socket.setState(`matter.${this.instance}.info.welcomeDialog`, true, true); } - this.setState({ showWelcomeDialog: false, welcomeDialogShowed: true }); + this.setState({ showWelcomeDialog: false, welcomeDialogShowed: true }, () => { + if (navigateTo) { + this.setState({ selectedTab: navigateTo }); + } + }); }} - login={this.state.native.login} - pass={this.state.native.pass} + login={adapterSettings.login} + pass={adapterSettings.pass} /> ); } @@ -325,7 +347,9 @@ class App extends GenericApp { return; } - if (update.command === 'progress') { + if (update.command === 'processing') { + this.setState({ inProcessing: update.processing || null }); + } else if (update.command === 'progress') { if (update.progress) { if (update.progress.close) { if (this.state.progress) { @@ -483,13 +507,16 @@ class App extends GenericApp { }); }} onShowWelcomeDialog={() => this.setState({ showWelcomeDialog: true })} - onLoad={(native: Record) => this.onLoadConfig(native)} + onLoad={(native: MatterAdapterConfig) => this.onLoadConfig(native)} socket={this.socket} common={this.common} native={this.state.native as MatterAdapterConfig} instance={this.instance} matter={this.state.matter} showToast={(text: string) => this.showToast(text)} + onError={(errorText: string): void => { + this.setConfigurationError(errorText); + }} /> ); } @@ -507,6 +534,7 @@ class App extends GenericApp { this.setState({ nodeStates: _nodeStates }); }} nodeStates={this.state.nodeStates} + inProcessing={this.state.inProcessing} themeName={this.state.themeName} themeType={this.state.themeType} theme={this.state.theme} @@ -540,6 +568,7 @@ class App extends GenericApp { this.setState({ nodeStates: _nodeStates }); }} nodeStates={this.state.nodeStates} + inProcessing={this.state.inProcessing} commissioning={this.state.commissioning?.devices || {}} socket={this.socket} themeName={this.state.themeName} @@ -565,12 +594,14 @@ class App extends GenericApp { } async getLicense(): Promise { - if (this.state.native.login && this.state.native.pass) { + const adapterSettings: MatterAdapterConfig = this.state.native as MatterAdapterConfig; + + if (adapterSettings.login && adapterSettings.pass) { if (this.state.alive) { // ask the instance const result = await this.socket.sendTo(`matter.${this.instance}`, 'getLicense', { - login: this.state.native.login, - pass: this.state.native.pass, + login: adapterSettings.login, + pass: adapterSettings.pass, }); if (result.error) { this.showToast(result.error); @@ -652,6 +683,47 @@ class App extends GenericApp { ); } + renderSaveCloseButtons(): React.JSX.Element | null { + if (!this.state.confirmClose && !this.state.bottomButtons) { + return null; + } + + return ( + <> + {this.state.bottomButtons ? ( + => await this.onSave(isClose)} + onClose={() => { + if (this.state.changed) { + this.setState({ confirmClose: true }); + } else { + GenericApp.onClose(); + } + }} + error={!!this.state.isConfigurationError} + /> + ) : null} + {this.state.confirmClose ? ( + + this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose()) + } + /> + ) : null} + + ); + } + render(): React.JSX.Element { if (!this.state.ready) { return ( diff --git a/src-admin/src/Tabs/Bridges.tsx b/src-admin/src/Tabs/Bridges.tsx index f3661e6..ea9a98d 100644 --- a/src-admin/src/Tabs/Bridges.tsx +++ b/src-admin/src/Tabs/Bridges.tsx @@ -1366,9 +1366,10 @@ export class Bridges extends BridgesAndDevices { return ( + {this.renderProcessOverlay(bridge.uuid)} void; updateNodeStates: (states: { [uuid: string]: NodeStateResponse }) => void; + inProcessing: Processing; } export interface BridgesAndDevicesState { @@ -347,12 +350,16 @@ class BridgesAndDevices this.requestAdditionalInformation(e, deviceOrBridge.uuid)} > @@ -509,6 +516,41 @@ class BridgesAndDevices it.id.endsWith(uuidWithPoint)); + if (item) { + return item.inProgress ? 'processing' : 'inQueue'; + } + return false; + } + + // eslint-disable-next-line react/no-unused-class-component-methods + renderProcessOverlay(uuid: string): React.JSX.Element | null { + const processing = this.getInProcessing(uuid); + if (!processing) { + return null; + } + return ( +
+ {processing === 'processing' ? : null} +
+ ); + } + getCancelButton(button?: ActionButton | 'apply' | 'cancel' | 'close'): React.JSX.Element { let isClose = false; if (typeof button === 'string') { @@ -629,6 +671,10 @@ class BridgesAndDevices - {I18n.t('QR Code to connect')} + {I18n.t('QR Code to connect for %s', name)} = { panel: { @@ -118,30 +116,18 @@ interface ComponentState { discovered: CommissionableDevice[]; discoveryRunning: boolean; discoveryDone: boolean; - qrCode: string | null; - manualCode: string; - cameras: QrScanner.Camera[]; - camera: string; - hideVideo: boolean; nodes: Record; states: Record; /** If qr code dialog should be shown (optional a device can be provided) */ - showQrCodeDialog: { device?: CommissionableDevice; open: boolean }; + showQrCodeDialog: CommissionableDevice | null | true; /* increase this number to reload the devices */ triggerControllerLoad: number; - /** qr scan error */ - qrError: string; } class Controller extends Component { - /** Reference object to call methods on QR Scanner */ - private readonly refQrScanner: React.RefObject = React.createRef(); - /** Reference object to call methods on DM */ private readonly refDeviceManager: React.RefObject = React.createRef(); - private qrScanner: QrScanner | null | true = null; - constructor(props: ComponentProps) { super(props); @@ -149,18 +135,12 @@ class Controller extends Component { discovered: [], discoveryRunning: false, discoveryDone: false, - qrCode: null, - manualCode: '', - cameras: [], - camera: '', - hideVideo: false, nodes: {}, states: {}, - showQrCodeDialog: { open: false }, + showQrCodeDialog: null, backendProcessingActive: false, bleDialogOpen: false, triggerControllerLoad: 0, - qrError: '', }; } @@ -269,50 +249,10 @@ class Controller extends Component { async componentWillUnmount(): Promise { this.props.registerMessageHandler(null); - this.destroyQrCode(); await this.props.socket.unsubscribeObject(`matter.${this.props.instance}.controller.*`, this.onObjectChange); this.props.socket.unsubscribeState(`matter.${this.props.instance}.controller.*`, this.onStateChange); } - async initQrCode(): Promise { - if (!this.qrScanner && this.refQrScanner.current) { - this.qrScanner = true; - - this.qrScanner = new QrScanner( - this.refQrScanner.current, - (result: QrScanner.ScanResult): void => { - if (result?.data && result.data !== this.state.qrCode) { - this.setState({ qrCode: result.data, qrError: '' }); - } - }, - { - returnDetailedScanResult: true, - highlightCodeOutline: true, - highlightScanRegion: true, - maxScansPerSecond: 5, - alsoTryWithoutScanRegion: true, - onDecodeError: error => { - if (!this.state.qrCode && this.state.qrError !== error.toString()) { - this.setState({ qrError: I18n.t(error.toString()) }); - } - }, - }, - ); - - const cameras: QrScanner.Camera[] = await QrScanner.listCameras(true); - - const camera = window.localStorage.getItem('camera') || (cameras.length ? cameras[0].id : ''); - - await this.qrScanner.setCamera(camera); - - this.setState({ cameras, camera, hideVideo: !cameras.length }); - } - - if (this.qrScanner && this.qrScanner !== true) { - await this.qrScanner.start(); - } - } - onMessage = (message: GUIMessage | null): void => { if (message?.command === 'reconnect' || message?.command === 'updateController') { // refresh the list of devices @@ -335,13 +275,6 @@ class Controller extends Component { } }; - destroyQrCode(): void { - if (this.qrScanner && this.qrScanner !== true) { - this.qrScanner.destroy(); - } - this.qrScanner = null; - } - /** * Render the loading spinner if backend processing is active */ @@ -588,140 +521,50 @@ class Controller extends Component { } renderQrCodeDialog(): React.JSX.Element | null { - if (!this.state.showQrCodeDialog.open) { + if (!this.state.showQrCodeDialog) { return null; } return ( - this.setState({ showQrCodeDialog: { open: false } }, () => this.destroyQrCode())} - maxWidth="lg" - fullWidth - > - {I18n.t('Add device by pairing code or QR Code')} - -
{I18n.t('Add via QR Code')}
- - {I18n.t('Requirements: add via QR Code')} -
- {I18n.t( - ' Please DO NOT use the QR code / pairing code that is printed on the Matter device.', - )} -
-
- this.setState({ manualCode: e.target.value })} - /> -
-
-
- -
- {this.state.camera.length ? ( - - ) : null} -
- - - - -
+ this.setState({ discovered }, () => { + this.refDeviceManager.current?.loadData(); + }); + } + } else { + this.setState({ showQrCodeDialog: null }); + } + }} + themeType={this.props.themeType} + /> ); } @@ -737,6 +580,9 @@ class Controller extends Component { > {I18n.t('Discovered devices to pair')} +
+ {I18n.t('Pairing requirement')} +
{ onClick={async () => { await this.stopDiscovery(); this.setState({ - showQrCodeDialog: { device, open: true }, - manualCode: '', - qrCode: '', - qrError: '', + showQrCodeDialog: device, }); - setTimeout(async () => { - try { - await this.initQrCode(); - } catch (e) { - console.warn(`Cannot provide QR Code scanning: ${e}`); - } - }, 500); }} />
@@ -786,16 +622,18 @@ class Controller extends Component { - + {!this.state.discoveryDone ? ( + + ) : null} - - - + this.setState({ editDeviceDialog: null }, () => this.props.updateConfig(matter)); + } + }} + /> ); } @@ -933,8 +685,9 @@ class Devices extends BridgesAndDevices { return ( + {this.renderProcessOverlay(device.uuid)}
{ this.setState({ editDeviceDialog: { type: 'device', - name: getText(device.name), - originalName: getText(device.name), + data: { + name: getText(device.name), + deviceType: device.type, + vendorID: device.vendorID || '', + productID: device.productID || '', + noComposed: !!device.noComposed, + dimmerOnLevel: Number(device.dimmerOnLevel) || 0, + dimmerUseLastLevelForOn: !!device.dimmerUseLastLevelForOn, + actionAllowedByIdentify: !!device.actionAllowedByIdentify, + }, deviceIndex: index, auto: !!device.auto, - deviceType: device.type, - originalDeviceType: device.type, - vendorID: device.vendorID || '', - productID: device.productID || '', - originalVendorID: device.vendorID || '', - originalProductID: device.productID || '', - originalNoComposed: !!device.noComposed, - noComposed: !!device.noComposed, - dimmerOnLevel: Number(device.dimmerOnLevel) || 0, - originalDimmerOnLevel: Number(device.dimmerOnLevel) || 0, - dimmerUseLastLevelForOn: !!device.dimmerUseLastLevelForOn, - originalDimmerUseLastLevelForOn: !!device.dimmerUseLastLevelForOn, - actionAllowedByIdentify: !!device.actionAllowedByIdentify, - originalActionAllowedByIdentify: !!device.actionAllowedByIdentify, hasOnState: !!device.hasOnState, }, }); @@ -1091,9 +838,9 @@ class Devices extends BridgesAndDevices { {!this.props.matter.devices.length ? ( - I18n.t( - 'No one device created. Create one, by clicking on the "+" button in the bottom right corner.', - ) +
+ {I18n.t('No one device created. Create one, by clicking on the "+" button on the left.')} +
) : ( = { marginTop: 2, marginBottom: 1, width: '100%', - maxWidth: 500, + maxWidth: 250, }, inputLong: { marginTop: 2, @@ -75,10 +75,11 @@ interface OptionsProps { instance: number; onChange: (attr: string, value: boolean | string) => Promise; showToast: (text: string) => void; - onLoad: (native: Record) => void; + onLoad: (native: MatterAdapterConfig) => void; /** The current matter config */ matter: MatterConfig; onShowWelcomeDialog: () => void; + onError: (errorText: string) => void; } interface OptionsState { @@ -86,9 +87,9 @@ interface OptionsState { dialogLevel: number; iotLogin: string; iotPassword: string; + passwordRepeat: string; iotInstance: string; interfaces?: { value: string; address?: string; address6?: string }[]; - passVisible?: boolean; } function cutIpV6(address: string, length?: number): string { @@ -111,6 +112,7 @@ class Options extends Component { dialogLevel: 0, iotLogin: '', iotPassword: '', + passwordRepeat: this.props.native.pass, iotInstance: '', }; } @@ -261,7 +263,10 @@ class Options extends Component { render(): React.JSX.Element { const item = this.state.interfaces?.find(it => it.value === (this.props.native.interface || '_')); - const passwordError = Options.checkPassword(this.props.native.pass); + const passwordError = + this.props.native.pass !== this.state.passwordRepeat + ? I18n.t('Password repeat is not equal to password') + : Options.checkPassword(this.props.native.pass); const bridge = this.props.matter.bridges.find(bridge => bridge.uuid === this.props.native.defaultBridge) || { uuid: '_', @@ -425,7 +430,7 @@ class Options extends Component { )} -
+
{ ) : null, }, }} - style={{ ...styles.input, marginRight: 16 }} + style={styles.input} /> { endAdornment: this.props.native.pass ? ( this.setState({ passVisible: !this.state.passVisible })} + onClick={() => { + void this.props.onChange('pass', ''); + if (this.state.passwordRepeat !== '') { + this.props.onError(I18n.t('Password repeat is not equal to password')); + } else { + this.props.onError(''); + } + }} > - {this.state.passVisible ? : } + ) : null, }, }} value={this.props.native.pass} - type={this.state.passVisible ? 'text' : 'password'} + type="password" + helperText={passwordError || ''} + onChange={e => { + void this.props.onChange('pass', e.target.value); + if (this.state.passwordRepeat !== e.target.value) { + this.props.onError(I18n.t('Password repeat is not equal to password')); + } else { + this.props.onError(''); + } + }} + margin="normal" + /> + { + this.setState({ passwordRepeat: '' }); + if (this.props.native.pass !== '') { + this.props.onError(I18n.t('Password repeat is not equal to password')); + } else { + this.props.onError(''); + } + }} + > + + + ) : null, + }, + }} + value={this.state.passwordRepeat} + type="password" helperText={passwordError || ''} - onChange={e => this.props.onChange('pass', e.target.value)} + onChange={e => { + if (this.props.native.pass !== e.target.value) { + this.props.onError(I18n.t('Password repeat is not equal to password')); + } else { + this.props.onError(''); + } + this.setState({ passwordRepeat: e.target.value }); + }} margin="normal" /> +
+
{this.state.iotInstance && (this.state.iotPassword !== this.props.native.pass || + this.state.iotPassword !== this.state.passwordRepeat || this.state.iotLogin !== this.props.native.login) ? (
+
+ {I18n.t('Controller Settings')} + this.props.onChange('controllerFabricLabel', e.target.value)} + margin="normal" + slotProps={{ + input: { + endAdornment: this.props.native.controllerFabricLabel ? ( + this.props.onChange('controllerFabricLabel', '')} + > + + + ) : null, + }, + }} + style={styles.input} + /> +
+
{I18n.t('Maintenance Settings')} + + + + ); + } +} diff --git a/src-admin/src/components/InfoBox.tsx b/src-admin/src/components/InfoBox.tsx index 6028b95..a6b123a 100644 --- a/src-admin/src/components/InfoBox.tsx +++ b/src-admin/src/components/InfoBox.tsx @@ -1,12 +1,12 @@ import React from 'react'; import { Box, Typography } from '@mui/material'; -import { Info, Warning, Close, Visibility, type SvgIconComponent } from '@mui/icons-material'; +import { Info, Warning, Close, Visibility, type SvgIconComponent, Check } from '@mui/icons-material'; interface InfoBoxProps { /** Text to display in the info box */ children: string | (string | React.JSX.Element | null)[] | React.JSX.Element; /** The type determines the color and symbol */ - type: 'warning' | 'info' | 'error'; + type: 'warning' | 'info' | 'error' | 'ok'; /** If the Box is closeable */ closeable?: boolean; /** Use together with `closeable: true`. You can specify in which variable in local storage the state of this info box could be stored */ @@ -17,7 +17,7 @@ interface InfoBoxProps { style?: React.CSSProperties; /** Icon position */ iconPosition?: 'top' | 'middle'; - /** Use together with `closeable: true`. If the box is closed or not. In this case it will be controlled from outside */ + /** Use together with `closeable: true`. If the box is closed or not. In this case, it will be controlled from outside */ closed?: boolean; } @@ -114,9 +114,18 @@ export default class InfoBox extends React.Component position: 'relative', ...this.props.style, }} - sx={{ borderColor: theme => theme.palette[this.props.type].main }} + sx={{ + borderColor: theme => + this.props.type === 'ok' ? theme.palette.info.main : theme.palette[this.props.type].main, + }} > - {this.props.type === 'info' ? : } + {this.props.type === 'ok' ? ( + + ) : this.props.type === 'info' ? ( + + ) : ( + + )} {this.props.children} {this.props.closeable ? ( ({ - background: `linear-gradient(${theme.palette[this.props.type].main}00 0%, ${theme.palette[this.props.type].main}10 60%, ${theme.palette[this.props.type].main}90 100%)`, - })} + sx={theme => { + const color = theme.palette[this.props.type === 'ok' ? 'info' : this.props.type].main; + return { + background: `linear-gradient(${color}00 0%, ${color}10 60%, ${color}90 100%)`, + }; + }} style={{ bottom: 0, position: 'absolute', diff --git a/src-admin/src/components/QrCodeDialog.tsx b/src-admin/src/components/QrCodeDialog.tsx new file mode 100644 index 0000000..9ebec83 --- /dev/null +++ b/src-admin/src/components/QrCodeDialog.tsx @@ -0,0 +1,241 @@ +import React, { Component } from 'react'; + +import { Scanner } from '@yudiel/react-qr-scanner'; + +import { Button, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TextField } from '@mui/material'; +import { Add, Clear, Close, QrCode } from '@mui/icons-material'; + +import { I18n, type ThemeType } from '@iobroker/adapter-react-v5'; + +import InfoBox from './InfoBox'; + +interface QrCodeDialogProps { + onClose: (manualCode?: string, qrCode?: string) => void; + themeType: ThemeType; +} + +interface QrCodeDialogState { + manualCode: string; + qrCode: string; + qrError: string; + hideQrCode: boolean; + iframe: WindowProxy | null; +} + +export default class QrCodeDialog extends Component { + private initInterval: ReturnType | null = null; + + constructor(props: QrCodeDialogProps) { + super(props); + this.state = { + manualCode: '', + qrCode: '', + qrError: '', + hideQrCode: false, + iframe: null, + }; + } + + onMessage = (event: { origin: string; data: any }): void => { + if (typeof event.data === 'string') { + if (event.origin === 'https://qr-code.iobroker.in') { + if (event.data === 'inited') { + if (this.initInterval) { + clearInterval(this.initInterval); + this.initInterval = null; + } + } else if (event.data === 'closeMe') { + this.state.iframe?.close(); + this.setState({ iframe: null }); + } else { + this.setState({ qrCode: event.data }); + if (event.data.startsWith('MT:')) { + this.state.iframe?.postMessage( + `close:${I18n.t('ioBroker received "%s". You can now close this window by clicking on this text.', event.data)}`, + '*', + ); + } + } + } + } + }; + + componentDidMount(): void { + window.addEventListener('message', this.onMessage); + } + + componentWillUnmount(): void { + window.removeEventListener('message', this.onMessage); + if (this.initInterval) { + clearInterval(this.initInterval); + this.initInterval = null; + } + } + + render(): React.JSX.Element { + const qrCodeError = !!this.state.qrCode && !this.state.qrCode.startsWith('MT:'); + const manualCodeError = + !!this.state.manualCode && this.state.manualCode.length !== 11 && this.state.manualCode.length !== 21; + + return ( + this.props.onClose()} + maxWidth="lg" + fullWidth + > + {I18n.t('Add device by pairing code or QR Code')} + +
{I18n.t('Add via QR Code')}
+ + {I18n.t('Requirements: add via QR Code')} +
+ {I18n.t( + 'Please DO NOT use the QR code / pairing code that is printed on the Matter device.', + )} +
+
+ {!this.state.qrCode ? ( + this.setState({ manualCode: e.target.value })} + slotProps={{ + input: { + endAdornment: this.state.manualCode ? ( + this.setState({ manualCode: '' })} + > + + + ) : null, + }, + }} + error={manualCodeError} + helperText={ + manualCodeError ? I18n.t('Length of manual code must be 11 or 21 characters') : '' + } + /> + ) : null} + {!this.state.manualCode && !this.state.hideQrCode ? ( +
+
+ this.setState({ qrCode: result[0].rawValue, qrError: '' })} + onError={(error: unknown): void => { + if ((error as Error)?.message.includes('secure context')) { + this.setState({ + qrError: I18n.t( + 'Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.', + ), + hideQrCode: true, + }); + } else { + this.setState({ qrError: (error as Error).toString() }); + } + }} + /> +
+
+ ) : null} + {this.state.manualCode || (this.state.hideQrCode && !this.state.qrCode) ? null : ( +
+ +
+ )} + {!this.state.manualCode && this.state.hideQrCode && !this.state.qrCode ? ( +
+
{I18n.t('QR Code scan is not possible')}:
+
{this.state.qrError}
+
+ ) : null} + {!this.state.manualCode && this.state.hideQrCode && !this.state.iframe ? ( + + ) : null} +
+ + + + +
+ ); + } +} diff --git a/src-admin/src/components/WelcomeDialog.tsx b/src-admin/src/components/WelcomeDialog.tsx index 3ad5050..1c508c2 100644 --- a/src-admin/src/components/WelcomeDialog.tsx +++ b/src-admin/src/components/WelcomeDialog.tsx @@ -1,11 +1,73 @@ import React from 'react'; -import { type AdminConnection, I18n } from '@iobroker/adapter-react-v5'; -import { Button, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TextField } from '@mui/material'; -import { Clear, Close, Visibility, VisibilityOff } from '@mui/icons-material'; + +import { Button, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TextField, Link } from '@mui/material'; +import { Check, Clear, Close } from '@mui/icons-material'; import { FaApple, FaAndroid } from 'react-icons/fa'; +import { type AdminConnection, I18n, DialogConfirm, type ThemeType } from '@iobroker/adapter-react-v5'; + import InfoBox from './InfoBox'; +type Platform = + | 'aix' + | 'android' + | 'darwin' + | 'freebsd' + | 'haiku' + | 'linux' + | 'openbsd' + | 'sunos' + | 'win32' + | 'cygwin' + | 'netbsd'; + +type DockerInformation = + | { + /** If it is a Docker installation */ + isDocker: boolean; + /** If it is the official Docker image */ + isOfficial: true; + /** Semver string for official Docker image */ + officialVersion: string; + } + | { + /** If it is a Docker installation */ + isDocker: boolean; + /** If it is the official Docker image */ + isOfficial: false; + }; + +type HostInfo = { + /** Converted OS for human readability */ + Platform: Platform | 'docker' | 'Windows' | 'OSX'; + /** The underlying OS */ + os: Platform; + /** Information about the docker installation */ + dockerInformation?: DockerInformation; + /** Host architecture */ + Architecture: string; + /** Number of CPUs */ + CPUs: number | null; + /** CPU speed */ + Speed: number | null; + /** CPU model */ + Model: string | null; + /** Total RAM of host */ + RAM: number; + /** System uptime in seconds */ + 'System uptime': number; + /** Node.JS version */ + 'Node.js': string; + /** Current time to compare to local time */ + time: number; + /** Timezone offset to compare to local time */ + timeOffset: number; + /** Number of available adapters */ + 'adapters count': number; + /** NPM version */ + NPM: string; +}; + interface NetworkInterface { address: string; netmask: string; @@ -21,6 +83,7 @@ interface WelcomeDialogProps { onClose: (login?: string, password?: string, navigateTo?: 'controller' | 'bridges') => void; socket: AdminConnection; instance: number; + themeType: ThemeType; common: ioBroker.InstanceCommon | null; } @@ -33,6 +96,8 @@ interface WelcomeDialogState { iotLogin?: string; iotPassword?: string; ipV6found: boolean | null; + notSavedConfirm: '' | 'close' | 'bridges' | 'controller'; + docker: boolean; } class WelcomeDialog extends React.Component { @@ -46,8 +111,9 @@ class WelcomeDialog extends React.Component { + window.alert(`Cannot getHostInfo for "${this.props.common?.host}": ${e as Error}`); + }); + + if (hostData) { + this.setState({ docker: !!hostData.dockerInformation?.isDocker }); + } + } + } + + renderConfirmDialog(): React.JSX.Element | null { + if (!this.state.notSavedConfirm) { + return null; + } + + return ( + { + if (result) { + const navigateTo = this.state.notSavedConfirm; + this.setState( + { + notSavedConfirm: '', + }, + () => { + if (!navigateTo || navigateTo === 'close') { + this.props.onClose(); + } else { + this.props.onClose(undefined, undefined, navigateTo); + } + }, + ); + } else { + this.setState({ notSavedConfirm: '' }); + } + }} + /> + ); } render(): React.JSX.Element { @@ -137,12 +248,35 @@ class WelcomeDialog extends React.Component this.props.onClose()} + onClose={() => { + if ( + !!this.state.login && + (!this.state.password || this.state.password !== this.state.passwordRepeat) + ) { + this.setState({ notSavedConfirm: 'close' }); + } else { + this.props.onClose(); + } + }} > + {this.renderConfirmDialog()} {I18n.t('Welcome to Matter!')} +
{I18n.t('Welcome explanation')}
+
+ {I18n.t('To make all this work, the following requirements should be considered')}: +
{this.state.ipV6found !== null ? ( - + {this.state.ipV6found ? I18n.t( 'Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.', @@ -152,6 +286,20 @@ class WelcomeDialog extends React.Component ) : null} + {this.state.docker ? ( + + {I18n.t('Docker information')} +
+ + {I18n.t('More details in the Troubleshooting Guide')} + +
+
+ ) : null} {I18n.t('Be sure, that UDP is enabled and working')} @@ -177,7 +325,7 @@ class WelcomeDialog extends React.Component window.open( - `https://apps.apple.com/${I18n.getLanguage()}/app/iobroker/id1449564305`, + `https://apps.apple.com/${I18n.getLanguage()}/app/iobroker-visu/id1673095774`, '_blank', ) } @@ -186,6 +334,18 @@ class WelcomeDialog extends React.Component + + {I18n.t('Read for problems')} +
+ + {I18n.t('More details in the Troubleshooting Guide')} + +
+
{this.showLogin ? ( this.setState({ login: '' })} > @@ -226,10 +387,11 @@ class WelcomeDialog extends React.Component this.setState({ passVisible: !this.state.passVisible })} + onClick={() => this.setState({ password: '' })} > - {this.state.passVisible ? : } + ) : null, }, @@ -248,6 +410,7 @@ class WelcomeDialog extends React.Component this.setState({ passwordRepeat: e.target.value })} sx={theme => ({ [theme.breakpoints.up('lg')]: { width: 'calc(30% - 8px)', marginRight: 1 }, @@ -256,12 +419,13 @@ class WelcomeDialog extends React.Component this.setState({ passVisible: !this.state.passVisible })} + onClick={() => this.setState({ passwordRepeat: '' })} > - {this.state.passVisible ? : } + ) : null, }, @@ -290,23 +454,63 @@ class WelcomeDialog extends React.Component diff --git a/src-admin/src/i18n/de.json b/src-admin/src/i18n/de.json index 45b46d4..b8f4943 100644 --- a/src-admin/src/i18n/de.json +++ b/src-admin/src/i18n/de.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Bitte verwenden Sie NICHT den QR-Code/Pairing-Code, der auf dem Matter-Gerät aufgedruckt ist.", "%s of %s devices selected": "%s von %s Geräten ausgewählt", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Aktivieren Sie BLE, um Geräte in der Nähe Ihres ioBroker-Hosts zu koppeln, die noch nicht mit einem anderen Ökosystem gekoppelt sind. Sie können auch die App „ioBroker Visu“ verwenden, um andere Geräte zu koppeln.", "Add": "Hinzufügen", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Alle Informationen dieses Geräts oder dieser Bridge werden gelöscht und Sie müssen die Verbindung (mit PIN oder QR-Code) erneut herstellen.", "All interfaces": "Alle Schnittstellen", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Der Controller und alle Geräte und Bridges werden auf die Werkseinstellungen zurückgesetzt. \nDadurch werden die Pairing- und aktuellen Werte für alle Geräte, Bridges und auch gepaarten Geräte im Controller gelöscht. Sie können dies nicht rückgängig machen.\nDie allgemeine Konfiguration des Controllers und die zugewiesenen ioBroker-Zustände für die Bridges und Geräte bleiben unverändert.", + "Allow action by identify": "Aktion durch Identifizierung zulassen", "Announcement will stop automatically after 15 minutes": "Pairingmodus wird nach 15 Minuten automatisch beendet", "Apply": "Anwenden", "Are you sure?": "Bist du sicher?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "Brücke ist nicht in Betrieb genommen. QR-Code anzeigen wurde in Betrieb genommen", "Bridges": "Bridges", "Brightness by ON": "Helligkeit durch EIN", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "Der Kamerazugriff ist nur in einem sicheren Kontext zulässig. Verwenden Sie HTTPS oder localhost anstelle von HTTP.", "Cancel": "Abbrechen", "Close": "Schließen", "Cloud Account": "Cloud-Konto", + "Code must start with \"MT:\"": "Der Code muss mit „MT:“ beginnen.", "Collapse all": "Alles einklappen", "Commissioned Devices": "Inbetriebgenommene Geräte", "Commissioning information": "Hinweise zur Inbetriebnahme", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Matter-Geräte mit ioBroker verbinden ", "Connected": "Verbunden", "Controller": "Controller", + "Controller Settings": "Controller-Einstellungen", "Controller and Device Factory Reset": "Controller und Geräte auf Werkseinstellungen zurücksetzen", + "Controller fabric label": "Controller-Fabric-Label", "Copied to clipboard": "In die Zwischenablage kopiert", "Default bridge": "Standard-Bridge", "Default bridge (Alexa-compatible)": "Standard-Bridge (Alexa-kompatibel, verwendet Port 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Keine zusammengesetzten Geräte (wenn das zu koppelnde Ökosystem zusammengesetzte Geräte nicht unterstützt)", "Do you want to delete bridge": "Möchten Sie Bridge löschen?", "Do you want to delete device": "Möchten Sie das Gerät löschen?", + "Docker information": "Da ioBroker in Docker ausgeführt wird muss das Host-Netzwerk genutzt werden, da sonst IPv6 und UDP Routing nicht funktioniert.", "Edit bridge": "Bridge bearbeiten", "Edit device": "Gerät bearbeiten", "Enable": "Aktivieren", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Bitte beachten: Aufgrund von Einschränkungen des Amazon Alexa-Systems kann pro ioBroker-Host nur eine Bridge oder ein Gerät mit Alexa gekoppelt werden! Diese Auswahl bestimmt, welche Bridge mit dem Alexa-System gekoppelt wird.", "Instance is not alive": "Instanz ist nicht aktiv", "Interface": "Schnittstelle", + "Length of manual code must be 11 or 21 characters": "Die Länge des manuellen Codes muss 11 oder 21 Zeichen betragen", "Logging": "Protokollierung", + "Login and password will not be taken as incomplete. Discard changes?": "Login und Passwort werden nicht als unvollständig gewertet. Änderungen verwerfen?", "Maintenance Settings": "Wartungseinstellungen", "Manual pairing code": "Manueller Kopplungscode", "Matter Bridges Infotext": "Matter Bridges können mehrere Geräte enthalten und sind die einfachste Möglichkeit, ioBroker-Geräte in ein Matter-kompatibles Ökosystem zu integrieren. In einer Bridge enthaltene Geräte können auch nach der Inbetriebnahme der Bridge hinzugefügt oder entfernt werden. Einige Geräteeigenschaften können nicht mehr geändert werden, nachdem die Bridge als Controller in Betrieb genommen wurde.\n\nWenn Sie mindestens eine Assistentenlizenz in Ihrem ioBroker.pro-Konto besitzen, können Sie auch mehrere Bridges erstellen und Ihre Geräte so optimal strukturieren.\n\nBitte beachten: Aufgrund von Einschränkungen des Amazon Alexa-Systems können Sie pro ioBroker-Host nur eine Bridge oder ein Gerät mit Alexa koppeln!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Verwenden Sie die „Controller“-Funktionen, um Matter-kompatible Geräte in ioBroker zu integrieren. \nSie können Geräte entdecken, in Betrieb nehmen und anschließend verwalten. Die Daten der Geräte sind als Status auf der Registerkarte „Objekte“ von ioBroker verfügbar. \nDie Controller-Funktion ist standardmäßig deaktiviert und kann mit dem folgenden Schalter aktiviert werden.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Matter erfordert aktiviertes IPv6-Protokoll auf der ausgewählten Schnittstelle. Auf Ihrem System wurde kein IPv6 gefunden!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Matter erfordert aktiviertes IPv6-Protokoll auf der ausgewählten Schnittstelle. Auf Ihrem System wurde IPv6 gefunden.", + "More details in the Troubleshooting Guide": "Weitere Einzelheiten finden Sie im Leitfaden zur Fehlerbehebung", "Name": "Name", "Network configuration": "Netzwerkkonfiguration", "New bridge": "Neue Brücke", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "Es wurden keine Geräte hinzugefügt, da sie bereits in der Liste sind", "No devices was added, as they are already in the list or not allowed by license": "Es wurden keine Geräte hinzugefügt, da sie bereits in der Liste sind oder durch die Lizenz nicht zugelassen sind.", "No devices was added, as they are not allowed by license": "Es wurden keine Geräte hinzugefügt, da diese laut Lizenz nicht zulässig sind", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Kein Gerät erstellt. Erstellen Sie eines, indem Sie auf die Schaltfläche „+“ in der unteren rechten Ecke klicken.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Noch kein Gerät erstellt. Erstellen Sie eins, indem Sie links auf die Schaltfläche „+“ klicken.", "Not connected": "Nicht verbunden", "Not supported yet": "Noch nicht unterstützt", "Not used devices": "Nicht verwendete Geräte", @@ -107,14 +115,19 @@ "Options": "Optionen", "Pairing Info Text": "Erkennen von Geräten in Ihrem IP-Netzwerk. \nBitte stellen Sie sicher, dass der ioBroker-Host im Netzwerk und im Netzwerk der zu erkennenden Geräte frei UDP-Nachrichten senden und empfangen kann. \nSetzen Sie die Geräte bei Bedarf auf die Werkseinstellungen zurück oder schalten Sie sie aus und wieder ein.", "Pairing Info Text BLE": "Erkennen von Geräten in Ihrem IP-Netzwerk und über BLE. \nBitte stellen Sie sicher, dass der ioBroker-Host im Netzwerk und im Netzwerk der zu erkennenden Geräte frei UDP-Nachrichten senden und empfangen kann. \nSetzen Sie die Geräte bei Bedarf auf die Werkseinstellungen zurück oder schalten Sie sie aus und wieder ein.", + "Pairing requirement": "Geräte müssen sich im Kopplungsmodus befinden. Noch nicht verknüpfte Geräte verbindest du am besten über die ioBroker Visu App. Ansonsten bringst du das Gerät über das bereits verknüpfte Ökosystem in den Kopplungsmodus.", "Password repeat": "Passwort wiederholen", + "Password repeat is not equal to password": "Passwortwiederholung ist nicht gleich Passwort", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Bitte verwenden Sie NICHT den QR-Code/Pairing-Code, der auf dem Matter-Gerät aufgedruckt ist", "Please confirm": "Bitte bestätigen", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Bitte scannen Sie diesen QR-Code mit der App des Ökosystems, mit dem Sie es koppeln möchten, oder verwenden Sie den unten aufgedruckten Setup-Code.", "Product ID": "Produkt ID", "Provide your Thread or WiFi information or both!": "Geben Sie Ihre Thread- oder WiFi-Informationen oder beides an!", "QR Code": "QR-Code", - "QR Code to connect": "QR-Code zum Verbinden", + "QR Code scan is not possible": "QR-Code-Scan ist nicht möglich", + "QR Code to connect for %s": "QR-Code zum Verbinden für „%s“", "Re-Announce": "Pairing neu starten", + "Read for problems": "Wenn Sie Probleme beim Auffinden von Geräten oder beim Herstellen einer Verbindung zu Ökosystemen haben, müssen Sie möglicherweise zusätzliche IPv6-Einstellungen auf dem ioBroker-Host vornehmen.", "Reconnect to backend": "Erneute Verbindung zum Backend herstellen", "Required": "Erforderlich", "Requirements: add via QR Code": "Voraussetzung: Das Matter-Gerät muss bereits mit einem anderen Matter-System (z. B. Google, Apple, Alexa, …) verbunden sein. Hier musst du den QR-Code-Pairing-Code eingeben oder den QR-Code scannen, der vom Matter-Ökosystem (z. B. Google Home) für dieses Matter-Gerät in der App bereitgestellt wird.", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Zurücksetzen auf Werkseinstellungen", "Room plus device type names": "Raum- und Gerätetypnamen", "Save": "Speichern", + "Scan with the ioBroker cloud": "Scannen mit der ioBroker-Cloud", "Select default bridge": "Standard-Bridge auswählen", "Select/Unselect all devices in room": "Alle Geräte im Raum auswählen/abwählen", "Show QR Code for commissioning": "QR-Code zur Inbetriebnahme anzeigen", @@ -135,6 +149,7 @@ "Show unsupported devices": "Nicht unterstützte Geräte anzeigen", "Show welcome dialog": "Willkommensdialog anzeigen", "Status": "Status", + "Stay here": "Hier bleiben", "Stop": "Stoppen", "Successfully re-announced": "Erfolgreich neu ausgeschrieben!", "Suppress question for 5 minutes": "Frage 5 Minuten lang unterdrücken", @@ -146,6 +161,7 @@ "Thread network name": "Thread-Network-Name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Um Matter-Geräte mit ioBroker-Controller in Betrieb zu nehmen/zu verbinden, verwenden Sie besser die ioBroker.visu-App:", + "To make all this work, the following requirements should be considered": "Damit das alles funktioniert, sollten die folgenden Anforderungen beachtet werden", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Um eine Matter-Bridge oder Geräteoptionen mit mehr als 5 Geräten zu verwenden, geben Sie bitte gültige ioBroker.pro-Cloud-Anmeldeinformationen mit mindestens einer aktiven Assistant-Lizenz ein.", "Unselect all rooms": "Alle Räume abwählen", "Use last value for ON": "Bei ON den letzten Wert verwenden", @@ -153,9 +169,11 @@ "Vendor ID": "Hersteller-ID", "WLAN credentials": "WLAN-Zugangsdaten", "Warning about 15 devices": "Um Probleme beim Koppeln dieser Bridge zu vermeiden, sollten Sie sie jetzt koppeln und später weitere Geräte hinzufügen.", + "Welcome explanation": "Der Matter-Adapter ermöglicht die Integration von ioBroker mit allen Matter-Geräten auf dem Markt und ermöglicht die direkte Nutzung von ioBroker-Geräten in vielen Matter-kompatiblen Ökosystemen, wie beispielsweise Apple, Google, Amazon oder SmartThings. Die Kommunikation erfolgt lokal und sicher.", "Welcome to Matter!": "Willkommen bei Matter!", "WiFi SSID": "WLAN-SSID", "WiFi password": "WLAN Passwort", + "Yes": "Ja", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Sie benötigen den ioBroker.pro-Assistenten oder ein Remote-Abonnement, um mehr als 5 Geräte in Bridge zu haben", "You need to configure WLAN or Thread credentials above to activate BLE": "Sie müssen oben die WLAN- oder Thread-Anmeldeinformationen konfigurieren, um BLE zu aktivieren!", "blind": "Blind", @@ -166,8 +184,9 @@ "floodAlarm": "Hochwasseralarm", "image": "Bild", "invalid_password_warning": "Das Passwort scheint ungültig zu sein", - "ioBroker.pro Login": "ioBroker.pro-Anmeldung", - "ioBroker.pro Password": "ioBroker.pro-Passwort", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker hat \"%s\" empfangen. Sie können dieses Fenster nun schließen, indem Sie auf diesen Text klicken.", + "ioBroker.pro Login": "iobroker.pro Login", + "ioBroker.pro Password": "ioBroker.pro Passwort", "light": "Licht", "lock": "Sperren", "media": "Medien", @@ -192,4 +211,4 @@ "weatherForecast": "Wettervorhersage", "window": "Fenster", "windowTilt": "Gekipptes Fenster" -} +} \ No newline at end of file diff --git a/src-admin/src/i18n/en.json b/src-admin/src/i18n/en.json index 83abcf7..4d58c61 100644 --- a/src-admin/src/i18n/en.json +++ b/src-admin/src/i18n/en.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": " Please DO NOT use the QR code / pairing code that is printed on the Matter device.", "%s of %s devices selected": "%s of %s devices selected", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Activate BLE to pair devices nearby of your ioBroker host, that are not already paired with an other ecosystem. You can also use the \"ioBroker Visu\" App to pair other devices.", "Add": "Add", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.", "All interfaces": "All interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "The Controller and all devices and bridges will be rest to factory defaults. \nThis deletes the pairing and current values for all devices, bridges and also paired devices in the controller. You cannot undo it.\nThe general configuration of the controller, and the assigned ioBroker states for the bridges and devices will stay unchanged.", + "Allow action by identify": "Allow action by identify", "Announcement will stop automatically after 15 minutes": "Announcement will stop automatically after 15 minutes", "Apply": "Apply", "Are you sure?": "Are you sure?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "Bridge is not commissioned. Show QR Code got commissioning", "Bridges": "Bridges", "Brightness by ON": "Brightness by ON", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.", "Cancel": "Cancel", "Close": "Close", "Cloud Account": "Cloud Account", + "Code must start with \"MT:\"": "Code must start with \"MT:\"", "Collapse all": "Collapse all", "Commissioned Devices": "Commissioned Devices", "Commissioning information": "Commissioning information", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Connect Matter devices with ioBroker", "Connected": "Connected", "Controller": "Controller", + "Controller Settings": "Controller Settings", "Controller and Device Factory Reset": "Controller and Devices Factory Reset", + "Controller fabric label": "Controller fabric label", "Copied to clipboard": "Copied to clipboard", "Default bridge": "Default bridge", "Default bridge (Alexa-compatible)": "Default bridge (Alexa-compatible, uses Port 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Do not compose devices (if the ecosystem to pair do not support composed devices)", "Do you want to delete bridge": "Do you want to delete bridge", "Do you want to delete device": "Do you want to delete device", + "Docker information": "Since ioBroker runs in Docker, the host network must be used, otherwise IPv6 and UDP routing will not work.", "Edit bridge": "Edit bridge", "Edit device": "Edit device", "Enable": "Enable", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Please note: Due to limitations of the Amazon Alexa system, only one bridge or device can be paired with Alexa per ioBroker host! This selection determines which bridge will be paired with the Alexa system.", "Instance is not alive": "Instance is not alive", "Interface": "Interface", + "Length of manual code must be 11 or 21 characters": "Length of manual code must be 11 or 21 characters", "Logging": "Logging", + "Login and password will not be taken as incomplete. Discard changes?": "Login and password will not be taken as incomplete. Discard changes?", "Maintenance Settings": "Maintenance Settings", "Manual pairing code": "Manual pairing code", "Matter Bridges Infotext": "Matter Bridges can contain multiple devices inside them and are the most simple way to bring ioBroker devices into a Matter compatible ecosystem. Devices contained in a bridge can also be added or removed after the bridge got commissioned. Some device properties can not be changed after the bridge got commissioned into a controller.\n\nWhen you own at least an Assistant License in your ioBroker.pro Account you can also create multiple bridges an so structure your devices best.\n\nPlease note: Because of limitations of the Amazon Alexa system you can only have one bridge or device paired with Alexa per ioBroker host!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Use the \"Controller\" features to integrate Matter compatible devices into ioBroker. \nYou can discover and commission device and manage them afterwards. The data of the devices will be available as states in the ioBroker Objects tab. \nThe controller feature is disabled by default and can be enabled with the below switch.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.", + "More details in the Troubleshooting Guide": "More details in the Troubleshooting Guide", "Name": "Name", "Network configuration": "Network configuration", "New bridge": "New bridge", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "No devices was added, as they are already in the list", "No devices was added, as they are already in the list or not allowed by license": "No devices was added, as they are already in the list or not allowed by license", "No devices was added, as they are not allowed by license": "No devices was added, as they are not allowed by license", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "No one device created. Create one, by clicking on the \"+\" button on the left.", "Not connected": "Not connected", "Not supported yet": "Not supported yet", "Not used devices": "Not used devices", @@ -107,14 +115,19 @@ "Options": "Options", "Pairing Info Text": "Discovering devices in your IP network. \nPlease make sure that he ioBroker host can freely send and receive UDP messages in the network and in the network of the devices to discover. \nIf needed reset the devices to factory settings or power cycle them.", "Pairing Info Text BLE": "Discovering devices in your IP network and via BLE. \nPlease make sure that he ioBroker host can freely send and receive UDP messages in the network and in the network of the devices to discover. \nIf needed reset the devices to factory settings or power cycle them.", + "Pairing requirement": "Devices must be in pairing mode. Devices that are not yet linked are best linked via the ioBroker Visu app. Otherwise, put the device into pairing mode via the already linked ecosystem.", "Password repeat": "Password repeat", + "Password repeat is not equal to password": "Password repeat is not equal to password", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Please DO NOT use the QR code / pairing code that is printed on the Matter device.", "Please confirm": "Please confirm", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.", "Product ID": "Product ID", "Provide your Thread or WiFi information or both!": "Provide your Thread or WiFi information or both!", "QR Code": "QR Code", - "QR Code to connect": "QR Code to connect", + "QR Code scan is not possible": "QR Code scan is not possible", + "QR Code to connect for %s": "QR Code to connect for \"%s\"", "Re-Announce": "Re-announce", + "Read for problems": "If you have problems finding devices or connecting to ecosystems, you may need to make additional IPv6 settings on the ioBroker host.", "Reconnect to backend": "Reconnect to backend", "Required": "Required", "Requirements: add via QR Code": "Prerequisite: The Matter device must already be commisioned to another Matter system (e.g. Google, Apple, Alexa, ...). Here you must enter the QR code pairing code or scan the QR code that is provided for this Matter device in the app by the Matter ecosystem (e.g. Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Reset to factory defaults", "Room plus device type names": "Room plus device type names", "Save": "Save", + "Scan with the ioBroker cloud": "Scan with the ioBroker cloud", "Select default bridge": "Select default bridge", "Select/Unselect all devices in room": "Select/Unselect all devices in room", "Show QR Code for commissioning": "Show QR Code for commissioning", @@ -135,6 +149,7 @@ "Show unsupported devices": "Show unsupported devices", "Show welcome dialog": "Show welcome dialog", "Status": "Status", + "Stay here": "Stay here", "Stop": "Stop", "Successfully re-announced": "Successfully re-announced!", "Suppress question for 5 minutes": "Suppress question for 5 minutes", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:", + "To make all this work, the following requirements should be considered": "To make all this work, the following requirements should be considered", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.", "Unselect all rooms": "Unselect all rooms", "Use last value for ON": "Use the last value by ON", @@ -153,9 +169,11 @@ "Vendor ID": "Vendor ID", "WLAN credentials": "WLAN credentials", "Warning about 15 devices": "To avoid problems when pairing this bridge please consider to pair it now and add more devices afterwards", + "Welcome explanation": "The Matter adapter allows the integration of ioBroker with all Matter devices on the market and allows ioBroker devices to be used directly in many Matter-compatible ecosystems, such as Apple, Google, Amazon or SmartThings. Communication takes place locally and securely.", "Welcome to Matter!": "Welcome to Matter!", "WiFi SSID": "WiFi SSID", "WiFi password": "WiFi password", + "Yes": "Yes", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge", "You need to configure WLAN or Thread credentials above to activate BLE": "You need to configure WLAN or Thread credentials above to activate BLE!", "blind": "Blind", @@ -166,6 +184,7 @@ "floodAlarm": "Flood alarm", "image": "Image", "invalid_password_warning": "Password looks like invalid", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker received \"%s\". You can now close this window by clicking on this text.", "ioBroker.pro Login": "ioBroker.pro Login", "ioBroker.pro Password": "ioBroker.pro Password", "light": "Light", diff --git a/src-admin/src/i18n/es.json b/src-admin/src/i18n/es.json index b975812..6d2c32f 100644 --- a/src-admin/src/i18n/es.json +++ b/src-admin/src/i18n/es.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "NO utilice el código QR/código de emparejamiento que está impreso en el dispositivo Matter.", "%s of %s devices selected": "%s de %s dispositivos seleccionados", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Active BLE para emparejar dispositivos cercanos a su host ioBroker, que aún no estén emparejados con otro ecosistema. También puedes utilizar la aplicación \"ioBroker Visu\" para emparejar otros dispositivos.", "Add": "Agregar", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Se eliminará toda la información de este dispositivo o puente y deberás volver a conectarte (con PIN o código QR) nuevamente.", "All interfaces": "Todas las interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "El controlador y todos los dispositivos y puentes volverán a los valores predeterminados de fábrica. \nEsto elimina el emparejamiento y los valores actuales de todos los dispositivos, puentes y también los dispositivos emparejados en el controlador. No puedes deshacerlo.\nLa configuración general del controlador y los estados de ioBroker asignados para los puentes y dispositivos permanecerán sin cambios.", + "Allow action by identify": "Permitir la acción mediante la identificación", "Announcement will stop automatically after 15 minutes": "El anuncio se detendrá automáticamente después de 15 minutos.", "Apply": "Aplicar", "Are you sure?": "¿Está seguro?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "El puente no está en servicio. Mostrar código QR puesto en marcha", "Bridges": "Puentes", "Brightness by ON": "Brillo por ON", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "El acceso a la cámara solo está permitido en un contexto seguro. Utilice HTTPS o localhost en lugar de HTTP.", "Cancel": "Cancelar", "Close": "Cerca", "Cloud Account": "Cuenta en la nube", + "Code must start with \"MT:\"": "El código debe comenzar con \"MT:\"", "Collapse all": "Desplegar todo", "Commissioned Devices": "Dispositivos puestos en servicio", "Commissioning information": "Información de puesta en servicio", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Conecte dispositivos Matter con ioBroker", "Connected": "Conectado", "Controller": "Controlador", + "Controller Settings": "Configuración del controlador", "Controller and Device Factory Reset": "Restablecimiento de fábrica del controlador y los dispositivos", + "Controller fabric label": "Etiqueta de tela del controlador", "Copied to clipboard": "Copiado al portapapeles", "Default bridge": "Puente predeterminado", "Default bridge (Alexa-compatible)": "Puente predeterminado (compatible con Alexa, utiliza el puerto 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "No componer dispositivos (si el ecosistema a emparejar no admite dispositivos compuestos)", "Do you want to delete bridge": "¿Quieres eliminar el puente?", "Do you want to delete device": "¿Quieres eliminar el dispositivo?", + "Docker information": "Dado que ioBroker se ejecuta en Docker, se debe utilizar la red del host; de lo contrario, el enrutamiento IPv6 y UDP no funcionará.", "Edit bridge": "Editar puente", "Edit device": "Editar dispositivo", "Enable": "Permitir", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Tenga en cuenta: Debido a las limitaciones del sistema Amazon Alexa, solo se puede emparejar un puente o dispositivo con Alexa por host de ioBroker. Esta selección determina qué puente se emparejará con el sistema Alexa.", "Instance is not alive": "La instancia no está viva", "Interface": "Interfaz", + "Length of manual code must be 11 or 21 characters": "La longitud del código manual debe ser de 11 o 21 caracteres.", "Logging": "Inicio sesión", + "Login and password will not be taken as incomplete. Discard changes?": "El nombre de usuario y la contraseña no se considerarán incompletos. ¿Desechar los cambios?", "Maintenance Settings": "Configuración de mantenimiento", "Manual pairing code": "Código de emparejamiento manual", "Matter Bridges Infotext": "Los Matter Bridges pueden contener varios dispositivos en su interior y son la forma más sencilla de incorporar dispositivos ioBroker a un ecosistema compatible con Matter. Los dispositivos contenidos en un puente también se pueden agregar o quitar después de que el puente se haya puesto en servicio. Algunas propiedades del dispositivo no se pueden cambiar después de que el puente se haya puesto en servicio en un controlador.\n\nCuando posee al menos una licencia de Asistente en su cuenta ioBroker.pro, también puede crear múltiples puentes para estructurar mejor sus dispositivos.\n\nTenga en cuenta: debido a las limitaciones del sistema Amazon Alexa, ¡solo puede tener un puente o dispositivo emparejado con Alexa por host ioBroker!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Utilice las funciones del \"Controlador\" para integrar dispositivos compatibles con Matter en ioBroker. \nPuede descubrir y poner en marcha dispositivos y gestionarlos posteriormente. Los datos de los dispositivos estarán disponibles como estados en la pestaña Objetos de ioBroker. \nLa función del controlador está deshabilitada de forma predeterminada y se puede habilitar con el siguiente interruptor.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Matter requiere el protocolo IPv6 habilitado en la interfaz seleccionada. ¡No se encontró IPv6 en su sistema!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Matter requiere que el protocolo IPv6 esté habilitado en la interfaz seleccionada. Se encontró algún protocolo IPv6 en su sistema.", + "More details in the Troubleshooting Guide": "Más detalles en la Guía de solución de problemas", "Name": "Nombre", "Network configuration": "Configuración de la red", "New bridge": "Nuevo puente", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "No se agregaron dispositivos, ya que están en la lista.", "No devices was added, as they are already in the list or not allowed by license": "No se agregó ningún dispositivo porque ya está en la lista o no está permitido por la licencia.", "No devices was added, as they are not allowed by license": "No se agregaron dispositivos, ya que no están permitidos por la licencia.", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "No se creó ningún dispositivo. Cree uno haciendo clic en el botón \"+\" en la esquina inferior derecha.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "No se ha creado ningún dispositivo. Cree uno haciendo clic en el botón \"+\" de la izquierda.", "Not connected": "No conectado", "Not supported yet": "Aún no es compatible", "Not used devices": "Dispositivos no usados", @@ -107,14 +115,19 @@ "Options": "Opciones", "Pairing Info Text": "Descubriendo dispositivos en su red IP. \nAsegúrese de que el host de ioBroker pueda enviar y recibir mensajes UDP libremente en la red y en la red de los dispositivos a descubrir. \nSi es necesario, restablezca los dispositivos a la configuración de fábrica o reinícielos.", "Pairing Info Text BLE": "Descubriendo dispositivos en su red IP y vía BLE. \nAsegúrese de que el host de ioBroker pueda enviar y recibir mensajes UDP libremente en la red y en la red de los dispositivos a descubrir. \nSi es necesario, restablezca los dispositivos a la configuración de fábrica o reinícielos.", + "Pairing requirement": "Los dispositivos deben estar en modo de emparejamiento. Los dispositivos que aún no están vinculados se vinculan mejor a través de la aplicación ioBroker Visu. De lo contrario, coloque el dispositivo en modo de emparejamiento a través del ecosistema ya vinculado.", "Password repeat": "Repetición de contraseña", + "Password repeat is not equal to password": "La repetición de contraseña no es igual a la contraseña", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "NO utilice el código QR/código de emparejamiento que está impreso en el dispositivo Matter.", "Please confirm": "Por favor confirmar", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Escanee este código QR con la aplicación del ecosistema con el que desea vincularlo o utilice el código de configuración impreso a continuación.", "Product ID": "ID del Producto", "Provide your Thread or WiFi information or both!": "¡Proporcione su información de Thread o WiFi o ambas!", "QR Code": "Código QR", - "QR Code to connect": "Código QR para conectarse", + "QR Code scan is not possible": "No es posible escanear códigos QR", + "QR Code to connect for %s": "Código QR para conectarse a \"%s\"", "Re-Announce": "Re-announce", + "Read for problems": "Si tiene problemas para encontrar dispositivos o conectarse a ecosistemas, es posible que necesite realizar configuraciones IPv6 adicionales en el host ioBroker.", "Reconnect to backend": "Reconectarse al backend", "Required": "Requerido", "Requirements: add via QR Code": "Requisito: El dispositivo Matter ya debe estar conectado a otro sistema Matter (p. ej. Google, Apple, Alexa, etc.). Para ello, debe introducir el código QR de emparejamiento o escanear el código QR que el ecosistema Matter proporciona para este dispositivo Matter en la aplicación (p. ej. Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Restablecer los valores predeterminados de fábrica", "Room plus device type names": "Nombres de tipo de habitación y dispositivo", "Save": "Ahorrar", + "Scan with the ioBroker cloud": "Escanee con la nube ioBroker", "Select default bridge": "Seleccionar puente predeterminado", "Select/Unselect all devices in room": "Seleccionar/deseleccionar todos los dispositivos en la habitación", "Show QR Code for commissioning": "Mostrar código QR para puesta en servicio", @@ -135,6 +149,7 @@ "Show unsupported devices": "Mostrar dispositivos no compatibles", "Show welcome dialog": "Mostrar diálogo de bienvenida", "Status": "Estado", + "Stay here": "Quédate aquí", "Stop": "Detener", "Successfully re-announced": "¡Reanunciado con éxito!", "Suppress question for 5 minutes": "Suprimir pregunta durante 5 minutos", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Para poner en funcionamiento o conectar dispositivos con el controlador ioBroker, utilice la mejor aplicación ioBroker.visu:", + "To make all this work, the following requirements should be considered": "Para que todo esto funcione se deben tener en cuenta los siguientes requisitos", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Para utilizar un puente Matter u opciones de dispositivo con más de 5 dispositivos, ingrese credenciales válidas de ioBroker.pro Cloud con al menos una licencia de Asistente activa.", "Unselect all rooms": "Deseleccionar todas las habitaciones", "Use last value for ON": "Utilice el último valor de ON", @@ -153,9 +169,11 @@ "Vendor ID": "ID del proveedor", "WLAN credentials": "Credenciales WLAN", "Warning about 15 devices": "Para evitar problemas al emparejar este puente, considere emparejarlo ahora y agregar más dispositivos después.", + "Welcome explanation": "El adaptador Matter permite la integración de ioBroker con todos los dispositivos Matter del mercado y permite que los dispositivos ioBroker se utilicen directamente en muchos ecosistemas compatibles con Matter, como Apple, Google, Amazon o SmartThings. La comunicación se realiza de forma local y segura.", "Welcome to Matter!": "¡Bienvenido a Matter!", "WiFi SSID": "Wi-Fi SSID", "WiFi password": "Contraseña de wifi", + "Yes": "Sí", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Necesita el asistente ioBroker.pro o una suscripción remota para tener más de 5 dispositivos en puente", "You need to configure WLAN or Thread credentials above to activate BLE": "¡Necesita configurar las credenciales de WLAN o Thread arriba para activar BLE!", "blind": "Ciego", @@ -166,6 +184,7 @@ "floodAlarm": "Alarma de inundación", "image": "Imagen", "invalid_password_warning": "La contraseña parece no válida", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker recibió \"%s\". Ahora puede cerrar esta ventana haciendo clic en este texto.", "ioBroker.pro Login": "ioBroker.pro Iniciar sesión", "ioBroker.pro Password": "ioBroker.pro Contraseña", "light": "Luz", diff --git a/src-admin/src/i18n/fr.json b/src-admin/src/i18n/fr.json index 8aebc42..eea861e 100644 --- a/src-admin/src/i18n/fr.json +++ b/src-admin/src/i18n/fr.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Veuillez NE PAS utiliser le code QR / code d'appairage imprimé sur l'appareil Matter.", "%s of %s devices selected": "%s sur %s appareils sélectionnés", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Activez BLE pour coupler des appareils à proximité de votre hôte ioBroker, qui ne sont pas déjà couplés à un autre écosystème. Vous pouvez également utiliser l'application « ioBroker Visu » pour coupler d'autres appareils.", "Add": "Ajouter", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Toutes les informations de cet appareil ou pont seront supprimées et vous devrez vous reconnecter (avec code PIN ou QR) à nouveau.", "All interfaces": "Toutes les interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Le contrôleur et tous les appareils et ponts seront restaurés aux paramètres d'usine par défaut. \nCela supprime les valeurs d'appariement et de courant pour tous les appareils, ponts ainsi que les appareils appairés dans le contrôleur. Vous ne pouvez pas l'annuler.\nLa configuration générale du contrôleur et les états ioBroker attribués aux ponts et aux appareils resteront inchangés.", + "Allow action by identify": "Autoriser l'action en identifiant", "Announcement will stop automatically after 15 minutes": "L'annonce s'arrêtera automatiquement après 15 minutes", "Apply": "Appliquer", "Are you sure?": "Es-tu sûr?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "Le pont n'est pas mis en service. Afficher le code QR mis en service", "Bridges": "Des ponts", "Brightness by ON": "Luminosité par ON", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "L'accès à la caméra n'est autorisé que dans un contexte sécurisé. Utilisez HTTPS ou localhost plutôt que HTTP.", "Cancel": "Annuler", "Close": "Fermer", "Cloud Account": "Compte Cloud", + "Code must start with \"MT:\"": "Le code doit commencer par « MT : »", "Collapse all": "Tout réduire", "Commissioned Devices": "Appareils mis en service", "Commissioning information": "Informations de mise en service", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Connectez les appareils Matter avec ioBroker", "Connected": "Connecté", "Controller": "Manette", + "Controller Settings": "Paramètres du contrôleur", "Controller and Device Factory Reset": "Réinitialisation d'usine du contrôleur et des appareils", + "Controller fabric label": "Étiquette en tissu du contrôleur", "Copied to clipboard": "Copié dans le presse-papier", "Default bridge": "Pont par défaut", "Default bridge (Alexa-compatible)": "Pont par défaut (compatible Alexa, utilise le port 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Ne composez pas d'appareils (si l'écosystème à coupler ne prend pas en charge les appareils composés)", "Do you want to delete bridge": "Voulez-vous supprimer le pont", "Do you want to delete device": "Voulez-vous supprimer l'appareil", + "Docker information": "Étant donné que ioBroker s'exécute dans Docker, le réseau hôte doit être utilisé, sinon le routage IPv6 et UDP ne fonctionnera pas.", "Edit bridge": "Modifier le pont", "Edit device": "Modifier l'appareil", "Enable": "Activer", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Remarque : en raison des limitations du système Amazon Alexa, un seul pont ou appareil peut être associé à Alexa par hôte ioBroker ! Cette sélection détermine quel pont sera associé au système Alexa.", "Instance is not alive": "L'instance n'est pas vivante", "Interface": "Interface", + "Length of manual code must be 11 or 21 characters": "La longueur du code manuel doit être de 11 ou 21 caractères", "Logging": "Enregistrement", + "Login and password will not be taken as incomplete. Discard changes?": "Le login et le mot de passe ne seront pas considérés comme incomplets. Annuler les modifications ?", "Maintenance Settings": "Paramètres d'entretien", "Manual pairing code": "Code d'appairage manuel", "Matter Bridges Infotext": "Les Matter Bridges peuvent contenir plusieurs appareils et constituent le moyen le plus simple d'intégrer des appareils ioBroker dans un écosystème compatible Matter. Les appareils contenus dans un pont peuvent également être ajoutés ou supprimés une fois le pont mis en service. Certaines propriétés de l'appareil ne peuvent pas être modifiées une fois le pont mis en service dans un contrôleur.\n\nLorsque vous possédez au moins une licence Assistant dans votre compte ioBroker.pro, vous pouvez également créer plusieurs ponts afin de structurer au mieux vos appareils.\n\nRemarque : en raison des limitations du système Amazon Alexa, vous ne pouvez avoir qu'un seul pont ou appareil associé à Alexa par hôte ioBroker !", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Utilisez les fonctionnalités « Contrôleur » pour intégrer des appareils compatibles Matter dans ioBroker. \nVous pouvez découvrir et mettre en service des appareils et les gérer ensuite. Les données des appareils seront disponibles sous forme d'états dans l'onglet Objets ioBroker. \nLa fonction du contrôleur est désactivée par défaut et peut être activée avec le commutateur ci-dessous.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Matter nécessite l'activation du protocole IPv6 sur l'interface sélectionnée. Aucun IPv6 n'a été trouvé sur votre système !", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Matter nécessite que le protocole IPv6 soit activé sur l'interface sélectionnée. Un IPv6 a été détecté sur votre système.", + "More details in the Troubleshooting Guide": "Plus de détails dans le Guide de dépannage", "Name": "Nom", "Network configuration": "Configuration du réseau", "New bridge": "Nouveau pont", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "Aucun appareil n'a été ajouté, car ils sont déjà dans la liste", "No devices was added, as they are already in the list or not allowed by license": "Aucun appareil n'a été ajouté, car ils sont déjà dans la liste ou ne sont pas autorisés par la licence", "No devices was added, as they are not allowed by license": "Aucun appareil n'a été ajouté, car ils ne sont pas autorisés par la licence", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Aucun appareil n'a été créé. Créez-en un en cliquant sur le bouton \"+\" dans le coin inférieur droit.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Aucun appareil n'a été créé. Créez-en un en cliquant sur le bouton « + » à gauche.", "Not connected": "Pas connecté", "Not supported yet": "Pas encore pris en charge", "Not used devices": "Appareils non utilisés", @@ -107,14 +115,19 @@ "Options": "Possibilités", "Pairing Info Text": "Découverte des appareils de votre réseau IP. \nVeuillez vous assurer que l'hôte ioBroker peut envoyer et recevoir librement des messages UDP sur le réseau et sur le réseau des appareils à découvrir. \nSi nécessaire, réinitialisez les appareils aux paramètres d'usine ou redémarrez-les.", "Pairing Info Text BLE": "Découverte des appareils dans votre réseau IP et via BLE. \nVeuillez vous assurer que l'hôte ioBroker peut envoyer et recevoir librement des messages UDP sur le réseau et sur le réseau des appareils à découvrir. \nSi nécessaire, réinitialisez les appareils aux paramètres d'usine ou redémarrez-les.", + "Pairing requirement": "Les appareils doivent être en mode appairage. Les appareils qui ne sont pas encore liés sont mieux liés via l'application ioBroker Visu. Sinon, mettez l'appareil en mode appairage via l'écosystème déjà lié.", "Password repeat": "Répéter le mot de passe", + "Password repeat is not equal to password": "La répétition du mot de passe n'est pas égale au mot de passe", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Veuillez NE PAS utiliser le code QR / code d'appairage imprimé sur l'appareil Matter.", "Please confirm": "Veuillez confirmer", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Veuillez scanner ce QR-Code avec l'application de l'écosystème auquel vous souhaitez le coupler ou utiliser le code de configuration imprimé ci-dessous.", "Product ID": "Identifiant du produit", "Provide your Thread or WiFi information or both!": "Fournissez vos informations Thread ou WiFi, ou les deux !", "QR Code": "Code QR", - "QR Code to connect": "QR Code pour se connecter", + "QR Code scan is not possible": "La numérisation du code QR n'est pas possible", + "QR Code to connect for %s": "Code QR pour se connecter pour « %s »", "Re-Announce": "Re-announce", + "Read for problems": "Si vous rencontrez des problèmes pour trouver des appareils ou vous connecter à des écosystèmes, vous devrez peut-être définir des paramètres IPv6 supplémentaires sur l'hôte ioBroker.", "Reconnect to backend": "Se reconnecter au backend", "Required": "Requis", "Requirements: add via QR Code": "Condition préalable : l'appareil Matter doit déjà être mis en service sur un autre système Matter (par ex. Google, Apple, Alexa, ...). Vous devez ici saisir le code QR d'appairage ou scanner le code QR fourni pour cet appareil Matter dans l'application par l'écosystème Matter (par ex. Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Réinitialiser aux paramètres d'usine", "Room plus device type names": "Noms des pièces et des types d'appareils", "Save": "Sauvegarder", + "Scan with the ioBroker cloud": "Scannez avec le cloud ioBroker", "Select default bridge": "Sélectionnez le pont par défaut", "Select/Unselect all devices in room": "Sélectionner/Désélectionner tous les appareils de la pièce", "Show QR Code for commissioning": "Afficher le code QR pour la mise en service", @@ -135,6 +149,7 @@ "Show unsupported devices": "Afficher les appareils non pris en charge", "Show welcome dialog": "Afficher la boîte de dialogue de bienvenue", "Status": "Statut", + "Stay here": "Reste ici", "Stop": "Arrêt", "Successfully re-announced": "Ré-annoncé avec succès !", "Suppress question for 5 minutes": "Supprimer la question pendant 5 minutes", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Pour mettre en service/connecter des appareils Matter avec le contrôleur ioBroker, utilisez la meilleure application ioBroker.visu :", + "To make all this work, the following requirements should be considered": "Pour que tout cela fonctionne, les exigences suivantes doivent être prises en compte", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Pour utiliser un pont Matter ou des options d'appareil avec plus de 5 appareils, veuillez saisir des informations d'identification ioBroker.pro Cloud valides avec au moins une licence Assistant active.", "Unselect all rooms": "Désélectionner toutes les pièces", "Use last value for ON": "Utiliser la dernière valeur par ON", @@ -153,9 +169,11 @@ "Vendor ID": "Fournisseur ID", "WLAN credentials": "Identifiants WLAN", "Warning about 15 devices": "Pour éviter les problèmes lors de l'appairage de ce pont, pensez à l'appairer maintenant et à ajouter d'autres appareils par la suite.", + "Welcome explanation": "L'adaptateur Matter permet l'intégration d'ioBroker avec tous les appareils Matter du marché et permet d'utiliser les appareils ioBroker directement dans de nombreux écosystèmes compatibles Matter, tels qu'Apple, Google, Amazon ou SmartThings. La communication s'effectue localement et en toute sécurité.", "Welcome to Matter!": "Bienvenue chez Matter !", "WiFi SSID": "SSID Wi-Fi", "WiFi password": "Mot de passe WiFi", + "Yes": "Oui", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Vous avez besoin de l'assistant ioBroker.pro ou d'un abonnement à distance pour avoir plus de 5 appareils en pont", "You need to configure WLAN or Thread credentials above to activate BLE": "Vous devez configurer les informations d'identification WLAN ou Thread ci-dessus pour activer BLE !", "blind": "Aveugle", @@ -166,6 +184,7 @@ "floodAlarm": "Alarme d'inondation", "image": "Image", "invalid_password_warning": "Le mot de passe semble invalide", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker a reçu \"%s\". Vous pouvez maintenant fermer cette fenêtre en cliquant sur ce texte.", "ioBroker.pro Login": "Connexion à ioBroker.pro", "ioBroker.pro Password": "Mot de passe ioBroker.pro", "light": "Lumière", diff --git a/src-admin/src/i18n/it.json b/src-admin/src/i18n/it.json index 26011c2..c763663 100644 --- a/src-admin/src/i18n/it.json +++ b/src-admin/src/i18n/it.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Si prega di NON utilizzare il codice QR/codice di associazione stampato sul dispositivo Matter.", "%s of %s devices selected": "%s di %s dispositivi selezionati", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Attiva BLE per associare i dispositivi nelle vicinanze del tuo host ioBroker, che non sono già accoppiati con un altro ecosistema. Puoi anche utilizzare l'app \"ioBroker Visu\" per associare altri dispositivi.", "Add": "Aggiungere", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Tutte le informazioni di questo dispositivo o bridge verranno eliminate e sarà necessario riconnettersi nuovamente (tramite PIN o codice QR).", "All interfaces": "Tutte le interfacce", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Il Controller, tutti i dispositivi e i bridge verranno ripristinati alle impostazioni di fabbrica. \nIn questo modo vengono cancellati l'accoppiamento e i valori attuali per tutti i dispositivi, i bridge e anche i dispositivi accoppiati nel controller. Non puoi annullarlo.\nLa configurazione generale del controller e gli stati ioBroker assegnati ai bridge e ai dispositivi rimarranno invariati.", + "Allow action by identify": "Consenti azione tramite identificazione", "Announcement will stop automatically after 15 minutes": "L'annuncio si interromperà automaticamente dopo 15 minuti", "Apply": "Fare domanda a", "Are you sure?": "Sei sicuro?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "Il ponte non è commissionato. Mostra il codice QR ha ricevuto la messa in servizio", "Bridges": "Ponti", "Brightness by ON": "Luminosità attivata", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "L'accesso alla telecamera è consentito solo in un contesto sicuro. Utilizzare HTTPS o localhost anziché HTTP.", "Cancel": "Annulla", "Close": "Vicino", "Cloud Account": "Conto cloud", + "Code must start with \"MT:\"": "Il codice deve iniziare con \"MT:\"", "Collapse all": "Comprimi tutto", "Commissioned Devices": "Dispositivi commissionati", "Commissioning information": "Informazioni sulla messa in servizio", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Collega i dispositivi Matter con ioBroker", "Connected": "Collegato", "Controller": "Controllore", + "Controller Settings": "Impostazioni del controller", "Controller and Device Factory Reset": "Ripristino delle impostazioni di fabbrica del controller e dei dispositivi", + "Controller fabric label": "Etichetta del tessuto del controller", "Copied to clipboard": "Copiato negli appunti", "Default bridge": "Ponte predefinito", "Default bridge (Alexa-compatible)": "Bridge predefinito (compatibile con Alexa, utilizza la porta 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Non comporre dispositivi (se l'ecosistema da associare non supporta i dispositivi composti)", "Do you want to delete bridge": "Vuoi eliminare il bridge", "Do you want to delete device": "Vuoi eliminare il dispositivo", + "Docker information": "Poiché ioBroker viene eseguito in Docker, è necessario utilizzare la rete host, altrimenti il routing IPv6 e UDP non funzionerà.", "Edit bridge": "Modifica ponte", "Edit device": "Modifica dispositivo", "Enable": "Abilitare", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Nota bene: a causa delle limitazioni del sistema Amazon Alexa, solo un bridge o dispositivo può essere associato ad Alexa per host ioBroker! Questa selezione determina quale bridge verrà associato al sistema Alexa.", "Instance is not alive": "L'istanza non è attiva", "Interface": "Interfaccia", + "Length of manual code must be 11 or 21 characters": "La lunghezza del codice manuale deve essere di 11 o 21 caratteri", "Logging": "Registrazione", + "Login and password will not be taken as incomplete. Discard changes?": "Login e password non saranno considerati incompleti. Ignorare le modifiche?", "Maintenance Settings": "Impostazioni di manutenzione", "Manual pairing code": "Codice di abbinamento manuale", "Matter Bridges Infotext": "I Matter Bridge possono contenere più dispositivi al loro interno e rappresentano il modo più semplice per portare i dispositivi ioBroker in un ecosistema compatibile con Matter. I dispositivi contenuti in un bridge possono anche essere aggiunti o rimossi dopo la messa in servizio del bridge. Alcune proprietà del dispositivo non possono essere modificate dopo la messa in servizio del bridge in un controller.\n\nQuando possiedi almeno una licenza Assistant nel tuo account ioBroker.pro puoi anche creare più bridge per strutturare al meglio i tuoi dispositivi.\n\nNota: a causa delle limitazioni del sistema Amazon Alexa puoi avere un solo bridge o dispositivo accoppiato con Alexa per host ioBroker!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Utilizza le funzionalità \"Controller\" per integrare i dispositivi compatibili con Matter in ioBroker. \nPuoi scoprire e mettere in servizio il dispositivo e gestirlo successivamente. I dati dei dispositivi saranno disponibili come stati nella scheda Oggetti ioBroker. \nLa funzionalità del controller è disabilitata per impostazione predefinita e può essere abilitata con l'interruttore seguente.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Matter richiede il protocollo IPv6 abilitato sull'interfaccia selezionata. Nessun IPv6 trovato sul tuo sistema!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Matter richiede il protocollo IPv6 abilitato sull'interfaccia selezionata. È stato trovato un IPv6 sul tuo sistema.", + "More details in the Troubleshooting Guide": "Maggiori dettagli nella Guida alla risoluzione dei problemi", "Name": "Nome", "Network configuration": "Configurazione di rete", "New bridge": "Nuovo ponte", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "Nessun dispositivo è stato aggiunto, poiché sono già presenti nell'elenco", "No devices was added, as they are already in the list or not allowed by license": "Nessun dispositivo è stato aggiunto, poiché sono già presenti nell'elenco o non sono consentiti dalla licenza", "No devices was added, as they are not allowed by license": "Nessun dispositivo è stato aggiunto, poiché non sono consentiti dalla licenza", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Nessun dispositivo creato. Creane uno facendo clic sul pulsante \"+\" nell'angolo in basso a destra.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Nessun dispositivo creato. Creane uno, cliccando sul pulsante \"+\" a sinistra.", "Not connected": "Non collegata", "Not supported yet": "Non ancora supportato", "Not used devices": "Dispositivi non utilizzati", @@ -107,14 +115,19 @@ "Options": "Opzioni", "Pairing Info Text": "Rilevamento dei dispositivi nella tua rete IP. \nAssicurati che l'host ioBroker possa inviare e ricevere liberamente messaggi UDP nella rete e nella rete dei dispositivi da rilevare. \nSe necessario, ripristina i dispositivi alle impostazioni di fabbrica o spegnili e spegnili.", "Pairing Info Text BLE": "Rilevamento dei dispositivi nella tua rete IP e tramite BLE. \nAssicurati che l'host ioBroker possa inviare e ricevere liberamente messaggi UDP nella rete e nella rete dei dispositivi da rilevare. \nSe necessario, ripristina i dispositivi alle impostazioni di fabbrica o spegnili e spegnili.", + "Pairing requirement": "I dispositivi devono essere in modalità di associazione. I dispositivi che non sono ancora collegati sono meglio collegati tramite l'app ioBroker Visu. Altrimenti, metti il dispositivo in modalità di associazione tramite l'ecosistema già collegato.", "Password repeat": "Ripetizione password", + "Password repeat is not equal to password": "La ripetizione della password non è uguale alla password", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Si prega di NON utilizzare il codice QR/codice di associazione stampato sul dispositivo Matter.", "Please confirm": "Per favore conferma", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Scansiona questo codice QR con l'app dell'ecosistema a cui desideri associarlo o utilizza il codice di configurazione stampato di seguito.", "Product ID": "Codice prodotto", "Provide your Thread or WiFi information or both!": "Fornisci le tue informazioni sulla discussione o sul WiFi o entrambi!", "QR Code": "Codice QR", - "QR Code to connect": "Codice QR per connettersi", + "QR Code scan is not possible": "La scansione del codice QR non è possibile", + "QR Code to connect for %s": "Codice QR per connettersi per \"%s\"", "Re-Announce": "Re-announce", + "Read for problems": "Se riscontri problemi nel trovare dispositivi o nel connetterti agli ecosistemi, potrebbe essere necessario configurare impostazioni IPv6 aggiuntive sull'host ioBroker.", "Reconnect to backend": "Riconnettiti al backend", "Required": "Necessario", "Requirements: add via QR Code": "Prerequisito: il dispositivo Matter deve essere già stato commissionato a un altro sistema Matter (ad esempio Google, Apple, Alexa, ...). Qui devi inserire il codice di associazione del codice QR o scansionare il codice QR fornito per questo dispositivo Matter nell'app dall'ecosistema Matter (ad esempio Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Ripristina le impostazioni di fabbrica", "Room plus device type names": "Nomi delle stanze e dei tipi di dispositivi", "Save": "Salva", + "Scan with the ioBroker cloud": "Scansione con il cloud ioBroker", "Select default bridge": "Seleziona il bridge predefinito", "Select/Unselect all devices in room": "Seleziona/Deseleziona tutti i dispositivi nella stanza", "Show QR Code for commissioning": "Mostra il codice QR per la messa in servizio", @@ -135,6 +149,7 @@ "Show unsupported devices": "Mostra i dispositivi non supportati", "Show welcome dialog": "Mostra finestra di dialogo di benvenuto", "Status": "Stato", + "Stay here": "Resta qui", "Stop": "Fermare", "Successfully re-announced": "Riannunciato con successo!", "Suppress question for 5 minutes": "Sopprimi la domanda per 5 minuti", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Per mettere in funzione/collegare i dispositivi Matter con il controller ioBroker, utilizzare la migliore app ioBroker.visu:", + "To make all this work, the following requirements should be considered": "Per far funzionare tutto questo, è necessario considerare i seguenti requisiti", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Per utilizzare un bridge Matter o opzioni dispositivo con più di 5 dispositivi, inserisci credenziali ioBroker.pro Cloud valide con almeno una licenza Assistant attiva.", "Unselect all rooms": "Deseleziona tutte le stanze", "Use last value for ON": "Utilizzare l'ultimo valore per ON", @@ -153,9 +169,11 @@ "Vendor ID": "ID del venditore", "WLAN credentials": "Credenziali Wi-Fi", "Warning about 15 devices": "Per evitare problemi durante l'associazione di questo bridge, si prega di considerare di associarlo ora e di aggiungere altri dispositivi in seguito.", + "Welcome explanation": "L'adattatore Matter consente l'integrazione di ioBroker con tutti i dispositivi Matter sul mercato e consente ai dispositivi ioBroker di essere utilizzati direttamente in molti ecosistemi compatibili con Matter, come Apple, Google, Amazon o SmartThings. La comunicazione avviene localmente e in modo sicuro.", "Welcome to Matter!": "Benvenuti su Matter!", "WiFi SSID": "SSID Wi-Fi", "WiFi password": "Password Wi-Fi", + "Yes": "SÌ", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Hai bisogno dell'assistente ioBroker.pro o di un abbonamento remoto per avere più di 5 dispositivi in bridge", "You need to configure WLAN or Thread credentials above to activate BLE": "È necessario configurare le credenziali WLAN o Thread sopra per attivare BLE!", "blind": "Cieco", @@ -166,6 +184,7 @@ "floodAlarm": "Allarme allagamento", "image": "Immagine", "invalid_password_warning": "La password sembra non valida", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker ha ricevuto \"%s\". Ora puoi chiudere questa finestra cliccando su questo testo.", "ioBroker.pro Login": "Accedi a ioBroker.pro", "ioBroker.pro Password": "Password ioBroker.pro", "light": "Leggero", diff --git a/src-admin/src/i18n/nl.json b/src-admin/src/i18n/nl.json index 374cde7..1f0d7e5 100644 --- a/src-admin/src/i18n/nl.json +++ b/src-admin/src/i18n/nl.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Gebruik NIET de QR-code/koppelingscode die op het Matter-apparaat staat.", "%s of %s devices selected": "%s van %s apparaten geselecteerd", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Activeer BLE om apparaten in de buurt van uw ioBroker-host te koppelen die nog niet aan een ander ecosysteem zijn gekoppeld. U kunt ook de app \"ioBroker Visu\" gebruiken om andere apparaten te koppelen.", "Add": "Toevoegen", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Alle gegevens van dit apparaat of deze brug worden verwijderd en u moet opnieuw verbinding maken (met pincode of QR-code).", "All interfaces": "Alle interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "De controller en alle apparaten en bruggen worden teruggezet naar de fabrieksinstellingen. \nHierdoor worden de koppelings- en huidige waarden voor alle apparaten, bruggen en ook gekoppelde apparaten in de controller verwijderd. Je kunt het niet ongedaan maken.\nDe algemene configuratie van de controller en de toegewezen ioBroker-statussen voor de bruggen en apparaten blijven ongewijzigd.", + "Allow action by identify": "Actie toestaan door identificatie", "Announcement will stop automatically after 15 minutes": "De aankondiging stopt automatisch na 15 minuten", "Apply": "Toepassen", "Are you sure?": "Weet je het zeker?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "Brug is niet in gebruik genomen. QR-code weergeven kreeg inbedrijfstelling", "Bridges": "Bruggen", "Brightness by ON": "Helderheid door AAN", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "Toegang tot de camera is alleen toegestaan in een veilige context. Gebruik HTTPS of localhost in plaats van HTTP.", "Cancel": "Annuleren", "Close": "Dichtbij", "Cloud Account": "Cloud-account", + "Code must start with \"MT:\"": "Code moet beginnen met \"MT:\"", "Collapse all": "Alles inklappen", "Commissioned Devices": "In bedrijf gestelde apparaten", "Commissioning information": "Informatie over inbedrijfstelling", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Verbind Matter-apparaten met ioBroker", "Connected": "Verbonden", "Controller": "Controleur", + "Controller Settings": "Controller-instellingen", "Controller and Device Factory Reset": "Fabrieksreset van controller en apparaten", + "Controller fabric label": "Controller-stoflabel", "Copied to clipboard": "Gekopieerd naar het klembord", "Default bridge": "Standaard brug", "Default bridge (Alexa-compatible)": "Standaardbridge (compatibel met Alexa, gebruikt poort 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Stel geen apparaten samen (als het te koppelen ecosysteem geen samengestelde apparaten ondersteunt)", "Do you want to delete bridge": "Wilt u bridge verwijderen", "Do you want to delete device": "Wilt u het apparaat verwijderen", + "Docker information": "Omdat ioBroker in Docker draait, moet het hostnetwerk worden gebruikt, anders werken IPv6- en UDP-routing niet.", "Edit bridge": "Brug bewerken", "Edit device": "Apparaat bewerken", "Enable": "Inschakelen", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Let op: Vanwege beperkingen van het Amazon Alexa-systeem kan er slechts één bridge of apparaat worden gekoppeld aan Alexa per ioBroker-host! Deze selectie bepaalt welke bridge wordt gekoppeld aan het Alexa-systeem.", "Instance is not alive": "Instantie is niet levend", "Interface": "Koppel", + "Length of manual code must be 11 or 21 characters": "De lengte van de handmatige code moet 11 of 21 tekens zijn", "Logging": "Loggen", + "Login and password will not be taken as incomplete. Discard changes?": "Login en wachtwoord worden niet als onvolledig beschouwd. Wijzigingen negeren?", "Maintenance Settings": "Onderhoudsinstellingen", "Manual pairing code": "Handmatige koppelingscode", "Matter Bridges Infotext": "Matter Bridges kunnen meerdere apparaten bevatten en zijn de meest eenvoudige manier om ioBroker-apparaten in een Matter-compatibel ecosysteem te brengen. Apparaten in een brug kunnen ook worden toegevoegd of verwijderd nadat de brug in gebruik is genomen. Sommige apparaateigenschappen kunnen niet worden gewijzigd nadat de brug in een controller is in bedrijf gesteld.\n\nWanneer u minimaal een Assistent-licentie in uw ioBroker.pro-account bezit, kunt u ook meerdere bridges maken om uw apparaten zo het beste te structureren.\n\nLet op: vanwege de beperkingen van het Amazon Alexa-systeem kun je per ioBroker-host slechts één bridge of apparaat met Alexa koppelen!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Gebruik de \"Controller\"-functies om Matter-compatibele apparaten in ioBroker te integreren. \nU kunt apparaten ontdekken, in bedrijf stellen en achteraf beheren. De gegevens van de apparaten zullen beschikbaar zijn als statussen op het tabblad ioBroker Objects. \nDe controllerfunctie is standaard uitgeschakeld en kan worden ingeschakeld met de onderstaande schakelaar.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Matter vereist ingeschakeld IPv6-protocol op geselecteerde interface. Er is geen IPv6 gevonden op uw systeem!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Matter vereist ingeschakeld IPv6-protocol op geselecteerde interface. Er is wat IPv6 gevonden op uw systeem.", + "More details in the Troubleshooting Guide": "Meer details in de Probleemoplossingsgids", "Name": "Naam", "Network configuration": "Netwerk configuratie", "New bridge": "Nieuwe brug", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "Er zijn geen apparaten toegevoegd, omdat ze al in de lijst staan", "No devices was added, as they are already in the list or not allowed by license": "Er zijn geen apparaten toegevoegd, omdat ze al in de lijst staan of niet zijn toegestaan door de licentie", "No devices was added, as they are not allowed by license": "Er zijn geen apparaten toegevoegd, omdat deze niet zijn toegestaan volgens de licentie", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Geen enkel apparaat gemaakt. Maak er een door op de knop \"+\" in de rechteronderhoek te klikken.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Geen enkel apparaat gemaakt. Maak er een door op de \"+\" knop aan de linkerkant te klikken.", "Not connected": "Niet verbonden", "Not supported yet": "Nog niet ondersteund", "Not used devices": "Niet gebruikte apparaten", @@ -107,14 +115,19 @@ "Options": "Opties", "Pairing Info Text": "Apparaten in uw IP-netwerk ontdekken. \nZorg ervoor dat de ioBroker-host vrijelijk UDP-berichten kan verzenden en ontvangen in het netwerk en in het netwerk van de te ontdekken apparaten. \nReset indien nodig de apparaten naar de fabrieksinstellingen of schakel ze uit en weer in.", "Pairing Info Text BLE": "Apparaten ontdekken in uw IP-netwerk en via BLE. \nZorg ervoor dat de ioBroker-host vrijelijk UDP-berichten kan verzenden en ontvangen in het netwerk en in het netwerk van de te ontdekken apparaten. \nReset indien nodig de apparaten naar de fabrieksinstellingen of schakel ze uit en weer in.", + "Pairing requirement": "Apparaten moeten in de koppelingsmodus staan. Apparaten die nog niet gekoppeld zijn, koppel je het beste via de ioBroker Visu-app. Anders zet je het apparaat in de koppelingsmodus via het al gekoppelde ecosysteem.", "Password repeat": "Wachtwoord herhalen", + "Password repeat is not equal to password": "Wachtwoord herhalen is niet gelijk aan wachtwoord", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Gebruik NIET de QR-code/koppelingscode die op het Matter-apparaat staat.", "Please confirm": "Bevestig alstublieft", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Scan deze QR-code met de app van het ecosysteem waaraan u deze wilt koppelen of gebruik de hieronder afgedrukte installatiecode.", "Product ID": "Product-ID", "Provide your Thread or WiFi information or both!": "Geef uw Thread- of WiFi-informatie op, of beide!", "QR Code": "QR-code", - "QR Code to connect": "QR-code om verbinding te maken", + "QR Code scan is not possible": "QR-code scannen is niet mogelijk", + "QR Code to connect for %s": "QR-code om verbinding te maken voor \"%s\"", "Re-Announce": "Re-announce", + "Read for problems": "Als u problemen ondervindt bij het vinden van apparaten of het verbinden met ecosystemen, moet u mogelijk aanvullende IPv6-instellingen op de ioBroker-host maken.", "Reconnect to backend": "Opnieuw verbinden met backend", "Required": "Vereist", "Requirements: add via QR Code": "Voorwaarde: Het Matter-apparaat moet al in gebruik zijn genomen bij een ander Matter-systeem (bijv. Google, Apple, Alexa, ...). Hier moet u de QR-codekoppelingscode invoeren of de QR-code scannen die voor dit Matter-apparaat in de app is verstrekt door het Matter-ecosysteem (bijv. Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Resetten naar fabrieksinstellingen", "Room plus device type names": "Kamer plus apparaattypenamen", "Save": "Redden", + "Scan with the ioBroker cloud": "Scannen met de ioBroker-cloud", "Select default bridge": "Selecteer standaardbrug", "Select/Unselect all devices in room": "Selecteer/deselecteer alle apparaten in de kamer", "Show QR Code for commissioning": "QR-code weergeven voor inbedrijfstelling", @@ -135,6 +149,7 @@ "Show unsupported devices": "Toon niet-ondersteunde apparaten", "Show welcome dialog": "Welkomstdialoog weergeven", "Status": "Toestand", + "Stay here": "Blijf hier", "Stop": "Stop", "Successfully re-announced": "Met succes opnieuw aangekondigd!", "Suppress question for 5 minutes": "Onderdruk de vraag gedurende 5 minuten", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Voor het in bedrijf stellen/verbinden van materieapparaten met de ioBroker-controller kunt u het beste de ioBroker.visu-app gebruiken:", + "To make all this work, the following requirements should be considered": "Om dit allemaal te laten werken, moeten de volgende vereisten in overweging worden genomen", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Om een Matter-bridge of apparaatopties met meer dan 5 apparaten te gebruiken, voert u geldige ioBroker.pro Cloud-inloggegevens in met minimaal een actieve Assistent-licentie.", "Unselect all rooms": "Deselecteer alle kamers", "Use last value for ON": "Gebruik de laatste waarde bij AAN", @@ -153,9 +169,11 @@ "Vendor ID": "Verkopers ID", "WLAN credentials": "WLAN-referenties", "Warning about 15 devices": "Om problemen te voorkomen bij het koppelen van deze brug, kunt u overwegen om deze nu te koppelen en later meer apparaten toe te voegen.", + "Welcome explanation": "De Matter-adapter maakt de integratie van ioBroker met alle Matter-apparaten op de markt mogelijk en zorgt ervoor dat ioBroker-apparaten direct kunnen worden gebruikt in veel Matter-compatibele ecosystemen, zoals Apple, Google, Amazon of SmartThings. Communicatie vindt lokaal en veilig plaats.", "Welcome to Matter!": "Welkom bij Matter!", "WiFi SSID": "WiFi-SSID", "WiFi password": "Wifi wachtwoord", + "Yes": "Ja", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "U hebt een ioBroker.pro-assistent of een extern abonnement nodig om meer dan 5 apparaten in bridge te hebben", "You need to configure WLAN or Thread credentials above to activate BLE": "U moet hierboven WLAN- of Thread-inloggegevens configureren om BLE te activeren!", "blind": "Blind", @@ -166,6 +184,7 @@ "floodAlarm": "Overstromingsalarm", "image": "Afbeelding", "invalid_password_warning": "Wachtwoord lijkt ongeldig", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker ontving \"%s\". U kunt dit venster nu sluiten door op deze tekst te klikken.", "ioBroker.pro Login": "ioBroker.pro Inloggen", "ioBroker.pro Password": "ioBroker.pro-wachtwoord", "light": "Licht", diff --git a/src-admin/src/i18n/pl.json b/src-admin/src/i18n/pl.json index 64fcc5c..e066236 100644 --- a/src-admin/src/i18n/pl.json +++ b/src-admin/src/i18n/pl.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Prosimy NIE używać kodu QR/kodu parowania wydrukowanego na urządzeniu Matter.", "%s of %s devices selected": "Wybrano %s z %s urządzeń", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Aktywuj BLE, aby sparować urządzenia w pobliżu hosta ioBroker, które nie są jeszcze sparowane z innym ekosystemem. Możesz także użyć aplikacji „ioBroker Visu”, aby sparować inne urządzenia.", "Add": "Dodać", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Wszystkie informacje dotyczące tego urządzenia lub mostu zostaną usunięte i konieczne będzie ponowne nawiązanie połączenia (za pomocą kodu PIN lub QR).", "All interfaces": "Wszystkie interfejsy", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Kontroler oraz wszystkie urządzenia i mosty zostaną przywrócone do ustawień fabrycznych. \nSpowoduje to usunięcie parowania i bieżących wartości wszystkich urządzeń, mostów, a także sparowanych urządzeń w kontrolerze. Nie możesz tego cofnąć.\nOgólna konfiguracja kontrolera oraz przypisane stany ioBroker dla mostów i urządzeń pozostaną niezmienione.", + "Allow action by identify": "Zezwól na działanie według identyfikacji", "Announcement will stop automatically after 15 minutes": "Ogłoszenie zostanie automatycznie zakończone po 15 minutach", "Apply": "Stosować", "Are you sure?": "Jesteś pewny?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "Most nie jest oddany do użytku. Pokaż kod QR, który został uruchomiony", "Bridges": "Mosty", "Brightness by ON": "Jasność po włączeniu", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "Dostęp do kamery jest dozwolony tylko w bezpiecznym kontekście. Użyj HTTPS lub localhost zamiast HTTP.", "Cancel": "Anulować", "Close": "Zamknąć", "Cloud Account": "Konto w chmurze", + "Code must start with \"MT:\"": "Kod musi zaczynać się od „MT:”", "Collapse all": "Zwinąć wszystkie", "Commissioned Devices": "Urządzenia zamówione", "Commissioning information": "Informacje o uruchomieniu", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Połącz urządzenia Matter z ioBroker", "Connected": "Połączony", "Controller": "Kontroler", + "Controller Settings": "Ustawienia kontrolera", "Controller and Device Factory Reset": "Reset do ustawień fabrycznych kontrolera i urządzeń", + "Controller fabric label": "Etykieta materiałowa kontrolera", "Copied to clipboard": "Skopiowane do schowka", "Default bridge": "Domyślny most", "Default bridge (Alexa-compatible)": "Domyślny mostek (kompatybilny z Alexą, wykorzystuje port 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Nie twórz urządzeń (jeśli ekosystem do sparowania nie obsługuje skomponowanych urządzeń)", "Do you want to delete bridge": "Czy chcesz usunąć most", "Do you want to delete device": "Czy chcesz usunąć urządzenie", + "Docker information": "Ponieważ ioBroker działa w Dockerze, należy użyć sieci hosta, w przeciwnym razie routing IPv6 i UDP nie będzie działał.", "Edit bridge": "Edytuj most", "Edit device": "Edytuj urządzenie", "Enable": "Włączać", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Uwaga: Ze względu na ograniczenia systemu Amazon Alexa, tylko jeden most lub urządzenie może być sparowane z Alexą na hosta ioBroker! Ten wybór określa, który most zostanie sparowany z systemem Alexa.", "Instance is not alive": "Instancja nie jest żywa", "Interface": "Interfejs", + "Length of manual code must be 11 or 21 characters": "Długość kodu podręcznika musi wynosić 11 lub 21 znaków", "Logging": "Logowanie", + "Login and password will not be taken as incomplete. Discard changes?": "Login i hasło nie będą traktowane jako niekompletne. Odrzucić zmiany?", "Maintenance Settings": "Ustawienia konserwacji", "Manual pairing code": "Ręczny kod parowania", "Matter Bridges Infotext": "Matter Bridges może zawierać wiele urządzeń i jest najprostszym sposobem na wprowadzenie urządzeń ioBroker do ekosystemu kompatybilnego z Matter. Urządzenia znajdujące się w moście można również dodawać lub usuwać po oddaniu mostu do użytku. Niektórych właściwości urządzenia nie da się zmienić po uruchomieniu mostu w sterowniku.\n\nJeśli posiadasz co najmniej Licencję Asystenta na swoim koncie ioBroker.pro, możesz także tworzyć wiele mostów, aby najlepiej zorganizować swoje urządzenia.\n\nUwaga: ze względu na ograniczenia systemu Amazon Alexa, na jednego hosta ioBroker można sparować tylko jeden most lub urządzenie z Alexą!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Skorzystaj z funkcji „Kontrolera”, aby zintegrować urządzenia kompatybilne z Matter z ioBroker. \nMożesz odkryć i uruchomić urządzenie, a następnie zarządzać nimi. Dane urządzeń będą dostępne jako stany w zakładce Obiekty ioBroker. \nFunkcja kontrolera jest domyślnie wyłączona i można ją włączyć za pomocą poniższego przełącznika.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Matter wymaga włączonego protokołu IPv6 na wybranym interfejsie. Nie znaleziono protokołu IPv6 w Twoim systemie!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Matter wymaga włączonego protokołu IPv6 na wybranym interfejsie. Niektóre IPv6 zostały znalezione w twoim systemie.", + "More details in the Troubleshooting Guide": "Więcej szczegółów w Przewodniku rozwiązywania problemów", "Name": "Nazwa", "Network configuration": "Konfiguracja sieci", "New bridge": "Nowy most", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "Nie dodano żadnych urządzeń, ponieważ znajdują się one już na liście", "No devices was added, as they are already in the list or not allowed by license": "Nie dodano żadnych urządzeń, ponieważ znajdują się już na liście lub nie są dozwolone przez licencję", "No devices was added, as they are not allowed by license": "Nie dodano żadnych urządzeń, ponieważ nie są one dozwolone przez licencję", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Nie utworzono żadnego urządzenia. Utwórz go, klikając przycisk „+” w prawym dolnym rogu.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Nie utworzono żadnego urządzenia. Utwórz je, klikając przycisk „+” po lewej stronie.", "Not connected": "Nie połączony", "Not supported yet": "Jeszcze nieobsługiwane", "Not used devices": "Nieużywane urządzenia", @@ -107,14 +115,19 @@ "Options": "Opcje", "Pairing Info Text": "Wykrywanie urządzeń w Twojej sieci IP. \nUpewnij się, że host ioBroker może swobodnie wysyłać i odbierać wiadomości UDP w sieci oraz w sieci wykrywanych urządzeń. \nW razie potrzeby zresetuj urządzenia do ustawień fabrycznych lub wyłącz je i włącz.", "Pairing Info Text BLE": "Wykrywanie urządzeń w Twojej sieci IP i poprzez BLE. \nUpewnij się, że host ioBroker może swobodnie wysyłać i odbierać wiadomości UDP w sieci oraz w sieci wykrywanych urządzeń. \nW razie potrzeby zresetuj urządzenia do ustawień fabrycznych lub wyłącz je i włącz.", + "Pairing requirement": "Urządzenia muszą być w trybie parowania. Urządzenia, które nie są jeszcze połączone, najlepiej połączyć za pośrednictwem aplikacji ioBroker Visu. W przeciwnym razie przełącz urządzenie w tryb parowania za pośrednictwem już połączonego ekosystemu.", "Password repeat": "Powtórz hasło", + "Password repeat is not equal to password": "Powtórzenie hasła nie jest równe hasłu", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "Prosimy NIE używać kodu QR/kodu parowania wydrukowanego na urządzeniu Matter.", "Please confirm": "Proszę potwierdzić", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Zeskanuj ten kod QR za pomocą aplikacji ekosystemu, z którym chcesz go sparować, lub użyj poniższego wydrukowanego kodu konfiguracyjnego.", "Product ID": "ID produktu", "Provide your Thread or WiFi information or both!": "Podaj informacje o swoim wątku lub Wi-Fi lub jedno i drugie!", "QR Code": "Kod QR", - "QR Code to connect": "Kod QR do połączenia", + "QR Code scan is not possible": "Skanowanie kodu QR nie jest możliwe", + "QR Code to connect for %s": "Kod QR do połączenia dla \"%s\"", "Re-Announce": "Re-announce", + "Read for problems": "Jeśli masz problemy ze znalezieniem urządzeń lub nawiązaniem połączenia z ekosystemami, może być konieczne wprowadzenie dodatkowych ustawień protokołu IPv6 na hoście ioBroker.", "Reconnect to backend": "Ponowne połączenie z zapleczem", "Required": "Wymagany", "Requirements: add via QR Code": "Warunek wstępny: Urządzenie Matter musi być już zlecone innemu systemowi Matter (np. Google, Apple, Alexa, ...). Tutaj musisz wprowadzić kod parowania kodu QR lub zeskanować kod QR, który jest dostarczany dla tego urządzenia Matter w aplikacji przez ekosystem Matter (np. Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Przywróć ustawienia fabryczne", "Room plus device type names": "Nazwy pomieszczeń i typów urządzeń", "Save": "Ratować", + "Scan with the ioBroker cloud": "Skanuj za pomocą chmury ioBroker", "Select default bridge": "Wybierz domyślny most", "Select/Unselect all devices in room": "Zaznacz/odznacz wszystkie urządzenia w pokoju", "Show QR Code for commissioning": "Pokaż kod QR do uruchomienia", @@ -135,6 +149,7 @@ "Show unsupported devices": "Pokaż nieobsługiwane urządzenia", "Show welcome dialog": "Pokaż okno dialogowe powitalne", "Status": "Status", + "Stay here": "Zostań tutaj", "Stop": "Zatrzymywać się", "Successfully re-announced": "Pomyślnie ogłoszono ponownie!", "Suppress question for 5 minutes": "Ukryj pytanie na 5 minuty", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Aby uruchomić/połączyć urządzenia Matter ze sterownikiem ioBroker, należy użyć lepszej aplikacji ioBroker.visu:", + "To make all this work, the following requirements should be considered": "Aby to wszystko zadziałało, należy wziąć pod uwagę następujące wymagania", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Aby korzystać z mostu Matter lub opcji urządzenia z więcej niż 5 urządzeniami, wprowadź prawidłowe dane uwierzytelniające ioBroker.pro Cloud z co najmniej aktywną licencją Asystenta.", "Unselect all rooms": "Odznacz wszystkie pokoje", "Use last value for ON": "Użyj ostatniej wartości poprzez ON", @@ -153,9 +169,11 @@ "Vendor ID": "Identyfikator sprzedawcy", "WLAN credentials": "Dane uwierzytelniające WLAN", "Warning about 15 devices": "Aby uniknąć problemów podczas parowania tego mostu, rozważ sparowanie go teraz i dodanie kolejnych urządzeń później.", + "Welcome explanation": "Adapter Matter umożliwia integrację ioBroker ze wszystkimi urządzeniami Matter na rynku i pozwala na bezpośrednie używanie urządzeń ioBroker w wielu ekosystemach zgodnych z Matter, takich jak Apple, Google, Amazon lub SmartThings. Komunikacja odbywa się lokalnie i bezpiecznie.", "Welcome to Matter!": "Witamy w Matter!", "WiFi SSID": "SSID Wi-Fi", "WiFi password": "Hasło do wifi", + "Yes": "Tak", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Aby mieć więcej niż 5 urządzeń w moście, potrzebujesz asystenta ioBroker.pro lub zdalnej subskrypcji", "You need to configure WLAN or Thread credentials above to activate BLE": "Aby aktywować BLE, musisz skonfigurować dane uwierzytelniające WLAN lub wątek powyżej!", "blind": "Ślepy", @@ -166,6 +184,7 @@ "floodAlarm": "Alarm powodziowy", "image": "Obraz", "invalid_password_warning": "Hasło wygląda na nieprawidłowe", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker otrzymał \"%s\". Teraz możesz zamknąć to okno, klikając na ten tekst.", "ioBroker.pro Login": "Zaloguj się ioBroker.pro", "ioBroker.pro Password": "Hasło ioBroker.pro", "light": "Światło", diff --git a/src-admin/src/i18n/pt.json b/src-admin/src/i18n/pt.json index 28b8024..068810e 100644 --- a/src-admin/src/i18n/pt.json +++ b/src-admin/src/i18n/pt.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "NÃO use o código QR/código de pareamento impresso no dispositivo Matter.", "%s of %s devices selected": "%s de %s dispositivos selecionados", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Ative o BLE para emparelhar dispositivos próximos ao seu host ioBroker, que ainda não estejam emparelhados com outro ecossistema. Você também pode usar o aplicativo \"ioBroker Visu\" para emparelhar outros dispositivos.", "Add": "Adicionar", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Todas as informações deste dispositivo ou ponte serão excluídas e você deverá se reconectar (com PIN ou código QR) novamente.", "All interfaces": "Todas as interfaces", "All state information of matter controller and devices will be deleted. You cannot undo it.": "O controlador e todos os dispositivos e pontes retornarão aos padrões de fábrica. \nIsso exclui os valores atuais e de emparelhamento de todos os dispositivos, pontes e também dos dispositivos emparelhados no controlador. Você não pode desfazer isso.\nA configuração geral do controlador e os estados atribuídos do ioBroker para as pontes e dispositivos permanecerão inalterados.", + "Allow action by identify": "Permitir ação por identificação", "Announcement will stop automatically after 15 minutes": "O anúncio será interrompido automaticamente após 15 minutos", "Apply": "Aplicar", "Are you sure?": "Tem certeza?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "A ponte não está comissionada. Mostrar QR Code foi comissionado", "Bridges": "Pontes", "Brightness by ON": "Brilho por ON", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "O acesso à câmera só é permitido em contexto seguro. Use HTTPS ou localhost em vez de HTTP.", "Cancel": "Cancelar", "Close": "Fechar", "Cloud Account": "Conta na nuvem", + "Code must start with \"MT:\"": "O código deve começar com \"MT:\"", "Collapse all": "Recolher todos", "Commissioned Devices": "Dispositivos comissionados", "Commissioning information": "Informações de comissionamento", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Conecte dispositivos Matter com ioBroker", "Connected": "Conectado", "Controller": "Controlador", + "Controller Settings": "Configurações do controlador", "Controller and Device Factory Reset": "Redefinição de fábrica do controlador e dos dispositivos", + "Controller fabric label": "Etiqueta de tecido do controlador", "Copied to clipboard": "Copiado para a área de transferência", "Default bridge": "Ponte padrão", "Default bridge (Alexa-compatible)": "Ponte padrão (compatível com Alexa, usa porta 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Não componha dispositivos (se o ecossistema a ser emparelhado não suportar dispositivos compostos)", "Do you want to delete bridge": "Você deseja excluir a ponte", "Do you want to delete device": "Você deseja excluir o dispositivo", + "Docker information": "Como o ioBroker é executado no Docker, a rede do host deve ser usada, caso contrário, o roteamento IPv6 e UDP não funcionarão.", "Edit bridge": "Editar ponte", "Edit device": "Editar dispositivo", "Enable": "Habilitar", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Observação: devido às limitações do sistema Amazon Alexa, apenas uma ponte ou dispositivo pode ser pareado com Alexa por host ioBroker! Esta seleção determina qual ponte será pareada com o sistema Alexa.", "Instance is not alive": "A instância não está viva", "Interface": "Interface", + "Length of manual code must be 11 or 21 characters": "O comprimento do código manual deve ser de 11 ou 21 caracteres", "Logging": "Exploração madeireira", + "Login and password will not be taken as incomplete. Discard changes?": "Login e senha não serão considerados incompletos. Descartar alterações?", "Maintenance Settings": "Configurações de manutenção", "Manual pairing code": "Código de emparelhamento manual", "Matter Bridges Infotext": "Matter Bridges podem conter vários dispositivos dentro deles e são a maneira mais simples de trazer dispositivos ioBroker para um ecossistema compatível com Matter. Os dispositivos contidos em uma ponte também podem ser adicionados ou removidos após o comissionamento da ponte. Algumas propriedades do dispositivo não podem ser alteradas depois que a ponte foi comissionada em um controlador.\n\nQuando você possui pelo menos uma licença de assistente em sua conta ioBroker.pro, você também pode criar várias pontes e estruturar melhor seus dispositivos.\n\nObservação: devido às limitações do sistema Amazon Alexa, você só pode ter uma ponte ou dispositivo emparelhado com Alexa por host ioBroker!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Use os recursos do \"Controlador\" para integrar dispositivos compatíveis com Matter no ioBroker. \nVocê pode descobrir e comissionar dispositivos e gerenciá-los posteriormente. Os dados dos dispositivos estarão disponíveis como estados na aba Objetos ioBroker. \nO recurso do controlador está desabilitado por padrão e pode ser habilitado com a chave abaixo.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "O assunto requer protocolo IPv6 habilitado na interface selecionada. Nenhum IPv6 foi encontrado no seu sistema!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "O assunto requer protocolo IPv6 habilitado na interface selecionada. Algum IPv6 foi encontrado no seu sistema.", + "More details in the Troubleshooting Guide": "Mais detalhes no Guia de solução de problemas", "Name": "Nome", "Network configuration": "Configuração de rede", "New bridge": "Nova ponte", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "Nenhum dispositivo foi adicionado, pois eles já estão na lista", "No devices was added, as they are already in the list or not allowed by license": "Nenhum dispositivo foi adicionado, pois eles já estão na lista ou não são permitidos pela licença", "No devices was added, as they are not allowed by license": "Nenhum dispositivo foi adicionado, pois não são permitidos pela licença", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Nenhum dispositivo criado. Crie um clicando no botão “+” no canto inferior direito.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Nenhum dispositivo criado. Crie um, clicando no botão \"+\" à esquerda.", "Not connected": "Não conectado", "Not supported yet": "Ainda não suportado", "Not used devices": "Dispositivos não usados", @@ -107,14 +115,19 @@ "Options": "Opções", "Pairing Info Text": "Descobrindo dispositivos em sua rede IP. \nCertifique-se de que o host ioBroker possa enviar e receber livremente mensagens UDP na rede e na rede dos dispositivos a serem descobertos. \nSe necessário, redefina os dispositivos para as configurações de fábrica ou desligue-os.", "Pairing Info Text BLE": "Descobrindo dispositivos na sua rede IP e via BLE. \nCertifique-se de que o host ioBroker possa enviar e receber livremente mensagens UDP na rede e na rede dos dispositivos a serem descobertos. \nSe necessário, redefina os dispositivos para as configurações de fábrica ou desligue-os.", + "Pairing requirement": "Os dispositivos devem estar em modo de pareamento. Dispositivos que ainda não estão vinculados são melhor vinculados por meio do aplicativo ioBroker Visu. Caso contrário, coloque o dispositivo em modo de pareamento por meio do ecossistema já vinculado.", "Password repeat": "Repetição de senha", + "Password repeat is not equal to password": "A repetição da senha não é igual à senha", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "NÃO use o código QR/código de pareamento impresso no dispositivo Matter.", "Please confirm": "Por favor confirme", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Digitalize este código QR com o aplicativo do ecossistema ao qual deseja emparelhá-lo ou use o código de configuração impresso abaixo.", "Product ID": "ID do produto", "Provide your Thread or WiFi information or both!": "Forneça suas informações de Thread ou WiFi ou ambos!", "QR Code": "Código QR", - "QR Code to connect": "QR Code para conectar", + "QR Code scan is not possible": "Não é possível escanear o código QR", + "QR Code to connect for %s": "Código QR para conectar \"%s\"", "Re-Announce": "Re-announce", + "Read for problems": "Se você tiver problemas para encontrar dispositivos ou se conectar a ecossistemas, talvez seja necessário fazer configurações adicionais de IPv6 no host ioBroker.", "Reconnect to backend": "Reconectar ao backend", "Required": "Obrigatório", "Requirements: add via QR Code": "Pré-requisito: O dispositivo Matter já deve estar comissionado para outro sistema Matter (por exemplo, Google, Apple, Alexa, ...). Aqui você deve inserir o código de pareamento do código QR ou escanear o código QR fornecido para este dispositivo Matter no aplicativo pelo ecossistema Matter (por exemplo, Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Redefinir para os padrões de fábrica", "Room plus device type names": "Nomes de salas e tipos de dispositivos", "Save": "Salvar", + "Scan with the ioBroker cloud": "Digitalize com a nuvem ioBroker", "Select default bridge": "Selecione a ponte padrão", "Select/Unselect all devices in room": "Selecionar/desmarcar todos os dispositivos na sala", "Show QR Code for commissioning": "Mostrar código QR para comissionamento", @@ -135,6 +149,7 @@ "Show unsupported devices": "Mostrar dispositivos não suportados", "Show welcome dialog": "Mostrar caixa de diálogo de boas-vindas", "Status": "Status", + "Stay here": "Fique aqui", "Stop": "Parar", "Successfully re-announced": "Reanunciado com sucesso!", "Suppress question for 5 minutes": "Suprimir pergunta por 5 minutos", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Para comissionar/conectar dispositivos de matéria com o controlador ioBroker, use o aplicativo ioBroker.visu:", + "To make all this work, the following requirements should be considered": "Para que tudo isso funcione, os seguintes requisitos devem ser considerados", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Para usar uma ponte Matter ou opções de dispositivo com mais de 5 dispositivos, insira credenciais válidas do ioBroker.pro Cloud com pelo menos uma licença ativa do Assistant.", "Unselect all rooms": "Desmarque todos os quartos", "Use last value for ON": "Use o último valor por ON", @@ -153,9 +169,11 @@ "Vendor ID": "ID do fornecedor", "WLAN credentials": "Credenciais WLAN", "Warning about 15 devices": "Para evitar problemas ao parear esta ponte, considere pareá-la agora e adicionar mais dispositivos depois", + "Welcome explanation": "O adaptador Matter permite a integração do ioBroker com todos os dispositivos Matter no mercado e permite que os dispositivos ioBroker sejam usados diretamente em muitos ecossistemas compatíveis com Matter, como Apple, Google, Amazon ou SmartThings. A comunicação ocorre localmente e com segurança.", "Welcome to Matter!": "Bem-vindo à Matter!", "WiFi SSID": "SSID Wi-Fi", "WiFi password": "Senha do wifi", + "Yes": "Sim", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Você precisa do assistente ioBroker.pro ou assinatura remota para ter mais de 5 dispositivos em bridge", "You need to configure WLAN or Thread credentials above to activate BLE": "Você precisa configurar as credenciais WLAN ou Thread acima para ativar o BLE!", "blind": "Cego", @@ -166,6 +184,7 @@ "floodAlarm": "Alarme de inundação", "image": "Imagem", "invalid_password_warning": "A senha parece inválida", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker recebeu \"%s\". Agora você pode fechar esta janela clicando neste texto.", "ioBroker.pro Login": "Login do ioBroker.pro", "ioBroker.pro Password": "Senha do ioBroker.pro", "light": "Luz", diff --git a/src-admin/src/i18n/ru.json b/src-admin/src/i18n/ru.json index 3d36fce..5db73a5 100644 --- a/src-admin/src/i18n/ru.json +++ b/src-admin/src/i18n/ru.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "НЕ ИСПОЛЬЗУЙТЕ QR-код/код сопряжения, напечатанный на устройстве Matter.", "%s of %s devices selected": "Выбрано %s из %s устройств", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Активируйте BLE для сопряжения устройств поблизости от вашего хоста ioBroker, которые еще не подключены к другой экосистеме. Вы также можете использовать приложение «ioBroker Visu» для сопряжения других устройств.", "Add": "Добавлять", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Вся информация об этом устройстве или мосте будет удалена, и вам придется заново подключиться (с помощью PIN-кода или QR-кода).", "All interfaces": "Все интерфейсы", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Для контроллера, всех устройств и мостов будут восстановлены заводские настройки по умолчанию. \nПри этом удаляются сопряженные и текущие значения для всех устройств, мостов, а также сопряженных устройств в контроллере. Вы не можете отменить это.\nОбщая конфигурация контроллера и назначенные состояния ioBroker для мостов и устройств останутся неизменными.", + "Allow action by identify": "Разрешить действие по идентификации", "Announcement will stop automatically after 15 minutes": "Объявление автоматически прекратится через 15 минут.", "Apply": "Применять", "Are you sure?": "Вы уверены?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "Мост не сдан в эксплуатацию. Показать QR-код введен в эксплуатацию", "Bridges": "Мосты", "Brightness by ON": "Яркость при включении", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "Доступ к камере разрешен только в безопасном контексте. Используйте HTTPS или localhost вместо HTTP.", "Cancel": "Отмена", "Close": "Закрыть", "Cloud Account": "Облачный аккаунт", + "Code must start with \"MT:\"": "Код должен начинаться с «MT:»", "Collapse all": "Свернуть все", "Commissioned Devices": "Введенные в эксплуатацию устройства", "Commissioning information": "Информация о вводе в эксплуатацию", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Подключите устройства Matter с помощью ioBroker", "Connected": "Связанный", "Controller": "Контроллер", + "Controller Settings": "Настройки контроллера", "Controller and Device Factory Reset": "Сброс настроек контроллера и устройств до заводских настроек", + "Controller fabric label": "Метка сети контроллера", "Copied to clipboard": "Скопировано в буфер обмена", "Default bridge": "Мост по умолчанию", "Default bridge (Alexa-compatible)": "Мост по умолчанию (совместим с Alexa, использует порт 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Не создавать составные устройства (если экосистема для сопряжения не поддерживает составленные устройства)", "Do you want to delete bridge": "Вы хотите удалить мост?", "Do you want to delete device": "Вы хотите удалить устройство", + "Docker information": "Поскольку ioBroker работает в Docker, необходимо использовать хост-сеть, в противном случае маршрутизация IPv6 и UDP работать не будет.", "Edit bridge": "Редактировать мост", "Edit device": "Изменить устройство", "Enable": "Давать возможность", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Обратите внимание: из-за ограничений системы Amazon Alexa, только один мост или устройство может быть сопряжено с Alexa на один хост ioBroker! Этот выбор определяет, какой мост будет сопряжен с системой Alexa.", "Instance is not alive": "Экземпляр не живой", "Interface": "Интерфейс", + "Length of manual code must be 11 or 21 characters": "Длина ручного кода должна быть 11 или 21 символ.", "Logging": "Ведение журнала", + "Login and password will not be taken as incomplete. Discard changes?": "Логин и пароль не будут считаться неполными. Отменить изменения?", "Maintenance Settings": "Настройки обслуживания", "Manual pairing code": "Код сопряжения вручную", "Matter Bridges Infotext": "Matter Bridges может содержать внутри себя несколько устройств и является наиболее простым способом объединения устройств ioBroker в экосистему, совместимую с Matter. Устройства, содержащиеся в мосте, также можно добавлять или удалять после ввода моста в эксплуатацию. Некоторые свойства устройства невозможно изменить после ввода моста в состав контроллера.\n\nЕсли у вас есть хотя бы лицензия Assistant в вашей учетной записи ioBroker.pro, вы также можете создать несколько мостов, чтобы лучше структурировать свои устройства.\n\nОбратите внимание: из-за ограничений системы Amazon Alexa вы можете иметь только один мост или устройство, сопряженное с Alexa, на один хост ioBroker!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Используйте функции «Контроллер» для интеграции совместимых с Matter устройств в ioBroker. \nВы можете обнаружить и ввести в эксплуатацию устройство, а затем управлять им. Данные устройств будут доступны в виде состояний на вкладке «Объекты ioBroker». \nФункция контроллера по умолчанию отключена, но ее можно включить с помощью переключателя ниже.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Matter требует включенного протокола IPv6 на выбранном интерфейсе. IPv6 не найден в вашей системе!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Matter требует включенного протокола IPv6 на выбранном интерфейсе. В вашей системе обнаружен какой-то IPv6.", + "More details in the Troubleshooting Guide": "Более подробную информацию см. в Руководстве по устранению неполадок.", "Name": "Имя", "Network configuration": "Конфигурация сети", "New bridge": "Новый мост", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "Устройства не были добавлены, так как они уже есть в списке.", "No devices was added, as they are already in the list or not allowed by license": "Устройства не были добавлены, так как они уже есть в списке или не разрешены лицензией.", "No devices was added, as they are not allowed by license": "Устройства не добавлены, так как они не разрешены лицензией.", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Ни одно устройство не создано. Создайте его, нажав кнопку «+» в правом нижнем углу.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Ни одно устройство не создано. Создайте его, нажав на кнопку \"+\" слева.", "Not connected": "Не подключен", "Not supported yet": "Пока не поддерживается", "Not used devices": "Не используемые устройства", @@ -107,14 +115,19 @@ "Options": "Параметры", "Pairing Info Text": "Обнаружение устройств в вашей IP-сети. \nУбедитесь, что хост ioBroker может свободно отправлять и получать UDP-сообщения в сети и в сети обнаруживаемых устройств. \nПри необходимости сбросьте устройства к заводским настройкам или выключите и включите их.", "Pairing Info Text BLE": "Обнаружение устройств в вашей IP-сети и через BLE. \nУбедитесь, что хост ioBroker может свободно отправлять и получать UDP-сообщения в сети и в сети обнаруживаемых устройств. \nПри необходимости сбросьте устройства к заводским настройкам или выключите и включите их.", + "Pairing requirement": "Устройства должны находиться в режиме сопряжения. Устройства, которые еще не связаны, лучше всего связывать через приложение ioBroker Visu. В противном случае переведите устройство в режим сопряжения через уже связанную экосистему.", "Password repeat": "Повторите пароль", + "Password repeat is not equal to password": "Повтор пароля не равен паролю", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "НЕ ИСПОЛЬЗУЙТЕ QR-код/код сопряжения, напечатанный на устройстве Matter.", "Please confirm": "Пожалуйста подтвердите", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Отсканируйте этот QR-код с помощью приложения той экосистемы, к которой вы хотите его подключить, или используйте распечатанный ниже код настройки.", "Product ID": "Код товара", "Provide your Thread or WiFi information or both!": "Предоставьте информацию о своей теме или Wi-Fi, или и то, и другое!", "QR Code": "QR-код", - "QR Code to connect": "QR-код для подключения", + "QR Code scan is not possible": "Сканирование QR-кода невозможно.", + "QR Code to connect for %s": "QR-код для подключения к \"%s\"", "Re-Announce": "Re-announce", + "Read for problems": "Если у вас возникли проблемы с поиском устройств или подключением к экосистемам, вам может потребоваться выполнить дополнительные настройки IPv6 на хосте ioBroker.", "Reconnect to backend": "Повторное подключение к бэкэнду", "Required": "Необходимый", "Requirements: add via QR Code": "Предварительное условие: Устройство Matter должно быть уже подключено к другой системе Matter (например, Google, Apple, Alexa, ...). Здесь вы должны ввести код сопряжения QR-кода или отсканировать QR-код, предоставленный для этого устройства Matter в приложении экосистемой Matter (например, Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Сброс к заводским настройкам", "Room plus device type names": "Названия типов комнат и устройств", "Save": "Сохранять", + "Scan with the ioBroker cloud": "Сканирование с помощью облака ioBroker", "Select default bridge": "Выбрать мост по умолчанию", "Select/Unselect all devices in room": "Выбрать/отменить выбор всех устройств в комнате", "Show QR Code for commissioning": "Показать QR-код для ввода в эксплуатацию", @@ -135,6 +149,7 @@ "Show unsupported devices": "Показать неподдерживаемые устройства", "Show welcome dialog": "Показать приветственный диалог", "Status": "Положение дел", + "Stay here": "Оставайся здесь", "Stop": "Останавливаться", "Successfully re-announced": "Успешно повторно объявлено!", "Suppress question for 5 minutes": "Не задавать вопрос 5 минут", @@ -146,6 +161,7 @@ "Thread network name": "Имя сети Thread", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Для ввода в эксплуатацию/подключения устройств Matter к контроллеру ioBroker используйте лучшее приложение ioBroker.visu:", + "To make all this work, the following requirements should be considered": "Чтобы все это работало, необходимо учитывать следующие требования:", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Чтобы использовать мост Matter или варианты устройств с более чем 5 устройствами, введите действительные учетные данные ioBroker.pro Cloud с как минимум активной лицензией Assistant.", "Unselect all rooms": "Отменить выбор всех номеров", "Use last value for ON": "Использовать последнее значение при включении", @@ -153,9 +169,11 @@ "Vendor ID": "Идентификатор поставщика", "WLAN credentials": "Учетные данные WLAN", "Warning about 15 devices": "Чтобы избежать проблем при сопряжении этого моста, пожалуйста, рассмотрите возможность сопряжения сейчас и добавления дополнительных устройств позже.", + "Welcome explanation": "Адаптер Matter позволяет интегрировать ioBroker со всеми устройствами Matter на рынке и позволяет использовать устройства ioBroker напрямую во многих экосистемах, совместимых с Matter, таких как Apple, Google, Amazon или SmartThings. Связь осуществляется локально и безопасно.", "Welcome to Matter!": "Добро пожаловать в Matter!", "WiFi SSID": "SSID Wi-Fi", "WiFi password": "Пароль Wi-Fi", + "Yes": "Да", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Вам нужен помощник ioBroker.pro или удаленная подписка, чтобы иметь более 5 устройств в мосту.", "You need to configure WLAN or Thread credentials above to activate BLE": "Вам необходимо настроить учетные данные WLAN или Thread, указанные выше, чтобы активировать BLE!", "blind": "Слепой", @@ -166,7 +184,8 @@ "floodAlarm": "Сигнализация наводнения", "image": "Изображение", "invalid_password_warning": "Пароль выглядит недействительным", - "ioBroker.pro Login": "ioBroker.pro Вход", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker получил \"%s\". Теперь вы можете закрыть это окно, нажав на этот текст.", + "ioBroker.pro Login": "ioBroker.pro Логин", "ioBroker.pro Password": "ioBroker.pro Пароль", "light": "Свет", "lock": "Замок", diff --git a/src-admin/src/i18n/uk.json b/src-admin/src/i18n/uk.json index 26cea1e..d55aa8f 100644 --- a/src-admin/src/i18n/uk.json +++ b/src-admin/src/i18n/uk.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": " Будь ласка, НЕ використовуйте QR-код/код сполучення, надрукований на пристрої Matter.", "%s of %s devices selected": "%s із %s вибрано пристроїв", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "Активуйте BLE, щоб підключити пристрої поблизу вашого хосту ioBroker, які ще не підключено до іншої екосистеми. Ви також можете використовувати додаток \"ioBroker Visu\" для підключення інших пристроїв.", "Add": "додати", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "Усю інформацію про цей пристрій або міст буде видалено, і вам доведеться знову підключитися (за допомогою PIN-коду або QR-коду).", "All interfaces": "Всі інтерфейси", "All state information of matter controller and devices will be deleted. You cannot undo it.": "Контролер, усі пристрої та мости будуть відновлені до заводських налаштувань. \nЦе видаляє сполучення та поточні значення для всіх пристроїв, мостів, а також сполучених пристроїв у контролері. Ви не можете скасувати це.\nЗагальна конфігурація контролера та призначені стани ioBroker для мостів і пристроїв залишаться незмінними.", + "Allow action by identify": "Дозволити дії за ідентифікацією", "Announcement will stop automatically after 15 minutes": "Оголошення автоматично припиниться через 15 хвилин", "Apply": "Застосувати", "Are you sure?": "Ти впевнений?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "Міст не зданий в експлуатацію. Показати QR-код введено в експлуатацію", "Bridges": "Мости", "Brightness by ON": "Яскравість на ON", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "Доступ до камери дозволено лише в безпечному контексті. Використовуйте HTTPS або localhost, а не HTTP.", "Cancel": "Скасувати", "Close": "Закрити", "Cloud Account": "Хмарний обліковий запис", + "Code must start with \"MT:\"": "Код має починатися з \"MT:\"", "Collapse all": "Закрити все", "Commissioned Devices": "Введені в експлуатацію пристрої", "Commissioning information": "Інформація про введення в експлуатацію", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "Підключайте пристрої Matter за допомогою ioBroker", "Connected": "Підключено", "Controller": "Контролер", + "Controller Settings": "Налаштування контролера", "Controller and Device Factory Reset": "Скидання до заводських налаштувань контролера та пристроїв", + "Controller fabric label": "Етикетка тканини контролера", "Copied to clipboard": "Скопійовано в буфер обміну", "Default bridge": "Міст за замовчуванням", "Default bridge (Alexa-compatible)": "Міст за замовчуванням (сумісний з Alexa, використовує порт 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "Не створювати пристрої (якщо екосистема для створення пари не підтримує створені пристрої)", "Do you want to delete bridge": "Ви хочете видалити міст", "Do you want to delete device": "Ви хочете видалити пристрій", + "Docker information": "Оскільки ioBroker працює в Docker, необхідно використовувати мережу хоста, інакше маршрутизація IPv6 і UDP не працюватиме.", "Edit bridge": "Редагувати міст", "Edit device": "Редагувати пристрій", "Enable": "Увімкнути", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "Будь ласка, зверніть увагу: через обмеження системи Amazon Alexa лише один міст або пристрій можна поєднати з Alexa на одному хості ioBroker! Цей вибір визначає, який міст буде сполучено з системою Alexa.", "Instance is not alive": "Примірник не живий", "Interface": "Інтерфейс", + "Length of manual code must be 11 or 21 characters": "Довжина ручного коду має складати 11 або 21 символ", "Logging": "Лісозаготівля", + "Login and password will not be taken as incomplete. Discard changes?": "Логін і пароль не будуть вважатися неповними. Скасувати зміни?", "Maintenance Settings": "Параметри обслуговування", "Manual pairing code": "Код підключення вручну", "Matter Bridges Infotext": "Matter Bridges можуть містити в собі кілька пристроїв і є найпростішим способом підключення пристроїв ioBroker до сумісної з Matter екосистеми. Пристрої, які містяться в мосту, також можна додавати або видаляти після введення мосту в експлуатацію. Деякі властивості пристрою не можуть бути змінені після введення мосту в експлуатацію контролера.\n\nЯкщо у вас є принаймні ліцензія Assistant у вашому обліковому записі ioBroker.pro, ви також можете створити кілька мостів, щоб найкраще структурувати свої пристрої.\n\nБудь ласка, зверніть увагу: через обмеження системи Amazon Alexa ви можете мати лише один міст або пристрій, підключений до Alexa на хост ioBroker!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "Використовуйте функції «Контролер», щоб інтегрувати сумісні пристрої з Matter в ioBroker. \nВи можете виявити та ввести в експлуатацію пристрій, а потім керувати ним. Дані пристроїв будуть доступні як стани на вкладці Об’єкти ioBroker. \nФункцію контролера вимкнено за замовчуванням, і її можна ввімкнути за допомогою перемикача нижче.", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "Справа вимагає ввімкнення протоколу IPv6 на вибраному інтерфейсі. У вашій системі не знайдено IPv6!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "Справа вимагає ввімкнення протоколу IPv6 на вибраному інтерфейсі. У вашій системі знайдено деяку кількість IPv6.", + "More details in the Troubleshooting Guide": "Детальніше в Посібнику з усунення несправностей", "Name": "Ім'я", "Network configuration": "Конфігурація мережі", "New bridge": "Новий міст", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "Пристрої не додано, оскільки вони вже є в списку", "No devices was added, as they are already in the list or not allowed by license": "Пристрої не додано, оскільки вони вже є в списку або заборонені ліцензією", "No devices was added, as they are not allowed by license": "Жодних пристроїв не додано, оскільки вони заборонені ліцензією", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Жодного пристрою не створено. Створіть його, натиснувши кнопку «+» у нижньому правому куті.", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "Жодного пристрою не створено. Створіть його, натиснувши кнопку «+» ліворуч.", "Not connected": "Не з'єднано", "Not supported yet": "Ще не підтримується", "Not used devices": "Пристрої не використовувалися", @@ -107,14 +115,19 @@ "Options": "Опції", "Pairing Info Text": "Виявлення пристроїв у вашій IP-мережі. \nБудь ласка, переконайтеся, що хост ioBroker може вільно надсилати й отримувати UDP-повідомлення в мережі та в мережі пристроїв для виявлення. \nЗа потреби скиньте пристрої до заводських налаштувань або вимкніть їх.", "Pairing Info Text BLE": "Виявлення пристроїв у вашій IP-мережі та через BLE. \nБудь ласка, переконайтеся, що хост ioBroker може вільно надсилати й отримувати UDP-повідомлення в мережі та в мережі пристроїв для виявлення. \nЗа потреби скиньте пристрої до заводських налаштувань або вимкніть їх.", + "Pairing requirement": "Пристрої мають бути в режимі сполучення. Пристрої, які ще не пов’язані, найкраще зв’язувати через додаток ioBroker Visu. В іншому випадку переведіть пристрій у режим сполучення через уже пов’язану екосистему.", "Password repeat": "Повторення пароля", + "Password repeat is not equal to password": "Повторення пароля не дорівнює паролю", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": " Будь ласка, НЕ використовуйте QR-код/код сполучення, надрукований на пристрої Matter.", "Please confirm": "Будь-ласка підтвердіть", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "Будь ласка, відскануйте цей QR-код за допомогою програми екосистеми, до якої ви хочете підключити його, або скористайтеся надрукованим нижче кодом налаштування.", "Product ID": "ID продукту", "Provide your Thread or WiFi information or both!": "Надайте інформацію про свій ланцюжок або Wi-Fi або те й інше!", "QR Code": "QR-код", - "QR Code to connect": "QR-код для підключення", + "QR Code scan is not possible": "Сканування QR-коду неможливе", + "QR Code to connect for %s": "QR-код для підключення до \"%s\"", "Re-Announce": "Re-announce", + "Read for problems": "Якщо у вас виникли проблеми з пошуком пристроїв або підключенням до екосистем, вам може знадобитися зробити додаткові налаштування IPv6 на хості ioBroker.", "Reconnect to backend": "Повторно підключіться до сервера", "Required": "Обов'язковий", "Requirements: add via QR Code": "Необхідна умова: пристрій Matter уже має бути підключено до іншої системи Matter (наприклад, Google, Apple, Alexa, ...). Тут ви повинні ввести код підключення QR-коду або відсканувати QR-код, наданий для цього пристрою Matter у програмі екосистемою Matter (наприклад, Google Home).", @@ -126,6 +139,7 @@ "Reset to factory defaults": "Скидання до заводських налаштувань", "Room plus device type names": "Назви типів кімнат і пристроїв", "Save": "зберегти", + "Scan with the ioBroker cloud": "Сканування за допомогою хмари ioBroker", "Select default bridge": "Виберіть міст за замовчуванням", "Select/Unselect all devices in room": "Виберіть/Скасуйте вибір усіх пристроїв у кімнаті", "Show QR Code for commissioning": "Показати QR-код для введення в експлуатацію", @@ -135,6 +149,7 @@ "Show unsupported devices": "Показати непідтримувані пристрої", "Show welcome dialog": "Показати діалогове вікно привітання", "Status": "Статус", + "Stay here": "Залишайся тут", "Stop": "СТІЙ", "Successfully re-announced": "Успішно повторно анонсовано!", "Suppress question for 5 minutes": "Приховати питання на 5 хвилини", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "Для запуску/підключення важливих пристроїв за допомогою контролера ioBroker використовуйте кращий додаток ioBroker.visu:", + "To make all this work, the following requirements should be considered": "Щоб все це працювало, слід враховувати наступні вимоги", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "Щоб використовувати міст Matter або параметри пристрою з більш ніж 5 пристроями, введіть дійсні облікові дані ioBroker.pro Cloud із принаймні активною ліцензією Асистента.", "Unselect all rooms": "Скасувати вибір усіх кімнат", "Use last value for ON": "Використовуйте останнє значення за ON", @@ -153,9 +169,11 @@ "Vendor ID": "ID постачальника", "WLAN credentials": "облікові дані WLAN", "Warning about 15 devices": "Щоб уникнути проблем під час підключення цього мосту, спробуйте підключити його зараз, а потім додайте інші пристрої", + "Welcome explanation": "Адаптер Matter дозволяє інтегрувати ioBroker з усіма пристроями Matter на ринку та дозволяє використовувати пристрої ioBroker безпосередньо в багатьох сумісних з Matter екосистемах, таких як Apple, Google, Amazon або SmartThings. Комунікація відбувається локально та безпечно.", "Welcome to Matter!": "Ласкаво просимо до Matter!", "WiFi SSID": "SSID WiFi", "WiFi password": "Пароль WiFi", + "Yes": "так", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "Вам потрібен помічник ioBroker.pro або віддалена підписка, щоб мати більше 5 пристроїв у мосту", "You need to configure WLAN or Thread credentials above to activate BLE": "Щоб активувати BLE, вам потрібно налаштувати облікові дані WLAN або Thread вище!", "blind": "Сліпий", @@ -166,6 +184,7 @@ "floodAlarm": "Сигналізація про повінь", "image": "Зображення", "invalid_password_warning": "Пароль виглядає недійсним", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker отримав \"%s\". Тепер ви можете закрити це вікно, натиснувши на цей текст.", "ioBroker.pro Login": "ioBroker.pro Логін", "ioBroker.pro Password": "Пароль ioBroker.pro", "light": "світло", diff --git a/src-admin/src/i18n/zh-cn.json b/src-admin/src/i18n/zh-cn.json index 78c0bc7..69c4a62 100644 --- a/src-admin/src/i18n/zh-cn.json +++ b/src-admin/src/i18n/zh-cn.json @@ -1,5 +1,4 @@ { - " Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "请不要使用印刷在 Matter 设备上的二维码/配对码。", "%s of %s devices selected": "已选择 %s 个设备(共 %s 个)", "Activate BLE to pair devices nearby. You can also use the \"ioBroker Visu\" App to pair other devices.": "激活 BLE 以配对 ioBroker 主机附近尚未与其他生态系统配对的设备。您还可以使用“ioBroker Visu”应用程序配对其他设备。", "Add": "添加", @@ -18,6 +17,7 @@ "All information of this device or bridge will be deleted and you must reconnect (with PIN or QR code) again.": "此设备或网桥的所有信息将被删除,您必须重新连接(使用 PIN 或二维码)。", "All interfaces": "所有接口", "All state information of matter controller and devices will be deleted. You cannot undo it.": "控制器和所有设备和桥接器将恢复为出厂默认设置。\n这将删除控制器中所有设备、桥接器和配对设备的配对和当前值。您无法撤消此操作。\n控制器的一般配置以及桥接器和设备的指定 ioBroker 状态将保持不变。", + "Allow action by identify": "通过识别允许操作", "Announcement will stop automatically after 15 minutes": "15分钟后播报自动停止", "Apply": "申请", "Are you sure?": "你确定吗?", @@ -32,9 +32,11 @@ "Bridge is not commissioned. Show QR Code got commissioning": "桥梁尚未投入使用。显示二维码 已调试", "Bridges": "桥梁", "Brightness by ON": "亮度开启", + "Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.": "仅允许在安全环境下访问摄像头。请使用 HTTPS 或 localhost,而非 HTTP。", "Cancel": "取消", "Close": "关闭", "Cloud Account": "云帐户", + "Code must start with \"MT:\"": "代码必须以“MT:”开头", "Collapse all": "全部收缩", "Commissioned Devices": "委托设备", "Commissioning information": "调试信息", @@ -43,7 +45,9 @@ "Connect Matter devices with ioBroker": "使用 ioBroker 连接 Matter 设备", "Connected": "连接的", "Controller": "控制器", + "Controller Settings": "控制器设置", "Controller and Device Factory Reset": "控制器和设备恢复出厂设置", + "Controller fabric label": "控制器织物标签", "Copied to clipboard": "已复制到剪贴板", "Default bridge": "默认桥", "Default bridge (Alexa-compatible)": "默认桥接器(兼容 Alexa,使用端口 5540)", @@ -64,6 +68,7 @@ "Do not compose devices (Alexa does not support composed devices yet)": "不组合设备(如果要配对的生态系统不支持组合设备)", "Do you want to delete bridge": "您要删除桥吗", "Do you want to delete device": "您要删除设备吗", + "Docker information": "由于 ioBroker 在 Docker 中运行,因此必须使用主机网络,否则 IPv6 和 UDP 路由将无法工作。", "Edit bridge": "编辑桥", "Edit device": "编辑设备", "Enable": "使能够", @@ -81,7 +86,9 @@ "Info about Alexa Bridge": "请注意:由于 Amazon Alexa 系统的限制,每个 ioBroker 主机只能将一个桥接器或设备与 Alexa 配对!此选择决定哪个桥接器将与 Alexa 系统配对。", "Instance is not alive": "实例不存在", "Interface": "界面", + "Length of manual code must be 11 or 21 characters": "手动代码长度必须为 11 或 21 个字符", "Logging": "日志记录", + "Login and password will not be taken as incomplete. Discard changes?": "登录名和密码不会被视为不完整。放弃更改?", "Maintenance Settings": "维护设置", "Manual pairing code": "手动配对码", "Matter Bridges Infotext": "Matter Bridges 可以包含多个设备,是将 ioBroker 设备纳入 Matter 兼容生态系统的最简单方法。桥接器投入使用后,也可以添加或删除桥接器中包含的设备。桥接器投入控制器使用后,某些设备属性无法更改。\n\n当您在 ioBroker.pro 帐户中拥有至少一个助手许可证时,您还可以创建多个桥接器,以便最好地构建您的设备。\n\n请注意:由于 Amazon Alexa 系统的限制,每个 ioBroker 主机只能将一个桥接器或设备与 Alexa 配对!", @@ -89,6 +96,7 @@ "Matter Controller Infotext": "使用“控制器”功能将 Matter 兼容设备集成到 ioBroker 中。\n您可以发现和调试设备,然后对其进行管理。设备的数据将作为状态显示在 ioBroker 对象选项卡中。\n控制器功能默认处于禁用状态,可以使用以下开关启用。", "Matter requires enabled IPv6 protocol on selected interface. No IPv6 was found on your system!": "问题需要在所选接口上启用 IPv6 协议。您的系统上未找到 IPv6!", "Matter requires enabled IPv6 protocol on selected interface. Some IPv6 was found on your system.": "问题需要在所选接口上启用 IPv6 协议。您的系统上发现了一些 IPv6。", + "More details in the Troubleshooting Guide": "故障排除指南中有更多详细信息", "Name": "姓名", "Network configuration": "网络配置", "New bridge": "新桥", @@ -97,7 +105,7 @@ "No devices was added, as they are already in the list": "未添加任何设备,因为它们已在列表中", "No devices was added, as they are already in the list or not allowed by license": "未添加任何设备,因为它们已在列表中或许可证不允许", "No devices was added, as they are not allowed by license": "未添加任何设备,因为许可证不允许这些设备", - "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "没有创建任何一台设备。单击右下角的“+”按钮创建一个。", + "No one device created. Create one, by clicking on the \"+\" button in the bottom right corner.": "尚未创建设备。点击左侧的“+”按钮创建一个。", "Not connected": "未连接", "Not supported yet": "尚不支持", "Not used devices": "未使用的设备", @@ -107,14 +115,19 @@ "Options": "选项", "Pairing Info Text": "在您的 IP 网络中发现设备。\n请确保 ioBroker 主机可以在网络和要发现的设备的网络中自由发送和接收 UDP 消息。\n如果需要,请将设备重置为出厂设置或关闭电源循环。", "Pairing Info Text BLE": "在您的 IP 网络中和通过 BLE 发现设备。\n请确保 ioBroker 主机可以在网络和要发现的设备的网络中自由发送和接收 UDP 消息。\n如果需要,请将设备重置为出厂设置或关闭电源循环。", + "Pairing requirement": "设备必须处于配对模式。尚未链接的设备最好通过 ioBroker Visu 应用程序进行链接。否则,请通过已链接的生态系统将设备置于配对模式。", "Password repeat": "密码重复", + "Password repeat is not equal to password": "密码重复不等于密码", + "Please DO NOT use the QR code / pairing code that is printed on the Matter device.": "请不要使用印刷在 Matter 设备上的二维码/配对码。", "Please confirm": "请确认", "Please scan this QR-Code with the App of the ecosystem you want to pair it to or use the below printed setup code.": "请使用您想要配对的生态系统的应用程序扫描此二维码,或使用下面打印的设置代码。", "Product ID": "产品编号", "Provide your Thread or WiFi information or both!": "提供您的 Thread 或 WiFi 信息或两者!", "QR Code": "二维码", - "QR Code to connect": "二维码连接", + "QR Code scan is not possible": "无法扫描二维码", + "QR Code to connect for %s": "用于连接“%s”的二维码", "Re-Announce": "Re-announce", + "Read for problems": "如果您在查找设备或连接生态系统时遇到问题,则可能需要在 ioBroker 主机上进行额外的 IPv6 设置。", "Reconnect to backend": "重新连接到后端", "Required": "必需的", "Requirements: add via QR Code": "前提条件:Matter 设备必须已委托给另一个 Matter 系统(例如 Google、Apple、Alexa 等)。在这里,您必须输入二维码配对码或扫描 Matter 生态系统(例如 Google Home)在应用程序中为此 Matter 设备提供的二维码。", @@ -126,6 +139,7 @@ "Reset to factory defaults": "重置为出厂默认设置", "Room plus device type names": "房间加设备类型名称", "Save": "节省", + "Scan with the ioBroker cloud": "使用 ioBroker 云进行扫描", "Select default bridge": "选择默认桥", "Select/Unselect all devices in room": "选择/取消选择房间中的所有设备", "Show QR Code for commissioning": "显示二维码进行调试", @@ -135,6 +149,7 @@ "Show unsupported devices": "显示不支持的设备", "Show welcome dialog": "显示欢迎对话框", "Status": "地位", + "Stay here": "留在这里", "Stop": "停止", "Successfully re-announced": "成功重播!", "Suppress question for 5 minutes": "抑制提问 5 分钟", @@ -146,6 +161,7 @@ "Thread network name": "Thread network name", "Thread operational dataset": "Thread operational dataset", "To commission/connect matter devices with ioBroker controller use better ioBroker.visu app:": "要使用 ioBroker 控制器调试/连接物质设备,请使用更好的 ioBroker.visu 应用程序:", + "To make all this work, the following requirements should be considered": "为了使这一切发挥作用,应考虑以下要求", "To use a Matter bridge or device options with more than 5 devices please enter valid ioBroker.pro Cloud credentials with at least an active Assistant license.": "要使用 Matter 桥或具有 5 个以上设备的设备选项,请输入有效的 ioBroker.pro 云凭证以及至少有效的助手许可证。", "Unselect all rooms": "取消选择所有房间", "Use last value for ON": "通过 ON 使用最后一个值", @@ -153,9 +169,11 @@ "Vendor ID": "供应商ID", "WLAN credentials": "WLAN 凭证", "Warning about 15 devices": "为了避免在配对此桥时出现问题,请考虑立即配对,然后再添加更多设备", + "Welcome explanation": "Matter 适配器允许将 ioBroker 与市场上的所有 Matter 设备集成,并允许 ioBroker 设备直接用于许多与 Matter 兼容的生态系统,例如 Apple、Google、Amazon 或 SmartThings。通信在本地安全地进行。", "Welcome to Matter!": "欢迎来到 Matter!", "WiFi SSID": "无线网络名称", "WiFi password": "WiFi密码", + "Yes": "是的", "You need ioBroker.pro assistant or remote subscription to have more than 5 devices in bridge": "您需要 ioBroker.pro 助手或远程订阅才能在桥接中拥有超过 5 个设备", "You need to configure WLAN or Thread credentials above to activate BLE": "您需要配置上面的 WLAN 或 Thread 凭证来激活 BLE!", "blind": "瞎的", @@ -166,6 +184,7 @@ "floodAlarm": "洪水警报", "image": "图像", "invalid_password_warning": "密码看起来无效", + "ioBroker received \"%s\". You can now close this window by clicking on this text.": "ioBroker 收到“%s”。您现在可以通过单击此文本来关闭此窗口。", "ioBroker.pro Login": "ioBroker.pro 登录", "ioBroker.pro Password": "ioBroker.pro 密码", "light": "光", diff --git a/src-admin/src/types.d.ts b/src-admin/src/types.d.ts index b34258c..2b90a2b 100644 --- a/src-admin/src/types.d.ts +++ b/src-admin/src/types.d.ts @@ -7,6 +7,7 @@ export interface MatterAdapterConfig extends ioBroker.AdapterConfig { pass: string; /** UUID of the default (alexa-compatible - port 5540)bridge */ defaultBridge: string; + controllerFabricLabel: string; } export interface BridgeDeviceDescription { @@ -134,6 +135,8 @@ export enum NodeStates { ConnectedWithController = 'connected', } +export type Processing = { id: string; inProgress: boolean }[] | null; + export interface ConnectionInfo { vendorId: number; vendorName: string; @@ -158,9 +161,11 @@ export interface GUIMessage { | 'discoveredDevice' | 'reconnect' | 'progress' + | 'processing' | 'updateController'; states?: { [uuid: string]: NodeStateResponse }; device?: CommissionableDevice; + processing?: { id: string; inProgress: boolean }[] | null; progress?: { close?: boolean; diff --git a/src/main.ts b/src/main.ts index c3898ab..ec0b378 100644 --- a/src/main.ts +++ b/src/main.ts @@ -395,6 +395,7 @@ export class MatterAdapter extends utils.Adapter { } if (this.sendToUI) { this.log.debug(`Send to GUI: ${JSON.stringify(data)}`); + for (let i = 0; i < this.#_guiSubscribes.length; i++) { await this.sendToUI({ clientId: this.#_guiSubscribes[i].clientId, data }); } @@ -616,7 +617,7 @@ export class MatterAdapter extends utils.Adapter { if ( ((objParts[0] === 'devices' && objPartsLength === 2) || (objParts[0] === 'bridges' && objPartsLength === 2)) && - obj === undefined + !obj ) { this.log.warn(`Object ${id} deleted ... trying to also remove it from matter`); // We try to restore a minimum object that we can handle the deletion @@ -657,6 +658,11 @@ export class MatterAdapter extends utils.Adapter { #processObjectChangeQueue(): void { if (this.#objectProcessQueue.length === 0 || this.#objectProcessQueue.some(e => e.inProgress)) { + // inform GUI that the processing is finished + this.sendToGui({ + command: 'processing', + processing: this.#objectProcessQueue.map(item => ({ id: item.id, inProgress: item.inProgress })), + }).catch((error): void => this.log.error(`Cannot send to GUI: ${error}`)); return; } @@ -680,6 +686,12 @@ export class MatterAdapter extends utils.Adapter { const entry = this.#objectProcessQueue[0]; entry.inProgress = true; + // inform GUI about processing + this.sendToGui({ + command: 'processing', + processing: this.#objectProcessQueue.map(item => ({ id: item.id, inProgress: item.inProgress })), + }).catch((error): void => this.log.error(`Cannot send to GUI: ${error}`)); + this.#currentObjectProcessPromise = entry.func(); this.#currentObjectProcessPromise .catch(error => this.log.error(`Error while processing object change ${entry.id}: ${error}`)) diff --git a/src/matter/BaseServerNode.ts b/src/matter/BaseServerNode.ts index e8ca6c1..f85d09e 100644 --- a/src/matter/BaseServerNode.ts +++ b/src/matter/BaseServerNode.ts @@ -136,7 +136,7 @@ export abstract class BaseServerNode implements GeneralNode { }); } - /** Handles device specific Messages from the UI. */ + /** Handles the device specific Messages from the UI. */ async handleCommand(obj: ioBroker.Message): Promise { const { command, message } = obj; switch (command) {