mirror of
https://github.com/XiaoMi/ha_xiaomi_home.git
synced 2025-12-27 00:19:34 +08:00
Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75390a3d83 | ||
|
|
86a739b503 | ||
|
|
084694c9e7 | ||
|
|
593d7d3c0a | ||
|
|
77cebb2e15 | ||
|
|
3925e12863 | ||
|
|
500ed76971 | ||
|
|
30ce1b4970 | ||
|
|
d5c5e387c2 | ||
|
|
e6750bb746 | ||
|
|
1b87381f43 | ||
|
|
33ee65cf75 | ||
|
|
f95c71c2ad | ||
|
|
7abc20dcb5 | ||
|
|
3e33804477 | ||
|
|
551b5cc938 | ||
|
|
f49e76937c | ||
|
|
a1a216aea6 | ||
|
|
1ec325c9c7 | ||
|
|
c04fa542a3 | ||
|
|
fbddaf80a7 | ||
|
|
a11c3e2fda | ||
|
|
739998211e | ||
|
|
ec833b6539 | ||
|
|
f2200ba003 | ||
|
|
073cdf2dcb | ||
|
|
0f65635342 | ||
|
|
947169f18d | ||
|
|
65a7a6d22a | ||
|
|
c29f7eecbd | ||
|
|
58c671483e | ||
|
|
7c97b85f02 | ||
|
|
3f2c2a648b | ||
|
|
f11b2f2f68 | ||
|
|
f3abbef94c | ||
|
|
dae63657d7 | ||
|
|
3cc66450bd |
4
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
4
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@@ -5,8 +5,8 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: Describe the Bug / 描述问题
|
label: Describe the Bug / 描述问题
|
||||||
description: |
|
description: |
|
||||||
> A clear and concise description of what the bug is.
|
> A clear and concise description of what the bug is. Please include the device model information (Like xiaomi.gateway.hub1 which can be found in Device info page).
|
||||||
> 清晰且简明地描述问题。
|
> 清晰且简明地描述问题。请注明设备 model 信息(例如 xiaomi.gateway.hub1,可在设备详情页查询)。
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
|||||||
65
CHANGELOG.md
65
CHANGELOG.md
@@ -1,4 +1,69 @@
|
|||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
## v0.4.6
|
||||||
|
### Added
|
||||||
|
- Add tv-box device as the media player entity. [#1562](https://github.com/XiaoMi/ha_xiaomi_home/pull/1562)
|
||||||
|
- Set play-control service's play-loop-mode property as the sound mode. [#1562](https://github.com/XiaoMi/ha_xiaomi_home/pull/1562)
|
||||||
|
### Changed
|
||||||
|
- Use constant value to indicate the cloud MQTT broker host domain. [#1530](https://github.com/XiaoMi/ha_xiaomi_home/pull/1530)
|
||||||
|
- Use constant value to indicate the timer delay of refreshing devices. [#1555](https://github.com/XiaoMi/ha_xiaomi_home/pull/1555)
|
||||||
|
- Set the playing-state property as the required property in the play-control service of the speaker device. [#1552](https://github.com/XiaoMi/ha_xiaomi_home/pull/1552)
|
||||||
|
- Set the playing-state property as the required property in the optional play-control service of the television. [#1562](https://github.com/XiaoMi/ha_xiaomi_home/pull/1562)
|
||||||
|
### Fixed
|
||||||
|
- Catch paho-mqtt subscribe error properly. [#1551](https://github.com/XiaoMi/ha_xiaomi_home/pull/1551)
|
||||||
|
- After the network resumes, keep retrying to fetch the device list until it succeeds. [#1555](https://github.com/XiaoMi/ha_xiaomi_home/pull/1555)
|
||||||
|
- Catch the http post error properly. [#1555](https://github.com/XiaoMi/ha_xiaomi_home/pull/1555)
|
||||||
|
- Fixed the format and the access field of daikin.aircondition.k2 and fix: daikin.airfresh.k33 string value properties. [#1561](https://github.com/XiaoMi/ha_xiaomi_home/pull/1561)
|
||||||
|
|
||||||
|
## v0.4.5
|
||||||
|
### Changed
|
||||||
|
- Ignore mdns REMOVED package. [#1296](https://github.com/XiaoMi/ha_xiaomi_home/pull/1296)
|
||||||
|
- Format value type first, then evaluate by expression, and set precision at last. [#1516](https://github.com/XiaoMi/ha_xiaomi_home/pull/1516)
|
||||||
|
### Fixed
|
||||||
|
- Fix xiaomi.derh.lite temperature precision. [#1505](https://github.com/XiaoMi/ha_xiaomi_home/pull/1505)
|
||||||
|
- Fix xiaomi.waterpuri.s1200g filter property unit, lxzn.valve.02 electricity property unit, xiaomi.aircondition.c24 power consumption device class, and cuco.plug.cp7pd power consumption and power value precision. [#1517](https://github.com/XiaoMi/ha_xiaomi_home/pull/1517)
|
||||||
|
|
||||||
|
## v0.4.4
|
||||||
|
### Added
|
||||||
|
- Add Turkish language support. [#1468](https://github.com/XiaoMi/ha_xiaomi_home/pull/1468)
|
||||||
|
### Fixed
|
||||||
|
- Stop MQTT internal loop immediately when main loop is closed. [#1465](https://github.com/XiaoMi/ha_xiaomi_home/pull/1465)
|
||||||
|
- Fix the float value precision. [#1485](https://github.com/XiaoMi/ha_xiaomi_home/pull/1485)
|
||||||
|
- Fix the climate entity swing mode setting. [#1486](https://github.com/XiaoMi/ha_xiaomi_home/pull/1486)
|
||||||
|
- Fix the MIoT-Spec-V2 of cykj.hood.jyj22 urn version 4, lumi.motion.bmgl01 siid=2 piid=2 value-list, ykcn.valve.cbcs power property value unit, ainice.sensor_occupy.3b people-number property and qdhkl.airc.a42 hvac mode. [#1496](https://github.com/XiaoMi/ha_xiaomi_home/pull/1496)
|
||||||
|
|
||||||
|
## v0.4.3
|
||||||
|
### Changed
|
||||||
|
- Remove `VacuumEntityFeature.BATTERY` from the vacuum entity. [#1433](https://github.com/XiaoMi/ha_xiaomi_home/pull/1433)
|
||||||
|
- Subscribe the proxy gateway child device up messages even though the device is offline. [#1393](https://github.com/XiaoMi/ha_xiaomi_home/pull/1393)
|
||||||
|
### Fixed
|
||||||
|
- Fix the integer value step. [#1388](https://github.com/XiaoMi/ha_xiaomi_home/pull/1388)
|
||||||
|
- Fix the contact-state property value format. [#1387](https://github.com/XiaoMi/ha_xiaomi_home/pull/1387)
|
||||||
|
- Fix the MIoT-Spec-V2 of xiaomi.airc.rr0r00 swing mode and hyd.airer.lyjpro current-position. [#1394](https://github.com/XiaoMi/ha_xiaomi_home/pull/1394)
|
||||||
|
- Fix roidmi.vacuum.v60 siid=2 aiid=3 out field format.
|
||||||
|
- Ignore unsupported properties of xiaomi.wifispeaker.l15a and 759413.aircondition.iez.
|
||||||
|
- Add an alongside button entity for xiaomi.wifispeaker.l05b play action.
|
||||||
|
- Add zhimi.fan.za1 fan mode description in zh_Hans.
|
||||||
|
- Fix the error reported by pylint-4.0.0. [#1455](https://github.com/XiaoMi/ha_xiaomi_home/pull/1455)
|
||||||
|
|
||||||
|
## v0.4.2
|
||||||
|
### Changed
|
||||||
|
- Set the battery service's start-charge action as the fallback action to support RETURN_HOME feature of the vacuum entity. [#1344](https://github.com/XiaoMi/ha_xiaomi_home/pull/1344)
|
||||||
|
### Fixed
|
||||||
|
- Correct the property value format after expression calculation. [#1366](https://github.com/XiaoMi/ha_xiaomi_home/pull/1366)
|
||||||
|
- Fix the MIoT-Spec-V2 of xiaomi.fan.p70 and xiaomi.fan.p76 fan level, xiaomi.airc.rr0r00 and xiaomi.airc.h43h00 humidity-range, and zhimi.humidifier.ca4 water level. [#1367](https://github.com/XiaoMi/ha_xiaomi_home/pull/1367)
|
||||||
|
- Ignore the unsupported model hmpace.motion.v6nfc.
|
||||||
|
- Delete all unsupported MIoT-Spec-V2 instances of narwa.vacuum.001 and narwa.vacuum.ax11. [#1355](https://github.com/XiaoMi/ha_xiaomi_home/pull/1355)
|
||||||
|
|
||||||
|
## v0.4.1
|
||||||
|
### Changed
|
||||||
|
- The setting option "Cover closed position" in CONFIGURE is changed to "Cover dead zone width". [#1301](https://github.com/XiaoMi/ha_xiaomi_home/pull/1301)
|
||||||
|
- Add an alongside switch entity for 090615.aircondition.ktf and juhl.aircondition.hvac. [#1303](https://github.com/XiaoMi/ha_xiaomi_home/pull/1303)
|
||||||
|
### Fixed
|
||||||
|
- Fix the vacuum status so that the vacuum activity will not always be idle. [#1299](https://github.com/XiaoMi/ha_xiaomi_home/pull/1299)
|
||||||
|
- Set the device on when the switch status is False or None. [#1303](https://github.com/XiaoMi/ha_xiaomi_home/pull/1303)
|
||||||
|
- Hide sensitive info in printing logs. [#1328](https://github.com/XiaoMi/ha_xiaomi_home/pull/1328)
|
||||||
|
- Fix the MIoT-Spec-V2 of cuco.plug.cp2d electric current, xiaomi.fan.p45 fan level, sanmei.valve.s1 power consumption, current and voltage, xiaomi.aircondition.c17, xiaomi.aircondition.m16 and xiaomi.airc.h40h00 humidity-range unit. [#1329](https://github.com/XiaoMi/ha_xiaomi_home/pull/1329)
|
||||||
|
|
||||||
## v0.4.0
|
## v0.4.0
|
||||||
### Added
|
### Added
|
||||||
- Add the watch as the device tracker entity. [#1189](https://github.com/XiaoMi/ha_xiaomi_home/pull/1189)
|
- Add the watch as the device tracker entity. [#1189](https://github.com/XiaoMi/ha_xiaomi_home/pull/1189)
|
||||||
|
|||||||
192
CLAUDE.md
Normal file
192
CLAUDE.md
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
Xiaomi Home Integration is an official Home Assistant integration for controlling Xiaomi IoT smart devices. It connects to devices via Xiaomi Cloud (MQTT) or locally through Xiaomi Central Hub Gateway. The integration converts MIoT-Spec-V2 device specifications into Home Assistant entities.
|
||||||
|
|
||||||
|
## Development Commands
|
||||||
|
|
||||||
|
### Installation & Setup
|
||||||
|
```bash
|
||||||
|
# Install to Home Assistant config directory
|
||||||
|
./install.sh /path/to/config
|
||||||
|
|
||||||
|
# Install test dependencies
|
||||||
|
pip install pytest pytest-asyncio pytest-dependency zeroconf paho.mqtt psutil cryptography slugify
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
```bash
|
||||||
|
# Run all tests
|
||||||
|
pytest -v -s -m github ./test/
|
||||||
|
|
||||||
|
# Run specific test files
|
||||||
|
pytest -v -s ./test/test_spec.py
|
||||||
|
pytest -v -s ./test/test_cloud.py
|
||||||
|
pytest -v -s ./test/test_lan.py
|
||||||
|
|
||||||
|
# Check rule format
|
||||||
|
pytest -v -s -m github ./test/check_rule_format.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
```bash
|
||||||
|
# Run pylint (follows Google Python Style Guide)
|
||||||
|
pylint $(git ls-files '*.py')
|
||||||
|
|
||||||
|
# Lint specific files
|
||||||
|
pylint custom_components/xiaomi_home/*.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Validation
|
||||||
|
```bash
|
||||||
|
# HACS validation (run by GitHub Actions)
|
||||||
|
# Uses: hacs/action@main
|
||||||
|
|
||||||
|
# Hassfest validation (run by GitHub Actions)
|
||||||
|
# Uses: home-assistant/actions/hassfest@master
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture Overview
|
||||||
|
|
||||||
|
### Core Components (miot/)
|
||||||
|
|
||||||
|
The integration is built around the `miot/` core package:
|
||||||
|
|
||||||
|
**miot_client.py**: Top-level client instance representing a logged-in Xiaomi user. Each user login creates one MIoTClient. Manages authentication, device list, and message routing.
|
||||||
|
|
||||||
|
**miot_cloud.py**: OAuth 2.0 authentication and HTTP API calls to Xiaomi Cloud. Handles token refresh, user info, device control commands, and spec downloads.
|
||||||
|
|
||||||
|
**miot_mips.py**: Message bus (MQTT) for subscribing to device property changes and events. Implements both cloud (MipsCloudClient) and local (MipsLocalClient) message handling.
|
||||||
|
|
||||||
|
**miot_device.py**: Device entity class. Each MIoT device creates multiple MIoTDevice instances (one per Home Assistant entity). Handles property updates, action execution, and event processing.
|
||||||
|
|
||||||
|
**miot_spec.py**: MIoT-Spec-V2 parser. Parses device specifications (URN-based type system) from cloud or local cache. Each spec defines services, properties, events, and actions.
|
||||||
|
|
||||||
|
**miot_lan.py**: Local LAN control for IP devices in same network. Discovery and control without cloud (optional).
|
||||||
|
|
||||||
|
**miot_mdns.py**: mDNS discovery for Xiaomi Central Hub Gateway services.
|
||||||
|
|
||||||
|
**miot_storage.py**: File storage for certificates, device specs, translations, and cached data.
|
||||||
|
|
||||||
|
**miot_network.py**: Network status monitoring and IP address detection.
|
||||||
|
|
||||||
|
**miot_i18n.py**: Multi-language support (13 languages). Manages translations for entity names.
|
||||||
|
|
||||||
|
### Entity Conversion (specs/specv2entity.py)
|
||||||
|
|
||||||
|
MIoT-Spec-V2 instances are converted to Home Assistant entities using three mapping dictionaries:
|
||||||
|
|
||||||
|
- **SPEC_DEVICE_TRANS_MAP**: Whole-device patterns (e.g., vacuum, humidifier, climate)
|
||||||
|
- **SPEC_SERVICE_TRANS_MAP**: Service-level patterns (e.g., battery, air-purifier)
|
||||||
|
- **SPEC_PROP_TRANS_MAP**: Property-level patterns (e.g., temperature, humidity)
|
||||||
|
|
||||||
|
Conversion priority: Device > Service > Property > General rules
|
||||||
|
|
||||||
|
### Spec Customization Files (miot/specs/)
|
||||||
|
|
||||||
|
**spec_filter.yaml**: Filters out MIoT-Spec-V2 instances that should NOT be converted to entities. Uses device URN keys and supports wildcard matching for service/property/event/action IIDs.
|
||||||
|
|
||||||
|
**spec_modify.yaml**: Modifies spec instances before conversion (e.g., changing value ranges, access modes).
|
||||||
|
|
||||||
|
**multi_lang.json**: Local translation overrides with higher priority than cloud translations. Keyed by device URN (without version).
|
||||||
|
|
||||||
|
**spec_add.json**: Additional spec definitions for devices not in cloud database.
|
||||||
|
|
||||||
|
**bool_trans.yaml**: Boolean value translation mappings.
|
||||||
|
|
||||||
|
After editing spec files, you MUST update conversion rules via Integration CONFIGURE page in Home Assistant.
|
||||||
|
|
||||||
|
### Platform Files (custom_components/xiaomi_home/)
|
||||||
|
|
||||||
|
Standard Home Assistant platform files (sensor.py, switch.py, climate.py, etc.) implement entity registration and state management. Each platform imports from miot_device.py and creates entity subclasses.
|
||||||
|
|
||||||
|
**config_flow.py**: Configuration flow for OAuth login and device selection.
|
||||||
|
|
||||||
|
**__init__.py**: Integration setup, entry management, and data structure initialization.
|
||||||
|
|
||||||
|
## MIoT-Spec-V2 Concepts
|
||||||
|
|
||||||
|
**URN Format**: `urn:<namespace>:<type>:<name>:<value>[:<vendor-product>:<version>]`
|
||||||
|
- namespace: miot-spec-v2 (Xiaomi), bluetooth-spec (SIG), or vendor-specific
|
||||||
|
- type: device, service, property, event, action
|
||||||
|
- name: human-readable identifier (used for mapping)
|
||||||
|
|
||||||
|
**IIDs (Instance IDs)**: Decimal identifiers
|
||||||
|
- siid: Service Instance ID
|
||||||
|
- piid: Property Instance ID
|
||||||
|
- eiid: Event Instance ID
|
||||||
|
- aiid: Action Instance ID
|
||||||
|
|
||||||
|
**Instance Code Format**:
|
||||||
|
```
|
||||||
|
service:<siid> # service
|
||||||
|
service:<siid>:property:<piid> # property
|
||||||
|
service:<siid>:property:<piid>:valuelist:<index> # value list item
|
||||||
|
service:<siid>:event:<eiid> # event
|
||||||
|
service:<siid>:action:<aiid> # action
|
||||||
|
```
|
||||||
|
|
||||||
|
## Naming Conventions
|
||||||
|
|
||||||
|
From CONTRIBUTING.md:
|
||||||
|
|
||||||
|
- **Xiaomi**: Always "Xiaomi" in text. Variables: "xiaomi" or "mi"
|
||||||
|
- **Xiaomi Home**: Always "Xiaomi Home" in text. Variables: "mihome" or "MiHome"
|
||||||
|
- **Xiaomi IoT**: Always "MIoT" in text. Variables: "miot" or "MIoT"
|
||||||
|
- **Home Assistant**: Always "Home Assistant" in text. Variables: "hass" or "hass_xxx"
|
||||||
|
|
||||||
|
Mixed Chinese/English: Add space between Chinese and English or use Chinese quotation marks.
|
||||||
|
|
||||||
|
## Commit Message Format
|
||||||
|
|
||||||
|
```
|
||||||
|
<type>: <subject>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
```
|
||||||
|
|
||||||
|
Types: feat, fix, docs, style, refactor, perf, test, chore, revert
|
||||||
|
|
||||||
|
Subject: Imperative, present tense. Not capitalized. No period.
|
||||||
|
|
||||||
|
Body: Detailed description (mandatory except for docs type).
|
||||||
|
|
||||||
|
## Code Style
|
||||||
|
|
||||||
|
Follow [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html). Use the provided `.pylintrc` for linting.
|
||||||
|
|
||||||
|
## Debugging
|
||||||
|
|
||||||
|
Enable debug logging in Home Assistant configuration.yaml:
|
||||||
|
```yaml
|
||||||
|
logger:
|
||||||
|
default: critical
|
||||||
|
logs:
|
||||||
|
custom_components.xiaomi_home: debug
|
||||||
|
```
|
||||||
|
|
||||||
|
## Control Modes
|
||||||
|
|
||||||
|
- **Cloud Control**: MQTT message subscription + HTTP command API
|
||||||
|
- **Local Control**: Via Xiaomi Central Hub Gateway (firmware 3.3.0_0023+) or LAN control (IP devices only, may be unstable)
|
||||||
|
|
||||||
|
Central gateway local control takes priority over LAN control when both are available.
|
||||||
|
|
||||||
|
## Multi-Region Support
|
||||||
|
|
||||||
|
Regions: China (cn), Europe (eu), India (in), Russia (ru), Singapore (sg), USA (us)
|
||||||
|
|
||||||
|
User data is isolated per region. Integration supports multiple regions in same Home Assistant instance.
|
||||||
|
|
||||||
|
## Important Files Location
|
||||||
|
|
||||||
|
- Integration source: `custom_components/xiaomi_home/`
|
||||||
|
- Spec mappings: `custom_components/xiaomi_home/miot/specs/specv2entity.py`
|
||||||
|
- Spec filters: `custom_components/xiaomi_home/miot/specs/spec_filter.yaml`
|
||||||
|
- Translations: `custom_components/xiaomi_home/translations/` and `custom_components/xiaomi_home/miot/i18n/`
|
||||||
|
- Tests: `test/`
|
||||||
11
README.md
11
README.md
@@ -91,13 +91,13 @@ Xiaomi Home Integration and the affiliated cloud interface is provided by Xiaomi
|
|||||||
|
|
||||||
Yes, it supports multiple Xiaomi accounts. Furthermore, Xiaomi Home Integration allows that devices belonging to different accounts can be added to a same area.
|
Yes, it supports multiple Xiaomi accounts. Furthermore, Xiaomi Home Integration allows that devices belonging to different accounts can be added to a same area.
|
||||||
|
|
||||||
- Does Xiaomi Home Integration support local control?
|
- Does Xiaomi Home Integration support local mode?
|
||||||
|
|
||||||
Local control is implemented by [Xiaomi Central Hub Gateway](https://www.mi.com/shop/buy/detail?product_id=15755&cfrom=search) (firmware version 3.3.0_0023 and above) or Xiaomi smart devices with built-in central hub gateway (software version 0.8.9 and above) inside. If you do not have a Xiaomi central hub gateway or other devices having central hub gateway function, all control commands are sent through Xiaomi Cloud. The firmware for Xiaomi central hub gateway including the built-in central hub gateway supporting Home Assistant local control feature has not been released yet. Please refer to MIoT team's notification for upgrade plans.
|
Local mode is implemented by [Xiaomi Central Hub Gateway](https://www.mi.com/shop/buy/detail?product_id=15755&cfrom=search) (firmware version 3.3.0_0023 and above) or Xiaomi smart devices with [built-in central hub gateway](https://github.com/XiaoMi/ha_xiaomi_home/wiki/Central-hub-gateway-device-models) (software version 0.8.9 and above) inside. If you do not have a Xiaomi central hub gateway or other devices having central hub gateway function, all control commands are sent through Xiaomi Cloud. The firmware for Xiaomi central hub gateway including the built-in central hub gateway supporting Home Assistant local mode feature has been released.
|
||||||
|
|
||||||
Xiaomi central hub gateway is only available in mainland China. In other regions, it is not available.
|
Xiaomi central hub gateway is only available in mainland China. In other regions, it is not available.
|
||||||
|
|
||||||
Xiaomi Home Integration can also implement partial local control by enabling Xiaomi LAN control function. Xiaomi LAN control function can only control IP devices (devices connected to the router via WiFi or ethernet cable) in the same local area network as Home Assistant. It cannot control BLE Mesh, ZigBee, etc. devices. This function may cause some abnormalities. We recommend not to use this function. Xiaomi LAN control function is enabled by [Settings > Devices & services > Configured > Xiaomi Home](https://my.home-assistant.io/redirect/integration/?domain=xiaomi_home) > CONFIGURE > Update LAN control configuration
|
Xiaomi Home Integration can also implement partial local mode by enabling Xiaomi LAN control function. Xiaomi LAN control function can only control IP devices (devices connected to the router via WiFi or ethernet cable) in the same local area network as Home Assistant. It cannot control BLE Mesh, ZigBee, etc. devices. This function may cause some abnormalities. We recommend NOT using this function. Xiaomi LAN control function is enabled by [Settings > Devices & services > Configured > Xiaomi Home](https://my.home-assistant.io/redirect/integration/?domain=xiaomi_home) > CONFIGURE > Update LAN control configuration.
|
||||||
|
|
||||||
Xiaomi LAN control function is not restricted by region. It is available in all regions. However, if there is a central gateway in the local area network where Home Assistant is located, even Xiaomi LAN control function is enabled in the integration, it will not take effect.
|
Xiaomi LAN control function is not restricted by region. It is available in all regions. However, if there is a central gateway in the local area network where Home Assistant is located, even Xiaomi LAN control function is enabled in the integration, it will not take effect.
|
||||||
|
|
||||||
@@ -328,7 +328,7 @@ Device information service (urn:miot-spec-v2:service:device-information:00007801
|
|||||||
|
|
||||||
## Multiple Language Support
|
## Multiple Language Support
|
||||||
|
|
||||||
There are 8 languages available for selection in the config flow language option of Xiaomi Home, including Simplified Chinese, Traditional Chinese, English, Spanish, Russian, French, German, and Japanese. The config flow page in Simplified Chinese and English has been manually reviewed by the developer. Other languages are translated by machine translation. If you want to modify the words and sentences in the config flow page, you need to modify the json file of the certain language in `custom_components/xiaomi_home/translations/` and `custom_components/xiaomi_home/miot/i18n/` directory.
|
There are 13 languages available for selection in the config flow language option of Xiaomi Home, including Simplified Chinese, Traditional Chinese, English, Spanish, Russian, French, German, Japanese, Italian, Dutch, Portuguese, Brazilian Portuguese, and Turkish. The config flow page in Simplified Chinese and English has been manually reviewed by the developer. Other languages are translated by machine translation or community contributions. If you want to modify the words and sentences in the config flow page, you need to modify the json file of the certain language in `custom_components/xiaomi_home/translations/` and `custom_components/xiaomi_home/miot/i18n/` directory.
|
||||||
|
|
||||||
When displaying Home Assistant entity name, Xiaomi Home downloads the multiple language file configured by the device vendor from MIoT Cloud, which contains translations for MIoT-Spec-V2 instances of the device. `multi_lang.json` is a locally maintained multiple language dictionary, which has a higher priority than the multiple language file obtained from the cloud and can be used to supplement or modify the multiple language translation of devices.
|
When displaying Home Assistant entity name, Xiaomi Home downloads the multiple language file configured by the device vendor from MIoT Cloud, which contains translations for MIoT-Spec-V2 instances of the device. `multi_lang.json` is a locally maintained multiple language dictionary, which has a higher priority than the multiple language file obtained from the cloud and can be used to supplement or modify the multiple language translation of devices.
|
||||||
|
|
||||||
@@ -346,7 +346,7 @@ The format of `multi_lang.json` is as follows.
|
|||||||
|
|
||||||
The key of `multi_lang.json` dictionary is the urn excluding the "version" field of the MIoT-Spec-V2 device instance.
|
The key of `multi_lang.json` dictionary is the urn excluding the "version" field of the MIoT-Spec-V2 device instance.
|
||||||
|
|
||||||
The language code is zh-Hans, zh-Hant, en, es, ru, fr, de, or ja, corresponding to the 8 selectable languages mentioned above.
|
The language code is zh-Hans, zh-Hant, en, es, ru, fr, de, ja, it, nl, pt, pt-BR, or tr, corresponding to the 13 selectable languages mentioned above.
|
||||||
|
|
||||||
The instance code is the code of the MIoT-Spec-V2 instance, which is in the format of:
|
The instance code is the code of the MIoT-Spec-V2 instance, which is in the format of:
|
||||||
|
|
||||||
@@ -384,6 +384,7 @@ Example:
|
|||||||
- Contribution Guidelines: [English](./CONTRIBUTING.md) | [简体中文](./doc/CONTRIBUTING_zh.md)
|
- Contribution Guidelines: [English](./CONTRIBUTING.md) | [简体中文](./doc/CONTRIBUTING_zh.md)
|
||||||
- [ChangeLog](./CHANGELOG.md)
|
- [ChangeLog](./CHANGELOG.md)
|
||||||
- Development Documents: https://developers.home-assistant.io/docs/creating_component_index
|
- Development Documents: https://developers.home-assistant.io/docs/creating_component_index
|
||||||
|
- [FAQ](https://github.com/XiaoMi/ha_xiaomi_home/wiki)
|
||||||
|
|
||||||
## Directory Structure
|
## Directory Structure
|
||||||
|
|
||||||
|
|||||||
@@ -70,8 +70,8 @@ async def async_setup_entry(
|
|||||||
for miot_device in device_list:
|
for miot_device in device_list:
|
||||||
if miot_device.miot_client.display_binary_bool:
|
if miot_device.miot_client.display_binary_bool:
|
||||||
for prop in miot_device.prop_list.get('binary_sensor', []):
|
for prop in miot_device.prop_list.get('binary_sensor', []):
|
||||||
new_entities.append(BinarySensor(
|
new_entities.append(
|
||||||
miot_device=miot_device, spec=prop))
|
BinarySensor(miot_device=miot_device, spec=prop))
|
||||||
|
|
||||||
if new_entities:
|
if new_entities:
|
||||||
async_add_entities(new_entities)
|
async_add_entities(new_entities)
|
||||||
@@ -90,7 +90,7 @@ class BinarySensor(MIoTPropertyEntity, BinarySensorEntity):
|
|||||||
def is_on(self) -> bool:
|
def is_on(self) -> bool:
|
||||||
"""On/Off state. True if the binary sensor is on, False otherwise."""
|
"""On/Off state. True if the binary sensor is on, False otherwise."""
|
||||||
if self.spec.name == 'contact-state':
|
if self.spec.name == 'contact-state':
|
||||||
return self._value is False
|
return bool(self._value) is False
|
||||||
elif self.spec.name == 'occupancy-status':
|
elif self.spec.name == 'occupancy-status':
|
||||||
return bool(self._value)
|
return bool(self._value)
|
||||||
return self._value is True
|
return self._value is True
|
||||||
|
|||||||
@@ -320,9 +320,15 @@ class FeatureSwingMode(MIoTServiceEntity, ClimateEntity):
|
|||||||
await self.set_property_async(prop=self._prop_vertical_swing,
|
await self.set_property_async(prop=self._prop_vertical_swing,
|
||||||
value=True)
|
value=True)
|
||||||
elif swing_mode == SWING_HORIZONTAL:
|
elif swing_mode == SWING_HORIZONTAL:
|
||||||
|
if self._prop_vertical_swing:
|
||||||
|
await self.set_property_async(prop=self._prop_vertical_swing,
|
||||||
|
value=False)
|
||||||
await self.set_property_async(prop=self._prop_horizontal_swing,
|
await self.set_property_async(prop=self._prop_horizontal_swing,
|
||||||
value=True)
|
value=True)
|
||||||
elif swing_mode == SWING_VERTICAL:
|
elif swing_mode == SWING_VERTICAL:
|
||||||
|
if self._prop_horizontal_swing:
|
||||||
|
await self.set_property_async(prop=self._prop_horizontal_swing,
|
||||||
|
value=False)
|
||||||
await self.set_property_async(prop=self._prop_vertical_swing,
|
await self.set_property_async(prop=self._prop_vertical_swing,
|
||||||
value=True)
|
value=True)
|
||||||
elif swing_mode == SWING_OFF:
|
elif swing_mode == SWING_OFF:
|
||||||
@@ -523,6 +529,8 @@ class AirConditioner(FeatureOnOff, FeatureTargetTemperature,
|
|||||||
self._hvac_mode_map[item.value] = HVACMode.DRY
|
self._hvac_mode_map[item.value] = HVACMode.DRY
|
||||||
elif item.name in {'fan'}:
|
elif item.name in {'fan'}:
|
||||||
self._hvac_mode_map[item.value] = HVACMode.FAN_ONLY
|
self._hvac_mode_map[item.value] = HVACMode.FAN_ONLY
|
||||||
|
elif item.name in {'heat_cool'}:
|
||||||
|
self._hvac_mode_map[item.value] = HVACMode.HEAT_COOL
|
||||||
self._attr_hvac_modes = list(self._hvac_mode_map.values())
|
self._attr_hvac_modes = list(self._hvac_mode_map.values())
|
||||||
self._prop_mode = prop
|
self._prop_mode = prop
|
||||||
elif prop.name == 'ac-state':
|
elif prop.name == 'ac-state':
|
||||||
@@ -546,7 +554,7 @@ class AirConditioner(FeatureOnOff, FeatureTargetTemperature,
|
|||||||
f'{self.entity_id}')
|
f'{self.entity_id}')
|
||||||
return
|
return
|
||||||
# set the device on
|
# set the device on
|
||||||
if self.get_prop_value(prop=self._prop_on) is False:
|
if self.get_prop_value(prop=self._prop_on) is not True:
|
||||||
await self.set_property_async(prop=self._prop_on,
|
await self.set_property_async(prop=self._prop_on,
|
||||||
value=True,
|
value=True,
|
||||||
write_ha_state=False)
|
write_ha_state=False)
|
||||||
|
|||||||
@@ -75,11 +75,12 @@ from .miot.const import (
|
|||||||
DEFAULT_CLOUD_SERVER,
|
DEFAULT_CLOUD_SERVER,
|
||||||
DEFAULT_CTRL_MODE,
|
DEFAULT_CTRL_MODE,
|
||||||
DEFAULT_INTEGRATION_LANGUAGE,
|
DEFAULT_INTEGRATION_LANGUAGE,
|
||||||
DEFAULT_COVER_CLOSED_POSITION,
|
DEFAULT_COVER_DEAD_ZONE_WIDTH,
|
||||||
MIN_COVER_CLOSED_POSITION,
|
MIN_COVER_DEAD_ZONE_WIDTH,
|
||||||
MAX_COVER_CLOSED_POSITION,
|
MAX_COVER_DEAD_ZONE_WIDTH,
|
||||||
DEFAULT_NICK_NAME,
|
DEFAULT_NICK_NAME,
|
||||||
DEFAULT_OAUTH2_API_HOST,
|
DEFAULT_OAUTH2_API_HOST,
|
||||||
|
DEFAULT_CLOUD_BROKER_HOST,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
OAUTH2_AUTH_URL,
|
OAUTH2_AUTH_URL,
|
||||||
OAUTH2_CLIENT_ID,
|
OAUTH2_CLIENT_ID,
|
||||||
@@ -132,7 +133,7 @@ class XiaomiMihomeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
|
|
||||||
_cloud_server: str
|
_cloud_server: str
|
||||||
_integration_language: str
|
_integration_language: str
|
||||||
_cover_closed_position: int
|
_cover_dz_width: int
|
||||||
_auth_info: dict
|
_auth_info: dict
|
||||||
_nick_name: str
|
_nick_name: str
|
||||||
_home_selected: dict
|
_home_selected: dict
|
||||||
@@ -155,7 +156,7 @@ class XiaomiMihomeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
self._main_loop = asyncio.get_running_loop()
|
self._main_loop = asyncio.get_running_loop()
|
||||||
self._cloud_server = DEFAULT_CLOUD_SERVER
|
self._cloud_server = DEFAULT_CLOUD_SERVER
|
||||||
self._integration_language = DEFAULT_INTEGRATION_LANGUAGE
|
self._integration_language = DEFAULT_INTEGRATION_LANGUAGE
|
||||||
self._cover_closed_position = DEFAULT_COVER_CLOSED_POSITION
|
self._cover_dz_width = DEFAULT_COVER_DEAD_ZONE_WIDTH
|
||||||
self._storage_path = ''
|
self._storage_path = ''
|
||||||
self._virtual_did = ''
|
self._virtual_did = ''
|
||||||
self._uid = ''
|
self._uid = ''
|
||||||
@@ -379,8 +380,8 @@ class XiaomiMihomeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
client_id=f'ha.{self._uid}',
|
client_id=f'ha.{self._uid}',
|
||||||
protocol=client.MQTTv5) # type: ignore
|
protocol=client.MQTTv5) # type: ignore
|
||||||
if mqtt_client.connect(
|
if mqtt_client.connect(
|
||||||
host=f'{self._cloud_server}-ha.mqtt.io.mi.com',
|
host=f'{self._cloud_server}-{DEFAULT_CLOUD_BROKER_HOST}',
|
||||||
port=8883) != 0:
|
port=8883) != 0:
|
||||||
raise RuntimeError('mqtt connect error')
|
raise RuntimeError('mqtt connect error')
|
||||||
mqtt_client.disconnect()
|
mqtt_client.disconnect()
|
||||||
except Exception as err: # pylint: disable=broad-exception-caught
|
except Exception as err: # pylint: disable=broad-exception-caught
|
||||||
@@ -411,7 +412,8 @@ class XiaomiMihomeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
}),
|
}),
|
||||||
errors={'base': reason},
|
errors={'base': reason},
|
||||||
description_placeholders={
|
description_placeholders={
|
||||||
'cloud_server': self._cloud_server,
|
'broker_host':
|
||||||
|
f'{self._cloud_server}-{DEFAULT_CLOUD_BROKER_HOST}:8883',
|
||||||
'http_host': (
|
'http_host': (
|
||||||
DEFAULT_OAUTH2_API_HOST
|
DEFAULT_OAUTH2_API_HOST
|
||||||
if self._cloud_server == DEFAULT_CLOUD_SERVER
|
if self._cloud_server == DEFAULT_CLOUD_SERVER
|
||||||
@@ -956,7 +958,7 @@ class XiaomiMihomeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
'action_debug': self._action_debug,
|
'action_debug': self._action_debug,
|
||||||
'hide_non_standard_entities':
|
'hide_non_standard_entities':
|
||||||
self._hide_non_standard_entities,
|
self._hide_non_standard_entities,
|
||||||
'cover_closed_position': self._cover_closed_position,
|
'cover_dead_zone_width': self._cover_dz_width,
|
||||||
'display_binary_mode': self._display_binary_mode,
|
'display_binary_mode': self._display_binary_mode,
|
||||||
'display_devices_changed_notify':
|
'display_devices_changed_notify':
|
||||||
self._display_devices_changed_notify
|
self._display_devices_changed_notify
|
||||||
@@ -1001,7 +1003,7 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
_hide_non_standard_entities: bool
|
_hide_non_standard_entities: bool
|
||||||
_display_binary_mode: list[str]
|
_display_binary_mode: list[str]
|
||||||
_display_devs_notify: list[str]
|
_display_devs_notify: list[str]
|
||||||
_cover_closed_position: int
|
_cover_dz_width: int
|
||||||
|
|
||||||
_oauth_redirect_url_full: str
|
_oauth_redirect_url_full: str
|
||||||
_auth_info: dict
|
_auth_info: dict
|
||||||
@@ -1022,7 +1024,7 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
_opt_lan_ctrl_cfg: bool
|
_opt_lan_ctrl_cfg: bool
|
||||||
_opt_network_detect_cfg: bool
|
_opt_network_detect_cfg: bool
|
||||||
_opt_check_network_deps: bool
|
_opt_check_network_deps: bool
|
||||||
_cover_pos_new: int
|
_cover_width_new: int
|
||||||
|
|
||||||
_trans_rules_count: int
|
_trans_rules_count: int
|
||||||
_trans_rules_count_success: int
|
_trans_rules_count_success: int
|
||||||
@@ -1051,8 +1053,8 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
self._ctrl_mode = self._entry_data.get('ctrl_mode', DEFAULT_CTRL_MODE)
|
self._ctrl_mode = self._entry_data.get('ctrl_mode', DEFAULT_CTRL_MODE)
|
||||||
self._integration_language = self._entry_data.get(
|
self._integration_language = self._entry_data.get(
|
||||||
'integration_language', DEFAULT_INTEGRATION_LANGUAGE)
|
'integration_language', DEFAULT_INTEGRATION_LANGUAGE)
|
||||||
self._cover_closed_position = self._entry_data.get(
|
self._cover_dz_width = self._entry_data.get(
|
||||||
'cover_closed_position', DEFAULT_COVER_CLOSED_POSITION)
|
'cover_dead_zone_width', DEFAULT_COVER_DEAD_ZONE_WIDTH)
|
||||||
self._nick_name = self._entry_data.get('nick_name', DEFAULT_NICK_NAME)
|
self._nick_name = self._entry_data.get('nick_name', DEFAULT_NICK_NAME)
|
||||||
self._action_debug = self._entry_data.get('action_debug', False)
|
self._action_debug = self._entry_data.get('action_debug', False)
|
||||||
self._hide_non_standard_entities = self._entry_data.get(
|
self._hide_non_standard_entities = self._entry_data.get(
|
||||||
@@ -1078,7 +1080,7 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
self._action_debug_new = False
|
self._action_debug_new = False
|
||||||
self._hide_non_standard_entities_new = False
|
self._hide_non_standard_entities_new = False
|
||||||
self._display_binary_mode_new = []
|
self._display_binary_mode_new = []
|
||||||
self._cover_pos_new = self._cover_closed_position
|
self._cover_width_new = self._cover_dz_width
|
||||||
self._update_user_info = False
|
self._update_user_info = False
|
||||||
self._update_devices = False
|
self._update_devices = False
|
||||||
self._update_trans_rules = False
|
self._update_trans_rules = False
|
||||||
@@ -1352,11 +1354,11 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
self._miot_i18n.translate(
|
self._miot_i18n.translate(
|
||||||
'config.binary_mode')), # type: ignore
|
'config.binary_mode')), # type: ignore
|
||||||
vol.Optional(
|
vol.Optional(
|
||||||
'cover_closed_position',
|
'cover_dead_zone_width',
|
||||||
default=self._cover_closed_position # type: ignore
|
default=self._cover_dz_width # type: ignore
|
||||||
): vol.All(vol.Coerce(int), vol.Range(
|
): vol.All(vol.Coerce(int), vol.Range(
|
||||||
min=MIN_COVER_CLOSED_POSITION,
|
min=MIN_COVER_DEAD_ZONE_WIDTH,
|
||||||
max=MAX_COVER_CLOSED_POSITION)),
|
max=MAX_COVER_DEAD_ZONE_WIDTH)),
|
||||||
vol.Required(
|
vol.Required(
|
||||||
'update_trans_rules',
|
'update_trans_rules',
|
||||||
default=self._update_trans_rules # type: ignore
|
default=self._update_trans_rules # type: ignore
|
||||||
@@ -1395,8 +1397,8 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
'update_lan_ctrl_config', self._opt_lan_ctrl_cfg)
|
'update_lan_ctrl_config', self._opt_lan_ctrl_cfg)
|
||||||
self._opt_network_detect_cfg = user_input.get(
|
self._opt_network_detect_cfg = user_input.get(
|
||||||
'network_detect_config', self._opt_network_detect_cfg)
|
'network_detect_config', self._opt_network_detect_cfg)
|
||||||
self._cover_pos_new = user_input.get(
|
self._cover_width_new = user_input.get(
|
||||||
'cover_closed_position', self._cover_closed_position)
|
'cover_dead_zone_width', self._cover_dz_width)
|
||||||
|
|
||||||
return await self.async_step_update_user_info()
|
return await self.async_step_update_user_info()
|
||||||
|
|
||||||
@@ -1887,8 +1889,8 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
client_id=f'ha.{self._uid}',
|
client_id=f'ha.{self._uid}',
|
||||||
protocol=client.MQTTv5) # type: ignore
|
protocol=client.MQTTv5) # type: ignore
|
||||||
if mqtt_client.connect(
|
if mqtt_client.connect(
|
||||||
host=f'{self._cloud_server}-ha.mqtt.io.mi.com',
|
host=f'{self._cloud_server}-{DEFAULT_CLOUD_BROKER_HOST}',
|
||||||
port=8883) != 0:
|
port=8883) != 0:
|
||||||
raise RuntimeError('mqtt connect error')
|
raise RuntimeError('mqtt connect error')
|
||||||
mqtt_client.disconnect()
|
mqtt_client.disconnect()
|
||||||
except Exception as err: # pylint: disable=broad-exception-caught
|
except Exception as err: # pylint: disable=broad-exception-caught
|
||||||
@@ -1919,7 +1921,8 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
}),
|
}),
|
||||||
errors={'base': reason},
|
errors={'base': reason},
|
||||||
description_placeholders={
|
description_placeholders={
|
||||||
'cloud_server': self._cloud_server,
|
'broker_host':
|
||||||
|
f'{self._cloud_server}-{DEFAULT_CLOUD_BROKER_HOST}:8883',
|
||||||
'http_host': (
|
'http_host': (
|
||||||
DEFAULT_OAUTH2_API_HOST
|
DEFAULT_OAUTH2_API_HOST
|
||||||
if self._cloud_server == DEFAULT_CLOUD_SERVER
|
if self._cloud_server == DEFAULT_CLOUD_SERVER
|
||||||
@@ -1945,7 +1948,7 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
'nick_name': self._nick_name,
|
'nick_name': self._nick_name,
|
||||||
'lang_new': INTEGRATION_LANGUAGES[self._lang_new],
|
'lang_new': INTEGRATION_LANGUAGES[self._lang_new],
|
||||||
'nick_name_new': self._nick_name_new,
|
'nick_name_new': self._nick_name_new,
|
||||||
'cover_pos_new': self._cover_pos_new,
|
'cover_width_new': self._cover_width_new,
|
||||||
'devices_add': len(self._devices_add),
|
'devices_add': len(self._devices_add),
|
||||||
'devices_remove': len(self._devices_remove),
|
'devices_remove': len(self._devices_remove),
|
||||||
'trans_rules_count': self._trans_rules_count,
|
'trans_rules_count': self._trans_rules_count,
|
||||||
@@ -1972,8 +1975,8 @@ class OptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
if self._lang_new != self._integration_language:
|
if self._lang_new != self._integration_language:
|
||||||
self._entry_data['integration_language'] = self._lang_new
|
self._entry_data['integration_language'] = self._lang_new
|
||||||
self._need_reload = True
|
self._need_reload = True
|
||||||
if self._cover_pos_new != self._cover_closed_position:
|
if self._cover_width_new != self._cover_dz_width:
|
||||||
self._entry_data['cover_closed_position'] = self._cover_pos_new
|
self._entry_data['cover_dead_zone_width'] = self._cover_width_new
|
||||||
self._need_reload = True
|
self._need_reload = True
|
||||||
if self._update_user_info:
|
if self._update_user_info:
|
||||||
self._entry_data['nick_name'] = self._nick_name_new
|
self._entry_data['nick_name'] = self._nick_name_new
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry,
|
|||||||
class Cover(MIoTServiceEntity, CoverEntity):
|
class Cover(MIoTServiceEntity, CoverEntity):
|
||||||
"""Cover entities for Xiaomi Home."""
|
"""Cover entities for Xiaomi Home."""
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
_cover_closed_position: int
|
_cover_dead_zone_width: int
|
||||||
_prop_motor_control: Optional[MIoTSpecProperty]
|
_prop_motor_control: Optional[MIoTSpecProperty]
|
||||||
_prop_motor_value_open: Optional[int]
|
_prop_motor_value_open: Optional[int]
|
||||||
_prop_motor_value_close: Optional[int]
|
_prop_motor_value_close: Optional[int]
|
||||||
@@ -116,8 +116,8 @@ class Cover(MIoTServiceEntity, CoverEntity):
|
|||||||
self._attr_supported_color_modes = set()
|
self._attr_supported_color_modes = set()
|
||||||
self._attr_supported_features = CoverEntityFeature(0)
|
self._attr_supported_features = CoverEntityFeature(0)
|
||||||
|
|
||||||
self._cover_closed_position = (
|
self._cover_dead_zone_width = (
|
||||||
miot_device.miot_client.cover_closed_position)
|
miot_device.miot_client.cover_dead_zone_width)
|
||||||
|
|
||||||
self._prop_motor_control = None
|
self._prop_motor_control = None
|
||||||
self._prop_motor_value_open = None
|
self._prop_motor_value_open = None
|
||||||
@@ -275,8 +275,14 @@ class Cover(MIoTServiceEntity, CoverEntity):
|
|||||||
self._prop_pos_closing = False
|
self._prop_pos_closing = False
|
||||||
return self.get_prop_value(prop=self._prop_target_position)
|
return self.get_prop_value(prop=self._prop_target_position)
|
||||||
pos = self.get_prop_value(prop=self._prop_current_position)
|
pos = self.get_prop_value(prop=self._prop_current_position)
|
||||||
return None if pos is None else round(pos * 100 /
|
if pos is None:
|
||||||
self._prop_position_value_range)
|
return None
|
||||||
|
pos = round(pos*100/self._prop_position_value_range)
|
||||||
|
if pos <= self._cover_dead_zone_width:
|
||||||
|
pos = 0
|
||||||
|
elif pos >= (100 - self._cover_dead_zone_width):
|
||||||
|
pos = 100
|
||||||
|
return pos
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_opening(self) -> Optional[bool]:
|
def is_opening(self) -> Optional[bool]:
|
||||||
@@ -302,7 +308,7 @@ class Cover(MIoTServiceEntity, CoverEntity):
|
|||||||
def is_closed(self) -> Optional[bool]:
|
def is_closed(self) -> Optional[bool]:
|
||||||
"""Return if the cover is closed."""
|
"""Return if the cover is closed."""
|
||||||
if self.current_cover_position is not None:
|
if self.current_cover_position is not None:
|
||||||
return self.current_cover_position <= self._cover_closed_position
|
return self.current_cover_position == 0
|
||||||
# The current position is prior to the status when determining
|
# The current position is prior to the status when determining
|
||||||
# whether the cover is closed.
|
# whether the cover is closed.
|
||||||
if self._prop_status and self._prop_status_closed:
|
if self._prop_status and self._prop_status_closed:
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
"cryptography",
|
"cryptography",
|
||||||
"psutil"
|
"psutil"
|
||||||
],
|
],
|
||||||
"version": "v0.4.0",
|
"version": "v0.4.6",
|
||||||
"zeroconf": [
|
"zeroconf": [
|
||||||
"_miot-central._tcp.local."
|
"_miot-central._tcp.local."
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -430,15 +430,16 @@ class FeatureState(MIoTServiceEntity, MediaPlayerEntity):
|
|||||||
elif item.name in {'pause', 'paused'}:
|
elif item.name in {'pause', 'paused'}:
|
||||||
self._playing_state_map[
|
self._playing_state_map[
|
||||||
item.value] = MediaPlayerState.PAUSED
|
item.value] = MediaPlayerState.PAUSED
|
||||||
self._prop_playing_state = prop
|
self._prop_playing_state = prop
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self) -> Optional[MediaPlayerState]:
|
def state(self) -> Optional[MediaPlayerState]:
|
||||||
"""The current state."""
|
"""The current state."""
|
||||||
return (self.get_map_value(map_=self._playing_state_map,
|
current_state = self.get_prop_value(
|
||||||
key=self.get_prop_value(
|
prop=self._prop_playing_state) if self._prop_playing_state else None
|
||||||
prop=self._prop_playing_state))
|
return (MediaPlayerState.ON if
|
||||||
if self._prop_playing_state else MediaPlayerState.ON)
|
(current_state is None) else self.get_map_value(
|
||||||
|
map_=self._playing_state_map, key=current_state))
|
||||||
|
|
||||||
|
|
||||||
class WifiSpeaker(FeatureVolumeSet, FeatureVolumeMute, FeaturePlay,
|
class WifiSpeaker(FeatureVolumeSet, FeatureVolumeMute, FeaturePlay,
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ NETWORK_REFRESH_INTERVAL: int = 30
|
|||||||
OAUTH2_CLIENT_ID: str = '2882303761520251711'
|
OAUTH2_CLIENT_ID: str = '2882303761520251711'
|
||||||
OAUTH2_AUTH_URL: str = 'https://account.xiaomi.com/oauth2/authorize'
|
OAUTH2_AUTH_URL: str = 'https://account.xiaomi.com/oauth2/authorize'
|
||||||
DEFAULT_OAUTH2_API_HOST: str = 'ha.api.io.mi.com'
|
DEFAULT_OAUTH2_API_HOST: str = 'ha.api.io.mi.com'
|
||||||
|
DEFAULT_CLOUD_BROKER_HOST: str = 'ha.mqtt.io.mi.com'
|
||||||
|
|
||||||
# seconds, 14 days
|
# seconds, 14 days
|
||||||
SPEC_STD_LIB_EFFECTIVE_TIME = 3600*24*14
|
SPEC_STD_LIB_EFFECTIVE_TIME = 3600*24*14
|
||||||
@@ -89,6 +90,7 @@ SUPPORTED_PLATFORMS: list = [
|
|||||||
|
|
||||||
UNSUPPORTED_MODELS: list = [
|
UNSUPPORTED_MODELS: list = [
|
||||||
'chuangmi.ir.v2',
|
'chuangmi.ir.v2',
|
||||||
|
'hmpace.motion.v6nfc',
|
||||||
'xiaomi.router.rd03'
|
'xiaomi.router.rd03'
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -116,13 +118,14 @@ INTEGRATION_LANGUAGES = {
|
|||||||
'pt': 'Português',
|
'pt': 'Português',
|
||||||
'pt-BR': 'Português (Brasil)',
|
'pt-BR': 'Português (Brasil)',
|
||||||
'ru': 'Русский',
|
'ru': 'Русский',
|
||||||
|
'tr': 'Türkçe',
|
||||||
'zh-Hans': '简体中文',
|
'zh-Hans': '简体中文',
|
||||||
'zh-Hant': '繁體中文'
|
'zh-Hant': '繁體中文'
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFAULT_COVER_CLOSED_POSITION: int = 0
|
DEFAULT_COVER_DEAD_ZONE_WIDTH: int = 0
|
||||||
MIN_COVER_CLOSED_POSITION: int = 0
|
MIN_COVER_DEAD_ZONE_WIDTH: int = 0
|
||||||
MAX_COVER_CLOSED_POSITION: int = 5
|
MAX_COVER_DEAD_ZONE_WIDTH: int = 5
|
||||||
|
|
||||||
DEFAULT_CTRL_MODE: str = 'auto'
|
DEFAULT_CTRL_MODE: str = 'auto'
|
||||||
|
|
||||||
|
|||||||
160
custom_components/xiaomi_home/miot/i18n/tr.json
Normal file
160
custom_components/xiaomi_home/miot/i18n/tr.json
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"other": {
|
||||||
|
"devices": "Cihazlar",
|
||||||
|
"found_central_gateway": ", Yerel Merkezi Hub Ağ Geçidi Bulundu",
|
||||||
|
"without_room": "Oda atanmamış",
|
||||||
|
"no_display": "Gösterme"
|
||||||
|
},
|
||||||
|
"control_mode": {
|
||||||
|
"auto": "Otomatik",
|
||||||
|
"cloud": "Bulut"
|
||||||
|
},
|
||||||
|
"statistics_logic": {
|
||||||
|
"or": "VEYA mantığı",
|
||||||
|
"and": "VE mantığı"
|
||||||
|
},
|
||||||
|
"filter_mode": {
|
||||||
|
"exclude": "Hariç tut",
|
||||||
|
"include": "Dahil et"
|
||||||
|
},
|
||||||
|
"connect_type": {
|
||||||
|
"0": "WiFi",
|
||||||
|
"1": "yunyi cihazı",
|
||||||
|
"2": "Bulut cihazı",
|
||||||
|
"3": "ZigBee",
|
||||||
|
"4": "webSocket",
|
||||||
|
"5": "Sanal cihaz",
|
||||||
|
"6": "BLE",
|
||||||
|
"7": "Yerel AP",
|
||||||
|
"8": "WiFi+BLE",
|
||||||
|
"9": "Diğer",
|
||||||
|
"10": "İşlev eklentisi",
|
||||||
|
"11": "Hücresel ağ",
|
||||||
|
"12": "Kablo",
|
||||||
|
"13": "NB-IoT",
|
||||||
|
"14": "Üçüncü taraf bulut erişimi",
|
||||||
|
"15": "Kızılötesi uzaktan kumanda cihazı",
|
||||||
|
"16": "BLE-Mesh",
|
||||||
|
"17": "Sanal cihaz grubu",
|
||||||
|
"18": "Ağ geçidi alt cihazı",
|
||||||
|
"19": "Güvenlik seviyesi ağ geçidi alt cihazı",
|
||||||
|
"22": "PLC",
|
||||||
|
"23": "Yalnızca kablo",
|
||||||
|
"24": "Matter",
|
||||||
|
"25": "WiFi+Hücresel ağ"
|
||||||
|
},
|
||||||
|
"room_name_rule": {
|
||||||
|
"none": "Senkronize etme",
|
||||||
|
"home_room": "Ev Adı ve Oda Adı (Xiaomi Home Yatak Odası)",
|
||||||
|
"room": "Oda Adı (Yatak Odası)",
|
||||||
|
"home": "Ev Adı (Xiaomi Home)"
|
||||||
|
},
|
||||||
|
"option_status": {
|
||||||
|
"enable": "Etkinleştir",
|
||||||
|
"disable": "Devre Dışı Bırak"
|
||||||
|
},
|
||||||
|
"binary_mode": {
|
||||||
|
"text": "Metin Sensör Varlığı",
|
||||||
|
"bool": "İkili Sensör Varlığı"
|
||||||
|
},
|
||||||
|
"device_state": {
|
||||||
|
"add": "Ekle",
|
||||||
|
"del": "Kullanılamıyor",
|
||||||
|
"offline": "Çevrimdışı"
|
||||||
|
},
|
||||||
|
"lan_ctrl_config": {
|
||||||
|
"notice_net_dup": "\r\n**[Bildirim]** Aynı ağa bağlı olabilecek birden fazla ağ kartı algılandı. Lütfen seçime dikkat edin.",
|
||||||
|
"net_unavailable": "Arayüz kullanılamıyor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oauth2": {
|
||||||
|
"success": {
|
||||||
|
"title": "Kimlik Doğrulama Başarılı",
|
||||||
|
"content": "Lütfen bu sayfayı kapatın ve 'İleri'ye tıklamak için hesap kimlik doğrulama sayfasına geri dönün.",
|
||||||
|
"button": "Kapat"
|
||||||
|
},
|
||||||
|
"fail": {
|
||||||
|
"title": "Kimlik Doğrulama Başarısız",
|
||||||
|
"content": "{error_msg}, lütfen bu sayfayı kapatın ve kimlik doğrulama bağlantısına tekrar tıklamak için hesap kimlik doğrulama sayfasına geri dönün.",
|
||||||
|
"button": "Kapat"
|
||||||
|
},
|
||||||
|
"error_msg": {
|
||||||
|
"-10100": "Geçersiz yanıt parametreleri ('code' veya 'state' alanı boş)",
|
||||||
|
"-10101": "Geçirilen 'state' alanı uyumsuz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"miot": {
|
||||||
|
"client": {
|
||||||
|
"invalid_oauth_info": "Kimlik doğrulama bilgileri geçersiz, bulut bağlantısı kullanılamayacak, lütfen Xiaomi Home entegrasyon sayfasına girin, yeniden kimlik doğrulaması yapmak için 'Seçenekler'e tıklayın",
|
||||||
|
"invalid_device_cache": "Önbellek cihaz bilgileri anormal, lütfen Xiaomi Home entegrasyon sayfasına girin, yerel önbelleği güncellemek için 'Seçenekler->Cihaz listesini güncelle'ye tıklayın",
|
||||||
|
"invalid_cert_info": "Geçersiz kullanıcı sertifikası, yerel merkezi bağlantı kullanılamayacak, lütfen Xiaomi Home entegrasyon sayfasına girin, yeniden kimlik doğrulaması yapmak için 'Seçenekler'e tıklayın",
|
||||||
|
"device_cloud_error": "Buluttan cihaz bilgileri alınırken bir istisna oluştu, lütfen yerel ağ bağlantısını kontrol edin",
|
||||||
|
"xiaomi_home_error_title": "Xiaomi Home Entegrasyon Hatası",
|
||||||
|
"xiaomi_home_error": "**{nick_name}({uid}, {cloud_server})** hatası algılandı, lütfen yeniden yapılandırmak için seçenekler sayfasına girin.\n\n**Hata mesajı**: \n{message}",
|
||||||
|
"device_list_changed_title": "Xiaomi Home cihaz listesi değişiklikleri",
|
||||||
|
"device_list_changed": "**{nick_name}({uid}, {cloud_server})** cihaz bilgilerinin değiştiği algılandı, lütfen entegrasyon seçenekleri sayfasına girin, yerel cihaz bilgilerini güncellemek için `Seçenekler->Cihaz listesini güncelle`ye tıklayın.\n\nGeçerli ağ durumu: {network_status}\n{message}\n",
|
||||||
|
"device_list_add": "\n**{count} yeni cihaz:** \n{message}",
|
||||||
|
"device_list_del": "\n**{count} cihaz kullanılamıyor:** \n{message}",
|
||||||
|
"device_list_offline": "\n**{count} cihaz çevrimdışı:** \n{message}",
|
||||||
|
"network_status_online": "Çevrimiçi",
|
||||||
|
"network_status_offline": "Çevrimdışı",
|
||||||
|
"central_state_changed_title": "Merkezi Hub Ağ Geçidi Bağlantı Durumu",
|
||||||
|
"central_state_changed": "**{nick_name}({uid}, {cloud_server})** Xiaomi merkezi hub ağ geçidine yerel bağlantı: {conn_status}",
|
||||||
|
"central_state_connected": "Bağlandı",
|
||||||
|
"central_state_disconnected": "Bağlantı kesildi",
|
||||||
|
"device_exec_error": "Yürütme hatası"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"common": {
|
||||||
|
"-10000": "Bilinmeyen hata",
|
||||||
|
"-10001": "Hizmet kullanılamıyor",
|
||||||
|
"-10002": "Geçersiz parametre",
|
||||||
|
"-10003": "Yetersiz kaynaklar",
|
||||||
|
"-10004": "İç hata",
|
||||||
|
"-10005": "Yetersiz izinler",
|
||||||
|
"-10006": "Yürütme zaman aşımı",
|
||||||
|
"-10007": "Cihaz çevrimdışı veya mevcut değil",
|
||||||
|
"-10020": "Yetkisiz (OAuth2)",
|
||||||
|
"-10030": "Geçersiz token (HTTP)",
|
||||||
|
"-10040": "Geçersiz mesaj formatı",
|
||||||
|
"-10050": "Geçersiz sertifika",
|
||||||
|
"-704000000": "Bilinmeyen hata",
|
||||||
|
"-704010000": "Yetkisiz (cihaz silinmiş olabilir)",
|
||||||
|
"-704014006": "Cihaz açıklaması bulunamadı",
|
||||||
|
"-704030013": "Özellik okunabilir değil",
|
||||||
|
"-704030023": "Özellik yazılabilir değil",
|
||||||
|
"-704030033": "Özellik abone edilebilir değil",
|
||||||
|
"-704040002": "Hizmet mevcut değil",
|
||||||
|
"-704040003": "Özellik mevcut değil",
|
||||||
|
"-704040004": "Olay mevcut değil",
|
||||||
|
"-704040005": "Eylem mevcut değil",
|
||||||
|
"-704040999": "Özellik çevrimiçi değil",
|
||||||
|
"-704042001": "Cihaz mevcut değil",
|
||||||
|
"-704042011": "Cihaz çevrimdışı",
|
||||||
|
"-704053036": "Cihaz işlemi zaman aşımı",
|
||||||
|
"-704053100": "Cihaz mevcut durumda bu işlemi gerçekleştiremiyor",
|
||||||
|
"-704083036": "Cihaz işlemi zaman aşımı",
|
||||||
|
"-704090001": "Cihaz mevcut değil",
|
||||||
|
"-704220008": "Geçersiz ID",
|
||||||
|
"-704220025": "Eylem parametre sayısı uyumsuz",
|
||||||
|
"-704220035": "Eylem parametre hatası",
|
||||||
|
"-704220043": "Özellik değer hatası",
|
||||||
|
"-704222034": "Eylem dönüş değer hatası",
|
||||||
|
"-705004000": "Bilinmeyen hata",
|
||||||
|
"-705004501": "Bilinmeyen hata",
|
||||||
|
"-705201013": "Özellik okunabilir değil",
|
||||||
|
"-705201015": "Eylem yürütme hatası",
|
||||||
|
"-705201023": "Özellik yazılabilir değil",
|
||||||
|
"-705201033": "Özellik abone edilebilir değil",
|
||||||
|
"-706012000": "Bilinmeyen hata",
|
||||||
|
"-706012013": "Özellik okunabilir değil",
|
||||||
|
"-706012015": "Eylem yürütme hatası",
|
||||||
|
"-706012023": "Özellik yazılabilir değil",
|
||||||
|
"-706012033": "Özellik abone edilebilir değil",
|
||||||
|
"-706012043": "Özellik değer hatası",
|
||||||
|
"-706014006": "Cihaz açıklaması bulunamadı"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -64,7 +64,7 @@ from .const import (
|
|||||||
DEFAULT_CTRL_MODE, DEFAULT_INTEGRATION_LANGUAGE, DEFAULT_NICK_NAME, DOMAIN,
|
DEFAULT_CTRL_MODE, DEFAULT_INTEGRATION_LANGUAGE, DEFAULT_NICK_NAME, DOMAIN,
|
||||||
MIHOME_CERT_EXPIRE_MARGIN, NETWORK_REFRESH_INTERVAL,
|
MIHOME_CERT_EXPIRE_MARGIN, NETWORK_REFRESH_INTERVAL,
|
||||||
OAUTH2_CLIENT_ID, SUPPORT_CENTRAL_GATEWAY_CTRL,
|
OAUTH2_CLIENT_ID, SUPPORT_CENTRAL_GATEWAY_CTRL,
|
||||||
DEFAULT_COVER_CLOSED_POSITION)
|
DEFAULT_COVER_DEAD_ZONE_WIDTH)
|
||||||
from .miot_cloud import MIoTHttpClient, MIoTOauthClient
|
from .miot_cloud import MIoTHttpClient, MIoTOauthClient
|
||||||
from .miot_error import MIoTClientError, MIoTErrorCode
|
from .miot_error import MIoTClientError, MIoTErrorCode
|
||||||
from .miot_mips import (
|
from .miot_mips import (
|
||||||
@@ -79,6 +79,12 @@ from .miot_i18n import MIoTI18n
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
REFRESH_PROPS_DELAY = 0.2
|
||||||
|
REFRESH_PROPS_RETRY_DELAY = 3
|
||||||
|
REFRESH_CLOUD_DEVICES_DELAY = 6
|
||||||
|
REFRESH_CLOUD_DEVICES_RETRY_DELAY = 60
|
||||||
|
REFRESH_GATEWAY_DEVICES_DELAY = 3
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class MIoTClientSub:
|
class MIoTClientSub:
|
||||||
"""MIoT client subscription."""
|
"""MIoT client subscription."""
|
||||||
@@ -253,7 +259,18 @@ class MIoTClient:
|
|||||||
if not self._user_config:
|
if not self._user_config:
|
||||||
# Integration need to be add again
|
# Integration need to be add again
|
||||||
raise MIoTClientError('load_user_config_async error')
|
raise MIoTClientError('load_user_config_async error')
|
||||||
_LOGGER.debug('user config, %s', json.dumps(self._user_config))
|
# Hide sensitive info in printing
|
||||||
|
p_user_config: dict = deepcopy(self._user_config)
|
||||||
|
p_access_token: str = p_user_config['auth_info']['access_token']
|
||||||
|
p_refresh_token: str = p_user_config['auth_info']['refresh_token']
|
||||||
|
p_mac_key: str = p_user_config['auth_info']['mac_key']
|
||||||
|
p_user_config['auth_info'][
|
||||||
|
'access_token'] = f"{p_access_token[:5]}***{p_access_token[-5:]}"
|
||||||
|
p_user_config['auth_info'][
|
||||||
|
'refresh_token'] = f"{p_refresh_token[:5]}***{p_refresh_token[-5:]}"
|
||||||
|
p_user_config['auth_info'][
|
||||||
|
'mac_key'] = f"{p_mac_key[:5]}***{p_mac_key[-5:]}"
|
||||||
|
_LOGGER.debug('user config, %s', json.dumps(p_user_config))
|
||||||
# MIoT i18n client
|
# MIoT i18n client
|
||||||
self._i18n = MIoTI18n(
|
self._i18n = MIoTI18n(
|
||||||
lang=self._entry_data.get(
|
lang=self._entry_data.get(
|
||||||
@@ -488,9 +505,9 @@ class MIoTClient:
|
|||||||
return self._display_binary_bool
|
return self._display_binary_bool
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cover_closed_position(self) -> int:
|
def cover_dead_zone_width(self) -> int:
|
||||||
return self._entry_data.get('cover_closed_position',
|
return self._entry_data.get('cover_dead_zone_width',
|
||||||
DEFAULT_COVER_CLOSED_POSITION)
|
DEFAULT_COVER_DEAD_ZONE_WIDTH)
|
||||||
|
|
||||||
@display_devices_changed_notify.setter
|
@display_devices_changed_notify.setter
|
||||||
def display_devices_changed_notify(self, value: list[str]) -> None:
|
def display_devices_changed_notify(self, value: list[str]) -> None:
|
||||||
@@ -706,7 +723,7 @@ class MIoTClient:
|
|||||||
if self._refresh_props_timer:
|
if self._refresh_props_timer:
|
||||||
return
|
return
|
||||||
self._refresh_props_timer = self._main_loop.call_later(
|
self._refresh_props_timer = self._main_loop.call_later(
|
||||||
0.2, lambda: self._main_loop.create_task(
|
REFRESH_PROPS_DELAY, lambda: self._main_loop.create_task(
|
||||||
self.__refresh_props_handler()))
|
self.__refresh_props_handler()))
|
||||||
|
|
||||||
async def get_prop_async(self, did: str, siid: int, piid: int) -> Any:
|
async def get_prop_async(self, did: str, siid: int, piid: int) -> Any:
|
||||||
@@ -1037,11 +1054,11 @@ class MIoTClient:
|
|||||||
|
|
||||||
mips = self._mips_local.get(group_id, None)
|
mips = self._mips_local.get(group_id, None)
|
||||||
if mips:
|
if mips:
|
||||||
if state == MipsServiceState.REMOVED:
|
# if state == MipsServiceState.REMOVED:
|
||||||
mips.disconnect()
|
# mips.disconnect()
|
||||||
self._mips_local.pop(group_id, None)
|
# self._mips_local.pop(group_id, None)
|
||||||
return
|
# return
|
||||||
if (
|
if ( # ADDED or UPDATED
|
||||||
mips.client_id == self._entry_data['virtual_did']
|
mips.client_id == self._entry_data['virtual_did']
|
||||||
and mips.host == data['addresses'][0]
|
and mips.host == data['addresses'][0]
|
||||||
and mips.port == data['port']
|
and mips.port == data['port']
|
||||||
@@ -1363,10 +1380,13 @@ class MIoTClient:
|
|||||||
"""Update cloud devices.
|
"""Update cloud devices.
|
||||||
NOTICE: This function will operate the cloud_list
|
NOTICE: This function will operate the cloud_list
|
||||||
"""
|
"""
|
||||||
# MIoT cloud service may not publish the online state updating message
|
# MIoT cloud may not publish the online state updating message
|
||||||
# for the BLE device. Assume that all BLE devices are online.
|
# for the BLE device. Assume that all BLE devices are online.
|
||||||
|
# MIoT cloud does not publish the online state updating message for the
|
||||||
|
# child device under the proxy gateway (eg, VRF air conditioner
|
||||||
|
# controller). Assume that all proxy gateway child devices are online.
|
||||||
for did, info in cloud_list.items():
|
for did, info in cloud_list.items():
|
||||||
if did.startswith('blt.'):
|
if did.startswith('blt.') or did.startswith('proxy.'):
|
||||||
info['online'] = True
|
info['online'] = True
|
||||||
for did, info in self._device_list_cache.items():
|
for did, info in self._device_list_cache.items():
|
||||||
if filter_dids and did not in filter_dids:
|
if filter_dids and did not in filter_dids:
|
||||||
@@ -1419,9 +1439,19 @@ class MIoTClient:
|
|||||||
async def __refresh_cloud_devices_async(self) -> None:
|
async def __refresh_cloud_devices_async(self) -> None:
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
'refresh cloud devices, %s, %s', self._uid, self._cloud_server)
|
'refresh cloud devices, %s, %s', self._uid, self._cloud_server)
|
||||||
self._refresh_cloud_devices_timer = None
|
if self._refresh_cloud_devices_timer:
|
||||||
result = await self._http.get_devices_async(
|
self._refresh_cloud_devices_timer.cancel()
|
||||||
home_ids=list(self._entry_data.get('home_selected', {}).keys()))
|
self._refresh_cloud_devices_timer = None
|
||||||
|
try:
|
||||||
|
result = await self._http.get_devices_async(
|
||||||
|
home_ids=list(self._entry_data.get('home_selected', {}).keys()))
|
||||||
|
except Exception as err: # pylint: disable=broad-exception-caught
|
||||||
|
_LOGGER.error('refresh cloud devices failed, %s', err)
|
||||||
|
self._refresh_cloud_devices_timer = self._main_loop.call_later(
|
||||||
|
REFRESH_CLOUD_DEVICES_RETRY_DELAY,
|
||||||
|
lambda: self._main_loop.create_task(
|
||||||
|
self.__refresh_cloud_devices_async()))
|
||||||
|
return
|
||||||
if not result and 'devices' not in result:
|
if not result and 'devices' not in result:
|
||||||
self.__show_client_error_notify(
|
self.__show_client_error_notify(
|
||||||
message=self._i18n.translate(
|
message=self._i18n.translate(
|
||||||
@@ -1467,17 +1497,11 @@ class MIoTClient:
|
|||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
'request refresh cloud devices, %s, %s',
|
'request refresh cloud devices, %s, %s',
|
||||||
self._uid, self._cloud_server)
|
self._uid, self._cloud_server)
|
||||||
if immediately:
|
delay_sec : int = 0 if immediately else REFRESH_CLOUD_DEVICES_DELAY
|
||||||
if self._refresh_cloud_devices_timer:
|
|
||||||
self._refresh_cloud_devices_timer.cancel()
|
|
||||||
self._refresh_cloud_devices_timer = self._main_loop.call_later(
|
|
||||||
0, lambda: self._main_loop.create_task(
|
|
||||||
self.__refresh_cloud_devices_async()))
|
|
||||||
return
|
|
||||||
if self._refresh_cloud_devices_timer:
|
if self._refresh_cloud_devices_timer:
|
||||||
return
|
self._refresh_cloud_devices_timer.cancel()
|
||||||
self._refresh_cloud_devices_timer = self._main_loop.call_later(
|
self._refresh_cloud_devices_timer = self._main_loop.call_later(
|
||||||
6, lambda: self._main_loop.create_task(
|
delay_sec, lambda: self._main_loop.create_task(
|
||||||
self.__refresh_cloud_devices_async()))
|
self.__refresh_cloud_devices_async()))
|
||||||
|
|
||||||
@final
|
@final
|
||||||
@@ -1601,7 +1625,8 @@ class MIoTClient:
|
|||||||
return
|
return
|
||||||
self._mips_local_state_changed_timers[group_id] = (
|
self._mips_local_state_changed_timers[group_id] = (
|
||||||
self._main_loop.call_later(
|
self._main_loop.call_later(
|
||||||
3, lambda: self._main_loop.create_task(
|
REFRESH_GATEWAY_DEVICES_DELAY,
|
||||||
|
lambda: self._main_loop.create_task(
|
||||||
self.__refresh_gw_devices_with_group_id_async(
|
self.__refresh_gw_devices_with_group_id_async(
|
||||||
group_id=group_id))))
|
group_id=group_id))))
|
||||||
|
|
||||||
@@ -1755,7 +1780,7 @@ class MIoTClient:
|
|||||||
self._refresh_props_retry_count = 0
|
self._refresh_props_retry_count = 0
|
||||||
if self._refresh_props_list:
|
if self._refresh_props_list:
|
||||||
self._refresh_props_timer = self._main_loop.call_later(
|
self._refresh_props_timer = self._main_loop.call_later(
|
||||||
0.2, lambda: self._main_loop.create_task(
|
REFRESH_PROPS_DELAY, lambda: self._main_loop.create_task(
|
||||||
self.__refresh_props_handler()))
|
self.__refresh_props_handler()))
|
||||||
else:
|
else:
|
||||||
self._refresh_props_timer = None
|
self._refresh_props_timer = None
|
||||||
@@ -1774,7 +1799,7 @@ class MIoTClient:
|
|||||||
_LOGGER.info(
|
_LOGGER.info(
|
||||||
'refresh props failed, retry, %s', self._refresh_props_retry_count)
|
'refresh props failed, retry, %s', self._refresh_props_retry_count)
|
||||||
self._refresh_props_timer = self._main_loop.call_later(
|
self._refresh_props_timer = self._main_loop.call_later(
|
||||||
3, lambda: self._main_loop.create_task(
|
REFRESH_PROPS_RETRY_DELAY, lambda: self._main_loop.create_task(
|
||||||
self.__refresh_props_handler()))
|
self.__refresh_props_handler()))
|
||||||
|
|
||||||
@final
|
@final
|
||||||
|
|||||||
@@ -436,7 +436,8 @@ class MIoTDevice:
|
|||||||
optional_properties: dict
|
optional_properties: dict
|
||||||
required_actions: set
|
required_actions: set
|
||||||
optional_actions: set
|
optional_actions: set
|
||||||
# 2. The service shall have all required properties, actions.
|
# 2. The required service shall have all required properties
|
||||||
|
# and actions.
|
||||||
if service.name in required_services:
|
if service.name in required_services:
|
||||||
required_properties = SPEC_DEVICE_TRANS_MAP[spec_name][
|
required_properties = SPEC_DEVICE_TRANS_MAP[spec_name][
|
||||||
'required'].get(
|
'required'].get(
|
||||||
@@ -454,6 +455,23 @@ class MIoTDevice:
|
|||||||
'required'].get(
|
'required'].get(
|
||||||
service.name, {}
|
service.name, {}
|
||||||
).get('optional', {}).get('actions', set({}))
|
).get('optional', {}).get('actions', set({}))
|
||||||
|
if not {
|
||||||
|
prop.name for prop in service.properties if prop.access
|
||||||
|
}.issuperset(set(required_properties.keys())):
|
||||||
|
return None
|
||||||
|
if not {
|
||||||
|
action.name for action in service.actions
|
||||||
|
}.issuperset(required_actions):
|
||||||
|
return None
|
||||||
|
# 3. The required property in required service shall have all
|
||||||
|
# required access mode.
|
||||||
|
for prop in service.properties:
|
||||||
|
if prop.name in required_properties:
|
||||||
|
if not set(prop.access).issuperset(
|
||||||
|
required_properties[prop.name]):
|
||||||
|
return None
|
||||||
|
# 4. The optional service shall have all required properties
|
||||||
|
# and actions.
|
||||||
elif service.name in optional_services:
|
elif service.name in optional_services:
|
||||||
required_properties = SPEC_DEVICE_TRANS_MAP[spec_name][
|
required_properties = SPEC_DEVICE_TRANS_MAP[spec_name][
|
||||||
'optional'].get(
|
'optional'].get(
|
||||||
@@ -471,22 +489,23 @@ class MIoTDevice:
|
|||||||
'optional'].get(
|
'optional'].get(
|
||||||
service.name, {}
|
service.name, {}
|
||||||
).get('optional', {}).get('actions', set({}))
|
).get('optional', {}).get('actions', set({}))
|
||||||
|
if not {
|
||||||
|
prop.name for prop in service.properties if prop.access
|
||||||
|
}.issuperset(set(required_properties.keys())):
|
||||||
|
continue
|
||||||
|
if not {
|
||||||
|
action.name for action in service.actions
|
||||||
|
}.issuperset(required_actions):
|
||||||
|
continue
|
||||||
|
# 5. The required property in optional service shall have all
|
||||||
|
# required access mode.
|
||||||
|
for prop in service.properties:
|
||||||
|
if prop.name in required_properties:
|
||||||
|
if not set(prop.access).issuperset(
|
||||||
|
required_properties[prop.name]):
|
||||||
|
continue
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
if not {
|
|
||||||
prop.name for prop in service.properties if prop.access
|
|
||||||
}.issuperset(set(required_properties.keys())):
|
|
||||||
return None
|
|
||||||
if not {
|
|
||||||
action.name for action in service.actions
|
|
||||||
}.issuperset(required_actions):
|
|
||||||
return None
|
|
||||||
# 3. The required property shall have all required access mode.
|
|
||||||
for prop in service.properties:
|
|
||||||
if prop.name in required_properties:
|
|
||||||
if not set(prop.access).issuperset(
|
|
||||||
required_properties[prop.name]):
|
|
||||||
return None
|
|
||||||
# property
|
# property
|
||||||
for prop in service.properties:
|
for prop in service.properties:
|
||||||
if prop.name in set.union(
|
if prop.name in set.union(
|
||||||
@@ -747,6 +766,8 @@ class MIoTDevice:
|
|||||||
'watt': UnitOfPower.WATT,
|
'watt': UnitOfPower.WATT,
|
||||||
'w': UnitOfPower.WATT,
|
'w': UnitOfPower.WATT,
|
||||||
'W': UnitOfPower.WATT,
|
'W': UnitOfPower.WATT,
|
||||||
|
'kW': UnitOfPower.KILO_WATT,
|
||||||
|
'Wh': UnitOfEnergy.WATT_HOUR,
|
||||||
'kWh': UnitOfEnergy.KILO_WATT_HOUR,
|
'kWh': UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
'A': UnitOfElectricCurrent.AMPERE,
|
'A': UnitOfElectricCurrent.AMPERE,
|
||||||
'mA': UnitOfElectricCurrent.MILLIAMPERE,
|
'mA': UnitOfElectricCurrent.MILLIAMPERE,
|
||||||
@@ -1039,6 +1060,7 @@ class MIoTServiceEntity(Entity):
|
|||||||
f'set property failed, property is None, '
|
f'set property failed, property is None, '
|
||||||
f'{self.entity_id}, {self.name}')
|
f'{self.entity_id}, {self.name}')
|
||||||
value = prop.value_format(value)
|
value = prop.value_format(value)
|
||||||
|
value = prop.value_precision(value)
|
||||||
if prop not in self.entity_data.props:
|
if prop not in self.entity_data.props:
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
f'set property failed, unknown property, '
|
f'set property failed, unknown property, '
|
||||||
@@ -1076,9 +1098,11 @@ class MIoTServiceEntity(Entity):
|
|||||||
'get property failed, not readable, %s, %s, %s',
|
'get property failed, not readable, %s, %s, %s',
|
||||||
self.entity_id, self.name, prop.name)
|
self.entity_id, self.name, prop.name)
|
||||||
return None
|
return None
|
||||||
result = prop.value_format(
|
value: Any = prop.value_format(
|
||||||
await self.miot_device.miot_client.get_prop_async(
|
await self.miot_device.miot_client.get_prop_async(
|
||||||
did=self.miot_device.did, siid=prop.service.iid, piid=prop.iid))
|
did=self.miot_device.did, siid=prop.service.iid, piid=prop.iid))
|
||||||
|
value = prop.eval_expr(value)
|
||||||
|
result = prop.value_precision(value)
|
||||||
if result != self._prop_value_map[prop]:
|
if result != self._prop_value_map[prop]:
|
||||||
self._prop_value_map[prop] = result
|
self._prop_value_map[prop] = result
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
@@ -1108,6 +1132,8 @@ class MIoTServiceEntity(Entity):
|
|||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
value: Any = prop.value_format(params['value'])
|
value: Any = prop.value_format(params['value'])
|
||||||
|
value = prop.eval_expr(value)
|
||||||
|
value = prop.value_precision(value)
|
||||||
self._prop_value_map[prop] = value
|
self._prop_value_map[prop] = value
|
||||||
if prop in self._prop_changed_subs:
|
if prop in self._prop_changed_subs:
|
||||||
self._prop_changed_subs[prop](prop, value)
|
self._prop_changed_subs[prop](prop, value)
|
||||||
@@ -1255,6 +1281,7 @@ class MIoTPropertyEntity(Entity):
|
|||||||
f'set property failed, not writable, '
|
f'set property failed, not writable, '
|
||||||
f'{self.entity_id}, {self.name}')
|
f'{self.entity_id}, {self.name}')
|
||||||
value = self.spec.value_format(value)
|
value = self.spec.value_format(value)
|
||||||
|
value = self.spec.value_precision(value)
|
||||||
try:
|
try:
|
||||||
await self.miot_device.miot_client.set_prop_async(
|
await self.miot_device.miot_client.set_prop_async(
|
||||||
did=self.miot_device.did, siid=self.spec.service.iid,
|
did=self.miot_device.did, siid=self.spec.service.iid,
|
||||||
@@ -1272,15 +1299,19 @@ class MIoTPropertyEntity(Entity):
|
|||||||
'get property failed, not readable, %s, %s',
|
'get property failed, not readable, %s, %s',
|
||||||
self.entity_id, self.name)
|
self.entity_id, self.name)
|
||||||
return None
|
return None
|
||||||
return self.spec.value_format(
|
value: Any = self.spec.value_format(
|
||||||
await self.miot_device.miot_client.get_prop_async(
|
await self.miot_device.miot_client.get_prop_async(
|
||||||
did=self.miot_device.did, siid=self.spec.service.iid,
|
did=self.miot_device.did, siid=self.spec.service.iid,
|
||||||
piid=self.spec.iid))
|
piid=self.spec.iid))
|
||||||
|
value = self.spec.eval_expr(value)
|
||||||
|
result = self.spec.value_precision(value)
|
||||||
|
return result
|
||||||
|
|
||||||
def __on_value_changed(self, params: dict, ctx: Any) -> None:
|
def __on_value_changed(self, params: dict, ctx: Any) -> None:
|
||||||
_LOGGER.debug('property changed, %s', params)
|
_LOGGER.debug('property changed, %s', params)
|
||||||
self._value = self.spec.value_format(params['value'])
|
value: Any = self.spec.value_format(params['value'])
|
||||||
self._value = self.spec.eval_expr(self._value)
|
value = self.spec.eval_expr(value)
|
||||||
|
self._value = self.spec.value_precision(value)
|
||||||
if not self._pending_write_ha_state_timer:
|
if not self._pending_write_ha_state_timer:
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
|
||||||
|
|||||||
@@ -232,9 +232,10 @@ class MipsService:
|
|||||||
for item in list(self._services.values()):
|
for item in list(self._services.values()):
|
||||||
if item['name'] != name:
|
if item['name'] != name:
|
||||||
continue
|
continue
|
||||||
service_data = self._services.pop(item['group_id'], {})
|
# Ignore mdns REMOVED package. Let the connection close by itself.
|
||||||
self.__call_service_change(
|
# service_data = self._services.pop(item['group_id'], {})
|
||||||
state=MipsServiceState.REMOVED, data=service_data)
|
# self.__call_service_change(
|
||||||
|
# state=MipsServiceState.REMOVED, data=service_data)
|
||||||
return
|
return
|
||||||
self._main_loop.create_task(
|
self._main_loop.create_task(
|
||||||
self.__request_service_info_async(zeroconf, service_type, name))
|
self.__request_service_info_async(zeroconf, service_type, name))
|
||||||
|
|||||||
@@ -68,7 +68,11 @@ from paho.mqtt.client import (
|
|||||||
|
|
||||||
# pylint: disable=relative-beyond-top-level
|
# pylint: disable=relative-beyond-top-level
|
||||||
from .common import MIoTMatcher
|
from .common import MIoTMatcher
|
||||||
from .const import UNSUPPORTED_MODELS, MIHOME_MQTT_KEEPALIVE
|
from .const import (
|
||||||
|
UNSUPPORTED_MODELS,
|
||||||
|
MIHOME_MQTT_KEEPALIVE,
|
||||||
|
DEFAULT_CLOUD_BROKER_HOST
|
||||||
|
)
|
||||||
from .miot_error import MIoTErrorCode, MIoTMipsError
|
from .miot_error import MIoTErrorCode, MIoTMipsError
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
@@ -513,16 +517,14 @@ class _MipsClient(ABC):
|
|||||||
"""
|
"""
|
||||||
self.__thread_check()
|
self.__thread_check()
|
||||||
if not self._mqtt or not self._mqtt.is_connected():
|
if not self._mqtt or not self._mqtt.is_connected():
|
||||||
|
self.log_error(f'mips sub when not connected, {topic}')
|
||||||
return
|
return
|
||||||
try:
|
|
||||||
if topic not in self._mips_sub_pending_map:
|
if topic not in self._mips_sub_pending_map:
|
||||||
self._mips_sub_pending_map[topic] = 0
|
self._mips_sub_pending_map[topic] = 0
|
||||||
if not self._mips_sub_pending_timer:
|
if not self._mips_sub_pending_timer:
|
||||||
self._mips_sub_pending_timer = self._internal_loop.call_later(
|
self._mips_sub_pending_timer = self._internal_loop.call_later(
|
||||||
0.01, self.__mips_sub_internal_pending_handler, topic)
|
0.01, self.__mips_sub_internal_pending_handler, topic)
|
||||||
except Exception as err: # pylint: disable=broad-exception-caught
|
|
||||||
# Catch all exception
|
|
||||||
self.log_error(f'mips sub internal error, {topic}. {err}')
|
|
||||||
|
|
||||||
@final
|
@final
|
||||||
def _mips_unsub_internal(self, topic: str) -> None:
|
def _mips_unsub_internal(self, topic: str) -> None:
|
||||||
@@ -531,6 +533,7 @@ class _MipsClient(ABC):
|
|||||||
"""
|
"""
|
||||||
self.__thread_check()
|
self.__thread_check()
|
||||||
if not self._mqtt or not self._mqtt.is_connected():
|
if not self._mqtt or not self._mqtt.is_connected():
|
||||||
|
self.log_debug(f'mips unsub when not connected, {topic}')
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
result, mid = self._mqtt.unsubscribe(topic=topic)
|
result, mid = self._mqtt.unsubscribe(topic=topic)
|
||||||
@@ -587,6 +590,13 @@ class _MipsClient(ABC):
|
|||||||
|
|
||||||
def __mqtt_loop_handler(self) -> None:
|
def __mqtt_loop_handler(self) -> None:
|
||||||
try:
|
try:
|
||||||
|
# If the main loop is closed, stop the internal loop immediately
|
||||||
|
if self.main_loop.is_closed():
|
||||||
|
self.log_debug(
|
||||||
|
'The main loop is closed, stop the internal loop.')
|
||||||
|
if not self._internal_loop.is_closed():
|
||||||
|
self._internal_loop.stop()
|
||||||
|
return
|
||||||
if self._mqtt:
|
if self._mqtt:
|
||||||
self._mqtt.loop_read()
|
self._mqtt.loop_read()
|
||||||
if self._mqtt:
|
if self._mqtt:
|
||||||
@@ -639,6 +649,7 @@ class _MipsClient(ABC):
|
|||||||
_LOGGER.error('__on_connect, but mqtt is None')
|
_LOGGER.error('__on_connect, but mqtt is None')
|
||||||
return
|
return
|
||||||
if not self._mqtt.is_connected():
|
if not self._mqtt.is_connected():
|
||||||
|
_LOGGER.error('__on_connect, but mqtt is disconnected')
|
||||||
return
|
return
|
||||||
self.log_info(f'mips connect, {flags}, {rc}, {props}')
|
self.log_info(f'mips connect, {flags}, {rc}, {props}')
|
||||||
self.__reset_reconnect_time()
|
self.__reset_reconnect_time()
|
||||||
@@ -722,11 +733,16 @@ class _MipsClient(ABC):
|
|||||||
self.log_error(f'retry mips sub internal error, {topic}')
|
self.log_error(f'retry mips sub internal error, {topic}')
|
||||||
continue
|
continue
|
||||||
subbed_count += 1
|
subbed_count += 1
|
||||||
result, mid = self._mqtt.subscribe(topic, qos=self.MIPS_QOS)
|
result = mid = None
|
||||||
if result == MQTT_ERR_SUCCESS:
|
try:
|
||||||
self._mips_sub_pending_map.pop(topic)
|
result, mid = self._mqtt.subscribe(topic, qos=self.MIPS_QOS)
|
||||||
self.log_debug(f'mips sub internal success, {topic}')
|
if result == MQTT_ERR_SUCCESS:
|
||||||
continue
|
self._mips_sub_pending_map.pop(topic)
|
||||||
|
self.log_debug(f'mips sub internal success, {topic}')
|
||||||
|
continue
|
||||||
|
except Exception as err: # pylint: disable=broad-exception-caught
|
||||||
|
# Catch all exception
|
||||||
|
self.log_error(f'mips sub internal error, {topic}. {err}')
|
||||||
self._mips_sub_pending_map[topic] = count+1
|
self._mips_sub_pending_map[topic] = count+1
|
||||||
self.log_error(
|
self.log_error(
|
||||||
f'retry mips sub internal, {count}, {topic}, {result}, {mid}')
|
f'retry mips sub internal, {count}, {topic}, {result}, {mid}')
|
||||||
@@ -848,7 +864,8 @@ class MipsCloudClient(_MipsClient):
|
|||||||
) -> None:
|
) -> None:
|
||||||
self._msg_matcher = MIoTMatcher()
|
self._msg_matcher = MIoTMatcher()
|
||||||
super().__init__(
|
super().__init__(
|
||||||
client_id=f'ha.{uuid}', host=f'{cloud_server}-ha.mqtt.io.mi.com',
|
client_id=f'ha.{uuid}',
|
||||||
|
host=f'{cloud_server}-{DEFAULT_CLOUD_BROKER_HOST}',
|
||||||
port=port, username=app_id, password=token, loop=loop)
|
port=port, username=app_id, password=token, loop=loop)
|
||||||
|
|
||||||
@final
|
@final
|
||||||
@@ -995,9 +1012,11 @@ class MipsCloudClient(_MipsClient):
|
|||||||
did, MIoTDeviceState.ONLINE if msg['event'] == 'online'
|
did, MIoTDeviceState.ONLINE if msg['event'] == 'online'
|
||||||
else MIoTDeviceState.OFFLINE, ctx)
|
else MIoTDeviceState.OFFLINE, ctx)
|
||||||
|
|
||||||
if did.startswith('blt.'):
|
if did.startswith('blt.') or did.startswith('proxy.'):
|
||||||
# MIoT cloud may not publish BLE device online/offline state message.
|
# MIoT cloud may not publish BLE device or proxy gateway child device
|
||||||
# Do not subscribe BLE device online/offline state.
|
# online/offline state message.
|
||||||
|
# Do not subscribe BLE device or proxy gateway child device
|
||||||
|
# online/offline state.
|
||||||
return True
|
return True
|
||||||
return self.__reg_broadcast_external(
|
return self.__reg_broadcast_external(
|
||||||
topic=topic, handler=on_state_msg, handler_ctx=handler_ctx)
|
topic=topic, handler=on_state_msg, handler_ctx=handler_ctx)
|
||||||
|
|||||||
@@ -291,7 +291,7 @@ class MIoTNetwork:
|
|||||||
return self._main_loop.time() - start_ts
|
return self._main_loop.time() - start_ts
|
||||||
return self._DETECT_TIMEOUT
|
return self._DETECT_TIMEOUT
|
||||||
except Exception as err: # pylint: disable=broad-exception-caught
|
except Exception as err: # pylint: disable=broad-exception-caught
|
||||||
print(err)
|
_LOGGER.debug('ping error, %s',err)
|
||||||
return self._DETECT_TIMEOUT
|
return self._DETECT_TIMEOUT
|
||||||
|
|
||||||
async def __http_async(self, url: str) -> float:
|
async def __http_async(self, url: str) -> float:
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ class MIoTSpecValueRange:
|
|||||||
"""MIoT SPEC value range class."""
|
"""MIoT SPEC value range class."""
|
||||||
min_: int
|
min_: int
|
||||||
max_: int
|
max_: int
|
||||||
step: int
|
step: int | float
|
||||||
|
|
||||||
def __init__(self, value_range: Union[dict, list]) -> None:
|
def __init__(self, value_range: Union[dict, list]) -> None:
|
||||||
if isinstance(value_range, dict):
|
if isinstance(value_range, dict):
|
||||||
@@ -567,9 +567,8 @@ class MIoTSpecProperty(_MIoTSpecBase):
|
|||||||
return
|
return
|
||||||
self._value_range = MIoTSpecValueRange(value_range=value)
|
self._value_range = MIoTSpecValueRange(value_range=value)
|
||||||
if isinstance(value, list):
|
if isinstance(value, list):
|
||||||
self.precision = len(str(
|
step_: str = format(value[2], '.10f').rstrip('0').rstrip('.')
|
||||||
value[2]).split('.')[1].rstrip('0')) if '.' in str(
|
self.precision = len(step_.split('.')[1]) if '.' in step_ else 0
|
||||||
value[2]) else 0
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def value_list(self) -> Optional[MIoTSpecValueList]:
|
def value_list(self) -> Optional[MIoTSpecValueList]:
|
||||||
@@ -600,14 +599,27 @@ class MIoTSpecProperty(_MIoTSpecBase):
|
|||||||
def value_format(self, value: Any) -> Any:
|
def value_format(self, value: Any) -> Any:
|
||||||
if value is None:
|
if value is None:
|
||||||
return None
|
return None
|
||||||
if self.format_ == int:
|
if isinstance(value, str):
|
||||||
return int(round(value))
|
if self.format_ == int:
|
||||||
if self.format_ == float:
|
value = int(float(value))
|
||||||
return round(value, self.precision)
|
elif self.format_ == float:
|
||||||
|
value = float(value)
|
||||||
if self.format_ == bool:
|
if self.format_ == bool:
|
||||||
return bool(value in [True, 1, 'True', 'true', '1'])
|
return bool(value in [True, 1, 'True', 'true', '1'])
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def value_precision(self, value: Any) -> Any:
|
||||||
|
if value is None:
|
||||||
|
return None
|
||||||
|
if self.format_ == float:
|
||||||
|
return round(value, self.precision)
|
||||||
|
if self.format_ == int:
|
||||||
|
if self.value_range is None:
|
||||||
|
return int(round(value))
|
||||||
|
return int(
|
||||||
|
round(value / self.value_range.step) * self.value_range.step)
|
||||||
|
return value
|
||||||
|
|
||||||
def dump(self) -> dict:
|
def dump(self) -> dict:
|
||||||
return {
|
return {
|
||||||
'type': self.type_,
|
'type': self.type_,
|
||||||
|
|||||||
@@ -90,6 +90,9 @@ translate:
|
|||||||
ru:
|
ru:
|
||||||
'false': Ложь
|
'false': Ложь
|
||||||
'true': Истина
|
'true': Истина
|
||||||
|
tr:
|
||||||
|
'false': Yanlış
|
||||||
|
'true': Doğru
|
||||||
zh-Hans:
|
zh-Hans:
|
||||||
'false': 假
|
'false': 假
|
||||||
'true': 真
|
'true': 真
|
||||||
@@ -127,6 +130,9 @@ translate:
|
|||||||
ru:
|
ru:
|
||||||
'false': Нет контакта
|
'false': Нет контакта
|
||||||
'true': Контакт
|
'true': Контакт
|
||||||
|
tr:
|
||||||
|
'false': Temas Yok
|
||||||
|
'true': Temas
|
||||||
zh-Hans:
|
zh-Hans:
|
||||||
'false': 分离
|
'false': 分离
|
||||||
'true': 接触
|
'true': 接触
|
||||||
@@ -164,6 +170,9 @@ translate:
|
|||||||
ru:
|
ru:
|
||||||
'false': Движение не обнаружено
|
'false': Движение не обнаружено
|
||||||
'true': Обнаружено движение
|
'true': Обнаружено движение
|
||||||
|
tr:
|
||||||
|
'false': Hareket Algılanmadı
|
||||||
|
'true': Hareket Algılandı
|
||||||
zh-Hans:
|
zh-Hans:
|
||||||
'false': 无人
|
'false': 无人
|
||||||
'true': 有人
|
'true': 有人
|
||||||
@@ -201,6 +210,9 @@ translate:
|
|||||||
ru:
|
ru:
|
||||||
'false': Закрыть
|
'false': Закрыть
|
||||||
'true': Открыть
|
'true': Открыть
|
||||||
|
tr:
|
||||||
|
'false': Kapalı
|
||||||
|
'true': Açık
|
||||||
zh-Hans:
|
zh-Hans:
|
||||||
'false': 关闭
|
'false': 关闭
|
||||||
'true': 开启
|
'true': 开启
|
||||||
@@ -238,6 +250,9 @@ translate:
|
|||||||
ru:
|
ru:
|
||||||
'false': Нет
|
'false': Нет
|
||||||
'true': Да
|
'true': Да
|
||||||
|
tr:
|
||||||
|
'false': Hayır
|
||||||
|
'true': Evet
|
||||||
zh-Hans:
|
zh-Hans:
|
||||||
'false': 否
|
'false': 否
|
||||||
'true': 是
|
'true': 是
|
||||||
|
|||||||
@@ -5,6 +5,23 @@
|
|||||||
"service:003:property:001:valuelist:001": "Dry"
|
"service:003:property:001:valuelist:001": "Dry"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"urn:miot-spec-v2:device:electronic-valve:0000A0A7:lxzn-02": {
|
||||||
|
"zh-Hans": {
|
||||||
|
"service:004:property:001": "功率过高-阈值设置"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"urn:miot-spec-v2:device:electronic-valve:0000A0A7:ykcn-cbcs": {
|
||||||
|
"zh-Hans": {
|
||||||
|
"service:004:property:001": "功率过高-阈值设置",
|
||||||
|
"service:004:property:009": "欠压告警-阈值设置"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"urn:miot-spec-v2:device:fan:0000A005:zhimi-za1": {
|
||||||
|
"zh-Hans": {
|
||||||
|
"service:002:property:005:valuelist:000": "自然风",
|
||||||
|
"service:002:property:005:valuelist:001": "直吹风"
|
||||||
|
}
|
||||||
|
},
|
||||||
"urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1": {
|
"urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1": {
|
||||||
"de": {
|
"de": {
|
||||||
"service:001": "Geräteinformationen",
|
"service:001": "Geräteinformationen",
|
||||||
@@ -274,13 +291,13 @@
|
|||||||
"service:002:property:002": "Air Conditioner Mode",
|
"service:002:property:002": "Air Conditioner Mode",
|
||||||
"service:004": "Air Conditioner"
|
"service:004": "Air Conditioner"
|
||||||
},
|
},
|
||||||
"zh_cn": {
|
"zh-Hans": {
|
||||||
"service:002": "地暖",
|
"service:002": "地暖",
|
||||||
"service:004": "空调"
|
"service:004": "空调"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"urn:miot-spec-v2:device:vacuum:0000A006:ijai-v1": {
|
"urn:miot-spec-v2:device:vacuum:0000A006:ijai-v1": {
|
||||||
"zh_cn": {
|
"zh-Hans": {
|
||||||
"service:007:property:005:valuelist:000": "安静",
|
"service:007:property:005:valuelist:000": "安静",
|
||||||
"service:007:property:005:valuelist:001": "标准",
|
"service:007:property:005:valuelist:001": "标准",
|
||||||
"service:007:property:005:valuelist:002": "中档",
|
"service:007:property:005:valuelist:002": "中档",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,9 @@
|
|||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:090615-ktf:
|
urn:miot-spec-v2:device:air-conditioner:0000A004:090615-ktf:
|
||||||
services:
|
services:
|
||||||
- '4'
|
- '4'
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:759413-iez:
|
||||||
|
properties:
|
||||||
|
- '2.3'
|
||||||
urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ma4:
|
urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ma4:
|
||||||
properties:
|
properties:
|
||||||
- 9.*
|
- 9.*
|
||||||
@@ -44,7 +47,23 @@ urn:miot-spec-v2:device:motion-sensor:0000A014:xiaomi-pir1:
|
|||||||
services:
|
services:
|
||||||
- '1'
|
- '1'
|
||||||
- '5'
|
- '5'
|
||||||
|
urn:miot-spec-v2:device:speaker:0000A015:xiaomi-l15a:
|
||||||
|
properties:
|
||||||
|
- '3.3'
|
||||||
|
- '6.1'
|
||||||
|
- '6.2'
|
||||||
|
- '6.3'
|
||||||
|
- '6.4'
|
||||||
urn:miot-spec-v2:device:thermostat:0000A031:tofan-wk01:
|
urn:miot-spec-v2:device:thermostat:0000A031:tofan-wk01:
|
||||||
services:
|
services:
|
||||||
- '2'
|
- '2'
|
||||||
- '4'
|
- '4'
|
||||||
|
urn:miot-spec-v2:device:vacuum:0000A006:narwa-001:
|
||||||
|
services:
|
||||||
|
- '*'
|
||||||
|
urn:miot-spec-v2:device:vacuum:0000A006:narwa-ax11:
|
||||||
|
services:
|
||||||
|
- '*'
|
||||||
|
urn:miot-spec-v2:device:vacuum:0000A006:roidmi-v60:
|
||||||
|
actions:
|
||||||
|
- '2.3'
|
||||||
|
|||||||
@@ -1,12 +1,51 @@
|
|||||||
urn:miot-spec-v2:device:air-condition-outlet:0000A045:lumi-mcn04:1:
|
urn:miot-spec-v2:device:air-condition-outlet:0000A045:lumi-mcn04:1:
|
||||||
prop.3.4:
|
prop.3.4:
|
||||||
format: uint8
|
format: uint8
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:daikin-k2:1:
|
||||||
|
prop.2.1:
|
||||||
|
name: ac-on
|
||||||
|
format: string
|
||||||
|
access:
|
||||||
|
- read
|
||||||
|
- notify
|
||||||
|
prop.2.2:
|
||||||
|
name: ac-mode
|
||||||
|
format: string
|
||||||
|
access:
|
||||||
|
- read
|
||||||
|
- notify
|
||||||
|
prop.3.1:
|
||||||
|
name: ac-fan-level
|
||||||
|
format: string
|
||||||
|
access:
|
||||||
|
- read
|
||||||
|
- notify
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:qdhkl-a42:1:
|
||||||
|
prop.2.2:
|
||||||
|
value-list:
|
||||||
|
- value: 1
|
||||||
|
description: Cool
|
||||||
|
- value: 2
|
||||||
|
description: Dry
|
||||||
|
- value: 4
|
||||||
|
description: Fan
|
||||||
|
- value: 8
|
||||||
|
description: Heat
|
||||||
|
- value: 9
|
||||||
|
description: Auto
|
||||||
|
- value: 10
|
||||||
|
description: Heat_cool
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c17:1:
|
||||||
|
prop.10.6:
|
||||||
|
unit: none
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c17:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c17:1
|
||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:1:
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:1:
|
||||||
prop.10.6:
|
prop.10.6:
|
||||||
unit: none
|
unit: none
|
||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:1
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:1
|
||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c24:1:
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c24:1:
|
||||||
prop.8.6:
|
prop.8.6:
|
||||||
|
name: power-consumption
|
||||||
unit: kWh
|
unit: kWh
|
||||||
prop.10.6:
|
prop.10.6:
|
||||||
unit: none
|
unit: none
|
||||||
@@ -15,6 +54,19 @@ urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:1:
|
|||||||
prop.10.6:
|
prop.10.6:
|
||||||
unit: none
|
unit: none
|
||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:1
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:1
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h40h00:1:
|
||||||
|
prop.10.6:
|
||||||
|
unit: none
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h43h00:1:
|
||||||
|
prop.10.6:
|
||||||
|
unit: none
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h43h00:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h43h00:1
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1:
|
||||||
|
prop.10.6:
|
||||||
|
unit: none
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:4: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1
|
||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:1: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:1: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
|
||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
|
||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
|
||||||
@@ -28,6 +80,43 @@ urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-mt0:1:
|
|||||||
prop.10.6:
|
prop.10.6:
|
||||||
unit: none
|
unit: none
|
||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-mt0:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-mt0:1
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-mt0:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-mt0:1
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:1:
|
||||||
|
prop.10.6:
|
||||||
|
unit: none
|
||||||
|
prop.3.12:
|
||||||
|
name: vertical-swing-left-up
|
||||||
|
prop.3.13:
|
||||||
|
name: vertical-swing-left-down
|
||||||
|
prop.3.14:
|
||||||
|
name: vertical-swing-right-up
|
||||||
|
prop.3.15:
|
||||||
|
name: vertical-swing-right-down
|
||||||
|
prop.3.20:
|
||||||
|
name: horizontal-swing-left
|
||||||
|
prop.3.22:
|
||||||
|
name: horizontal-swing-right
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:1
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:1
|
||||||
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:4: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:1
|
||||||
|
urn:miot-spec-v2:device:air-fresh:0000A012:daikin-k33:1:
|
||||||
|
prop.2.1:
|
||||||
|
name: ac-on
|
||||||
|
format: string
|
||||||
|
access:
|
||||||
|
- read
|
||||||
|
- notify
|
||||||
|
prop.2.3:
|
||||||
|
name: ac-mode
|
||||||
|
format: string
|
||||||
|
access:
|
||||||
|
- read
|
||||||
|
- notify
|
||||||
|
prop.2.5:
|
||||||
|
name: ac-fan-level
|
||||||
|
format: string
|
||||||
|
access:
|
||||||
|
- read
|
||||||
|
- notify
|
||||||
urn:miot-spec-v2:device:air-monitor:0000A008:cgllc-cgd1st:1:
|
urn:miot-spec-v2:device:air-monitor:0000A008:cgllc-cgd1st:1:
|
||||||
prop.3.7:
|
prop.3.7:
|
||||||
value-range:
|
value-range:
|
||||||
@@ -49,6 +138,8 @@ urn:miot-spec-v2:device:airer:0000A00D:hyd-lyjpro:1:
|
|||||||
name: target-position-a
|
name: target-position-a
|
||||||
prop.2.9:
|
prop.2.9:
|
||||||
name: target-position-b
|
name: target-position-b
|
||||||
|
prop.2.11:
|
||||||
|
expr: (100-src_value)
|
||||||
urn:miot-spec-v2:device:airer:0000A00D:hyd-znlyj5:1:
|
urn:miot-spec-v2:device:airer:0000A00D:hyd-znlyj5:1:
|
||||||
prop.2.3:
|
prop.2.3:
|
||||||
value-range:
|
value-range:
|
||||||
@@ -86,6 +177,72 @@ urn:miot-spec-v2:device:bath-heater:0000A028:xiaomi-s1:1:
|
|||||||
urn:miot-spec-v2:device:curtain:0000A00C:bjkcz-kczble:1:0000D031:
|
urn:miot-spec-v2:device:curtain:0000A00C:bjkcz-kczble:1:0000D031:
|
||||||
prop.2.2:
|
prop.2.2:
|
||||||
name: status-a
|
name: status-a
|
||||||
|
urn:miot-spec-v2:device:dehumidifier:0000A02D:xiaomi-lite:1:
|
||||||
|
prop.3.2:
|
||||||
|
value-range:
|
||||||
|
- -30
|
||||||
|
- 100
|
||||||
|
- 0.1
|
||||||
|
urn:miot-spec-v2:device:electronic-valve:0000A0A7:lxzn-02:1:0000C833:
|
||||||
|
prop.3.1:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 999999
|
||||||
|
- 0.01
|
||||||
|
expr: (src_value/100)
|
||||||
|
prop.3.2:
|
||||||
|
unit: mA
|
||||||
|
prop.3.3:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.1
|
||||||
|
expr: (src_value/10)
|
||||||
|
prop.4.1:
|
||||||
|
unit: kW
|
||||||
|
urn:miot-spec-v2:device:electronic-valve:0000A0A7:sanmei-s1:1:
|
||||||
|
prop.3.1:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 99999999
|
||||||
|
- 0.01
|
||||||
|
expr: round(src_value/100, 2)
|
||||||
|
prop.3.2:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 16777216
|
||||||
|
- 0.01
|
||||||
|
expr: round(src_value/100, 2)
|
||||||
|
prop.3.3:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.1
|
||||||
|
expr: round(src_value/10, 1)
|
||||||
|
urn:miot-spec-v2:device:electronic-valve:0000A0A7:ykcn-cbcs:1:0000C833:
|
||||||
|
prop.3.1:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 99999999
|
||||||
|
- 0.01
|
||||||
|
expr: round(src_value/100, 2)
|
||||||
|
prop.3.2:
|
||||||
|
unit: mA
|
||||||
|
prop.3.3:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.1
|
||||||
|
expr: round(src_value/10, 1)
|
||||||
|
prop.4.1:
|
||||||
|
unit: kW
|
||||||
urn:miot-spec-v2:device:fan:0000A005:dmaker-p33:1:
|
urn:miot-spec-v2:device:fan:0000A005:dmaker-p33:1:
|
||||||
prop.2.2:
|
prop.2.2:
|
||||||
name: fan-level-a
|
name: fan-level-a
|
||||||
@@ -101,12 +258,21 @@ urn:miot-spec-v2:device:fan:0000A005:dmaker-p5:1:
|
|||||||
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p43:1:
|
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p43:1:
|
||||||
prop.2.2:
|
prop.2.2:
|
||||||
name: fan-level-a
|
name: fan-level-a
|
||||||
|
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p45:1:0000D062:
|
||||||
|
prop.2.4:
|
||||||
|
name: fan-level-a
|
||||||
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p51:1:
|
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p51:1:
|
||||||
prop.2.2:
|
prop.2.2:
|
||||||
name: fan-level-a
|
name: fan-level-a
|
||||||
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p69:1:0000D062:
|
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p69:1:0000D062:
|
||||||
prop.2.4:
|
prop.2.4:
|
||||||
name: fan-level-a
|
name: fan-level-a
|
||||||
|
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p70:1:0000D062:
|
||||||
|
prop.2.4:
|
||||||
|
name: fan-level-a
|
||||||
|
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p76:1:0000D062:
|
||||||
|
prop.2.4:
|
||||||
|
name: fan-level-a
|
||||||
urn:miot-spec-v2:device:fan:0000A005:zhimi-sa1:3:
|
urn:miot-spec-v2:device:fan:0000A005:zhimi-sa1:3:
|
||||||
prop.2.2:
|
prop.2.2:
|
||||||
name: fan-level-a
|
name: fan-level-a
|
||||||
@@ -152,6 +318,11 @@ urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:2: urn:miot-spec-v2:device:hood
|
|||||||
urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:3:
|
urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:3:
|
||||||
prop.3.1:
|
prop.3.1:
|
||||||
name: on-ventilation
|
name: on-ventilation
|
||||||
|
urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:4: urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:3
|
||||||
|
urn:miot-spec-v2:device:humidifier:0000A00E:zhimi-ca4:2:
|
||||||
|
prop.2.7:
|
||||||
|
unit: percentage
|
||||||
|
expr: round(src_value*0.83)
|
||||||
urn:miot-spec-v2:device:kettle:0000A009:yunmi-r3:1:
|
urn:miot-spec-v2:device:kettle:0000A009:yunmi-r3:1:
|
||||||
prop.3.1:
|
prop.3.1:
|
||||||
unit: ppm
|
unit: ppm
|
||||||
@@ -172,20 +343,37 @@ urn:miot-spec-v2:device:magnet-sensor:0000A016:linp-m1:1:
|
|||||||
description: open
|
description: open
|
||||||
- value: 1
|
- value: 1
|
||||||
description: closed
|
description: closed
|
||||||
expr: src_value!=1
|
expr: (src_value!=1)
|
||||||
urn:miot-spec-v2:device:motion-sensor:0000A014:lumi-acn001:1:
|
urn:miot-spec-v2:device:motion-sensor:0000A014:lumi-acn001:1:
|
||||||
prop.3.2:
|
prop.3.2:
|
||||||
access:
|
access:
|
||||||
- read
|
- read
|
||||||
- notify
|
- notify
|
||||||
unit: mV
|
unit: mV
|
||||||
|
urn:miot-spec-v2:device:motion-sensor:0000A014:lumi-bmgl01:1:
|
||||||
|
prop.2.2:
|
||||||
|
value-list:
|
||||||
|
- value: 0
|
||||||
|
description: 0 Seconds
|
||||||
|
- value: 2
|
||||||
|
description: 2 Minutes
|
||||||
|
- value: 5
|
||||||
|
description: 5 Minutes
|
||||||
urn:miot-spec-v2:device:motor-controller:0000A01D:adp-adswb4:1:0000C837:
|
urn:miot-spec-v2:device:motor-controller:0000A01D:adp-adswb4:1:0000C837:
|
||||||
prop.2.1:
|
prop.2.1:
|
||||||
name: motor-switch
|
name: motor-switch
|
||||||
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:1: urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:2
|
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:1: urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:2
|
||||||
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:2:
|
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:2:
|
||||||
|
prop.2.5:
|
||||||
|
name: people-number
|
||||||
prop.2.8:
|
prop.2.8:
|
||||||
name: people-number
|
name: people-number
|
||||||
|
prop.2.11:
|
||||||
|
name: people-number
|
||||||
|
prop.2.14:
|
||||||
|
name: people-number
|
||||||
|
prop.2.17:
|
||||||
|
name: people-number
|
||||||
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:izq-24:2:0000C824:
|
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:izq-24:2:0000C824:
|
||||||
prop.2.6:
|
prop.2.6:
|
||||||
unit: cm
|
unit: cm
|
||||||
@@ -196,26 +384,70 @@ urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:1: urn:miot-spec-v2:devi
|
|||||||
urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:2: urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:3
|
urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:2: urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:3
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:3:
|
urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:3:
|
||||||
prop.5.1:
|
prop.5.1:
|
||||||
expr: round(src_value*6/1000000, 3)
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.01
|
||||||
|
expr: round(src_value*6/1000000, 2)
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp1md:1:
|
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp1md:1:
|
||||||
prop.2.2:
|
prop.2.2:
|
||||||
name: power-consumption
|
format: float
|
||||||
expr: round(src_value/1000, 3)
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.01
|
||||||
|
expr: round(src_value/1000, 2)
|
||||||
prop.2.3:
|
prop.2.3:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 3000
|
||||||
|
- 0.1
|
||||||
expr: round(src_value/10, 1)
|
expr: round(src_value/10, 1)
|
||||||
prop.2.4:
|
prop.2.4:
|
||||||
unit: mA
|
unit: mA
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:1: urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:2
|
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:1: urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:2
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:2:
|
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:2:
|
||||||
prop.2.3:
|
prop.2.3:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 3000
|
||||||
|
- 0.1
|
||||||
expr: round(src_value/10, 1)
|
expr: round(src_value/10, 1)
|
||||||
prop.2.4:
|
prop.2.4:
|
||||||
unit: mA
|
unit: mA
|
||||||
prop.3.2:
|
prop.3.2:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.1
|
||||||
expr: round(src_value/10, 1)
|
expr: round(src_value/10, 1)
|
||||||
|
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2d:1:
|
||||||
|
prop.3.2:
|
||||||
|
unit: mA
|
||||||
|
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp7pd:1:
|
||||||
|
prop.11.1:
|
||||||
|
unit: Wh
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.001
|
||||||
|
expr: (src_value*1000)
|
||||||
|
prop.11.4:
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 10000
|
||||||
|
- 0.01
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:1:
|
urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:1:
|
||||||
prop.11.1:
|
prop.11.1:
|
||||||
name: power-consumption
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.01
|
||||||
expr: round(src_value/100, 2)
|
expr: round(src_value/100, 2)
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:2: urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:1
|
urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:2: urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:1
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:giot-v8icm:1:0000C816:
|
urn:miot-spec-v2:device:outlet:0000A002:giot-v8icm:1:0000C816:
|
||||||
@@ -228,11 +460,20 @@ urn:miot-spec-v2:device:outlet:0000A002:qmi-psv3:1:0000C816:
|
|||||||
unit: mA
|
unit: mA
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:yutai-fsov8m:1:0000C816:
|
urn:miot-spec-v2:device:outlet:0000A002:yutai-fsov8m:1:0000C816:
|
||||||
prop.4.1:
|
prop.4.1:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 429497
|
||||||
|
- 0.01
|
||||||
expr: round(src_value/10000, 2)
|
expr: round(src_value/10000, 2)
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:1:0000C816: urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:2:0000C816
|
urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:1:0000C816: urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:2:0000C816
|
||||||
urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:2:0000C816:
|
urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:2:0000C816:
|
||||||
prop.3.1:
|
prop.3.1:
|
||||||
name: electric-power
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 350000
|
||||||
|
- 0.01
|
||||||
expr: round(src_value/100, 2)
|
expr: round(src_value/100, 2)
|
||||||
urn:miot-spec-v2:device:plant-monitor:0000A030:hhcc-v1:1:
|
urn:miot-spec-v2:device:plant-monitor:0000A030:hhcc-v1:1:
|
||||||
prop.2.1:
|
prop.2.1:
|
||||||
@@ -257,7 +498,10 @@ urn:miot-spec-v2:device:router:0000A036:xiaomi-rd08:1:
|
|||||||
urn:miot-spec-v2:device:safe-box:0000A042:loock-v1:1:
|
urn:miot-spec-v2:device:safe-box:0000A042:loock-v1:1:
|
||||||
prop.5.1:
|
prop.5.1:
|
||||||
name: contact-state
|
name: contact-state
|
||||||
expr: src_value!=1
|
expr: (src_value!=1)
|
||||||
|
urn:miot-spec-v2:device:speaker:0000A015:xiaomi-x08e:1:
|
||||||
|
prop.3.1:
|
||||||
|
name: playing-state-a
|
||||||
urn:miot-spec-v2:device:switch:0000A003:090615-x1tpm:1:0000D042:
|
urn:miot-spec-v2:device:switch:0000A003:090615-x1tpm:1:0000D042:
|
||||||
prop.27.3:
|
prop.27.3:
|
||||||
name: light-on
|
name: light-on
|
||||||
@@ -265,10 +509,20 @@ urn:miot-spec-v2:device:switch:0000A003:090615-x1tpm:1:0000D042:
|
|||||||
name: light-fan-on
|
name: light-fan-on
|
||||||
urn:miot-spec-v2:device:switch:0000A003:lxzn-cbcsmj:1:0000D00D:
|
urn:miot-spec-v2:device:switch:0000A003:lxzn-cbcsmj:1:0000D00D:
|
||||||
prop.3.1:
|
prop.3.1:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 99999999
|
||||||
|
- 0.01
|
||||||
expr: round(src_value/100, 2)
|
expr: round(src_value/100, 2)
|
||||||
prop.3.2:
|
prop.3.2:
|
||||||
expr: round(src_value/1000, 2)
|
unit: mA
|
||||||
prop.3.3:
|
prop.3.3:
|
||||||
|
format: float
|
||||||
|
value-range:
|
||||||
|
- 0
|
||||||
|
- 65535
|
||||||
|
- 0.1
|
||||||
expr: round(src_value/10, 1)
|
expr: round(src_value/10, 1)
|
||||||
urn:miot-spec-v2:device:thermostat:0000A031:suittc-wk168:1:
|
urn:miot-spec-v2:device:thermostat:0000A031:suittc-wk168:1:
|
||||||
prop.2.3:
|
prop.2.3:
|
||||||
@@ -310,6 +564,24 @@ urn:miot-spec-v2:device:water-purifier:0000A013:roswan-lte01:1:0000D05A:
|
|||||||
unit: ppm
|
unit: ppm
|
||||||
prop.4.2:
|
prop.4.2:
|
||||||
unit: ppm
|
unit: ppm
|
||||||
|
urn:miot-spec-v2:device:water-purifier:0000A013:xiaomi-s1200g:1:0000D05A:
|
||||||
|
prop.3.2:
|
||||||
|
unit: days
|
||||||
|
prop.3.3:
|
||||||
|
unit: days
|
||||||
|
prop.3.4:
|
||||||
|
unit: L
|
||||||
|
prop.3.5:
|
||||||
|
unit: L
|
||||||
|
prop.5.2:
|
||||||
|
unit: days
|
||||||
|
prop.5.3:
|
||||||
|
unit: days
|
||||||
|
prop.5.4:
|
||||||
|
unit: L
|
||||||
|
prop.5.5:
|
||||||
|
unit: L
|
||||||
|
urn:miot-spec-v2:device:water-purifier:0000A013:xiaomi-s1200g:2:0000D05A: urn:miot-spec-v2:device:water-purifier:0000A013:xiaomi-s1200g:1:0000D05A
|
||||||
urn:miot-spec-v2:device:water-purifier:0000A013:yunmi-s20:1:
|
urn:miot-spec-v2:device:water-purifier:0000A013:yunmi-s20:1:
|
||||||
prop.4.1:
|
prop.4.1:
|
||||||
unit: ppm
|
unit: ppm
|
||||||
|
|||||||
@@ -167,8 +167,8 @@ SPEC_DEVICE_TRANS_MAP: dict = {
|
|||||||
},
|
},
|
||||||
'battery': {
|
'battery': {
|
||||||
'required': {
|
'required': {
|
||||||
'properties': {
|
'actions': {
|
||||||
'battery-level': {'read'}
|
'start-charge'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -325,10 +325,13 @@ SPEC_DEVICE_TRANS_MAP: dict = {
|
|||||||
},
|
},
|
||||||
'play-control': {
|
'play-control': {
|
||||||
'required': {
|
'required': {
|
||||||
|
'properties': {
|
||||||
|
'playing-state': {'read'}
|
||||||
|
},
|
||||||
'actions': {'play'}
|
'actions': {'play'}
|
||||||
},
|
},
|
||||||
'optional': {
|
'optional': {
|
||||||
'properties': {'playing-state'},
|
'properties': {'play-loop-mode'},
|
||||||
'actions': {'pause', 'stop', 'next', 'previous'}
|
'actions': {'pause', 'stop', 'next', 'previous'}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -360,9 +363,49 @@ SPEC_DEVICE_TRANS_MAP: dict = {
|
|||||||
},
|
},
|
||||||
'optional': {
|
'optional': {
|
||||||
'play-control': {
|
'play-control': {
|
||||||
'required': {},
|
'required': {
|
||||||
|
'properties': {
|
||||||
|
'playing-state': {'read'}
|
||||||
|
}
|
||||||
|
},
|
||||||
'optional': {
|
'optional': {
|
||||||
'properties': {'playing-state'},
|
'properties': {'play-loop-mode'},
|
||||||
|
'actions': {'play', 'pause', 'stop', 'next', 'previous'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'entity': 'television'
|
||||||
|
},
|
||||||
|
'tv-box':{
|
||||||
|
'required': {
|
||||||
|
'speaker': {
|
||||||
|
'required': {
|
||||||
|
'properties': {
|
||||||
|
'volume': {'read', 'write'}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'optional': {
|
||||||
|
'properties': {'mute'}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'tv-box': {
|
||||||
|
'required': {
|
||||||
|
'actions': {'turn-off'}
|
||||||
|
},
|
||||||
|
'optional': {
|
||||||
|
'actions': {'turn-on'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'optional': {
|
||||||
|
'play-control': {
|
||||||
|
'required': {
|
||||||
|
'properties': {
|
||||||
|
'playing-state': {'read'}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'optional': {
|
||||||
|
'properties': {'play-loop-mode'},
|
||||||
'actions': {'play', 'pause', 'stop', 'next', 'previous'}
|
'actions': {'play', 'pause', 'stop', 'next', 'previous'}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ MIoT redirect web pages.
|
|||||||
import os
|
import os
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
_template = ''
|
web_template = ''
|
||||||
|
|
||||||
|
|
||||||
def _load_page_template():
|
def _load_page_template():
|
||||||
@@ -57,18 +57,18 @@ def _load_page_template():
|
|||||||
os.path.dirname(os.path.abspath(__file__)),
|
os.path.dirname(os.path.abspath(__file__)),
|
||||||
'resource/oauth_redirect_page.html')
|
'resource/oauth_redirect_page.html')
|
||||||
with open(path, 'r', encoding='utf-8') as f:
|
with open(path, 'r', encoding='utf-8') as f:
|
||||||
global _template
|
global web_template
|
||||||
_template = f.read()
|
web_template = f.read()
|
||||||
|
|
||||||
|
|
||||||
async def oauth_redirect_page(
|
async def oauth_redirect_page(
|
||||||
title: str, content: str, button: str, success: bool
|
title: str, content: str, button: str, success: bool
|
||||||
) -> str:
|
) -> str:
|
||||||
"""Return oauth redirect page."""
|
"""Return oauth redirect page."""
|
||||||
if _template == '':
|
if web_template == '':
|
||||||
await asyncio.get_running_loop().run_in_executor(
|
await asyncio.get_running_loop().run_in_executor(
|
||||||
None, _load_page_template)
|
None, _load_page_template)
|
||||||
web_page = _template.replace('TITLE_PLACEHOLDER', title)
|
web_page = web_template.replace('TITLE_PLACEHOLDER', title)
|
||||||
web_page = web_page.replace('CONTENT_PLACEHOLDER', content)
|
web_page = web_page.replace('CONTENT_PLACEHOLDER', content)
|
||||||
web_page = web_page.replace('BUTTON_PLACEHOLDER', button)
|
web_page = web_page.replace('BUTTON_PLACEHOLDER', button)
|
||||||
web_page = web_page.replace(
|
web_page = web_page.replace(
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ class Sensor(MIoTPropertyEntity, SensorEntity):
|
|||||||
self._attr_native_unit_of_measurement = list(
|
self._attr_native_unit_of_measurement = list(
|
||||||
unit_sets)[0] if unit_sets else None
|
unit_sets)[0] if unit_sets else None
|
||||||
# Set suggested precision
|
# Set suggested precision
|
||||||
if spec.format_ in {int, float} and spec.expr is None:
|
if spec.format_ == float:
|
||||||
self._attr_suggested_display_precision = spec.precision
|
self._attr_suggested_display_precision = spec.precision
|
||||||
# Set state_class
|
# Set state_class
|
||||||
if spec.state_class:
|
if spec.state_class:
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Integrierte Netzwerkkonfiguration",
|
"title": "Integrierte Netzwerkkonfiguration",
|
||||||
"description": "## Gebrauchsanweisung\r\n### Netzwerk-Erkennungsadresse\r\nWird verwendet, um zu überprüfen, ob das Netzwerk normal funktioniert. Wenn nicht festgelegt, wird die Standardadresse des Systems verwendet. Wenn die Standardadressprüfung fehlschlägt, können Sie versuchen, eine benutzerdefinierte Adresse einzugeben.\r\n- Sie können mehrere Erkennungsadressen eingeben, getrennt durch ein Komma, z. B. `8.8.8.8,https://www.bing.com`\r\n- Wenn es sich um eine IP-Adresse handelt, wird die Erkennung durch Ping durchgeführt. Wenn es sich um eine HTTP(s)-Adresse handelt, wird die Erkennung durch einen HTTP GET-Aufruf durchgeführt.\r\n- Wenn Sie die Standarderkennungsadresse des Systems wiederherstellen möchten, geben Sie ein Komma `,` ein und klicken Sie auf 'Weiter'.\r\n- **Diese Konfiguration ist global und Änderungen wirken sich auf andere Integrationsinstanzen aus. Bitte ändern Sie sie mit Vorsicht.**\r\n### Überprüfung der Netzwerkabhängigkeiten\r\nÜberprüfen Sie nacheinander, ob die folgenden Netzwerkabhängigkeiten zugänglich sind. Wenn die entsprechenden Adressen nicht zugänglich sind, führt dies zu Integrationsfehlern.\r\n- OAuth2-Authentifizierungsadresse: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API-Adresse: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API-Adresse: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker-Adresse: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Gebrauchsanweisung\r\n### Netzwerk-Erkennungsadresse\r\nWird verwendet, um zu überprüfen, ob das Netzwerk normal funktioniert. Wenn nicht festgelegt, wird die Standardadresse des Systems verwendet. Wenn die Standardadressprüfung fehlschlägt, können Sie versuchen, eine benutzerdefinierte Adresse einzugeben.\r\n- Sie können mehrere Erkennungsadressen eingeben, getrennt durch ein Komma, z. B. `8.8.8.8,https://www.bing.com`\r\n- Wenn es sich um eine IP-Adresse handelt, wird die Erkennung durch Ping durchgeführt. Wenn es sich um eine HTTP(s)-Adresse handelt, wird die Erkennung durch einen HTTP GET-Aufruf durchgeführt.\r\n- Wenn Sie die Standarderkennungsadresse des Systems wiederherstellen möchten, geben Sie ein Komma `,` ein und klicken Sie auf 'Weiter'.\r\n- **Diese Konfiguration ist global und Änderungen wirken sich auf andere Integrationsinstanzen aus. Bitte ändern Sie sie mit Vorsicht.**\r\n### Überprüfung der Netzwerkabhängigkeiten\r\nÜberprüfen Sie nacheinander, ob die folgenden Netzwerkabhängigkeiten zugänglich sind. Wenn die entsprechenden Adressen nicht zugänglich sind, führt dies zu Integrationsfehlern.\r\n- OAuth2-Authentifizierungsadresse: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API-Adresse: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API-Adresse: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker-Adresse: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Netzwerkerkennungsadresse",
|
"network_detect_addr": "Netzwerkerkennungsadresse",
|
||||||
"check_network_deps": "Überprüfung der Netzwerkabhängigkeiten"
|
"check_network_deps": "Überprüfung der Netzwerkabhängigkeiten"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Entitätskonvertierungsregeln aktualisieren",
|
"update_trans_rules": "Entitätskonvertierungsregeln aktualisieren",
|
||||||
"update_lan_ctrl_config": "LAN-Steuerungskonfiguration aktualisieren",
|
"update_lan_ctrl_config": "LAN-Steuerungskonfiguration aktualisieren",
|
||||||
"network_detect_config": "Integrierte Netzwerkkonfiguration",
|
"network_detect_config": "Integrierte Netzwerkkonfiguration",
|
||||||
"cover_closed_position": "Die Position der geschlossenen Vorhänge"
|
"cover_dead_zone_width": "Die Breite des toten Winkels des Vorhangs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Integrierte Netzwerkkonfiguration",
|
"title": "Integrierte Netzwerkkonfiguration",
|
||||||
"description": "## Gebrauchsanweisung\r\n### Netzwerk-Erkennungsadresse\r\nWird verwendet, um zu überprüfen, ob das Netzwerk normal funktioniert. Wenn nicht festgelegt, wird die Standardadresse des Systems verwendet. Wenn die Standardadressprüfung fehlschlägt, können Sie versuchen, eine benutzerdefinierte Adresse einzugeben.\r\n- Sie können mehrere Erkennungsadressen eingeben, getrennt durch ein Komma, z. B. `8.8.8.8,https://www.bing.com`\r\n- Wenn es sich um eine IP-Adresse handelt, wird die Erkennung durch Ping durchgeführt. Wenn es sich um eine HTTP(s)-Adresse handelt, wird die Erkennung durch einen HTTP GET-Aufruf durchgeführt.\r\n- Wenn Sie die Standarderkennungsadresse des Systems wiederherstellen möchten, geben Sie ein Komma `,` ein und klicken Sie auf 'Weiter'.\r\n- **Diese Konfiguration ist global und Änderungen wirken sich auf andere Integrationsinstanzen aus. Bitte ändern Sie sie mit Vorsicht.**\r\n### Überprüfung der Netzwerkabhängigkeiten\r\nÜberprüfen Sie nacheinander, ob die folgenden Netzwerkabhängigkeiten zugänglich sind. Wenn die entsprechenden Adressen nicht zugänglich sind, führt dies zu Integrationsfehlern.\r\n- OAuth2-Authentifizierungsadresse: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API-Adresse: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API-Adresse: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker-Adresse: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Gebrauchsanweisung\r\n### Netzwerk-Erkennungsadresse\r\nWird verwendet, um zu überprüfen, ob das Netzwerk normal funktioniert. Wenn nicht festgelegt, wird die Standardadresse des Systems verwendet. Wenn die Standardadressprüfung fehlschlägt, können Sie versuchen, eine benutzerdefinierte Adresse einzugeben.\r\n- Sie können mehrere Erkennungsadressen eingeben, getrennt durch ein Komma, z. B. `8.8.8.8,https://www.bing.com`\r\n- Wenn es sich um eine IP-Adresse handelt, wird die Erkennung durch Ping durchgeführt. Wenn es sich um eine HTTP(s)-Adresse handelt, wird die Erkennung durch einen HTTP GET-Aufruf durchgeführt.\r\n- Wenn Sie die Standarderkennungsadresse des Systems wiederherstellen möchten, geben Sie ein Komma `,` ein und klicken Sie auf 'Weiter'.\r\n- **Diese Konfiguration ist global und Änderungen wirken sich auf andere Integrationsinstanzen aus. Bitte ändern Sie sie mit Vorsicht.**\r\n### Überprüfung der Netzwerkabhängigkeiten\r\nÜberprüfen Sie nacheinander, ob die folgenden Netzwerkabhängigkeiten zugänglich sind. Wenn die entsprechenden Adressen nicht zugänglich sind, führt dies zu Integrationsfehlern.\r\n- OAuth2-Authentifizierungsadresse: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API-Adresse: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API-Adresse: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker-Adresse: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Netzwerkerkennungsadresse",
|
"network_detect_addr": "Netzwerkerkennungsadresse",
|
||||||
"check_network_deps": "Überprüfung der Netzwerkabhängigkeiten"
|
"check_network_deps": "Überprüfung der Netzwerkabhängigkeiten"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Bestätigen Sie die Konfiguration",
|
"title": "Bestätigen Sie die Konfiguration",
|
||||||
"description": "**{nick_name}**, bitte bestätigen Sie die neuesten Konfigurationsinformationen und klicken Sie dann auf \"Senden\". Die Integration wird mit den aktualisierten Konfigurationen erneut geladen.\r\n\r\nIntegrationsprache:\t{lang_new}\r\nBenutzername:\t{nick_name_new}\r\nAction-Debug-Modus:\t{action_debug}\r\nVerstecke Nicht-Standard-Entitäten:\t{hide_non_standard_entities}\r\nDie Position der geschlossenen Vorhänge:\t{cover_pos_new}\r\nGerätestatusänderungen anzeigen:\t{display_devices_changed_notify}\r\nGeräteänderungen:\t{devices_add} neue Geräte hinzufügen, {devices_remove} Geräte entfernen\r\nKonvertierungsregeländerungen:\tInsgesamt {trans_rules_count} Regeln, aktualisiert {trans_rules_count_success} Regeln",
|
"description": "**{nick_name}**, bitte bestätigen Sie die neuesten Konfigurationsinformationen und klicken Sie dann auf \"Senden\". Die Integration wird mit den aktualisierten Konfigurationen erneut geladen.\r\n\r\nIntegrationsprache:\t{lang_new}\r\nBenutzername:\t{nick_name_new}\r\nAction-Debug-Modus:\t{action_debug}\r\nVerstecke Nicht-Standard-Entitäten:\t{hide_non_standard_entities}\r\nDie Breite des toten Winkels des Vorhangs:\t{cover_width_new}\r\nGerätestatusänderungen anzeigen:\t{display_devices_changed_notify}\r\nGeräteänderungen:\t{devices_add} neue Geräte hinzufügen, {devices_remove} Geräte entfernen\r\nKonvertierungsregeländerungen:\tInsgesamt {trans_rules_count} Regeln, aktualisiert {trans_rules_count_success} Regeln",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Änderungen bestätigen"
|
"confirm": "Änderungen bestätigen"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Integrated Network Configuration",
|
"title": "Integrated Network Configuration",
|
||||||
"description": "## Usage Introduction\r\n### Network Detection Address\r\nUsed to check if the network is functioning properly. If not set, the system default address will be used. If the default address check fails, you can try entering a custom address.\r\n- You can enter multiple detection addresses, separated by commas, such as `8.8.8.8,https://www.bing.com`\r\n- If it is an IP address, detection will be done via ping. If it is an HTTP(s) address, detection will be done via HTTP GET request.\r\n- If you want to restore the system default detection address, please enter a comma `,` and click 'Next'.\r\n- **This configuration is global, and changes will affect other integration instances. Please modify with caution.**\r\n### Check Network Dependencies\r\nCheck the following network dependencies one by one to see if they are accessible. If the related addresses are not accessible, it will cause integration issues.\r\n- OAuth2 Authentication Address: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API Address: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API Address: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker Address: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Usage Introduction\r\n### Network Detection Address\r\nUsed to check if the network is functioning properly. If not set, the system default address will be used. If the default address check fails, you can try entering a custom address.\r\n- You can enter multiple detection addresses, separated by commas, such as `8.8.8.8,https://www.bing.com`\r\n- If it is an IP address, detection will be done via ping. If it is an HTTP(s) address, detection will be done via HTTP GET request.\r\n- If you want to restore the system default detection address, please enter a comma `,` and click 'Next'.\r\n- **This configuration is global, and changes will affect other integration instances. Please modify with caution.**\r\n### Check Network Dependencies\r\nCheck the following network dependencies one by one to see if they are accessible. If the related addresses are not accessible, it will cause integration issues.\r\n- OAuth2 Authentication Address: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API Address: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API Address: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker Address: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Network Detection Address",
|
"network_detect_addr": "Network Detection Address",
|
||||||
"check_network_deps": "Check Network Dependencies"
|
"check_network_deps": "Check Network Dependencies"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Update entity conversion rules",
|
"update_trans_rules": "Update entity conversion rules",
|
||||||
"update_lan_ctrl_config": "Update LAN control configuration",
|
"update_lan_ctrl_config": "Update LAN control configuration",
|
||||||
"network_detect_config": "Integrated network configuration",
|
"network_detect_config": "Integrated network configuration",
|
||||||
"cover_closed_position": "Cover closed position"
|
"cover_dead_zone_width": "Cover dead zone width"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Integrated Network Configuration",
|
"title": "Integrated Network Configuration",
|
||||||
"description": "## Usage Introduction\r\n### Network Detection Address\r\nUsed to check if the network is functioning properly. If not set, the system default address will be used. If the default address check fails, you can try entering a custom address.\r\n- You can enter multiple detection addresses, separated by commas, such as `8.8.8.8,https://www.bing.com`\r\n- If it is an IP address, detection will be done via ping. If it is an HTTP(s) address, detection will be done via HTTP GET request.\r\n- If you want to restore the system default detection address, please enter a comma `,` and click 'Next'.\r\n- **This configuration is global, and changes will affect other integration instances. Please modify with caution.**\r\n### Check Network Dependencies\r\nCheck the following network dependencies one by one to see if they are accessible. If the related addresses are not accessible, it will cause integration issues.\r\n- OAuth2 Authentication Address: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API Address: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API Address: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker Address: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Usage Introduction\r\n### Network Detection Address\r\nUsed to check if the network is functioning properly. If not set, the system default address will be used. If the default address check fails, you can try entering a custom address.\r\n- You can enter multiple detection addresses, separated by commas, such as `8.8.8.8,https://www.bing.com`\r\n- If it is an IP address, detection will be done via ping. If it is an HTTP(s) address, detection will be done via HTTP GET request.\r\n- If you want to restore the system default detection address, please enter a comma `,` and click 'Next'.\r\n- **This configuration is global, and changes will affect other integration instances. Please modify with caution.**\r\n### Check Network Dependencies\r\nCheck the following network dependencies one by one to see if they are accessible. If the related addresses are not accessible, it will cause integration issues.\r\n- OAuth2 Authentication Address: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API Address: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API Address: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker Address: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Network Detection Address",
|
"network_detect_addr": "Network Detection Address",
|
||||||
"check_network_deps": "Check Network Dependencies"
|
"check_network_deps": "Check Network Dependencies"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Confirm Configuration",
|
"title": "Confirm Configuration",
|
||||||
"description": "Hello **{nick_name}**, please confirm the latest configuration information and then Click SUBMIT.\r\nThe integration will reload using the updated configuration.\r\n\r\nIntegration Language:\t{lang_new}\r\nNickname:\t{nick_name_new}\r\nDebug mode for action:\t{action_debug}\r\nHide non-standard created entities:\t{hide_non_standard_entities}\r\nCover closed position:\t{cover_pos_new}\r\nDisplay device status change notifications:\t{display_devices_changed_notify}\r\nDevice Changes:\tAdd **{devices_add}** devices, Remove **{devices_remove}** devices\r\nTransformation rules change:\tThere are a total of **{trans_rules_count}** rules, and updated **{trans_rules_count_success}** rules",
|
"description": "Hello **{nick_name}**, please confirm the latest configuration information and then Click SUBMIT.\r\nThe integration will reload using the updated configuration.\r\n\r\nIntegration Language:\t{lang_new}\r\nNickname:\t{nick_name_new}\r\nDebug mode for action:\t{action_debug}\r\nHide non-standard created entities:\t{hide_non_standard_entities}\r\nCover dead zone width:\t{cover_width_new}\r\nDisplay device status change notifications:\t{display_devices_changed_notify}\r\nDevice Changes:\tAdd **{devices_add}** devices, Remove **{devices_remove}** devices\r\nTransformation rules change:\tThere are a total of **{trans_rules_count}** rules, and updated **{trans_rules_count_success}** rules",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Confirm the change"
|
"confirm": "Confirm the change"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configuración de Red Integrada",
|
"title": "Configuración de Red Integrada",
|
||||||
"description": "## Introducción al Uso\r\n### Dirección de Detección de Red\r\nSe utiliza para verificar si la red funciona correctamente. Si no se establece, se utilizará la dirección predeterminada del sistema. Si la verificación de la dirección predeterminada falla, puede intentar ingresar una dirección personalizada.\r\n- Puede ingresar varias direcciones de detección, separadas por comas, como `8.8.8.8,https://www.bing.com`\r\n- Si es una dirección IP, la detección se realizará mediante ping. Si es una dirección HTTP(s), la detección se realizará mediante una solicitud HTTP GET.\r\n- Si desea restaurar la dirección de detección predeterminada del sistema, ingrese una coma `,` y haga clic en 'Siguiente'.\r\n- **Esta configuración es global y los cambios afectarán a otras instancias de integración. Modifique con precaución.**\r\n### Verificar Dependencias de Red\r\nVerifique una por una las siguientes dependencias de red para ver si son accesibles. Si las direcciones relacionadas no son accesibles, causará problemas de integración.\r\n- Dirección de Autenticación OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Dirección de API HTTP de Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Dirección de API SPEC de Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Dirección del Broker MQTT de Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introducción al Uso\r\n### Dirección de Detección de Red\r\nSe utiliza para verificar si la red funciona correctamente. Si no se establece, se utilizará la dirección predeterminada del sistema. Si la verificación de la dirección predeterminada falla, puede intentar ingresar una dirección personalizada.\r\n- Puede ingresar varias direcciones de detección, separadas por comas, como `8.8.8.8,https://www.bing.com`\r\n- Si es una dirección IP, la detección se realizará mediante ping. Si es una dirección HTTP(s), la detección se realizará mediante una solicitud HTTP GET.\r\n- Si desea restaurar la dirección de detección predeterminada del sistema, ingrese una coma `,` y haga clic en 'Siguiente'.\r\n- **Esta configuración es global y los cambios afectarán a otras instancias de integración. Modifique con precaución.**\r\n### Verificar Dependencias de Red\r\nVerifique una por una las siguientes dependencias de red para ver si son accesibles. Si las direcciones relacionadas no son accesibles, causará problemas de integración.\r\n- Dirección de Autenticación OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Dirección de API HTTP de Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Dirección de API SPEC de Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Dirección del Broker MQTT de Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Dirección de Detección de Red",
|
"network_detect_addr": "Dirección de Detección de Red",
|
||||||
"check_network_deps": "Verificar Dependencias de Red"
|
"check_network_deps": "Verificar Dependencias de Red"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Actualizar reglas de conversión de entidad",
|
"update_trans_rules": "Actualizar reglas de conversión de entidad",
|
||||||
"update_lan_ctrl_config": "Actualizar configuración de control LAN",
|
"update_lan_ctrl_config": "Actualizar configuración de control LAN",
|
||||||
"network_detect_config": "Configuración de Red Integrada",
|
"network_detect_config": "Configuración de Red Integrada",
|
||||||
"cover_closed_position": "La posición de las cortinas cerradas"
|
"cover_dead_zone_width": "Anchura del punto ciego de la cortina"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configuración de Red Integrada",
|
"title": "Configuración de Red Integrada",
|
||||||
"description": "## Introducción al Uso\r\n### Dirección de Detección de Red\r\nSe utiliza para verificar si la red funciona correctamente. Si no se establece, se utilizará la dirección predeterminada del sistema. Si la verificación de la dirección predeterminada falla, puede intentar ingresar una dirección personalizada.\r\n- Puede ingresar varias direcciones de detección, separadas por comas, como `8.8.8.8,https://www.bing.com`\r\n- Si es una dirección IP, la detección se realizará mediante ping. Si es una dirección HTTP(s), la detección se realizará mediante una solicitud HTTP GET.\r\n- Si desea restaurar la dirección de detección predeterminada del sistema, ingrese una coma `,` y haga clic en 'Siguiente'.\r\n- **Esta configuración es global y los cambios afectarán a otras instancias de integración. Modifique con precaución.**\r\n### Verificar Dependencias de Red\r\nVerifique una por una las siguientes dependencias de red para ver si son accesibles. Si las direcciones relacionadas no son accesibles, causará problemas de integración.\r\n- Dirección de Autenticación OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Dirección de API HTTP de Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Dirección de API SPEC de Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Dirección del Broker MQTT de Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introducción al Uso\r\n### Dirección de Detección de Red\r\nSe utiliza para verificar si la red funciona correctamente. Si no se establece, se utilizará la dirección predeterminada del sistema. Si la verificación de la dirección predeterminada falla, puede intentar ingresar una dirección personalizada.\r\n- Puede ingresar varias direcciones de detección, separadas por comas, como `8.8.8.8,https://www.bing.com`\r\n- Si es una dirección IP, la detección se realizará mediante ping. Si es una dirección HTTP(s), la detección se realizará mediante una solicitud HTTP GET.\r\n- Si desea restaurar la dirección de detección predeterminada del sistema, ingrese una coma `,` y haga clic en 'Siguiente'.\r\n- **Esta configuración es global y los cambios afectarán a otras instancias de integración. Modifique con precaución.**\r\n### Verificar Dependencias de Red\r\nVerifique una por una las siguientes dependencias de red para ver si son accesibles. Si las direcciones relacionadas no son accesibles, causará problemas de integración.\r\n- Dirección de Autenticación OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Dirección de API HTTP de Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Dirección de API SPEC de Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Dirección del Broker MQTT de Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Dirección de Detección de Red",
|
"network_detect_addr": "Dirección de Detección de Red",
|
||||||
"check_network_deps": "Verificar Dependencias de Red"
|
"check_network_deps": "Verificar Dependencias de Red"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Confirmar configuración",
|
"title": "Confirmar configuración",
|
||||||
"description": "¡Hola, **{nick_name}**! Por favor, confirme la última información de configuración y haga clic en \"Enviar\" para finalizar la configuración.\r\nLa integración se volverá a cargar con la nueva configuración.\r\n\r\nIdioma de la integración:\t{lang_new}\r\nApodo de usuario:\t{nick_name_new}\r\nModo de depuración de Action:\t{action_debug}\r\nOcultar entidades generadas no estándar:\t{hide_non_standard_entities}\r\nLa posición de las cortinas cerradas:\t{cover_pos_new}\r\nMostrar notificaciones de cambio de estado del dispositivo:\t{display_devices_changed_notify}\r\nCambios de dispositivos:\t{devices_add} dispositivos agregados, {devices_remove} dispositivos eliminados\r\nCambios en las reglas de conversión:\t{trans_rules_count} reglas en total, {trans_rules_count_success} reglas actualizadas",
|
"description": "¡Hola, **{nick_name}**! Por favor, confirme la última información de configuración y haga clic en \"Enviar\" para finalizar la configuración.\r\nLa integración se volverá a cargar con la nueva configuración.\r\n\r\nIdioma de la integración:\t{lang_new}\r\nApodo de usuario:\t{nick_name_new}\r\nModo de depuración de Action:\t{action_debug}\r\nOcultar entidades generadas no estándar:\t{hide_non_standard_entities}\r\nAnchura del punto ciego de la cortina:\t{cover_width_new}\r\nMostrar notificaciones de cambio de estado del dispositivo:\t{display_devices_changed_notify}\r\nCambios de dispositivos:\t{devices_add} dispositivos agregados, {devices_remove} dispositivos eliminados\r\nCambios en las reglas de conversión:\t{trans_rules_count} reglas en total, {trans_rules_count_success} reglas actualizadas",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Confirmar modificación"
|
"confirm": "Confirmar modificación"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configuration Réseau Intégrée",
|
"title": "Configuration Réseau Intégrée",
|
||||||
"description": "## Introduction à l'Utilisation\r\n### Adresse de Détection Réseau\r\nUtilisé pour vérifier si le réseau fonctionne correctement. Si non défini, l'adresse par défaut du système sera utilisée. Si la vérification de l'adresse par défaut échoue, vous pouvez essayer de saisir une adresse personnalisée.\r\n- Vous pouvez entrer plusieurs adresses de détection, séparées par des virgules, telles que `8.8.8.8,https://www.bing.com`\r\n- S'il s'agit d'une adresse IP, la détection se fera par ping. S'il s'agit d'une adresse HTTP(s), la détection se fera par une requête HTTP GET.\r\n- Si vous souhaitez rétablir l'adresse de détection par défaut du système, veuillez entrer une virgule `,` et cliquer sur 'Suivant'.\r\n- **Cette configuration est globale et les modifications affecteront les autres instances d'intégration. Veuillez modifier avec prudence.**\r\n### Vérification des Dépendances Réseau\r\nVérifiez une par une les dépendances réseau suivantes pour voir si elles sont accessibles. Si les adresses associées ne sont pas accessibles, cela entraînera des problèmes d'intégration.\r\n- Adresse d'Authentification OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Adresse de l'API HTTP de Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Adresse de l'API SPEC de Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Adresse du Broker MQTT de Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introduction à l'Utilisation\r\n### Adresse de Détection Réseau\r\nUtilisé pour vérifier si le réseau fonctionne correctement. Si non défini, l'adresse par défaut du système sera utilisée. Si la vérification de l'adresse par défaut échoue, vous pouvez essayer de saisir une adresse personnalisée.\r\n- Vous pouvez entrer plusieurs adresses de détection, séparées par des virgules, telles que `8.8.8.8,https://www.bing.com`\r\n- S'il s'agit d'une adresse IP, la détection se fera par ping. S'il s'agit d'une adresse HTTP(s), la détection se fera par une requête HTTP GET.\r\n- Si vous souhaitez rétablir l'adresse de détection par défaut du système, veuillez entrer une virgule `,` et cliquer sur 'Suivant'.\r\n- **Cette configuration est globale et les modifications affecteront les autres instances d'intégration. Veuillez modifier avec prudence.**\r\n### Vérification des Dépendances Réseau\r\nVérifiez une par une les dépendances réseau suivantes pour voir si elles sont accessibles. Si les adresses associées ne sont pas accessibles, cela entraînera des problèmes d'intégration.\r\n- Adresse d'Authentification OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Adresse de l'API HTTP de Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Adresse de l'API SPEC de Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Adresse du Broker MQTT de Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Adresse de Détection Réseau",
|
"network_detect_addr": "Adresse de Détection Réseau",
|
||||||
"check_network_deps": "Vérification des Dépendances Réseau"
|
"check_network_deps": "Vérification des Dépendances Réseau"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Mettre à jour les règles de conversion d'entités",
|
"update_trans_rules": "Mettre à jour les règles de conversion d'entités",
|
||||||
"update_lan_ctrl_config": "Mettre à jour la configuration de contrôle LAN",
|
"update_lan_ctrl_config": "Mettre à jour la configuration de contrôle LAN",
|
||||||
"network_detect_config": "Configuration Réseau Intégrée",
|
"network_detect_config": "Configuration Réseau Intégrée",
|
||||||
"cover_closed_position": "La position des rideaux fermés"
|
"cover_dead_zone_width": "Largeur de la zone aveugle du rideau"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configuration Réseau Intégrée",
|
"title": "Configuration Réseau Intégrée",
|
||||||
"description": "## Introduction à l'Utilisation\r\n### Adresse de Détection Réseau\r\nUtilisé pour vérifier si le réseau fonctionne correctement. Si non défini, l'adresse par défaut du système sera utilisée. Si la vérification de l'adresse par défaut échoue, vous pouvez essayer de saisir une adresse personnalisée.\r\n- Vous pouvez entrer plusieurs adresses de détection, séparées par des virgules, telles que `8.8.8.8,https://www.bing.com`\r\n- S'il s'agit d'une adresse IP, la détection se fera par ping. S'il s'agit d'une adresse HTTP(s), la détection se fera par une requête HTTP GET.\r\n- Si vous souhaitez rétablir l'adresse de détection par défaut du système, veuillez entrer une virgule `,` et cliquer sur 'Suivant'.\r\n- **Cette configuration est globale et les modifications affecteront les autres instances d'intégration. Veuillez modifier avec prudence.**\r\n### Vérification des Dépendances Réseau\r\nVérifiez une par une les dépendances réseau suivantes pour voir si elles sont accessibles. Si les adresses associées ne sont pas accessibles, cela entraînera des problèmes d'intégration.\r\n- Adresse d'Authentification OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Adresse de l'API HTTP de Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Adresse de l'API SPEC de Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Adresse du Broker MQTT de Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introduction à l'Utilisation\r\n### Adresse de Détection Réseau\r\nUtilisé pour vérifier si le réseau fonctionne correctement. Si non défini, l'adresse par défaut du système sera utilisée. Si la vérification de l'adresse par défaut échoue, vous pouvez essayer de saisir une adresse personnalisée.\r\n- Vous pouvez entrer plusieurs adresses de détection, séparées par des virgules, telles que `8.8.8.8,https://www.bing.com`\r\n- S'il s'agit d'une adresse IP, la détection se fera par ping. S'il s'agit d'une adresse HTTP(s), la détection se fera par une requête HTTP GET.\r\n- Si vous souhaitez rétablir l'adresse de détection par défaut du système, veuillez entrer une virgule `,` et cliquer sur 'Suivant'.\r\n- **Cette configuration est globale et les modifications affecteront les autres instances d'intégration. Veuillez modifier avec prudence.**\r\n### Vérification des Dépendances Réseau\r\nVérifiez une par une les dépendances réseau suivantes pour voir si elles sont accessibles. Si les adresses associées ne sont pas accessibles, cela entraînera des problèmes d'intégration.\r\n- Adresse d'Authentification OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Adresse de l'API HTTP de Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Adresse de l'API SPEC de Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Adresse du Broker MQTT de Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Adresse de Détection Réseau",
|
"network_detect_addr": "Adresse de Détection Réseau",
|
||||||
"check_network_deps": "Vérification des Dépendances Réseau"
|
"check_network_deps": "Vérification des Dépendances Réseau"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Confirmer la configuration",
|
"title": "Confirmer la configuration",
|
||||||
"description": "**{nick_name}** Bonjour ! Veuillez confirmer les dernières informations de configuration et cliquer sur \"Soumettre\".\r\nL'intégration rechargera avec la nouvelle configuration.\r\n\r\nLangue d'intégration : {lang_new}\r\nPseudo utilisateur : {nick_name_new}\r\nMode de débogage d'action : {action_debug}\r\nMasquer les entités générées non standard : {hide_non_standard_entities}\r\nLa position des rideaux fermés:\t{cover_pos_new}\r\nAfficher les notifications de changement d'état de l'appareil:\t{display_devices_changed_notify}\r\nModifications des appareils : Ajouter **{devices_add}** appareils, supprimer **{devices_remove}** appareils\r\nModifications des règles de conversion : **{trans_rules_count}** règles au total, mise à jour de **{trans_rules_count_success}** règles",
|
"description": "**{nick_name}** Bonjour ! Veuillez confirmer les dernières informations de configuration et cliquer sur \"Soumettre\".\r\nL'intégration rechargera avec la nouvelle configuration.\r\n\r\nLangue d'intégration : {lang_new}\r\nPseudo utilisateur : {nick_name_new}\r\nMode de débogage d'action : {action_debug}\r\nMasquer les entités générées non standard : {hide_non_standard_entities}\r\nLargeur de la zone aveugle du rideau:\t{cover_width_new}\r\nAfficher les notifications de changement d'état de l'appareil:\t{display_devices_changed_notify}\r\nModifications des appareils : Ajouter **{devices_add}** appareils, supprimer **{devices_remove}** appareils\r\nModifications des règles de conversion : **{trans_rules_count}** règles au total, mise à jour de **{trans_rules_count_success}** règles",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Confirmer la modification"
|
"confirm": "Confirmer la modification"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configurazione di Rete Integrata",
|
"title": "Configurazione di Rete Integrata",
|
||||||
"description": "## Introduzione all'uso\r\n### Indirizzo di Rilevamento della Rete\r\nUtilizzato per verificare se la rete funziona correttamente. Se non impostato, verrà utilizzato l'indirizzo di default del sistema. Se il controllo dell'indirizzo predefinito fallisce, puoi provare a inserire un indirizzo personalizzato.\r\n- Puoi inserire più indirizzi di rilevamento, separati da virgole, come `8.8.8.8,https://www.bing.com`\r\n- Se è un indirizzo IP, il rilevamento verrà eseguito tramite ping. Se è un indirizzo HTTP(s), il rilevamento verrà eseguito tramite richiesta HTTP GET.\r\n- Se desideri ripristinare l'indirizzo di rilevamento predefinito del sistema, inserisci una virgola `,` e fai clic su 'Avanti'.\r\n- **Questa configurazione è globale e le modifiche influenzeranno altre istanze di integrazione. Si prega di modificare con cautela.**\r\n### Controlla le Dipendenze di Rete\r\nControlla una per una le seguenti dipendenze di rete per vedere se sono accessibili. Se gli indirizzi correlati non sono accessibili, causerà problemi di integrazione.\r\n- Indirizzo di Autenticazione OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Indirizzo API HTTP di Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Indirizzo API SPEC di Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Indirizzo del Broker MQTT di Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introduzione all'uso\r\n### Indirizzo di Rilevamento della Rete\r\nUtilizzato per verificare se la rete funziona correttamente. Se non impostato, verrà utilizzato l'indirizzo di default del sistema. Se il controllo dell'indirizzo predefinito fallisce, puoi provare a inserire un indirizzo personalizzato.\r\n- Puoi inserire più indirizzi di rilevamento, separati da virgole, come `8.8.8.8,https://www.bing.com`\r\n- Se è un indirizzo IP, il rilevamento verrà eseguito tramite ping. Se è un indirizzo HTTP(s), il rilevamento verrà eseguito tramite richiesta HTTP GET.\r\n- Se desideri ripristinare l'indirizzo di rilevamento predefinito del sistema, inserisci una virgola `,` e fai clic su 'Avanti'.\r\n- **Questa configurazione è globale e le modifiche influenzeranno altre istanze di integrazione. Si prega di modificare con cautela.**\r\n### Controlla le Dipendenze di Rete\r\nControlla una per una le seguenti dipendenze di rete per vedere se sono accessibili. Se gli indirizzi correlati non sono accessibili, causerà problemi di integrazione.\r\n- Indirizzo di Autenticazione OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Indirizzo API HTTP di Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Indirizzo API SPEC di Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Indirizzo del Broker MQTT di Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Indirizzo di Rilevamento della Rete",
|
"network_detect_addr": "Indirizzo di Rilevamento della Rete",
|
||||||
"check_network_deps": "Controlla le Dipendenze di Rete"
|
"check_network_deps": "Controlla le Dipendenze di Rete"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Aggiorna le regole di conversione delle entità",
|
"update_trans_rules": "Aggiorna le regole di conversione delle entità",
|
||||||
"update_lan_ctrl_config": "Aggiorna configurazione del controllo LAN",
|
"update_lan_ctrl_config": "Aggiorna configurazione del controllo LAN",
|
||||||
"network_detect_config": "Configurazione di Rete Integrata",
|
"network_detect_config": "Configurazione di Rete Integrata",
|
||||||
"cover_closed_position": "La posizione delle tende chiuse"
|
"cover_dead_zone_width": "Larghezza dell’angolo cieco della tenda"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configurazione di Rete Integrata",
|
"title": "Configurazione di Rete Integrata",
|
||||||
"description": "## Introduzione all'uso\r\n### Indirizzo di Rilevamento della Rete\r\nUtilizzato per verificare se la rete funziona correttamente. Se non impostato, verrà utilizzato l'indirizzo di default del sistema. Se il controllo dell'indirizzo predefinito fallisce, puoi provare a inserire un indirizzo personalizzato.\r\n- Puoi inserire più indirizzi di rilevamento, separati da virgole, come `8.8.8.8,https://www.bing.com`\r\n- Se è un indirizzo IP, il rilevamento verrà eseguito tramite ping. Se è un indirizzo HTTP(s), il rilevamento verrà eseguito tramite richiesta HTTP GET.\r\n- Se desideri ripristinare l'indirizzo di rilevamento predefinito del sistema, inserisci una virgola `,` e fai clic su 'Avanti'.\r\n- **Questa configurazione è globale e le modifiche influenzeranno altre istanze di integrazione. Si prega di modificare con cautela.**\r\n### Controlla le Dipendenze di Rete\r\nControlla una per una le seguenti dipendenze di rete per vedere se sono accessibili. Se gli indirizzi correlati non sono accessibili, causerà problemi di integrazione.\r\n- Indirizzo di Autenticazione OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Indirizzo API HTTP di Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Indirizzo API SPEC di Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Indirizzo del Broker MQTT di Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introduzione all'uso\r\n### Indirizzo di Rilevamento della Rete\r\nUtilizzato per verificare se la rete funziona correttamente. Se non impostato, verrà utilizzato l'indirizzo di default del sistema. Se il controllo dell'indirizzo predefinito fallisce, puoi provare a inserire un indirizzo personalizzato.\r\n- Puoi inserire più indirizzi di rilevamento, separati da virgole, come `8.8.8.8,https://www.bing.com`\r\n- Se è un indirizzo IP, il rilevamento verrà eseguito tramite ping. Se è un indirizzo HTTP(s), il rilevamento verrà eseguito tramite richiesta HTTP GET.\r\n- Se desideri ripristinare l'indirizzo di rilevamento predefinito del sistema, inserisci una virgola `,` e fai clic su 'Avanti'.\r\n- **Questa configurazione è globale e le modifiche influenzeranno altre istanze di integrazione. Si prega di modificare con cautela.**\r\n### Controlla le Dipendenze di Rete\r\nControlla una per una le seguenti dipendenze di rete per vedere se sono accessibili. Se gli indirizzi correlati non sono accessibili, causerà problemi di integrazione.\r\n- Indirizzo di Autenticazione OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Indirizzo API HTTP di Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Indirizzo API SPEC di Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Indirizzo del Broker MQTT di Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Indirizzo di Rilevamento della Rete",
|
"network_detect_addr": "Indirizzo di Rilevamento della Rete",
|
||||||
"check_network_deps": "Controlla le Dipendenze di Rete"
|
"check_network_deps": "Controlla le Dipendenze di Rete"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Conferma Configurazione",
|
"title": "Conferma Configurazione",
|
||||||
"description": "Ciao **{nick_name}**, si prega di confermare le informazioni di configurazione più recenti e poi fare clic su INVIA.\r\nL'integrazione verrà ricaricata utilizzando la configurazione aggiornata.\r\n\r\nLingua dell'Integrazione:\t{lang_new}\r\nSoprannome:\t{nick_name_new}\r\nModalità di debug per azione:\t{action_debug}\r\nNascondi entità create non standard:\t{hide_non_standard_entities}\r\nLa posizione delle tende chiuse:\t{cover_pos_new}\r\nMostra notifiche di cambio stato del dispositivo:\t{display_devices_changed_notify}\r\nCambiamenti del Dispositivo:\tAggiungi **{devices_add}** dispositivi, Rimuovi **{devices_remove}** dispositivi\r\nCambiamenti delle regole di trasformazione:\tCi sono un totale di **{trans_rules_count}** regole, e aggiornate **{trans_rules_count_success}** regole",
|
"description": "Ciao **{nick_name}**, si prega di confermare le informazioni di configurazione più recenti e poi fare clic su INVIA.\r\nL'integrazione verrà ricaricata utilizzando la configurazione aggiornata.\r\n\r\nLingua dell'Integrazione:\t{lang_new}\r\nSoprannome:\t{nick_name_new}\r\nModalità di debug per azione:\t{action_debug}\r\nNascondi entità create non standard:\t{hide_non_standard_entities}\r\nLarghezza dell’angolo cieco della tenda:\t{cover_width_new}\r\nMostra notifiche di cambio stato del dispositivo:\t{display_devices_changed_notify}\r\nCambiamenti del Dispositivo:\tAggiungi **{devices_add}** dispositivi, Rimuovi **{devices_remove}** dispositivi\r\nCambiamenti delle regole di trasformazione:\tCi sono un totale di **{trans_rules_count}** regole, e aggiornate **{trans_rules_count_success}** regole",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Conferma la modifica"
|
"confirm": "Conferma la modifica"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "統合ネットワーク構成",
|
"title": "統合ネットワーク構成",
|
||||||
"description": "## 使用方法の紹介\r\n### ネットワーク検出アドレス\r\nネットワークが正常に機能しているかどうかを確認するために使用されます。設定されていない場合、システムのデフォルトアドレスが使用されます。デフォルトアドレスのチェックが失敗した場合は、カスタムアドレスを入力してみてください。\r\n- 複数の検出アドレスを入力できます。アドレスはコンマで区切ります。例:`8.8.8.8,https://www.bing.com`\r\n- IPアドレスの場合、pingによる検出が行われます。HTTP(s)アドレスの場合、HTTP GETリクエストによる検出が行われます。\r\n- システムのデフォルト検出アドレスを復元する場合は、カンマ `,` を入力して「次へ」をクリックしてください。\r\n- **この設定はグローバルであり、変更は他の統合インスタンスに影響を与えます。慎重に変更してください。**\r\n### ネットワーク依存関係のチェック\r\n次のネットワーク依存関係がアクセス可能かどうかを順番に確認します。関連するアドレスにアクセスできない場合、統合に問題が発生します。\r\n- OAuth2 認証アドレス: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API アドレス: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API アドレス: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT ブローカーアドレス: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## 使用方法の紹介\r\n### ネットワーク検出アドレス\r\nネットワークが正常に機能しているかどうかを確認するために使用されます。設定されていない場合、システムのデフォルトアドレスが使用されます。デフォルトアドレスのチェックが失敗した場合は、カスタムアドレスを入力してみてください。\r\n- 複数の検出アドレスを入力できます。アドレスはコンマで区切ります。例:`8.8.8.8,https://www.bing.com`\r\n- IPアドレスの場合、pingによる検出が行われます。HTTP(s)アドレスの場合、HTTP GETリクエストによる検出が行われます。\r\n- システムのデフォルト検出アドレスを復元する場合は、カンマ `,` を入力して「次へ」をクリックしてください。\r\n- **この設定はグローバルであり、変更は他の統合インスタンスに影響を与えます。慎重に変更してください。**\r\n### ネットワーク依存関係のチェック\r\n次のネットワーク依存関係がアクセス可能かどうかを順番に確認します。関連するアドレスにアクセスできない場合、統合に問題が発生します。\r\n- OAuth2 認証アドレス: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API アドレス: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API アドレス: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT ブローカーアドレス: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "ネットワーク検出アドレス",
|
"network_detect_addr": "ネットワーク検出アドレス",
|
||||||
"check_network_deps": "ネットワーク依存関係のチェック"
|
"check_network_deps": "ネットワーク依存関係のチェック"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "エンティティ変換ルールを更新する",
|
"update_trans_rules": "エンティティ変換ルールを更新する",
|
||||||
"update_lan_ctrl_config": "LAN制御構成を更新する",
|
"update_lan_ctrl_config": "LAN制御構成を更新する",
|
||||||
"network_detect_config": "統合ネットワーク構成",
|
"network_detect_config": "統合ネットワーク構成",
|
||||||
"cover_closed_position": "カーテンを閉じた位置"
|
"cover_dead_zone_width": "カーテンの死角幅"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "統合ネットワーク構成",
|
"title": "統合ネットワーク構成",
|
||||||
"description": "## 使用方法の紹介\r\n### ネットワーク検出アドレス\r\nネットワークが正常に機能しているかどうかを確認するために使用されます。設定されていない場合、システムのデフォルトアドレスが使用されます。デフォルトアドレスのチェックが失敗した場合は、カスタムアドレスを入力してみてください。\r\n- 複数の検出アドレスを入力できます。アドレスはコンマで区切ります。例:`8.8.8.8,https://www.bing.com`\r\n- IPアドレスの場合、pingによる検出が行われます。HTTP(s)アドレスの場合、HTTP GETリクエストによる検出が行われます。\r\n- システムのデフォルト検出アドレスを復元する場合は、カンマ `,` を入力して「次へ」をクリックしてください。\r\n- **この設定はグローバルであり、変更は他の統合インスタンスに影響を与えます。慎重に変更してください。**\r\n### ネットワーク依存関係のチェック\r\n次のネットワーク依存関係がアクセス可能かどうかを順番に確認します。関連するアドレスにアクセスできない場合、統合に問題が発生します。\r\n- OAuth2 認証アドレス: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API アドレス: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API アドレス: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT ブローカーアドレス: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## 使用方法の紹介\r\n### ネットワーク検出アドレス\r\nネットワークが正常に機能しているかどうかを確認するために使用されます。設定されていない場合、システムのデフォルトアドレスが使用されます。デフォルトアドレスのチェックが失敗した場合は、カスタムアドレスを入力してみてください。\r\n- 複数の検出アドレスを入力できます。アドレスはコンマで区切ります。例:`8.8.8.8,https://www.bing.com`\r\n- IPアドレスの場合、pingによる検出が行われます。HTTP(s)アドレスの場合、HTTP GETリクエストによる検出が行われます。\r\n- システムのデフォルト検出アドレスを復元する場合は、カンマ `,` を入力して「次へ」をクリックしてください。\r\n- **この設定はグローバルであり、変更は他の統合インスタンスに影響を与えます。慎重に変更してください。**\r\n### ネットワーク依存関係のチェック\r\n次のネットワーク依存関係がアクセス可能かどうかを順番に確認します。関連するアドレスにアクセスできない場合、統合に問題が発生します。\r\n- OAuth2 認証アドレス: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API アドレス: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API アドレス: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT ブローカーアドレス: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "ネットワーク検出アドレス",
|
"network_detect_addr": "ネットワーク検出アドレス",
|
||||||
"check_network_deps": "ネットワーク依存関係のチェック"
|
"check_network_deps": "ネットワーク依存関係のチェック"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "構成を確認する",
|
"title": "構成を確認する",
|
||||||
"description": "**{nick_name}** さん、こんにちは! 最新の構成情報を確認してください。[送信] をクリックして、更新された構成を使用して再度読み込みます。\r\n\r\n統合言語:\t{lang_new}\r\nユーザー名:\t{nick_name_new}\r\nAction デバッグモード:\t{action_debug}\r\n非標準生成エンティティを非表示にする:\t{hide_non_standard_entities}\r\nカーテンを閉じた位置:\t{cover_pos_new}\r\nデバイスの状態変化通知を表示:\t{display_devices_changed_notify}\r\nデバイス変更:\t追加 **{devices_add}** 個のデバイス、削除 **{devices_remove}** 個のデバイス\r\n変換ルール変更:\t合計 **{trans_rules_count}** 個の規則、更新 **{trans_rules_count_success}** 個の規則",
|
"description": "**{nick_name}** さん、こんにちは! 最新の構成情報を確認してください。[送信] をクリックして、更新された構成を使用して再度読み込みます。\r\n\r\n統合言語:\t{lang_new}\r\nユーザー名:\t{nick_name_new}\r\nAction デバッグモード:\t{action_debug}\r\n非標準生成エンティティを非表示にする:\t{hide_non_standard_entities}\r\nカーテンの死角幅:\t{cover_width_new}\r\nデバイスの状態変化通知を表示:\t{display_devices_changed_notify}\r\nデバイス変更:\t追加 **{devices_add}** 個のデバイス、削除 **{devices_remove}** 個のデバイス\r\n変換ルール変更:\t合計 **{trans_rules_count}** 個の規則、更新 **{trans_rules_count_success}** 個の規則",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "変更を確認する"
|
"confirm": "変更を確認する"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Geïntegreerde Netwerkconfiguratie",
|
"title": "Geïntegreerde Netwerkconfiguratie",
|
||||||
"description": "## Gebruiksinstructie\r\n### Netwerkdetectieadres\r\nWordt gebruikt om te controleren of het netwerk correct functioneert. Als dit niet is ingesteld, wordt het standaardadres van het systeem gebruikt. Als de standaardadrescontrole mislukt, kunt u proberen een aangepast adres in te voeren.\r\n- U kunt meerdere detectieadressen invoeren, gescheiden door komma's, zoals `8.8.8.8,https://www.bing.com`\r\n- Als het een IP-adres is, wordt de detectie uitgevoerd via ping. Als het een HTTP(s)-adres is, wordt de detectie uitgevoerd via een HTTP GET-verzoek.\r\n- Als u het standaarddetectieadres van het systeem wilt herstellen, voert u een komma `,` in en klikt u op 'Volgende'.\r\n- **Deze configuratie is globaal en wijzigingen zullen andere integratie-instanties beïnvloeden. Wijzig met voorzichtigheid.**\r\n### Controleer Netwerkafhankelijkheden\r\nControleer een voor een de volgende netwerkafhankelijkheden om te zien of ze toegankelijk zijn. Als de gerelateerde adressen niet toegankelijk zijn, zal dit integratieproblemen veroorzaken.\r\n- OAuth2-authenticatieadres: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API-adres: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API-adres: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker-adres: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Gebruiksinstructie\r\n### Netwerkdetectieadres\r\nWordt gebruikt om te controleren of het netwerk correct functioneert. Als dit niet is ingesteld, wordt het standaardadres van het systeem gebruikt. Als de standaardadrescontrole mislukt, kunt u proberen een aangepast adres in te voeren.\r\n- U kunt meerdere detectieadressen invoeren, gescheiden door komma's, zoals `8.8.8.8,https://www.bing.com`\r\n- Als het een IP-adres is, wordt de detectie uitgevoerd via ping. Als het een HTTP(s)-adres is, wordt de detectie uitgevoerd via een HTTP GET-verzoek.\r\n- Als u het standaarddetectieadres van het systeem wilt herstellen, voert u een komma `,` in en klikt u op 'Volgende'.\r\n- **Deze configuratie is globaal en wijzigingen zullen andere integratie-instanties beïnvloeden. Wijzig met voorzichtigheid.**\r\n### Controleer Netwerkafhankelijkheden\r\nControleer een voor een de volgende netwerkafhankelijkheden om te zien of ze toegankelijk zijn. Als de gerelateerde adressen niet toegankelijk zijn, zal dit integratieproblemen veroorzaken.\r\n- OAuth2-authenticatieadres: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API-adres: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API-adres: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker-adres: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Netwerkdetectieadres",
|
"network_detect_addr": "Netwerkdetectieadres",
|
||||||
"check_network_deps": "Controleer Netwerkafhankelijkheden"
|
"check_network_deps": "Controleer Netwerkafhankelijkheden"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Werk entiteitsconversieregels bij",
|
"update_trans_rules": "Werk entiteitsconversieregels bij",
|
||||||
"update_lan_ctrl_config": "Werk LAN controleconfiguratie bij",
|
"update_lan_ctrl_config": "Werk LAN controleconfiguratie bij",
|
||||||
"network_detect_config": "Geïntegreerde Netwerkconfiguratie",
|
"network_detect_config": "Geïntegreerde Netwerkconfiguratie",
|
||||||
"cover_closed_position": "De positie van de gesloten gordijnen"
|
"cover_dead_zone_width": "Breedte van de dode hoek van het gordijn"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Geïntegreerde Netwerkconfiguratie",
|
"title": "Geïntegreerde Netwerkconfiguratie",
|
||||||
"description": "## Gebruiksinstructie\r\n### Netwerkdetectieadres\r\nWordt gebruikt om te controleren of het netwerk correct functioneert. Als dit niet is ingesteld, wordt het standaardadres van het systeem gebruikt. Als de standaardadrescontrole mislukt, kunt u proberen een aangepast adres in te voeren.\r\n- U kunt meerdere detectieadressen invoeren, gescheiden door komma's, zoals `8.8.8.8,https://www.bing.com`\r\n- Als het een IP-adres is, wordt de detectie uitgevoerd via ping. Als het een HTTP(s)-adres is, wordt de detectie uitgevoerd via een HTTP GET-verzoek.\r\n- Als u het standaarddetectieadres van het systeem wilt herstellen, voert u een komma `,` in en klikt u op 'Volgende'.\r\n- **Deze configuratie is globaal en wijzigingen zullen andere integratie-instanties beïnvloeden. Wijzig met voorzichtigheid.**\r\n### Controleer Netwerkafhankelijkheden\r\nControleer een voor een de volgende netwerkafhankelijkheden om te zien of ze toegankelijk zijn. Als de gerelateerde adressen niet toegankelijk zijn, zal dit integratieproblemen veroorzaken.\r\n- OAuth2-authenticatieadres: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API-adres: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API-adres: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker-adres: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Gebruiksinstructie\r\n### Netwerkdetectieadres\r\nWordt gebruikt om te controleren of het netwerk correct functioneert. Als dit niet is ingesteld, wordt het standaardadres van het systeem gebruikt. Als de standaardadrescontrole mislukt, kunt u proberen een aangepast adres in te voeren.\r\n- U kunt meerdere detectieadressen invoeren, gescheiden door komma's, zoals `8.8.8.8,https://www.bing.com`\r\n- Als het een IP-adres is, wordt de detectie uitgevoerd via ping. Als het een HTTP(s)-adres is, wordt de detectie uitgevoerd via een HTTP GET-verzoek.\r\n- Als u het standaarddetectieadres van het systeem wilt herstellen, voert u een komma `,` in en klikt u op 'Volgende'.\r\n- **Deze configuratie is globaal en wijzigingen zullen andere integratie-instanties beïnvloeden. Wijzig met voorzichtigheid.**\r\n### Controleer Netwerkafhankelijkheden\r\nControleer een voor een de volgende netwerkafhankelijkheden om te zien of ze toegankelijk zijn. Als de gerelateerde adressen niet toegankelijk zijn, zal dit integratieproblemen veroorzaken.\r\n- OAuth2-authenticatieadres: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API-adres: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API-adres: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker-adres: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Netwerkdetectieadres",
|
"network_detect_addr": "Netwerkdetectieadres",
|
||||||
"check_network_deps": "Controleer Netwerkafhankelijkheden"
|
"check_network_deps": "Controleer Netwerkafhankelijkheden"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Bevestig Configuratie",
|
"title": "Bevestig Configuratie",
|
||||||
"description": "Hallo **{nick_name}**, bevestig alstublieft de nieuwste configuratie-informatie en klik vervolgens op INDENKEN.\r\nDe integratie zal opnieuw laden met de bijgewerkte configuratie.\r\n\r\nIntegratietaal:\t{lang_new}\r\nBijnaam:\t{nick_name_new}\r\nDebugmodus voor actie:\t{action_debug}\r\nVerberg niet-standaard gemaakte entiteiten:\t{hide_non_standard_entities}\r\nDe positie van de gesloten gordijnen:\t{cover_pos_new}\r\nApparaatstatuswijzigingen weergeven:\t{display_devices_changed_notify}\r\nWijzigingen in apparaten:\tVoeg **{devices_add}** apparaten toe, Verwijder **{devices_remove}** apparaten\r\nWijzigingen in transformateregels:\tEr zijn in totaal **{trans_rules_count}** regels, en **{trans_rules_count_success}** regels zijn bijgewerkt",
|
"description": "Hallo **{nick_name}**, bevestig alstublieft de nieuwste configuratie-informatie en klik vervolgens op INDENKEN.\r\nDe integratie zal opnieuw laden met de bijgewerkte configuratie.\r\n\r\nIntegratietaal:\t{lang_new}\r\nBijnaam:\t{nick_name_new}\r\nDebugmodus voor actie:\t{action_debug}\r\nVerberg niet-standaard gemaakte entiteiten:\t{hide_non_standard_entities}\r\nBreedte van de dode hoek van het gordijn:\t{cover_width_new}\r\nApparaatstatuswijzigingen weergeven:\t{display_devices_changed_notify}\r\nWijzigingen in apparaten:\tVoeg **{devices_add}** apparaten toe, Verwijder **{devices_remove}** apparaten\r\nWijzigingen in transformateregels:\tEr zijn in totaal **{trans_rules_count}** regels, en **{trans_rules_count_success}** regels zijn bijgewerkt",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Bevestig de wijziging"
|
"confirm": "Bevestig de wijziging"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configuração de Detecção de Rede",
|
"title": "Configuração de Detecção de Rede",
|
||||||
"description": "## Introdução ao Uso\r\n### Endereço de Detecção de Rede\r\nUsado para verificar se a rede está funcionando corretamente. Se não for definido, o endereço padrão do sistema será usado. Se a verificação do endereço padrão falhar, você pode tentar inserir um endereço personalizado.\r\n- Você pode inserir vários endereços de detecção, separados por vírgulas, como `8.8.8.8,https://www.bing.com`\r\n- Se for um endereço IP, a detecção será feita via ping. Se for um endereço HTTP(s), a detecção será feita via solicitação HTTP GET.\r\n- Se você deseja restaurar o endereço de detecção padrão do sistema, insira uma vírgula `,` e clique em 'Próximo'.\r\n- **Esta configuração é global e as alterações afetarão outras instâncias de integração. Modifique com cautela.**\r\n### Verificar Dependências de Rede\r\nVerifique uma por uma as seguintes dependências de rede para ver se são acessíveis. Se os endereços relacionados não forem acessíveis, isso causará problemas de integração.\r\n- Endereço de Autenticação OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Endereço da API HTTP da Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Endereço da API SPEC da Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Endereço do Broker MQTT da Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introdução ao Uso\r\n### Endereço de Detecção de Rede\r\nUsado para verificar se a rede está funcionando corretamente. Se não for definido, o endereço padrão do sistema será usado. Se a verificação do endereço padrão falhar, você pode tentar inserir um endereço personalizado.\r\n- Você pode inserir vários endereços de detecção, separados por vírgulas, como `8.8.8.8,https://www.bing.com`\r\n- Se for um endereço IP, a detecção será feita via ping. Se for um endereço HTTP(s), a detecção será feita via solicitação HTTP GET.\r\n- Se você deseja restaurar o endereço de detecção padrão do sistema, insira uma vírgula `,` e clique em 'Próximo'.\r\n- **Esta configuração é global e as alterações afetarão outras instâncias de integração. Modifique com cautela.**\r\n### Verificar Dependências de Rede\r\nVerifique uma por uma as seguintes dependências de rede para ver se são acessíveis. Se os endereços relacionados não forem acessíveis, isso causará problemas de integração.\r\n- Endereço de Autenticação OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Endereço da API HTTP da Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Endereço da API SPEC da Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Endereço do Broker MQTT da Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Endereço de Detecção de Rede",
|
"network_detect_addr": "Endereço de Detecção de Rede",
|
||||||
"check_network_deps": "Verificar Dependências de Rede"
|
"check_network_deps": "Verificar Dependências de Rede"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Atualizar regras de conversão de entidades",
|
"update_trans_rules": "Atualizar regras de conversão de entidades",
|
||||||
"update_lan_ctrl_config": "Atualizar configuração de controle LAN",
|
"update_lan_ctrl_config": "Atualizar configuração de controle LAN",
|
||||||
"network_detect_config": "Configuração de Rede Integrada",
|
"network_detect_config": "Configuração de Rede Integrada",
|
||||||
"cover_closed_position": "A posição das cortinas fechadas"
|
"cover_dead_zone_width": "Largura da área cega da cortina"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configuração de Detecção de Rede",
|
"title": "Configuração de Detecção de Rede",
|
||||||
"description": "## Introdução ao Uso\r\n### Endereço de Detecção de Rede\r\nUsado para verificar se a rede está funcionando corretamente. Se não for definido, o endereço padrão do sistema será usado. Se a verificação do endereço padrão falhar, você pode tentar inserir um endereço personalizado.\r\n- Você pode inserir vários endereços de detecção, separados por vírgulas, como `8.8.8.8,https://www.bing.com`\r\n- Se for um endereço IP, a detecção será feita via ping. Se for um endereço HTTP(s), a detecção será feita via solicitação HTTP GET.\r\n- Se você deseja restaurar o endereço de detecção padrão do sistema, insira uma vírgula `,` e clique em 'Próximo'.\r\n- **Esta configuração é global e as alterações afetarão outras instâncias de integração. Modifique com cautela.**\r\n### Verificar Dependências de Rede\r\nVerifique uma por uma as seguintes dependências de rede para ver se são acessíveis. Se os endereços relacionados não forem acessíveis, isso causará problemas de integração.\r\n- Endereço de Autenticação OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Endereço da API HTTP da Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Endereço da API SPEC da Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Endereço do Broker MQTT da Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introdução ao Uso\r\n### Endereço de Detecção de Rede\r\nUsado para verificar se a rede está funcionando corretamente. Se não for definido, o endereço padrão do sistema será usado. Se a verificação do endereço padrão falhar, você pode tentar inserir um endereço personalizado.\r\n- Você pode inserir vários endereços de detecção, separados por vírgulas, como `8.8.8.8,https://www.bing.com`\r\n- Se for um endereço IP, a detecção será feita via ping. Se for um endereço HTTP(s), a detecção será feita via solicitação HTTP GET.\r\n- Se você deseja restaurar o endereço de detecção padrão do sistema, insira uma vírgula `,` e clique em 'Próximo'.\r\n- **Esta configuração é global e as alterações afetarão outras instâncias de integração. Modifique com cautela.**\r\n### Verificar Dependências de Rede\r\nVerifique uma por uma as seguintes dependências de rede para ver se são acessíveis. Se os endereços relacionados não forem acessíveis, isso causará problemas de integração.\r\n- Endereço de Autenticação OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Endereço da API HTTP da Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Endereço da API SPEC da Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Endereço do Broker MQTT da Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Endereço de Detecção de Rede",
|
"network_detect_addr": "Endereço de Detecção de Rede",
|
||||||
"check_network_deps": "Verificar Dependências de Rede"
|
"check_network_deps": "Verificar Dependências de Rede"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Confirmar Configuração",
|
"title": "Confirmar Configuração",
|
||||||
"description": "Olá **{nick_name}**, confirme as informações da configuração mais recente e depois clique em ENVIAR.\r\nA integração será recarregada com a configuração atualizada.\r\n\r\nIdioma da Integração:\t{lang_new}\r\nApelido:\t{nick_name_new}\r\nModo de depuração para ação:\t{action_debug}\r\nOcultar entidades não padrão criadas:\t{hide_non_standard_entities}\r\nA posição das cortinas fechadas:\t{cover_pos_new}\r\nExibir notificações de mudança de status do dispositivo:\t{display_devices_changed_notify}\r\nAlterações de Dispositivos:\tAdicionar **{devices_add}** dispositivos, Remover **{devices_remove}** dispositivos\r\nAlteração nas Regras de Transformação:\tUm total de **{trans_rules_count}** regras, e **{trans_rules_count_success}** regras atualizadas",
|
"description": "Olá **{nick_name}**, confirme as informações da configuração mais recente e depois clique em ENVIAR.\r\nA integração será recarregada com a configuração atualizada.\r\n\r\nIdioma da Integração:\t{lang_new}\r\nApelido:\t{nick_name_new}\r\nModo de depuração para ação:\t{action_debug}\r\nOcultar entidades não padrão criadas:\t{hide_non_standard_entities}\r\nLargura da área cega da cortina:\t{cover_width_new}\r\nExibir notificações de mudança de status do dispositivo:\t{display_devices_changed_notify}\r\nAlterações de Dispositivos:\tAdicionar **{devices_add}** dispositivos, Remover **{devices_remove}** dispositivos\r\nAlteração nas Regras de Transformação:\tUm total de **{trans_rules_count}** regras, e **{trans_rules_count_success}** regras atualizadas",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Confirmar a mudança"
|
"confirm": "Confirmar a mudança"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configuração de Rede Integrada",
|
"title": "Configuração de Rede Integrada",
|
||||||
"description": "## Introdução ao Uso\r\n### Endereço de Detecção de Rede\r\nUsado para verificar se a rede está funcionando corretamente. Se não for definido, o endereço padrão do sistema será usado. Se a verificação do endereço padrão falhar, você pode tentar inserir um endereço personalizado.\r\n- Você pode inserir vários endereços de detecção, separados por vírgulas, como `8.8.8.8,https://www.bing.com`\r\n- Se for um endereço IP, a detecção será feita via ping. Se for um endereço HTTP(s), a detecção será feita via solicitação HTTP GET.\r\n- Se você deseja restaurar o endereço de detecção padrão do sistema, insira uma vírgula `,` e clique em 'Próximo'.\r\n- **Esta configuração é global e as alterações afetarão outras instâncias de integração. Modifique com cautela.**\r\n### Verificar Dependências de Rede\r\nVerifique uma por uma as seguintes dependências de rede para ver se são acessíveis. Se os endereços relacionados não forem acessíveis, isso causará problemas de integração.\r\n- Endereço de Autenticação OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Endereço da API HTTP da Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Endereço da API SPEC da Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Endereço do Broker MQTT da Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introdução ao Uso\r\n### Endereço de Detecção de Rede\r\nUsado para verificar se a rede está funcionando corretamente. Se não for definido, o endereço padrão do sistema será usado. Se a verificação do endereço padrão falhar, você pode tentar inserir um endereço personalizado.\r\n- Você pode inserir vários endereços de detecção, separados por vírgulas, como `8.8.8.8,https://www.bing.com`\r\n- Se for um endereço IP, a detecção será feita via ping. Se for um endereço HTTP(s), a detecção será feita via solicitação HTTP GET.\r\n- Se você deseja restaurar o endereço de detecção padrão do sistema, insira uma vírgula `,` e clique em 'Próximo'.\r\n- **Esta configuração é global e as alterações afetarão outras instâncias de integração. Modifique com cautela.**\r\n### Verificar Dependências de Rede\r\nVerifique uma por uma as seguintes dependências de rede para ver se são acessíveis. Se os endereços relacionados não forem acessíveis, isso causará problemas de integração.\r\n- Endereço de Autenticação OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Endereço da API HTTP da Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Endereço da API SPEC da Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Endereço do Broker MQTT da Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Endereço de Detecção de Rede",
|
"network_detect_addr": "Endereço de Detecção de Rede",
|
||||||
"check_network_deps": "Verificar Dependências de Rede"
|
"check_network_deps": "Verificar Dependências de Rede"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Atualizar regras de conversão de entidades",
|
"update_trans_rules": "Atualizar regras de conversão de entidades",
|
||||||
"update_lan_ctrl_config": "Atualizar configuração de controlo LAN",
|
"update_lan_ctrl_config": "Atualizar configuração de controlo LAN",
|
||||||
"network_detect_config": "Configuração de Rede Integrada",
|
"network_detect_config": "Configuração de Rede Integrada",
|
||||||
"cover_closed_position": "A posição das cortinas fechadas"
|
"cover_dead_zone_width": "Largura da zona cega da cortina"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Configuração de Rede Integrada",
|
"title": "Configuração de Rede Integrada",
|
||||||
"description": "## Introdução ao Uso\r\n### Endereço de Detecção de Rede\r\nUsado para verificar se a rede está funcionando corretamente. Se não for definido, o endereço padrão do sistema será usado. Se a verificação do endereço padrão falhar, você pode tentar inserir um endereço personalizado.\r\n- Você pode inserir vários endereços de detecção, separados por vírgulas, como `8.8.8.8,https://www.bing.com`\r\n- Se for um endereço IP, a detecção será feita via ping. Se for um endereço HTTP(s), a detecção será feita via solicitação HTTP GET.\r\n- Se você deseja restaurar o endereço de detecção padrão do sistema, insira uma vírgula `,` e clique em 'Próximo'.\r\n- **Esta configuração é global e as alterações afetarão outras instâncias de integração. Modifique com cautela.**\r\n### Verificar Dependências de Rede\r\nVerifique uma por uma as seguintes dependências de rede para ver se são acessíveis. Se os endereços relacionados não forem acessíveis, isso causará problemas de integração.\r\n- Endereço de Autenticação OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Endereço da API HTTP da Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Endereço da API SPEC da Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Endereço do Broker MQTT da Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Introdução ao Uso\r\n### Endereço de Detecção de Rede\r\nUsado para verificar se a rede está funcionando corretamente. Se não for definido, o endereço padrão do sistema será usado. Se a verificação do endereço padrão falhar, você pode tentar inserir um endereço personalizado.\r\n- Você pode inserir vários endereços de detecção, separados por vírgulas, como `8.8.8.8,https://www.bing.com`\r\n- Se for um endereço IP, a detecção será feita via ping. Se for um endereço HTTP(s), a detecção será feita via solicitação HTTP GET.\r\n- Se você deseja restaurar o endereço de detecção padrão do sistema, insira uma vírgula `,` e clique em 'Próximo'.\r\n- **Esta configuração é global e as alterações afetarão outras instâncias de integração. Modifique com cautela.**\r\n### Verificar Dependências de Rede\r\nVerifique uma por uma as seguintes dependências de rede para ver se são acessíveis. Se os endereços relacionados não forem acessíveis, isso causará problemas de integração.\r\n- Endereço de Autenticação OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Endereço da API HTTP da Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Endereço da API SPEC da Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Endereço do Broker MQTT da Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Endereço de Detecção de Rede",
|
"network_detect_addr": "Endereço de Detecção de Rede",
|
||||||
"check_network_deps": "Verificar Dependências de Rede"
|
"check_network_deps": "Verificar Dependências de Rede"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Confirmar Configuração",
|
"title": "Confirmar Configuração",
|
||||||
"description": "Olá **{nick_name}**, confirme a informação da configuração mais recente e depois clique em SUBMETER.\r\nA integração será recarregada com a configuração atualizada.\r\n\r\nIdioma da Integração:\t{lang_new}\r\nAlcunha:\t{nick_name_new}\r\nModo de depuração de ação:\t{action_debug}\r\nOcultar entidades não padrão:\t{hide_non_standard_entities}\r\nA posição das cortinas fechadas:\t{cover_pos_new}\r\nExibir notificações de mudança de status do dispositivo:\t{display_devices_changed_notify}\r\nAlterações aos Dispositivos:\tAdicionar **{devices_add}** dispositivos, Remover **{devices_remove}** dispositivos\r\nAlteração das Regras de Transformação:\tExistem **{trans_rules_count}** regras no total, com **{trans_rules_count_success}** regras atualizadas",
|
"description": "Olá **{nick_name}**, confirme a informação da configuração mais recente e depois clique em SUBMETER.\r\nA integração será recarregada com a configuração atualizada.\r\n\r\nIdioma da Integração:\t{lang_new}\r\nAlcunha:\t{nick_name_new}\r\nModo de depuração de ação:\t{action_debug}\r\nOcultar entidades não padrão:\t{hide_non_standard_entities}\r\nLargura da zona cega da cortina:\t{cover_width_new}\r\nExibir notificações de mudança de status do dispositivo:\t{display_devices_changed_notify}\r\nAlterações aos Dispositivos:\tAdicionar **{devices_add}** dispositivos, Remover **{devices_remove}** dispositivos\r\nAlteração das Regras de Transformação:\tExistem **{trans_rules_count}** regras no total, com **{trans_rules_count_success}** regras atualizadas",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Confirmar a alteração"
|
"confirm": "Confirmar a alteração"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Интегрированная Сетевая Конфигурация",
|
"title": "Интегрированная Сетевая Конфигурация",
|
||||||
"description": "## Введение в Использование\r\n### Адрес Обнаружения Сети\r\nИспользуется для проверки работоспособности сети. Если не задано, будет использоваться адрес по умолчанию. Если проверка адреса по умолчанию не удалась, вы можете попробовать ввести пользовательский адрес.\r\n- Вы можете ввести несколько адресов для проверки, разделенных запятыми, например `8.8.8.8,https://www.bing.com`\r\n- Если это IP-адрес, проверка будет выполняться с помощью ping. Если это HTTP(s)-адрес, проверка будет выполняться с помощью HTTP GET запроса.\r\n- Если вы хотите восстановить адрес обнаружения по умолчанию, введите запятую `,` и нажмите 'Далее'.\r\n- **Эта конфигурация является глобальной, и изменения повлияют на другие экземпляры интеграции. Пожалуйста, изменяйте с осторожностью.**\r\n### Проверка Сетевых Зависимостей\r\nПроверьте поочередно следующие сетевые зависимости, чтобы убедиться, что они доступны. Если соответствующие адреса недоступны, это приведет к проблемам с интеграцией.\r\n- Адрес аутентификации OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Адрес HTTP API Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Адрес SPEC API Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Адрес MQTT брокера Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Введение в Использование\r\n### Адрес Обнаружения Сети\r\nИспользуется для проверки работоспособности сети. Если не задано, будет использоваться адрес по умолчанию. Если проверка адреса по умолчанию не удалась, вы можете попробовать ввести пользовательский адрес.\r\n- Вы можете ввести несколько адресов для проверки, разделенных запятыми, например `8.8.8.8,https://www.bing.com`\r\n- Если это IP-адрес, проверка будет выполняться с помощью ping. Если это HTTP(s)-адрес, проверка будет выполняться с помощью HTTP GET запроса.\r\n- Если вы хотите восстановить адрес обнаружения по умолчанию, введите запятую `,` и нажмите 'Далее'.\r\n- **Эта конфигурация является глобальной, и изменения повлияют на другие экземпляры интеграции. Пожалуйста, изменяйте с осторожностью.**\r\n### Проверка Сетевых Зависимостей\r\nПроверьте поочередно следующие сетевые зависимости, чтобы убедиться, что они доступны. Если соответствующие адреса недоступны, это приведет к проблемам с интеграцией.\r\n- Адрес аутентификации OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Адрес HTTP API Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Адрес SPEC API Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Адрес MQTT брокера Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Адрес Обнаружения Сети",
|
"network_detect_addr": "Адрес Обнаружения Сети",
|
||||||
"check_network_deps": "Проверка Сетевых Зависимостей"
|
"check_network_deps": "Проверка Сетевых Зависимостей"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "Обновить правила преобразования сущностей",
|
"update_trans_rules": "Обновить правила преобразования сущностей",
|
||||||
"update_lan_ctrl_config": "Обновить конфигурацию управления LAN",
|
"update_lan_ctrl_config": "Обновить конфигурацию управления LAN",
|
||||||
"network_detect_config": "Интегрированная Сетевая Конфигурация",
|
"network_detect_config": "Интегрированная Сетевая Конфигурация",
|
||||||
"cover_closed_position": "Положение закрытых штор"
|
"cover_dead_zone_width": "Ширина «мертвой зоны» шторы"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "Интегрированная Сетевая Конфигурация",
|
"title": "Интегрированная Сетевая Конфигурация",
|
||||||
"description": "## Введение в Использование\r\n### Адрес Обнаружения Сети\r\nИспользуется для проверки работоспособности сети. Если не задано, будет использоваться адрес по умолчанию. Если проверка адреса по умолчанию не удалась, вы можете попробовать ввести пользовательский адрес.\r\n- Вы можете ввести несколько адресов для проверки, разделенных запятыми, например `8.8.8.8,https://www.bing.com`\r\n- Если это IP-адрес, проверка будет выполняться с помощью ping. Если это HTTP(s)-адрес, проверка будет выполняться с помощью HTTP GET запроса.\r\n- Если вы хотите восстановить адрес обнаружения по умолчанию, введите запятую `,` и нажмите 'Далее'.\r\n- **Эта конфигурация является глобальной, и изменения повлияют на другие экземпляры интеграции. Пожалуйста, изменяйте с осторожностью.**\r\n### Проверка Сетевых Зависимостей\r\nПроверьте поочередно следующие сетевые зависимости, чтобы убедиться, что они доступны. Если соответствующие адреса недоступны, это приведет к проблемам с интеграцией.\r\n- Адрес аутентификации OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Адрес HTTP API Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Адрес SPEC API Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Адрес MQTT брокера Xiaomi: `mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`.",
|
"description": "## Введение в Использование\r\n### Адрес Обнаружения Сети\r\nИспользуется для проверки работоспособности сети. Если не задано, будет использоваться адрес по умолчанию. Если проверка адреса по умолчанию не удалась, вы можете попробовать ввести пользовательский адрес.\r\n- Вы можете ввести несколько адресов для проверки, разделенных запятыми, например `8.8.8.8,https://www.bing.com`\r\n- Если это IP-адрес, проверка будет выполняться с помощью ping. Если это HTTP(s)-адрес, проверка будет выполняться с помощью HTTP GET запроса.\r\n- Если вы хотите восстановить адрес обнаружения по умолчанию, введите запятую `,` и нажмите 'Далее'.\r\n- **Эта конфигурация является глобальной, и изменения повлияют на другие экземпляры интеграции. Пожалуйста, изменяйте с осторожностью.**\r\n### Проверка Сетевых Зависимостей\r\nПроверьте поочередно следующие сетевые зависимости, чтобы убедиться, что они доступны. Если соответствующие адреса недоступны, это приведет к проблемам с интеграцией.\r\n- Адрес аутентификации OAuth2: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Адрес HTTP API Xiaomi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Адрес SPEC API Xiaomi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Адрес MQTT брокера Xiaomi: `mqtts://{broker_host}`.",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "Адрес Обнаружения Сети",
|
"network_detect_addr": "Адрес Обнаружения Сети",
|
||||||
"check_network_deps": "Проверка Сетевых Зависимостей"
|
"check_network_deps": "Проверка Сетевых Зависимостей"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "Подтверждение настройки",
|
"title": "Подтверждение настройки",
|
||||||
"description": "**{nick_name}** Здравствуйте! Подтвердите последнюю информацию о настройке и нажмите «Отправить». Интеграция будет перезагружена с использованием обновленных настроек.\r\n\r\nЯзык интеграции:\t{lang_new}\r\nИмя пользователя:\t{nick_name_new}\r\nРежим отладки Action:\t{action_debug}\r\nСкрыть непроизводственные сущности:\t{hide_non_standard_entities}\r\nПоложение закрытых штор:\t{cover_pos_new}\r\nОтображать уведомления о изменении состояния устройства:\t{display_devices_changed_notify}\r\nИзменение устройства:\tДобавлено **{devices_add}** устройство, удалено **{devices_remove}** устройства\r\nИзменение правил преобразования:\tВсего **{trans_rules_count}** правил, обновлено **{trans_rules_count_success}** правил",
|
"description": "**{nick_name}** Здравствуйте! Подтвердите последнюю информацию о настройке и нажмите «Отправить». Интеграция будет перезагружена с использованием обновленных настроек.\r\n\r\nЯзык интеграции:\t{lang_new}\r\nИмя пользователя:\t{nick_name_new}\r\nРежим отладки Action:\t{action_debug}\r\nСкрыть непроизводственные сущности:\t{hide_non_standard_entities}\r\nШирина «мертвой зоны» шторы:\t{cover_width_new}\r\nОтображать уведомления о изменении состояния устройства:\t{display_devices_changed_notify}\r\nИзменение устройства:\tДобавлено **{devices_add}** устройство, удалено **{devices_remove}** устройства\r\nИзменение правил преобразования:\tВсего **{trans_rules_count}** правил, обновлено **{trans_rules_count_success}** правил",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "Подтвердить изменения"
|
"confirm": "Подтвердить изменения"
|
||||||
}
|
}
|
||||||
|
|||||||
225
custom_components/xiaomi_home/translations/tr.json
Normal file
225
custom_components/xiaomi_home/translations/tr.json
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
{
|
||||||
|
"config": {
|
||||||
|
"flow_title": "Xiaomi Home Entegrasyonu",
|
||||||
|
"step": {
|
||||||
|
"eula": {
|
||||||
|
"title": "Risk Bildirimi",
|
||||||
|
"description": "1. Xiaomi kullanıcı bilgileriniz ve cihaz bilgileriniz Home Assistant sisteminde saklanacaktır. **Xiaomi, Home Assistant depolama mekanizmasının güvenliğini garanti edemez**. Bilgilerinizin çalınmasını önlemekten siz sorumlusunuz.\r\n2. Bu entegrasyon açık kaynak topluluğu tarafından sürdürülmektedir. Kararlılık sorunları veya diğer sorunlar olabilir. Bu entegrasyonla ilgili sorunlar veya hatalarla karşılaştığınızda, **Xiaomi müşteri hizmetleriyle iletişime geçmek yerine açık kaynak topluluğundan yardım istemelisiniz**.\r\n3. Yerel işletim ortamınızı sürdürmek için teknik beceriye ihtiyacınız vardır. Entegrasyon yeni başlayanlar için kullanıcı dostu değildir.\r\n4. Lütfen başlamadan önce README dosyasını okuyun.\n\n5. Entegrasyonun kararlı kullanımını sağlamak ve arayüz kötüye kullanımını önlemek için, **bu entegrasyonun yalnızca Home Assistant'ta kullanılmasına izin verilir. Ayrıntılar için lütfen LICENSE'a bakın**.",
|
||||||
|
"data": {
|
||||||
|
"eula": "Yukarıdaki risklerin farkındayım ve entegrasyonun kullanımıyla ilişkili tüm riskleri gönüllü olarak üstlenmeye razıyım."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"auth_config": {
|
||||||
|
"title": "Temel yapılandırma",
|
||||||
|
"description": "### Giriş Bölgesi\r\nXiaomi hesabınızın bölgesini seçin. Bunu Xiaomi Home UYGULAMASI > Profil (alttaki menüde bulunur) > Ek ayarlar > Xiaomi Home Hakkında bölümünde bulabilirsiniz.\r\n### Dil\r\nCihaz ve varlık adlarının dilini seçin. Çevirisi olmayan bazı cümleler İngilizce olarak görüntülenecektir.\r\n### OAuth2 Yönlendirme URL'si\r\nOAuth2 kimlik doğrulama yönlendirme adresi **[http://homeassistant.local:8123](http://homeassistant.local:8123)** şeklindedir. Home Assistant'ın mevcut işletim terminali (örn. kişisel bilgisayar) ile aynı yerel ağda olması ve işletim terminalinin bu adres üzerinden Home Assistant ana sayfasına erişebilmesi gerekir. Aksi takdirde giriş kimlik doğrulaması başarısız olabilir.\r\n### Entegre Ağ Yapılandırması\r\nYerel ağın düzgün çalışıp çalışmadığını ve ilgili ağ kaynaklarının erişilebilir olup olmadığını kontrol edin. **İlk kez eklerken bunu seçmeniz önerilir.**\r\n### Not\r\n- Yüzlerce veya daha fazla Mi Home cihazına sahip kullanıcılar için, entegrasyonun ilk eklenmesi biraz zaman alacaktır. Lütfen sabırlı olun.\r\n- Home Assistant bir Docker ortamında çalışıyorsa, lütfen Docker ağ modunun host olarak ayarlandığından emin olun, aksi takdirde yerel kontrol işlevi düzgün çalışmayabilir.\r\n- Entegrasyonun yerel kontrol işlevinin bazı bağımlılıkları vardır. Lütfen README'yi dikkatlice okuyun.",
|
||||||
|
"data": {
|
||||||
|
"cloud_server": "Giriş Bölgesi",
|
||||||
|
"integration_language": "Dil",
|
||||||
|
"oauth_redirect_url": "OAuth2 Yönlendirme URL'si",
|
||||||
|
"network_detect_config": "Entegre Ağ Yapılandırması"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network_detect_config": {
|
||||||
|
"title": "Entegre Ağ Yapılandırması",
|
||||||
|
"description": "## Kullanım Tanıtımı\r\n### Ağ Algılama Adresi\r\nAğın düzgün çalışıp çalışmadığını kontrol etmek için kullanılır. Ayarlanmazsa, sistem varsayılan adresi kullanılacaktır. Varsayılan adres kontrolü başarısız olursa, özel bir adres girmeyi deneyebilirsiniz.\r\n- Virgülle ayrılmış birden fazla algılama adresi girebilirsiniz, örneğin `8.8.8.8,https://www.bing.com`\r\n- Bir IP adresi ise, algılama ping üzerinden yapılacaktır. Bir HTTP(s) adresi ise, algılama HTTP GET isteği üzerinden yapılacaktır.\r\n- Sistem varsayılan algılama adresini geri yüklemek istiyorsanız, lütfen bir virgül `,` girin ve 'İleri'ye tıklayın.\r\n- **Bu yapılandırma geneldir ve değişiklikler diğer entegrasyon örneklerini etkileyecektir. Lütfen dikkatli değiştirin.**\r\n### Ağ Bağımlılıklarını Kontrol Et\r\nAşağıdaki ağ bağımlılıklarının erişilebilir olup olmadığını tek tek kontrol edin. İlgili adresler erişilebilir değilse, entegrasyon sorunlarına neden olacaktır.\r\n- OAuth2 Kimlik Doğrulama Adresi: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API Adresi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API Adresi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker Adresi: `mqtts://{broker_host}`.",
|
||||||
|
"data": {
|
||||||
|
"network_detect_addr": "Ağ Algılama Adresi",
|
||||||
|
"check_network_deps": "Ağ Bağımlılıklarını Kontrol Et"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oauth_error": {
|
||||||
|
"title": "Giriş Hatası",
|
||||||
|
"description": "Tekrar denemek için İLERİ'ye tıklayın."
|
||||||
|
},
|
||||||
|
"homes_select": {
|
||||||
|
"title": "Ev ve Cihaz Seçimi",
|
||||||
|
"description": "## Tanıtım\r\n### Cihazın Evini İçe Aktar\r\nEntegrasyon, seçilen evden cihazları ekleyecektir.\r\n### Oda Adı Senkronizasyon Modu\r\nMi Home UYGULAMASINDAN Home Assistant'a cihazlar senkronize edilirken, Home Assistant'taki alanın adlandırılması aşağıdaki kurallara uyacaktır. Senkronizasyon işleminin Mi Home UYGULAMASINDAKI ev ve oda ayarlarını değiştirmeyeceğini unutmayın.\r\n- Senkronize etme: Cihaz herhangi bir alana eklenmeyecektir.\r\n- Diğer seçenekler: Cihazın eklendiği alan, Mi Home UYGULAMASINDAKI ev veya oda adına göre adlandırılacaktır.\r\n### Gelişmiş Ayarlar\r\nEntegrasyonun profesyonel yapılandırma seçeneklerini değiştirmek için gelişmiş ayarları gösterin.\r\n\r\n \r\n### {nick_name} Merhaba! Lütfen cihaz eklemek istediğiniz evi seçin.",
|
||||||
|
"data": {
|
||||||
|
"home_infos": "Cihazın Evini İçe Aktar",
|
||||||
|
"area_name_rule": "Oda Adı Senkronizasyon Modu",
|
||||||
|
"advanced_options": "Gelişmiş Ayarlar"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"advanced_options": {
|
||||||
|
"title": "Gelişmiş Ayarlar",
|
||||||
|
"description": "## Tanıtım\r\n### Aşağıdaki seçeneklerin anlamını çok net bir şekilde bilmiyorsanız, lütfen varsayılan ayarları koruyun.\r\n### Cihazları Filtrele\r\nCihazları oda adı ve cihaz türüne göre filtrelemeyi destekler, ayrıca cihaz boyutu filtrelemesini de destekler.\r\n### Kontrol Modu\r\n- Otomatik: Yerel ağda kullanılabilir bir Xiaomi merkezi hub ağ geçidi olduğunda, Home Assistant cihaz kontrol komutlarını öncelikle merkezi hub ağ geçidi üzerinden göndererek yerel kontrolü sağlar. Yerel ağda merkezi hub ağ geçidi yoksa, Xiaomi OT protokolü üzerinden kontrol komutları göndermeye çalışır. Yalnızca yukarıdaki yerel kontrol koşulları karşılanmadığında, cihaz kontrol komutları bulut üzerinden gönderilir.\r\n- Bulut: Tüm kontrol komutları bulut üzerinden gönderilir.\r\n### Eylem Hata Ayıklama Modu\r\nCihaz MIoT-Spec-V2 tarafından tanımlanan yöntemler için, bildirim varlıkları oluşturmaya ek olarak, bir metin girişi kutusu varlığı da oluşturulacaktır. Hata ayıklama sırasında cihaza kontrol komutları göndermek için bunu kullanabilirsiniz.\r\n### Standart Olmayan Oluşturulan Varlıkları Gizle\r\nAdı \"*\" ile başlayan standart olmayan MIoT-Spec-V2 örnekleri tarafından oluşturulan varlıkları gizle.\r\n### İkili Sensör Görüntüleme Modu\r\nXiaomi Home'daki ikili sensörleri metin sensör varlığı veya ikili sensör varlığı olarak görüntüleyin.\r\n### Cihaz Durum Değişikliği Bildirimlerini Göster\r\nDetaylı cihaz durum değişikliği bildirimlerini görüntüleyin, yalnızca seçilen bildirimleri gösterin.",
|
||||||
|
"data": {
|
||||||
|
"devices_filter": "Cihazları Filtrele",
|
||||||
|
"ctrl_mode": "Kontrol Modu",
|
||||||
|
"action_debug": "Eylem Hata Ayıklama Modu",
|
||||||
|
"hide_non_standard_entities": "Standart Olmayan Oluşturulan Varlıkları Gizle",
|
||||||
|
"display_binary_mode": "İkili Sensör Görüntüleme Modu",
|
||||||
|
"display_devices_changed_notify": "Cihaz Durum Değişikliği Bildirimlerini Göster"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devices_filter": {
|
||||||
|
"title": "Cihazları Filtrele",
|
||||||
|
"description": "## Kullanım Talimatları\r\nCihazları ev oda adı, cihaz erişim türü ve cihaz modeline göre filtrelemeyi destekler, ayrıca cihaz boyutu filtrelemesini de destekler. Filtreleme mantığı aşağıdaki gibidir:\r\n- İlk olarak, istatistik mantığına göre, dahil edilen tüm öğelerin birleşimini veya kesişimini alın, ardından hariç tutulan öğelerin kesişimini veya birleşimini alın ve son olarak [hariç tutulan özet sonucu]ndan [dahil edilen özet sonucu]nu çıkararak [filtre sonucu]nu elde edin.\r\n- Dahil edilen öğe seçilmemişse, tümünün dahil edildiği anlamına gelir.\r\n### Filtre Modu\r\n- Hariç tut: İstenmeyen öğeleri kaldırın.\r\n- Dahil et: İstenen öğeleri dahil edin.\r\n### İstatistik Mantığı\r\n- VE mantığı: Aynı moddaki tüm öğelerin kesişimini alın.\r\n- VEYA mantığı: Aynı moddaki tüm öğelerin birleşimini alın.\r\n\r\nAyrıca entegrasyon öğesinin [Yapılandırma > Cihaz Listesini Güncelle] sayfasına gidip, yeniden filtrelemek için [Cihazları Filtrele]'yi işaretleyebilirsiniz.",
|
||||||
|
"data": {
|
||||||
|
"room_filter_mode": "Ev Odalarını Filtrele",
|
||||||
|
"room_list": "Ev Odaları",
|
||||||
|
"type_filter_mode": "Cihaz Bağlantı Türünü Filtrele",
|
||||||
|
"type_list": "Cihaz Bağlantı Türü",
|
||||||
|
"model_filter_mode": "Cihaz Modelini Filtrele",
|
||||||
|
"model_list": "Cihaz Modeli",
|
||||||
|
"devices_filter_mode": "Cihazları Filtrele",
|
||||||
|
"device_list": "Cihaz Listesi",
|
||||||
|
"statistics_logic": "İstatistik Mantığı"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"progress": {
|
||||||
|
"oauth": "### {link_left}Giriş yapmak için buraya tıklayın{link_right}\r\n(Başarılı girişten sonra otomatik olarak bir sonraki sayfaya yönlendirileceksiniz)"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"eula_not_agree": "Lütfen risk bildirimini okuyun.",
|
||||||
|
"get_token_error": "Giriş yetkilendirme bilgileri (OAuth token) alınamadı.",
|
||||||
|
"get_homeinfo_error": "Ev bilgileri alınamadı.",
|
||||||
|
"mdns_discovery_error": "Yerel cihaz keşif hizmeti istisnası.",
|
||||||
|
"get_cert_error": "Merkezi hub ağ geçidi sertifikası alınamadı.",
|
||||||
|
"no_family_selected": "Ev seçilmedi.",
|
||||||
|
"no_devices": "Seçilen evde cihaz yok. Lütfen cihazı olan bir ev seçin ve devam edin.",
|
||||||
|
"no_filter_devices": "Filtrelenmiş cihazlar boş. Lütfen geçerli filtre kriterleri seçin ve devam edin.",
|
||||||
|
"no_central_device": "[Merkezi Hub Ağ Geçidi Modu], Home Assistant'ın bulunduğu yerel ağda kullanılabilir bir Xiaomi merkezi hub ağ geçidi gerektirir. Lütfen seçilen evin gereksinimi karşılayıp karşılamadığını kontrol edin.",
|
||||||
|
"invalid_network_addr": "Geçersiz IP adresi veya HTTP adresi algılandı, lütfen geçerli bir adres girin.",
|
||||||
|
"invalid_ip_addr": "Ulaşılamayan IP adresi algılandı, lütfen geçerli bir IP adresi girin.",
|
||||||
|
"invalid_http_addr": "Ulaşılamayan HTTP adresi algılandı, lütfen geçerli bir HTTP adresi girin.",
|
||||||
|
"invalid_default_addr": "Varsayılan ağ algılama adresi ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin veya özel bir ağ algılama adresi kullanın.",
|
||||||
|
"unreachable_oauth2_host": "OAuth2 kimlik doğrulama adresine ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin.",
|
||||||
|
"unreachable_http_host": "Xiaomi HTTP API adresine ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin.",
|
||||||
|
"unreachable_spec_host": "Xiaomi SPEC API adresine ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin.",
|
||||||
|
"unreachable_mqtt_broker": "Xiaomi MQTT Broker adresine ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin."
|
||||||
|
},
|
||||||
|
"abort": {
|
||||||
|
"ha_uuid_get_failed": "Home Assistant UUID alınamadı.",
|
||||||
|
"network_connect_error": "Yapılandırma başarısız oldu. Ağ bağlantısı anormal. Lütfen ekipman ağ yapılandırmasını kontrol edin.",
|
||||||
|
"already_configured": "Bu kullanıcı için yapılandırma zaten tamamlandı. Lütfen entegrasyon sayfasına gidin ve değişiklikler için YAPILANDIRMA düğmesine tıklayın.",
|
||||||
|
"invalid_auth_info": "Kimlik doğrulama bilgileri süresi doldu. Lütfen entegrasyon sayfasına gidin ve yeniden kimlik doğrulaması yapmak için YAPILANDIRMA düğmesine tıklayın.",
|
||||||
|
"config_flow_error": "Entegrasyon yapılandırma hatası: {error}."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"step": {
|
||||||
|
"auth_config": {
|
||||||
|
"title": "Kimlik Doğrulama Yapılandırması",
|
||||||
|
"description": "Yerel kimlik doğrulama bilgileri süresi doldu. Lütfen kimlik doğrulama işlemini yeniden başlatın.\r\n### Geçerli Giriş Bölgesi: {cloud_server}\r\n### OAuth2 Yönlendirme URL'si\r\nOAuth2 kimlik doğrulama yönlendirme adresi **[http://homeassistant.local:8123](http://homeassistant.local:8123)** şeklindedir. Home Assistant'ın mevcut işletim terminali (örn. kişisel bilgisayar) ile aynı yerel ağda olması ve işletim terminalinin bu adres üzerinden Home Assistant ana sayfasına erişebilmesi gerekir. Aksi takdirde giriş kimlik doğrulaması başarısız olabilir.",
|
||||||
|
"data": {
|
||||||
|
"oauth_redirect_url": "OAuth2 Yönlendirme URL'si"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oauth_error": {
|
||||||
|
"title": "Giriş sırasında bir hata oluştu.",
|
||||||
|
"description": "Tekrar denemek için İLERİ'ye tıklayın."
|
||||||
|
},
|
||||||
|
"config_options": {
|
||||||
|
"title": "Yapılandırma Seçenekleri",
|
||||||
|
"description": "### Merhaba, {nick_name}\r\n\r\nXiaomi ID: {uid}\r\nGeçerli Giriş Bölgesi: {cloud_server}\r\nEntegrasyon Örnek Kimliği: {instance_id}\r\n\r\nLütfen yapılandırmak istediğiniz seçenekleri seçin, ardından İLERİ'ye tıklayın.",
|
||||||
|
"data": {
|
||||||
|
"integration_language": "Entegrasyon Dili",
|
||||||
|
"update_user_info": "Kullanıcı bilgilerini güncelle",
|
||||||
|
"update_devices": "Cihaz listesini güncelle",
|
||||||
|
"action_debug": "Eylem için hata ayıklama modu",
|
||||||
|
"hide_non_standard_entities": "Standart olmayan oluşturulan varlıkları gizle",
|
||||||
|
"display_binary_mode": "İkili Sensör Görüntüleme Modu",
|
||||||
|
"display_devices_changed_notify": "Cihaz durum değişikliği bildirimlerini göster",
|
||||||
|
"update_trans_rules": "Varlık dönüştürme kurallarını güncelle",
|
||||||
|
"update_lan_ctrl_config": "LAN kontrol yapılandırmasını güncelle",
|
||||||
|
"network_detect_config": "Entegre ağ yapılandırması",
|
||||||
|
"cover_dead_zone_width": "Perde ölü bölge genişliği"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"update_user_info": {
|
||||||
|
"title": "Kullanıcı Takma Adını Güncelle",
|
||||||
|
"description": "Merhaba {nick_name}, aşağıda özel takma adınızı değiştirebilirsiniz.",
|
||||||
|
"data": {
|
||||||
|
"nick_name": "Takma Ad"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"homes_select": {
|
||||||
|
"title": "Evi ve Cihazları Yeniden Seç",
|
||||||
|
"description": "## Kullanım Talimatları\r\n### Evden cihazları içe aktar\r\nEntegrasyon, seçilen evlerden cihazları ekleyecektir.\r\n### Cihazları Filtrele\r\nCihazları ev oda adı, cihaz erişim türü ve cihaz modeline göre filtrelemeyi destekler, ayrıca cihaz boyutu filtrelemesini de destekler. **{local_count}** cihaz filtrelendi.\r\n### Kontrol modu\r\n- Otomatik: Yerel ağda kullanılabilir bir Xiaomi merkezi hub ağ geçidi olduğunda, Home Assistant cihaz kontrol komutlarını öncelikle merkezi hub ağ geçidi üzerinden göndererek yerel kontrolü sağlar. Yerel ağda merkezi hub ağ geçidi yoksa, Xiaomi LAN kontrol işlevi aracılığıyla kontrol komutları göndermeye çalışır. Yalnızca yukarıdaki yerel kontrol koşulları karşılanmadığında, cihaz kontrol komutları bulut üzerinden gönderilir.\r\n- Bulut: Tüm kontrol komutları bulut üzerinden gönderilir.",
|
||||||
|
"data": {
|
||||||
|
"home_infos": "Evden cihazları içe aktar",
|
||||||
|
"devices_filter": "Cihazları filtrele",
|
||||||
|
"ctrl_mode": "Kontrol modu"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devices_filter": {
|
||||||
|
"title": "Cihazları Filtrele",
|
||||||
|
"description": "## Kullanım Talimatları\r\nCihazları ev oda adı, cihaz erişim türü ve cihaz modeline göre filtrelemeyi destekler, ayrıca cihaz boyutu filtrelemesini de destekler. Filtreleme mantığı aşağıdaki gibidir:\r\n- İlk olarak, istatistik mantığına göre, dahil edilen tüm öğelerin birleşimini veya kesişimini alın, ardından hariç tutulan öğelerin kesişimini veya birleşimini alın ve son olarak [hariç tutulan özet sonucu]ndan [dahil edilen özet sonucu]nu çıkararak [filtre sonucu]nu elde edin.\r\n- Dahil edilen öğe seçilmemişse, tümünün dahil edildiği anlamına gelir.\r\n### Filtre Modu\r\n- Hariç tut: İstenmeyen öğeleri kaldırın.\r\n- Dahil et: İstenen öğeleri dahil edin.\r\n### İstatistik Mantığı\r\n- VE mantığı: Aynı moddaki tüm öğelerin kesişimini alın.\r\n- VEYA mantığı: Aynı moddaki tüm öğelerin birleşimini alın.\r\n\r\nAyrıca entegrasyon öğesinin [Yapılandırma > Cihaz Listesini Güncelle] sayfasına gidip, yeniden filtrelemek için [Cihazları Filtrele]'yi işaretleyebilirsiniz.",
|
||||||
|
"data": {
|
||||||
|
"room_filter_mode": "Ev Odalarını Filtrele",
|
||||||
|
"room_list": "Ev Odaları",
|
||||||
|
"type_filter_mode": "Cihaz Bağlantı Türünü Filtrele",
|
||||||
|
"type_list": "Cihaz Bağlantı Türü",
|
||||||
|
"model_filter_mode": "Cihaz Modelini Filtrele",
|
||||||
|
"model_list": "Cihaz Modeli",
|
||||||
|
"devices_filter_mode": "Cihazları Filtrele",
|
||||||
|
"device_list": "Cihaz Listesi",
|
||||||
|
"statistics_logic": "İstatistik Mantığı"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"update_trans_rules": {
|
||||||
|
"title": "Varlık Dönüştürme Kurallarını Güncelle",
|
||||||
|
"description": "## Kullanım Talimatları\r\n- Mevcut entegrasyon örneğindeki cihazların varlık bilgilerini güncelleyin, MIoT-Spec-V2 çok dilli yapılandırma, boolean çeviri ve model filtreleme dahil.\r\n- **Uyarı**: Bu genel bir yapılandırmadır ve yerel önbelleği güncelleyecektir. Tüm entegrasyon örneklerini etkileyecektir.\r\n- Bu işlem biraz zaman alacaktır, lütfen sabırlı olun. \"Güncellemeyi Onayla\"yı işaretleyin ve **{urn_count}** kuralı güncellemeye başlamak için \"İleri\"ye tıklayın, aksi takdirde güncellemeyi atlayın.",
|
||||||
|
"data": {
|
||||||
|
"confirm": "Güncellemeyi onayla"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"update_lan_ctrl_config": {
|
||||||
|
"title": "LAN kontrol yapılandırmasını güncelle",
|
||||||
|
"description": "## Kullanım Talimatları\r\nXiaomi LAN kontrol işlevi için yapılandırmaları güncelleyin. Bulut ve merkezi hub ağ geçidi cihazları kontrol edemediğinde, entegrasyon LAN üzerinden cihazları kontrol etmeye çalışacaktır. Hiçbir ağ kartı seçilmezse, LAN kontrol işlevi etkin olmayacaktır.\r\n- Yalnızca LAN'daki MIoT-Spec-V2 uyumlu IP cihazları desteklenir. 2020'den önce üretilen bazı cihazlar LAN kontrolünü veya LAN aboneliğini desteklemeyebilir.\r\n- Lütfen kontrol edilecek cihazlarla aynı ağdaki ağ kartlarını seçin. Birden fazla ağ kartı seçilebilir. Home Assistant'ın birden fazla ağ kartı seçimi nedeniyle yerel ağa iki veya daha fazla bağlantısı varsa, en iyi ağ bağlantısına sahip olanı seçmeniz önerilir, aksi takdirde cihazlar üzerinde kötü etkisi olabilir.\r\n- LAN'da yerel kontrolü destekleyen terminal cihazlar (ekranlı Xiaomi hoparlör, cep telefonu, vb.) varsa, LAN aboneliğini etkinleştirmek yerel otomasyon ve cihaz anormalliklerine neden olabilir.\r\n- **Uyarı**: Bu genel bir yapılandırmadır. Tüm entegrasyon örneklerini etkileyecektir. Lütfen dikkatli kullanın.\r\n{notice_net_dup}",
|
||||||
|
"data": {
|
||||||
|
"net_interfaces": "Lütfen kullanılacak ağ kartını seçin",
|
||||||
|
"enable_subscribe": "LAN aboneliğini etkinleştir"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network_detect_config": {
|
||||||
|
"title": "Entegre Ağ Yapılandırması",
|
||||||
|
"description": "## Kullanım Tanıtımı\r\n### Ağ Algılama Adresi\r\nAğın düzgün çalışıp çalışmadığını kontrol etmek için kullanılır. Ayarlanmazsa, sistem varsayılan adresi kullanılacaktır. Varsayılan adres kontrolü başarısız olursa, özel bir adres girmeyi deneyebilirsiniz.\r\n- Virgülle ayrılmış birden fazla algılama adresi girebilirsiniz, örneğin `8.8.8.8,https://www.bing.com`\r\n- Bir IP adresi ise, algılama ping üzerinden yapılacaktır. Bir HTTP(s) adresi ise, algılama HTTP GET isteği üzerinden yapılacaktır.\r\n- Sistem varsayılan algılama adresini geri yüklemek istiyorsanız, lütfen bir virgül `,` girin ve 'İleri'ye tıklayın.\r\n- **Bu yapılandırma geneldir ve değişiklikler diğer entegrasyon örneklerini etkileyecektir. Lütfen dikkatli değiştirin.**\r\n### Ağ Bağımlılıklarını Kontrol Et\r\nAşağıdaki ağ bağımlılıklarının erişilebilir olup olmadığını tek tek kontrol edin. İlgili adresler erişilebilir değilse, entegrasyon sorunlarına neden olacaktır.\r\n- OAuth2 Kimlik Doğrulama Adresi: `https://account.xiaomi.com/oauth2/authorize`.\r\n- Xiaomi HTTP API Adresi: `https://{http_host}/app/v2/ha/oauth/get_token`.\r\n- Xiaomi SPEC API Adresi: `https://miot-spec.org/miot-spec-v2/template/list/device`.\r\n- Xiaomi MQTT Broker Adresi: `mqtts://{broker_host}`.",
|
||||||
|
"data": {
|
||||||
|
"network_detect_addr": "Ağ Algılama Adresi",
|
||||||
|
"check_network_deps": "Ağ Bağımlılıklarını Kontrol Et"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config_confirm": {
|
||||||
|
"title": "Yapılandırmayı Onayla",
|
||||||
|
"description": "Merhaba **{nick_name}**, lütfen en son yapılandırma bilgilerini onaylayın ve ardından GÖNDER'e tıklayın.\r\nEntegrasyon güncellenmiş yapılandırmayla yeniden yüklenecektir.\r\n\r\nEntegrasyon Dili:\t{lang_new}\r\nTakma Ad:\t{nick_name_new}\r\nEylem için hata ayıklama modu:\t{action_debug}\r\nStandart olmayan oluşturulan varlıkları gizle:\t{hide_non_standard_entities}\r\nPerde ölü bölge genişliği:\t{cover_width_new}\r\nCihaz durum değişikliği bildirimlerini göster:\t{display_devices_changed_notify}\r\nCihaz Değişiklikleri:\t**{devices_add}** cihaz ekle, **{devices_remove}** cihaz kaldır\r\nDönüştürme kuralları değişikliği:\tToplam **{trans_rules_count}** kural var ve **{trans_rules_count_success}** kural güncellendi",
|
||||||
|
"data": {
|
||||||
|
"confirm": "Değişikliği onayla"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"progress": {
|
||||||
|
"oauth": "### {link_left}Yeniden giriş yapmak için lütfen buraya tıklayın{link_right}"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"not_auth": "Kimlik doğrulanmadı. Lütfen kullanıcı kimliğini doğrulamak için kimlik doğrulama bağlantısına tıklayın.",
|
||||||
|
"get_token_error": "Giriş yetkilendirme bilgileri (OAuth token) alınamadı.",
|
||||||
|
"get_homeinfo_error": "Ev bilgileri alınamadı.",
|
||||||
|
"get_cert_error": "Merkezi hub ağ geçidi sertifikası alınamadı.",
|
||||||
|
"no_devices": "Seçilen evde cihaz yok. Lütfen cihazı olan bir ev seçin ve devam edin.",
|
||||||
|
"no_filter_devices": "Filtrelenmiş cihazlar boş. Lütfen geçerli filtre kriterleri seçin ve devam edin.",
|
||||||
|
"no_family_selected": "Ev seçilmedi.",
|
||||||
|
"no_central_device": "[Merkezi Hub Ağ Geçidi Modu], Home Assistant'ın bulunduğu yerel ağda kullanılabilir bir Xiaomi merkezi hub ağ geçidi gerektirir. Lütfen seçilen evin gereksinimi karşılayıp karşılamadığını kontrol edin.",
|
||||||
|
"mdns_discovery_error": "Yerel cihaz keşif hizmeti istisnası.",
|
||||||
|
"update_config_error": "Yapılandırma bilgileri güncellenemedi.",
|
||||||
|
"not_confirm": "Değişiklikler onaylanmadı. Lütfen göndermeden önce değişikliği onaylayın.",
|
||||||
|
"invalid_network_addr": "Geçersiz IP adresi veya HTTP adresi algılandı, lütfen geçerli bir adres girin.",
|
||||||
|
"invalid_ip_addr": "Ulaşılamayan IP adresi algılandı, lütfen geçerli bir IP adresi girin.",
|
||||||
|
"invalid_http_addr": "Ulaşılamayan HTTP adresi algılandı, lütfen geçerli bir HTTP adresi girin.",
|
||||||
|
"invalid_default_addr": "Varsayılan ağ algılama adresi ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin veya özel bir ağ algılama adresi kullanın.",
|
||||||
|
"unreachable_oauth2_host": "OAuth2 kimlik doğrulama adresine ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin.",
|
||||||
|
"unreachable_http_host": "Xiaomi HTTP API adresine ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin.",
|
||||||
|
"unreachable_spec_host": "Xiaomi SPEC API adresine ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin.",
|
||||||
|
"unreachable_mqtt_broker": "Xiaomi MQTT Broker adresine ulaşılamıyor, lütfen ağ yapılandırmasını kontrol edin."
|
||||||
|
},
|
||||||
|
"abort": {
|
||||||
|
"network_connect_error": "Yapılandırma başarısız oldu. Ağ bağlantısı anormal. Lütfen ekipman ağ yapılandırmasını kontrol edin.",
|
||||||
|
"options_flow_error": "Entegrasyon yeniden yapılandırma hatası: {error}",
|
||||||
|
"re_add": "Lütfen entegrasyonu yeniden ekleyin. Hata mesajı: {error}",
|
||||||
|
"storage_error": "Entegrasyon depolama modülü istisnası. Lütfen tekrar deneyin veya entegrasyonu yeniden ekleyin: {error}",
|
||||||
|
"inconsistent_account": "Hesap bilgileri tutarsız. Lütfen doğru hesapla giriş yapın."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "网络检测配置",
|
"title": "网络检测配置",
|
||||||
"description": "## 使用介绍\r\n### 网络检测地址\r\n用于检测网络是否正常,未设置时将使用系统默认地址检测。如果默认地址检测异常时,可尝试输入可用的自定义地址检测。\r\n- 可输入多个检测地址,地址之间使用`,`号间隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果为IP地址,将采用ping方式检测,如果为http(s)地址,将采用 HTTP GET 访问该地址检测。\r\n- 如果想恢复系统默认检测地址,请输入`,`号,然后点击'下一步'。\r\n- **该配置为全局配置,修改会影响其它集成实例的网络检测,请谨慎修改。**\r\n### 检测网络依赖项\r\n依次检查下述网络依赖项是否可访问。如果相关地址无法访问,将会导致集成异常。\r\n- OAuth2 认证地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`。",
|
"description": "## 使用介绍\r\n### 网络检测地址\r\n用于检测网络是否正常,未设置时将使用系统默认地址检测。如果默认地址检测异常时,可尝试输入可用的自定义地址检测。\r\n- 可输入多个检测地址,地址之间使用`,`号间隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果为IP地址,将采用ping方式检测,如果为http(s)地址,将采用 HTTP GET 访问该地址检测。\r\n- 如果想恢复系统默认检测地址,请输入`,`号,然后点击'下一步'。\r\n- **该配置为全局配置,修改会影响其它集成实例的网络检测,请谨慎修改。**\r\n### 检测网络依赖项\r\n依次检查下述网络依赖项是否可访问。如果相关地址无法访问,将会导致集成异常。\r\n- OAuth2 认证地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{broker_host}`。",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "网络检测地址",
|
"network_detect_addr": "网络检测地址",
|
||||||
"check_network_deps": "检测网络依赖项"
|
"check_network_deps": "检测网络依赖项"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "更新实体转换规则",
|
"update_trans_rules": "更新实体转换规则",
|
||||||
"update_lan_ctrl_config": "更新局域网控制配置",
|
"update_lan_ctrl_config": "更新局域网控制配置",
|
||||||
"network_detect_config": "集成网络配置",
|
"network_detect_config": "集成网络配置",
|
||||||
"cover_closed_position": "窗帘关闭位置"
|
"cover_dead_zone_width": "窗帘盲区宽度"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "网络检测配置",
|
"title": "网络检测配置",
|
||||||
"description": "## 使用介绍\r\n### 网络检测地址\r\n用于检测网络是否正常,未设置时将使用系统默认地址检测。如果默认地址检测异常时,可尝试输入可用的自定义地址检测。\r\n- 可输入多个检测地址,地址之间使用`,`号间隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果为IP地址,将采用ping方式检测,如果为http(s)地址,将采用 HTTP GET 访问该地址检测。\r\n- 如果想恢复系统默认检测地址,请输入`,`号,然后点击'下一步'。\r\n- **该配置为全局配置,修改会影响其它集成实例的网络检测,请谨慎修改。**\r\n### 检测网络依赖项\r\n依次检查下述网络依赖项是否可访问。如果相关地址无法访问,将会导致集成异常。\r\n- OAuth2 认证地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`。",
|
"description": "## 使用介绍\r\n### 网络检测地址\r\n用于检测网络是否正常,未设置时将使用系统默认地址检测。如果默认地址检测异常时,可尝试输入可用的自定义地址检测。\r\n- 可输入多个检测地址,地址之间使用`,`号间隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果为IP地址,将采用ping方式检测,如果为http(s)地址,将采用 HTTP GET 访问该地址检测。\r\n- 如果想恢复系统默认检测地址,请输入`,`号,然后点击'下一步'。\r\n- **该配置为全局配置,修改会影响其它集成实例的网络检测,请谨慎修改。**\r\n### 检测网络依赖项\r\n依次检查下述网络依赖项是否可访问。如果相关地址无法访问,将会导致集成异常。\r\n- OAuth2 认证地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{broker_host}`。",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "网络检测地址",
|
"network_detect_addr": "网络检测地址",
|
||||||
"check_network_deps": "检测网络依赖项"
|
"check_network_deps": "检测网络依赖项"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "确认配置",
|
"title": "确认配置",
|
||||||
"description": "**{nick_name}** 您好!请确认最新的配置信息,然后点击“提交”。\r\n集成将会使用更新后的配置重新载入。\r\n\r\n集成语言:\t{lang_new}\r\n用户昵称:\t{nick_name_new}\r\nAction 调试模式:\t{action_debug}\r\n隐藏非标准生成实体:\t{hide_non_standard_entities}\r\n窗帘关闭位置:\t{cover_pos_new}\r\n显示设备状态变化通知:\t{display_devices_changed_notify}\r\n设备变化:\t新增 **{devices_add}** 个设备,移除 **{devices_remove}** 个设备\r\n转换规则变化:\t共条 **{trans_rules_count}** 规则,更新 **{trans_rules_count_success}** 条规则",
|
"description": "**{nick_name}** 您好!请确认最新的配置信息,然后点击“提交”。\r\n集成将会使用更新后的配置重新载入。\r\n\r\n集成语言:\t{lang_new}\r\n用户昵称:\t{nick_name_new}\r\nAction 调试模式:\t{action_debug}\r\n隐藏非标准生成实体:\t{hide_non_standard_entities}\r\n窗帘盲区宽度:\t{cover_width_new}\r\n显示设备状态变化通知:\t{display_devices_changed_notify}\r\n设备变化:\t新增 **{devices_add}** 个设备,移除 **{devices_remove}** 个设备\r\n转换规则变化:\t共条 **{trans_rules_count}** 规则,更新 **{trans_rules_count_success}** 条规则",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "确认修改"
|
"confirm": "确认修改"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "集成網絡配置",
|
"title": "集成網絡配置",
|
||||||
"description": "## 使用介紹\r\n### 網絡檢測地址\r\n用於檢測網絡是否正常,未設置時將使用系統默認地址檢測。如果默認地址檢測異常時,可嘗試輸入可用的自定義地址檢測。\r\n- 可輸入多個檢測地址,地址之間使用`,`號間隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果為IP地址,將採用ping方式檢測,如果為http(s)地址,將採用 HTTP GET 訪問該地址檢測。\r\n- 如果想恢復系統默認檢測地址,請輸入`,`號,然後點擊'下一步'。\r\n- **該配置為全局配置,修改會影響其它集成實例的網絡檢測,請謹慎修改。**\r\n### 檢測網絡依賴項\r\n依次檢查下述網絡依賴項是否可訪問。如果相關地址無法訪問,將會導致集成異常。\r\n- OAuth2 認證地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`。",
|
"description": "## 使用介紹\r\n### 網絡檢測地址\r\n用於檢測網絡是否正常,未設置時將使用系統默認地址檢測。如果默認地址檢測異常時,可嘗試輸入可用的自定義地址檢測。\r\n- 可輸入多個檢測地址,地址之間使用`,`號間隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果為IP地址,將採用ping方式檢測,如果為http(s)地址,將採用 HTTP GET 訪問該地址檢測。\r\n- 如果想恢復系統默認檢測地址,請輸入`,`號,然後點擊'下一步'。\r\n- **該配置為全局配置,修改會影響其它集成實例的網絡檢測,請謹慎修改。**\r\n### 檢測網絡依賴項\r\n依次檢查下述網絡依賴項是否可訪問。如果相關地址無法訪問,將會導致集成異常。\r\n- OAuth2 認證地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{broker_host}`。",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "網絡檢測地址",
|
"network_detect_addr": "網絡檢測地址",
|
||||||
"check_network_deps": "檢測網絡依賴項"
|
"check_network_deps": "檢測網絡依賴項"
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
"update_trans_rules": "更新實體轉換規則",
|
"update_trans_rules": "更新實體轉換規則",
|
||||||
"update_lan_ctrl_config": "更新局域網控制配置",
|
"update_lan_ctrl_config": "更新局域網控制配置",
|
||||||
"network_detect_config": "集成網絡配置",
|
"network_detect_config": "集成網絡配置",
|
||||||
"cover_closed_position": "窗簾關閉位置"
|
"cover_dead_zone_width": "窗簾盲區寬度"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update_user_info": {
|
"update_user_info": {
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
},
|
},
|
||||||
"network_detect_config": {
|
"network_detect_config": {
|
||||||
"title": "集成網絡配置",
|
"title": "集成網絡配置",
|
||||||
"description": "## 使用介紹\r\n### 網絡檢測地址\r\n用於檢測網絡是否正常,未設置時將使用系統默認地址檢測。如果默認地址檢測異常時,可嘗試輸入可用的自定義地址檢測。\r\n- 可輸入多個檢測地址,地址之間使用`,`號間隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果為IP地址,將採用ping方式檢測,如果為http(s)地址,將採用 HTTP GET 訪問該地址檢測。\r\n- 如果想恢復系統默認檢測地址,請輸入`,`號,然後點擊'下一步'。\r\n- **該配置為全局配置,修改會影響其它集成實例的網絡檢測,請謹慎修改。**\r\n### 檢測網絡依賴項\r\n依次檢查下述網絡依賴項是否可訪問。如果相關地址無法訪問,將會導致集成異常。\r\n- OAuth2 認證地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{cloud_server}-ha.mqtt.io.mi.com:8883`。",
|
"description": "## 使用介紹\r\n### 網絡檢測地址\r\n用於檢測網絡是否正常,未設置時將使用系統默認地址檢測。如果默認地址檢測異常時,可嘗試輸入可用的自定義地址檢測。\r\n- 可輸入多個檢測地址,地址之間使用`,`號間隔,如`8.8.8.8,https://www.bing.com`\r\n- 如果為IP地址,將採用ping方式檢測,如果為http(s)地址,將採用 HTTP GET 訪問該地址檢測。\r\n- 如果想恢復系統默認檢測地址,請輸入`,`號,然後點擊'下一步'。\r\n- **該配置為全局配置,修改會影響其它集成實例的網絡檢測,請謹慎修改。**\r\n### 檢測網絡依賴項\r\n依次檢查下述網絡依賴項是否可訪問。如果相關地址無法訪問,將會導致集成異常。\r\n- OAuth2 認證地址:`https://account.xiaomi.com/oauth2/authorize`。\r\n- 小米 HTTP API 地址:`https://{http_host}/app/v2/ha/oauth/get_token`。\r\n- 小米 SPEC API 地址:`https://miot-spec.org/miot-spec-v2/template/list/device`。\r\n- 小米 MQTT Broker 地址:`mqtts://{broker_host}`。",
|
||||||
"data": {
|
"data": {
|
||||||
"network_detect_addr": "網絡檢測地址",
|
"network_detect_addr": "網絡檢測地址",
|
||||||
"check_network_deps": "檢測網絡依賴項"
|
"check_network_deps": "檢測網絡依賴項"
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
},
|
},
|
||||||
"config_confirm": {
|
"config_confirm": {
|
||||||
"title": "確認配置",
|
"title": "確認配置",
|
||||||
"description": "**{nick_name}** 您好!請確認最新的配置信息,然後點擊“提交”。\r\n集成將會使用更新後的配置重新載入。\r\n\r\n集成語言:\t{lang_new}\r\n用戶暱稱:\t{nick_name_new}\r\nAction 調試模式:\t{action_debug}\r\n隱藏非標準生成實體:\t{hide_non_standard_entities}\r\n窗簾關閉位置:\t{cover_pos_new}\r\n顯示設備狀態變化通知:\t{display_devices_changed_notify}\r\n設備變化:\t新增 **{devices_add}** 個設備,移除 **{devices_remove}** 個設備\r\n轉換規則變化:\t共條 **{trans_rules_count}** 規則,更新 **{trans_rules_count_success}** 條規則",
|
"description": "**{nick_name}** 您好!請確認最新的配置信息,然後點擊“提交”。\r\n集成將會使用更新後的配置重新載入。\r\n\r\n集成語言:\t{lang_new}\r\n用戶暱稱:\t{nick_name_new}\r\nAction 調試模式:\t{action_debug}\r\n隱藏非標準生成實體:\t{hide_non_standard_entities}\r\n窗簾盲區寬度:\t{cover_width_new}\r\n顯示設備狀態變化通知:\t{display_devices_changed_notify}\r\n設備變化:\t新增 **{devices_add}** 個設備,移除 **{devices_remove}** 個設備\r\n轉換規則變化:\t共條 **{trans_rules_count}** 規則,更新 **{trans_rules_count_success}** 條規則",
|
||||||
"data": {
|
"data": {
|
||||||
"confirm": "確認修改"
|
"confirm": "確認修改"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,12 @@ from .miot.const import DOMAIN
|
|||||||
from .miot.miot_device import MIoTDevice, MIoTServiceEntity, MIoTEntityData
|
from .miot.miot_device import MIoTDevice, MIoTServiceEntity, MIoTEntityData
|
||||||
from .miot.miot_spec import (MIoTSpecAction, MIoTSpecProperty)
|
from .miot.miot_spec import (MIoTSpecAction, MIoTSpecProperty)
|
||||||
|
|
||||||
|
try: # VacuumActivity is introduced in HA core 2025.1.0
|
||||||
|
from homeassistant.components.vacuum import VacuumActivity
|
||||||
|
HA_CORE_HAS_ACTIVITY = True
|
||||||
|
except ImportError:
|
||||||
|
HA_CORE_HAS_ACTIVITY = False
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +90,11 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity):
|
|||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
_prop_status: Optional[MIoTSpecProperty]
|
_prop_status: Optional[MIoTSpecProperty]
|
||||||
_prop_fan_level: Optional[MIoTSpecProperty]
|
_prop_fan_level: Optional[MIoTSpecProperty]
|
||||||
_prop_battery_level: Optional[MIoTSpecProperty]
|
_prop_status_cleaning: Optional[list[int]]
|
||||||
|
_prop_status_docked: Optional[list[int]]
|
||||||
|
_prop_status_paused: Optional[list[int]]
|
||||||
|
_prop_status_returning: Optional[list[int]]
|
||||||
|
_prop_status_error: Optional[list[int]]
|
||||||
|
|
||||||
_action_start_sweep: Optional[MIoTSpecAction]
|
_action_start_sweep: Optional[MIoTSpecAction]
|
||||||
_action_stop_sweeping: Optional[MIoTSpecAction]
|
_action_stop_sweeping: Optional[MIoTSpecAction]
|
||||||
@@ -106,7 +116,11 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity):
|
|||||||
|
|
||||||
self._prop_status = None
|
self._prop_status = None
|
||||||
self._prop_fan_level = None
|
self._prop_fan_level = None
|
||||||
self._prop_battery_level = None
|
self._prop_status_cleaning = []
|
||||||
|
self._prop_status_docked = []
|
||||||
|
self._prop_status_paused = []
|
||||||
|
self._prop_status_returning = []
|
||||||
|
self._prop_status_error = []
|
||||||
self._action_start_sweep = None
|
self._action_start_sweep = None
|
||||||
self._action_stop_sweeping = None
|
self._action_stop_sweeping = None
|
||||||
self._action_pause_sweeping = None
|
self._action_pause_sweeping = None
|
||||||
@@ -126,6 +140,35 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity):
|
|||||||
self._status_map = prop.value_list.to_map()
|
self._status_map = prop.value_list.to_map()
|
||||||
self._attr_supported_features |= VacuumEntityFeature.STATE
|
self._attr_supported_features |= VacuumEntityFeature.STATE
|
||||||
self._prop_status = prop
|
self._prop_status = prop
|
||||||
|
for item in prop.value_list.items:
|
||||||
|
item_str: str = item.name
|
||||||
|
item_name: str = re.sub(r'[^a-z]', '', item_str)
|
||||||
|
if item_name in {
|
||||||
|
'charging', 'charged', 'chargingcompleted',
|
||||||
|
'fullcharge', 'fullpower', 'findchargerpause',
|
||||||
|
'drying', 'washing', 'wash', 'inthewash',
|
||||||
|
'inthedry', 'stationworking', 'dustcollecting',
|
||||||
|
'upgrade', 'upgrading', 'updating'
|
||||||
|
}:
|
||||||
|
self._prop_status_docked.append(item.value)
|
||||||
|
elif item_name in {'paused', 'pause'}:
|
||||||
|
self._prop_status_paused.append(item.value)
|
||||||
|
elif item_name in {
|
||||||
|
'gocharging', 'cleancompletegocharging',
|
||||||
|
'findchargewash', 'backtowashmop', 'gowash',
|
||||||
|
'gowashing', 'summon'
|
||||||
|
}:
|
||||||
|
self._prop_status_returning.append(item.value)
|
||||||
|
elif item_name in {
|
||||||
|
'error', 'breakcharging', 'gochargebreak'
|
||||||
|
}:
|
||||||
|
self._prop_status_error.append(item.value)
|
||||||
|
elif (item_name.find('sweeping') != -1) or (
|
||||||
|
item_name.find('mopping') != -1) or (item_name in {
|
||||||
|
'cleaning', 'remoteclean', 'continuesweep',
|
||||||
|
'busy', 'building', 'buildingmap', 'mapping'
|
||||||
|
}):
|
||||||
|
self._prop_status_cleaning.append(item.value)
|
||||||
elif prop.name == 'fan-level':
|
elif prop.name == 'fan-level':
|
||||||
if not prop.value_list:
|
if not prop.value_list:
|
||||||
_LOGGER.error('invalid fan-level value_list, %s',
|
_LOGGER.error('invalid fan-level value_list, %s',
|
||||||
@@ -135,9 +178,6 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity):
|
|||||||
self._attr_fan_speed_list = list(self._fan_level_map.values())
|
self._attr_fan_speed_list = list(self._fan_level_map.values())
|
||||||
self._attr_supported_features |= VacuumEntityFeature.FAN_SPEED
|
self._attr_supported_features |= VacuumEntityFeature.FAN_SPEED
|
||||||
self._prop_fan_level = prop
|
self._prop_fan_level = prop
|
||||||
elif prop.name == 'battery-level':
|
|
||||||
self._attr_supported_features |= VacuumEntityFeature.BATTERY
|
|
||||||
self._prop_battery_level = prop
|
|
||||||
# action
|
# action
|
||||||
for action in entity_data.actions:
|
for action in entity_data.actions:
|
||||||
if action.name == 'start-sweep':
|
if action.name == 'start-sweep':
|
||||||
@@ -158,18 +198,22 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity):
|
|||||||
self._attr_supported_features |= VacuumEntityFeature.LOCATE
|
self._attr_supported_features |= VacuumEntityFeature.LOCATE
|
||||||
self._action_identify = action
|
self._action_identify = action
|
||||||
|
|
||||||
|
# Use start-charge from battery service as fallback
|
||||||
|
# if stop-and-gocharge is not available
|
||||||
|
if self._action_stop_and_gocharge is None:
|
||||||
|
for action in entity_data.actions:
|
||||||
|
if action.name == 'start-charge':
|
||||||
|
self._attr_supported_features |= (
|
||||||
|
VacuumEntityFeature.RETURN_HOME)
|
||||||
|
self._action_stop_and_gocharge = action
|
||||||
|
break
|
||||||
|
|
||||||
async def async_start(self) -> None:
|
async def async_start(self) -> None:
|
||||||
"""Start or resume the cleaning task."""
|
"""Start or resume the cleaning task."""
|
||||||
try: # VacuumActivity is introduced in HA core 2025.1.0
|
if self._prop_status is not None:
|
||||||
# pylint: disable=import-outside-toplevel
|
status = self.get_prop_value(prop=self._prop_status)
|
||||||
from homeassistant.components.vacuum import VacuumActivity
|
if (status in self._prop_status_paused
|
||||||
if (self.activity
|
) and self._action_continue_sweep:
|
||||||
== VacuumActivity.PAUSED) and self._action_continue_sweep:
|
|
||||||
await self.action_async(action=self._action_continue_sweep)
|
|
||||||
return
|
|
||||||
except ImportError:
|
|
||||||
if self.state and (self.state in {'paused', 'pause'
|
|
||||||
}) and self._action_continue_sweep:
|
|
||||||
await self.action_async(action=self._action_continue_sweep)
|
await self.action_async(action=self._action_continue_sweep)
|
||||||
return
|
return
|
||||||
await self.action_async(action=self._action_start_sweep)
|
await self.action_async(action=self._action_start_sweep)
|
||||||
@@ -203,9 +247,17 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity):
|
|||||||
return self._device_name
|
return self._device_name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self) -> Optional[str]:
|
def fan_speed(self) -> Optional[str]:
|
||||||
"""Return the current state of the vacuum cleaner.
|
"""The current fan speed of the vacuum cleaner."""
|
||||||
|
return self.get_map_value(
|
||||||
|
map_=self._fan_level_map,
|
||||||
|
key=self.get_prop_value(prop=self._prop_fan_level))
|
||||||
|
|
||||||
|
if HA_CORE_HAS_ACTIVITY:
|
||||||
|
|
||||||
|
@property
|
||||||
|
def activity(self) -> Optional[str]:
|
||||||
|
"""The current vacuum activity.
|
||||||
To fix the HA warning below:
|
To fix the HA warning below:
|
||||||
Detected that custom integration 'xiaomi_home' is setting state
|
Detected that custom integration 'xiaomi_home' is setting state
|
||||||
directly.Entity XXX(<class 'custom_components.xiaomi_home.vacuum
|
directly.Entity XXX(<class 'custom_components.xiaomi_home.vacuum
|
||||||
@@ -220,58 +272,27 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity):
|
|||||||
more constants, try get matching VacuumActivity enum first, return state
|
more constants, try get matching VacuumActivity enum first, return state
|
||||||
string as before if there is no match. In Home Assistant 2026.1, every
|
string as before if there is no match. In Home Assistant 2026.1, every
|
||||||
state should map to a VacuumActivity enum.
|
state should map to a VacuumActivity enum.
|
||||||
"""
|
"""
|
||||||
return self.activity
|
status = self.get_prop_value(prop=self._prop_status)
|
||||||
|
if status is None:
|
||||||
@property
|
return None
|
||||||
def activity(self) -> Optional[str]:
|
if status in self._prop_status_cleaning:
|
||||||
"""The current vacuum activity."""
|
|
||||||
status = self.get_prop_value(prop=self._prop_status)
|
|
||||||
if status is None:
|
|
||||||
return None
|
|
||||||
status_value = self.get_map_value(map_=self._status_map, key=status)
|
|
||||||
if status_value is None:
|
|
||||||
return None
|
|
||||||
try:
|
|
||||||
# pylint: disable=import-outside-toplevel
|
|
||||||
from homeassistant.components.vacuum import VacuumActivity
|
|
||||||
status_value = status_value.lower()
|
|
||||||
status_str = re.sub(r'[^a-z]', '', status_value)
|
|
||||||
if status_str in {
|
|
||||||
'charging', 'charged', 'chargingcompleted', 'fullcharge',
|
|
||||||
'fullpower', 'findchargerpause', 'drying', 'washing',
|
|
||||||
'wash', 'inthewash', 'inthedry', 'stationworking',
|
|
||||||
'dustcollecting', 'upgrade', 'upgrading', 'updating'
|
|
||||||
}:
|
|
||||||
return VacuumActivity.DOCKED
|
|
||||||
if status_str in {'paused', 'pause'}:
|
|
||||||
return VacuumActivity.PAUSED
|
|
||||||
if status_str in {
|
|
||||||
'gocharging', 'cleancompletegocharging', 'findchargewash',
|
|
||||||
'backtowashmop', 'gowash', 'gowashing', 'summon'
|
|
||||||
}:
|
|
||||||
return VacuumActivity.RETURNING
|
|
||||||
if (status_str.find('sweeping')
|
|
||||||
!= -1) or (status_str.find('mopping')
|
|
||||||
!= -1) or (status_str in {
|
|
||||||
'cleaning', 'remoteclean', 'continuesweep',
|
|
||||||
'busy', 'building', 'buildingmap', 'mapping'
|
|
||||||
}):
|
|
||||||
return VacuumActivity.CLEANING
|
return VacuumActivity.CLEANING
|
||||||
if status_str in {'error', 'breakcharging', 'gochargebreak'}:
|
if status in self._prop_status_docked:
|
||||||
|
return VacuumActivity.DOCKED
|
||||||
|
if status in self._prop_status_paused:
|
||||||
|
return VacuumActivity.PAUSED
|
||||||
|
if status in self._prop_status_returning:
|
||||||
|
return VacuumActivity.RETURNING
|
||||||
|
if status in self._prop_status_error:
|
||||||
return VacuumActivity.ERROR
|
return VacuumActivity.ERROR
|
||||||
return VacuumActivity.IDLE
|
return VacuumActivity.IDLE
|
||||||
except ImportError:
|
|
||||||
return status_value
|
|
||||||
|
|
||||||
@property
|
else:
|
||||||
def battery_level(self) -> Optional[int]:
|
|
||||||
"""The current battery level of the vacuum cleaner."""
|
|
||||||
return self.get_prop_value(prop=self._prop_battery_level)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def fan_speed(self) -> Optional[str]:
|
def state(self) -> Optional[str]:
|
||||||
"""The current fan speed of the vacuum cleaner."""
|
"""The current state of the vacuum."""
|
||||||
return self.get_map_value(
|
status = self.get_prop_value(prop=self._prop_status)
|
||||||
map_=self._fan_level_map,
|
return None if (status is None) else self.get_map_value(
|
||||||
key=self.get_prop_value(prop=self._prop_fan_level))
|
map_=self._status_map, key=status)
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ class WaterHeater(MIoTServiceEntity, WaterHeaterEntity):
|
|||||||
if operation_mode == STATE_ON:
|
if operation_mode == STATE_ON:
|
||||||
await self.set_property_async(prop=self._prop_on, value=True)
|
await self.set_property_async(prop=self._prop_on, value=True)
|
||||||
return
|
return
|
||||||
if self.get_prop_value(prop=self._prop_on) is False:
|
if self.get_prop_value(prop=self._prop_on) is not True:
|
||||||
await self.set_property_async(prop=self._prop_on,
|
await self.set_property_async(prop=self._prop_on,
|
||||||
value=True,
|
value=True,
|
||||||
write_ha_state=False)
|
write_ha_state=False)
|
||||||
|
|||||||
@@ -93,11 +93,11 @@ git checkout v1.0.0
|
|||||||
|
|
||||||
- 米家集成是否支持本地化控制?
|
- 米家集成是否支持本地化控制?
|
||||||
|
|
||||||
米家集成支持通过[小米中枢网关](https://www.mi.com/shop/buy/detail?product_id=15755&cfrom=search)(固件版本 3.4.0_000 以上)或内置中枢网关(软件版本 0.8.0 以上)的米家设备实现本地化控制。如果没有小米中枢网关或其他带中枢网关功能的设备,那么所有控制指令都会通过小米云发送。支持 Home Assistant 本地化控制的小米中枢网关(含内置中枢网关)的固件尚未发布,固件升级计划请参阅 MIoT 团队的通知。
|
米家集成支持通过[小米中枢网关](https://www.mi.com/shop/buy/detail?product_id=15755&cfrom=search)(固件版本 3.3.0_0023 及以上)或[内置中枢网关](https://github.com/XiaoMi/ha_xiaomi_home/wiki/Central-hub-gateway-device-models)(软件版本 0.8.9 及以上)的米家设备实现本地化控制。如果没有小米中枢网关或其他带中枢网关功能的设备,那么所有控制指令都会通过小米云发送。支持 Home Assistant 本地化控制的小米中枢网关(含内置中枢网关)的固件已发布。
|
||||||
|
|
||||||
小米中枢网关仅在中国大陆可用,在其他地区不可用。
|
小米中枢网关仅在中国大陆可用,在其他地区不可用。
|
||||||
|
|
||||||
米家集成也能通过开启小米局域网控制功能实现部分本地化控制效果。小米局域网控制功能只能控制与 Home Assistant 处于同一局域网内的 IP 设备(使用 WiFi、网线连接路由器的设备),无法控制蓝牙 Mesh、ZigBee 等协议接入的设备。该功能可能会引起一些异常,我们建议不要使用该功能。小米局域网控制功能开启方法:[设置 > 设备与服务 > 已配置 > Xiaomi Home](https://my.home-assistant.io/redirect/integration/?domain=xiaomi_home) > 配置 > 更新局域网控制配置
|
米家集成也能通过开启小米局域网控制功能实现部分本地化控制效果。小米局域网控制功能只能控制与 Home Assistant 处于同一局域网内的 IP 设备(使用 WiFi、网线连接路由器的设备),无法控制蓝牙 Mesh、ZigBee 等协议接入的设备。该功能可能会引起一些异常,我们建议不要使用该功能。小米局域网控制功能开启方法:[设置 > 设备与服务 > 已配置 > Xiaomi Home](https://my.home-assistant.io/redirect/integration/?domain=xiaomi_home) > 配置 > 更新局域网控制配置。
|
||||||
|
|
||||||
小米局域网控制功能不受地区限制,在全球范围内均可用。如果 Home Assistant 所在的局域网内存在中枢网关,那么即便米家集成开启了小米局域网控制功能,该功能也不会生效。
|
小米局域网控制功能不受地区限制,在全球范围内均可用。如果 Home Assistant 所在的局域网内存在中枢网关,那么即便米家集成开启了小米局域网控制功能,该功能也不会生效。
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:
|
|||||||
|
|
||||||
## 多语言支持
|
## 多语言支持
|
||||||
|
|
||||||
米家集成配置选项中可选择的集成使用的语言有简体中文、繁体中文、英文、西班牙语、俄语、法语、德语、日语这八种语言。目前,米家集成配置页面的简体中文和英文已经过人工校审,其他语言由机器翻译。如果您希望修改配置页面的词句,则需要修改 `custom_components/xiaomi_home/translations/` 以及 `custom_components/xiaomi_home/miot/i18n/` 目录下相应语言的 json 文件。
|
米家集成配置选项中可选择的集成使用的语言有简体中文、繁体中文、英文、西班牙语、俄语、法语、德语、日语、意大利语、荷兰语、葡萄牙语、巴西葡萄牙语、土耳其语这十三种语言。目前,米家集成配置页面的简体中文和英文已经过人工校审,其他语言由机器翻译或社区贡献。如果您希望修改配置页面的词句,则需要修改 `custom_components/xiaomi_home/translations/` 以及 `custom_components/xiaomi_home/miot/i18n/` 目录下相应语言的 json 文件。
|
||||||
|
|
||||||
在显示 Home Assistant 实体名称时,米家集成会从小米云下载设备厂商为设备配置的多语言文件,该文件包含设备 MIoT-Spec-V2 实例的多语言翻译。 `multi_lang.json` 是本地维护的多语言配置字典,其优先级高于从云端获取的多语言文件,可用于补充或修改设备的多语言翻译。
|
在显示 Home Assistant 实体名称时,米家集成会从小米云下载设备厂商为设备配置的多语言文件,该文件包含设备 MIoT-Spec-V2 实例的多语言翻译。 `multi_lang.json` 是本地维护的多语言配置字典,其优先级高于从云端获取的多语言文件,可用于补充或修改设备的多语言翻译。
|
||||||
|
|
||||||
@@ -348,7 +348,7 @@ urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:
|
|||||||
|
|
||||||
`multi_lang.json` 的键值为 MIoT-Spec-V2 设备实例的 urn (不含版本号“version”字段)。
|
`multi_lang.json` 的键值为 MIoT-Spec-V2 设备实例的 urn (不含版本号“version”字段)。
|
||||||
|
|
||||||
language code 为语言代码,取值为 zh-Hans、zh-Hant、en、es、ru、fr、de、ja (对应上述米家集成可选的八种语言)。
|
language code 为语言代码,取值为 zh-Hans、zh-Hant、en、es、ru、fr、de、ja、it、nl、pt、pt-BR、tr(对应上述米家集成可选的十三种语言)。
|
||||||
|
|
||||||
instance code 为 MIoT-Spec-V2 实例代码,格式如下:
|
instance code 为 MIoT-Spec-V2 实例代码,格式如下:
|
||||||
|
|
||||||
@@ -386,6 +386,7 @@ siid、piid、eiid、aiid、value 均为十进制三位整数。
|
|||||||
- 贡献指南: [English](../CONTRIBUTING.md) | [简体中文](./CONTRIBUTING_zh.md)
|
- 贡献指南: [English](../CONTRIBUTING.md) | [简体中文](./CONTRIBUTING_zh.md)
|
||||||
- [更新日志](../CHANGELOG.md)
|
- [更新日志](../CHANGELOG.md)
|
||||||
- 开发文档: https://developers.home-assistant.io/docs/creating_component_index
|
- 开发文档: https://developers.home-assistant.io/docs/creating_component_index
|
||||||
|
- [常见问题](https://github.com/XiaoMi/ha_xiaomi_home/wiki)
|
||||||
|
|
||||||
## 目录结构
|
## 目录结构
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user