Skip to content

Commit

Permalink
Support new Xiaomi Aqara device model names and LAN protocol 2.0 (#13540
Browse files Browse the repository at this point in the history
)
  • Loading branch information
Kerwin Bryant authored and syssi committed Apr 25, 2018
1 parent 75fffb6 commit 0a0d34d
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 15 deletions.
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',
'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']:
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

0 comments on commit 0a0d34d

Please sign in to comment.