Add co2-density property mapping to SPEC_PROP_TRANS_MAP to enable
statistics recording for CO2 sensors.
Changes:
- Import CONCENTRATION_PARTS_PER_MILLION from homeassistant.const
- Add co2-density mapping with:
- device_class: SensorDeviceClass.CO2
- state_class: SensorStateClass.MEASUREMENT
- unit_of_measurement: CONCENTRATION_PARTS_PER_MILLION (ppm)
This ensures CO2 sensors (like those from CGDN1 device) have proper
device classification and Home Assistant can record long-term statistics.
Fixes#1630
The description of the service was appended to the unique_id of the service
entities without a migration step, so the entities registered before that
change were replaced by new ones. The entity_id of the new entity is
different, which silently breaks every automation, script and dashboard
referring to the old one.
Look up the entities that are still registered under the old unique_id when
the entry is set up, and rewrite it in place. The entity_id is left
untouched, so nothing referring to it has to be updated.
The lookup is keyed on the unique_id only and scoped to the config entry, and
nothing is written when the current unique_id is already registered, so it is
idempotent and cannot replace an entity that is in use. An entity that cannot
be migrated is reported and skipped, the others are still migrated.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Home Assistant reports the entity_id set by the integration as invalid when
its domain is not the platform domain, or when the object_id contains
characters that are not allowed, e.g. a MIoT-Spec-V2 description in Chinese
or a description that is empty once slugified. Both are deprecated and stop
working in 2027.5.0 and 2027.2.0.
Derive the platform domain from the Home Assistant entity base class that
each entity mixes in, and slugify the object_id.
The unique_id keeps using the integration domain and the raw description, so
it stays byte for byte identical for the entities that are already
registered. The entity_id of an already registered entity is owned by the
entity registry and is not changed either, and a newly registered entity gets
the same entity_id as before, since the registry was already slugifying the
object_id it was given.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: LiShuzhen <SusanPhevos@gmail.com>
* fix: the playing-state property's access field of xiaomi.wifispeaker.lx04 and xiaomi.wifispeaker.lx06 (#1566)
* fix: the playing-state property's access field of xiaomi.wifispeaker.x08c
* feat: remove xiaomi.router.rd03 from UNSUPPORTED_MODELS and add era.airp.cwb03 into it
* fix: xiaomi.airc.h09h00 humidity-range unit (#1589)
* fix: add k0918.toothbrush.t700 into UNSUPPORTED_MODELS (#1585)
* fix: the playing-state property's access field of xiaomi.wifispeaker.l04m (#1596)
* feat: add Turkish device translations to multi_lang.json
Added comprehensive Turkish (tr) translations for all 13 MIoT device specifications
in multi_lang.json to complete Turkish language support.
Changes:
- Added Turkish translations for all device properties, services, events, and actions
- Covers 13 device types: bath-heater, electronic-valve, fan, gateway, lock,
plant-monitor, switch, thermostat, and vacuum
- Used proper Turkish characters (ç, ğ, ı, ö, ş, ü, İ)
- Maintained technical term consistency (Gateway→Ağ Geçidi, WiFi, IP, etc.)
- Followed formal Turkish (siz form) for professional user experience
Technical details:
- 135 lines added to multi_lang.json
- Turkish translations placed alphabetically after Russian (ru)
- JSON syntax validated successfully
- All translations follow same structure as existing languages (de, en, es, fr, ja, ru, zh-Hans, zh-Hant)
This completes the Turkish language support started in #1468, enabling Turkish-speaking
users to see device names and properties in their native language.
Users will need to update conversion rules via Integration CONFIGURE page in
Home Assistant for translations to take effect.
* feat: add comprehensive Turkish translations for vacuum devices
Added Turkish translations for 5 vacuum device models to multi_lang.json:
- Viomi V5 Pro (viomi-v38, viomi-v5): Full translation including map management
- Narwa vacuum models (narwa-001, narwa-ax11): Core features and map support
- Roidmi V60 (roidmi-v60): Complete vacuum functionality
Key translations added:
- Map management (Harita Yönetimi): Map list, active map, map name, map ID
- Battery and charging status
- Cleaning modes and suction power levels
- Consumables lifetime tracking
- Advanced settings (carpet mode, edge cleaning, obstacle detection)
This resolves Chinese text appearing in vacuum device interfaces by providing
local Turkish translations that override cloud-provided Chinese defaults.
Total vacuum devices with Turkish support: 6 models
File size: 617 lines (expanded from 442 lines)
* fix: sort multi_lang.json entries alphabetically
Sort all device URN entries in multi_lang.json to pass check-rule-format test.
Entries are now in alphabetical order as required by the test suite.
This fixes the failing GitHub Actions check-rule-format test.
* fix: daikin.aircondition.k2 property format (#1364)
* fix: daikin.airfresh.k33 property format (#1364)
* feat: xiaomi.wifispeaker.x08e is not converted to the media player entity (#1533)
* docs: FAQ local mode in README
* fix: xiaomi.waterpuri.s1200g filter property unit (#1489)
* fix: xiaomi.aircondition.c24 power consumption device class (#1243)
* fix: cuco.plug.cp7pd power consumption and power value precision (#1502)
* fix: lxzn.valve.02 electricity property unit (#1514)
* fix: xiaomi.derh.lite temperature precision
Add value-range step of 0.1 for dehumidifier temperature property to preserve decimal precision.
The xiaomi.derh.lite dehumidifier was reporting temperature as integer instead of float due to the default value-range step of 1. This fix changes the step to 0.1 to allow one decimal place precision (e.g., 22.5°C instead of 23°C).
Similar to the fix for cgllc.airm.cgd1st air monitor in commit 580ff87.
* chore: sort dehumidifier entry
* feat: add Turkish language support
Added comprehensive Turkish (tr) language translations for Xiaomi Home Integration.
Changes:
- Added custom_components/xiaomi_home/translations/tr.json with complete UI translations
- Added custom_components/xiaomi_home/miot/i18n/tr.json with MIoT-specific translations
- All placeholders, markdown formatting, and special characters preserved
- Validated against English source files for structural integrity
Technical details:
- Followed Home Assistant language code standards (ISO 639-1: tr)
- Maintained formal Turkish (siz form) for professional user experience
- Preserved all technical terms (OAuth2, MIoT-Spec-V2, MQTT, etc.)
- JSON structure validated and all keys match English version
* feat: add Turkish translations to bool_trans.yaml
Added Turkish boolean value translations for:
- default: true/false values
- contact_state: contact/no contact states
- motion_state: motion detected states
- open_close: open/close states
- yes_no: yes/no values
* docs: update README to reflect Turkish language support
Updated multiple language support section:
- Changed from 8 to 13 supported languages
- Added Turkish (tr) to the language code list
- Updated language list to include all currently supported languages:
Italian, Dutch, Portuguese, Brazilian Portuguese, and Turkish
* fix: correct language dictionary sorting and update documentation
- Sort INTEGRATION_LANGUAGES dictionary alphabetically (tr after ru)
- Update CLAUDE.md to reflect 13 supported languages instead of 8
- Fixes test_miot_data_sort() test requirement
- No functional changes, documentation and code style improvements only
* docs: update Chinese README to reflect 13 supported languages
- Changed from 8 to 13 languages in Chinese documentation
- Added Turkish, Italian, Dutch, Portuguese, Brazilian Portuguese
- Updated language code list to include: it, nl, pt, pt-BR, tr
- Changed translation source note from "machine translation"
to "machine translation or community contributions"
- Maintains consistency with English README.md
* feat: subscribe the proxy gateway child device up messages even though the device is offline (#1313)
* feat: do not subscribe proxy gateway child device online/offline state message
* fix: cuco.plug.cp2d electric current (#1279)
* fix: xiaomi.fan.p45 fan level (#1291)
* docs: add necessary notices
* fix: xiaomi.aircondition.c17 humidity-range unit (#1308)
* fix: xiaomi.airc.h40h00 humidity-range unit
* fix: sanmei.valve.s1 power consumption, current and voltage (#1327)
* fix: xiaomi.aircondition.m16 humidity-range unit
* fix: set the air conditioner on if its switch status property is False or None (#1277)
* feat: add a standalone switch for 090615.aircondition.ktf
* fix: add an alongside switch for juhl.aircondition.hvac (#1287)