Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 19 additions & 10 deletions homeassistant/components/binary_sensor/xiaomi_aqara.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,30 +25,35 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
for (_, gateway) in hass.data[PY_XIAOMI_GATEWAY].gateways.items():
for device in gateway.devices['binary_sensor']:
model = device['model']
if model in ['motion', 'sensor_motion.aq2']:
if model in ['motion', 'sensor_motion', 'sensor_motion.aq2']:
devices.append(XiaomiMotionSensor(device, hass, gateway))
elif model in ['magnet', 'sensor_magnet.aq2']:
elif model in ['magnet', 'sensor_magnet', 'sensor_magnet.aq2']:
devices.append(XiaomiDoorSensor(device, gateway))
elif model == 'sensor_wleak.aq1':
devices.append(XiaomiWaterLeakSensor(device, gateway))
elif model == 'smoke':
elif model in ['smoke', 'sensor_smoke']:
devices.append(XiaomiSmokeSensor(device, gateway))
elif model == 'natgas':
elif model in ['natgas', 'sensor_natgas']:
devices.append(XiaomiNatgasSensor(device, gateway))
elif model in ['switch', 'sensor_switch.aq2', 'sensor_switch.aq3']:
devices.append(XiaomiButton(device, 'Switch', 'status',
elif model in ['switch', 'sensor_switch',
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is my assumption correct: The device "switch" is called "sensor_switch" in future (new protocol version). It isn't a new hardware version of the device?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to me, the sub-device receives a new gateway (protocol 2.0) and the model changes. So, in order to be compatible with the old and new agreements

'sensor_switch.aq2', 'sensor_switch.aq3']:
if 'proto' not in device or int(device['proto'][0:1]) == 1:
data_key = 'status'
else:
data_key = 'channel_0'
devices.append(XiaomiButton(device, 'Switch', data_key,
hass, gateway))
elif model == '86sw1':
elif model in ['86sw1', 'sensor_86sw1.aq1']:
devices.append(XiaomiButton(device, 'Wall Switch', 'channel_0',
hass, gateway))
elif model == '86sw2':
elif model in ['86sw2', 'sensor_86sw2.aq1']:
devices.append(XiaomiButton(device, 'Wall Switch (Left)',
'channel_0', hass, gateway))
devices.append(XiaomiButton(device, 'Wall Switch (Right)',
'channel_1', hass, gateway))
devices.append(XiaomiButton(device, 'Wall Switch (Both)',
'dual_channel', hass, gateway))
elif model == 'cube':
elif model in ['cube', 'sensor_cube']:
devices.append(XiaomiCube(device, hass, gateway))
add_devices(devices)

Expand Down Expand Up @@ -129,8 +134,12 @@ def __init__(self, device, hass, xiaomi_hub):
"""Initialize the XiaomiMotionSensor."""
self._hass = hass
self._no_motion_since = 0
if 'proto' not in device or int(device['proto'][0:1]) == 1:
data_key = 'status'
else:
data_key = 'motion_status'
XiaomiBinarySensor.__init__(self, device, 'Motion Sensor', xiaomi_hub,
'status', 'motion')
data_key, 'motion')

@property
def device_state_attributes(self):
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/light/xiaomi_aqara.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
for (_, gateway) in hass.data[PY_XIAOMI_GATEWAY].gateways.items():
for device in gateway.devices['light']:
model = device['model']
if model == 'gateway':
if model in ['gateway', 'gateway.v3']:
devices.append(XiaomiGatewayLight(device, 'Gateway Light',
gateway))
add_devices(devices)
Expand Down
4 changes: 2 additions & 2 deletions homeassistant/components/sensor/xiaomi_aqara.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
'temperature', gateway))
devices.append(XiaomiSensor(device, 'Humidity',
'humidity', gateway))
elif device['model'] == 'weather.v1':
elif device['model'] in ['weather', 'weather.v1']:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure about this ("weather") model name?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes ,i sure

devices.append(XiaomiSensor(device, 'Temperature',
'temperature', gateway))
devices.append(XiaomiSensor(device, 'Humidity',
Expand All @@ -36,7 +36,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
elif device['model'] == 'sensor_motion.aq2':
devices.append(XiaomiSensor(device, 'Illumination',
'lux', gateway))
elif device['model'] == 'gateway':
elif device['model'] in ['gateway', 'gateway.v3', 'acpartner.v3']:
devices.append(XiaomiSensor(device, 'Illumination',
'illumination', gateway))
add_devices(devices)
Expand Down
8 changes: 6 additions & 2 deletions homeassistant/components/switch/xiaomi_aqara.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
for device in gateway.devices['switch']:
model = device['model']
if model == 'plug':
devices.append(XiaomiGenericSwitch(device, "Plug", 'status',
if 'proto' not in device or int(device['proto'][0:1]) == 1:
data_key = 'status'
else:
data_key = 'channel_0'
devices.append(XiaomiGenericSwitch(device, "Plug", data_key,
True, gateway))
elif model in ['ctrl_neutral1', 'ctrl_neutral1.aq1']:
devices.append(XiaomiGenericSwitch(device, 'Wall Switch',
Expand All @@ -52,7 +56,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
'Wall Switch LN Right',
'channel_1',
False, gateway))
elif model in ['86plug', 'ctrl_86plug.aq1']:
elif model in ['86plug', 'ctrl_86plug', 'ctrl_86plug.aq1']:
devices.append(XiaomiGenericSwitch(device, 'Wall Plug',
'status', True, gateway))
add_devices(devices)
Expand Down