mirror of
https://github.com/XiaoMi/ha_xiaomi_home.git
synced 2025-09-18 04:03:21 +08:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
0f65635342 | |||
947169f18d | |||
65a7a6d22a | |||
c29f7eecbd | |||
58c671483e |
@ -1,4 +1,13 @@
|
|||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
## 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 fix: xiaomi.fan.p70 and fix: 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
|
## v0.4.1
|
||||||
### Changed
|
### 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)
|
- 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)
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
"cryptography",
|
"cryptography",
|
||||||
"psutil"
|
"psutil"
|
||||||
],
|
],
|
||||||
"version": "v0.4.1",
|
"version": "v0.4.2",
|
||||||
"zeroconf": [
|
"zeroconf": [
|
||||||
"_miot-central._tcp.local."
|
"_miot-central._tcp.local."
|
||||||
]
|
]
|
||||||
|
@ -89,6 +89,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'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1108,6 +1108,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_format(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)
|
||||||
@ -1279,8 +1281,9 @@ class MIoTPropertyEntity(Entity):
|
|||||||
|
|
||||||
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_format(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()
|
||||||
|
|
||||||
|
@ -513,6 +513,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_error(f'mips sub when not connected, {topic}')
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
if topic not in self._mips_sub_pending_map:
|
if topic not in self._mips_sub_pending_map:
|
||||||
@ -531,6 +532,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)
|
||||||
@ -639,6 +641,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()
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -48,3 +48,9 @@ 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:
|
||||||
|
- '*'
|
||||||
|
@ -22,6 +22,10 @@ urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:2: urn:miot-spec-v2:
|
|||||||
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h40h00:1:
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h40h00:1:
|
||||||
prop.10.6:
|
prop.10.6:
|
||||||
unit: none
|
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:
|
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1:
|
||||||
prop.10.6:
|
prop.10.6:
|
||||||
unit: none
|
unit: none
|
||||||
@ -41,6 +45,12 @@ 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
|
||||||
|
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-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:
|
||||||
@ -130,6 +140,12 @@ urn:miot-spec-v2:device:fan:0000A005:xiaomi-p51:1:
|
|||||||
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
|
||||||
@ -175,6 +191,10 @@ 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: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
|
||||||
|
@ -170,6 +170,11 @@ SPEC_DEVICE_TRANS_MAP: dict = {
|
|||||||
'properties': {
|
'properties': {
|
||||||
'battery-level': {'read'}
|
'battery-level': {'read'}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
'optional': {
|
||||||
|
'actions': {
|
||||||
|
'start-charge'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -203,6 +203,16 @@ 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."""
|
||||||
if self._prop_status is not None:
|
if self._prop_status is not None:
|
||||||
|
Reference in New Issue
Block a user