syssi / xiaomi_fan

Xiaomi Mi Smart Fan integration for Home Assistant
Apache License 2.0
427 stars 118 forks source link

Add yeelink.light.fancl2 (Yeelight 61W fixed ceiling fan light) support #100

Open jschonenberg opened 3 years ago

jschonenberg commented 3 years ago

Is it possible to add support for the Yeelight fixed ceiling fan light. It would be fine if support is initially limited to fan control.

syssi commented 3 years ago

It looks like the device supports some miio commands and has miot-specs too:

https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:light:0000A001:yeelink-fancl2:2

syssi commented 3 years ago
# https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:light:0000A001:yeelink-fancl2:2

Device 'urn:miot-spec-v2:device:light:0000A001:yeelink-fancl2:2': Light with 5 services

* Service siid 1: (Device Information): 4 props, 0 actions

        ## Properties ##
                siid 1: piid: 1 (Device Manufacturer): (string, unit: None) (acc: ['read'])
                siid 1: piid: 2 (Device Model): (string, unit: None) (acc: ['read'])
                siid 1: piid: 3 (Device Serial Number): (string, unit: None) (acc: ['read'])
                siid 1: piid: 4 (Current Firmware Version): (string, unit: None) (acc: ['read'])

* Service siid 2: (Light): 7 props, 1 actions

        ## Properties ##
                siid 2: piid: 1 (Switch Status): (bool, unit: None) (acc: ['read', 'write', 'notify'])
                siid 2: piid: 2 (Mode): (uint8, unit: none) (acc: ['read', 'write', 'notify'])
                        {'value': 0, 'description': 'Day'}
                        {'value': 1, 'description': 'Night'}
                siid 2: piid: 3 (Brightness): (uint8, unit: percentage) (acc: ['read', 'write', 'notify'])
                        Range: [1, 100, 1]
                siid 2: piid: 5 (Color Temperature): (uint16, unit: kelvin) (acc: ['read', 'write', 'notify'])
                        Range: [2700, 6500, 1]
                siid 2: piid: 6 (Flow): (uint8, unit: None) (acc: ['read', 'write', 'notify'])
                        {'value': 0, 'description': 'Auto'}
                siid 2: piid: 7 (Power Off Delay Time): (uint32, unit: minutes) (acc: ['read', 'write', 'notify'])
                        Range: [0, 180, 1]
                siid 2: piid: 8 (Left Time): (uint32, unit: minutes) (acc: ['read', 'notify'])
                        Range: [0, 180, 1]

        ## Actions ##
                siid 2: aiid 1 Toggle: in: [] -> out: []

* Service siid 3: (Fan): 7 props, 1 actions

        ## Properties ##
                siid 3: piid: 1 (Switch Status): (bool, unit: None) (acc: ['read', 'write', 'notify'])
                siid 3: piid: 2 (Fan Level): (uint8, unit: none) (acc: ['read', 'write', 'notify'])
                        {'value': 0, 'description': 'Level1'}
                        {'value': 1, 'description': 'Level2'}
                        {'value': 2, 'description': 'Level3'}
                        {'value': 3, 'description': 'Level4'}
                siid 3: piid: 7 (Mode): (uint8, unit: none) (acc: ['read', 'write', 'notify'])
                        {'value': 0, 'description': 'Normal-wind'}
                        {'value': 1, 'description': 'Natural-wind'}
                        {'value': 2, 'description': 'Reverse-wind'}
                        {'value': 3, 'description': 'Strong-wind'}
                        {'value': 4, 'description': 'Small-wind'}
                        {'value': 5, 'description': 'Sleep-wind'}
                siid 3: piid: 8 (Status): (uint8, unit: none) (acc: ['read', 'notify'])
                        {'value': 0, 'description': 'Idle'}
                        {'value': 1, 'description': 'Busy'}
                siid 3: piid: 9 (Device Fault): (uint8, unit: None) (acc: ['read', 'notify'])
                        {'value': 0, 'description': 'No faults'}
                siid 3: piid: 11 (Power Off Delay Time): (uint32, unit: minutes) (acc: ['read', 'write', 'notify'])
                        Range: [0, 720, 1]
                siid 3: piid: 12 (Left Time): (uint32, unit: minutes) (acc: ['read', 'notify'])
                        Range: [0, 720, 1]

        ## Actions ##
                siid 3: aiid 1 Toggle: in: [] -> out: []

* Service siid 4: (yl light 私有服务): 4 props, 9 actions

        ## Properties ##
                siid 4: piid: 1 (上电是否开灯): (uint8, unit: none) (acc: ['read', 'write', 'notify'])
                        {'value': 1, 'description': ''}
                        {'value': 2, 'description': ''}
                siid 4: piid: 2 (夜灯时间段(en, dly, em, eh, sm, sh)): (int64, unit: none) (acc: ['read', 'write', 'notify'])
                        Range: [0, 281474976710655, 1]
                siid 4: piid: 4 (smart-switch-en): (bool, unit: none) (acc: ['read', 'write', 'notify'])
                siid 4: piid: 5 (miband-sleep-ctrl): (uint8, unit: none) (acc: ['read', 'write', 'notify'])
                        {'value': 0, 'description': 'Trun Off MiBand Ctrl'}
                        {'value': 1, 'description': 'Trun Off Light By MiBand When Sleep'}
                        {'value': 2, 'description': 'Trun Off Fan By MiBand When Sleep'}
                        {'value': 3, 'description': 'Trun Off Light And Fan By MiBand When Sleep'}
                        {'value': 4, 'description': 'Turn On Sleep-Wind Mode When Sleep'}
                        {'value': 5, 'description': 'Trun Off Light And Turn On Sleep-Wind Mode When Sleep'}

        ## Actions ##
                siid 4: aiid 2 亮度切换(智能联动): in: [] -> out: []
                siid 4: aiid 3 色温切换(智能联动): in: [] -> out: []
                siid 4: aiid 4 风扇档位切换(智能联动): in: [] -> out: []
                siid 4: aiid 5 birghtness-increase: in: [] -> out: []
                siid 4: aiid 6 brightness-decrease: in: [] -> out: []
                siid 4: aiid 7 ct-increase: in: [] -> out: []
                siid 4: aiid 8 ct-decrease: in: [] -> out: []
                siid 4: aiid 9 on-or-bright-cycle: in: [] -> out: []
                siid 4: aiid 10 on-or-ct-cycle: in: [] -> out: []

* Service siid 5: (yl fan 私有服务): 6 props, 1 actions

        ## Properties ##
                siid 5: piid: 1 (上电是否开风扇): (uint8, unit: none) (acc: ['read', 'write', 'notify'])
                        {'value': 0, 'description': ''}
                        {'value': 1, 'description': ''}
                siid 5: piid: 2 (): (uint32, unit: none) (acc: ['read', 'write', 'notify'])
                        Range: [0, 4294967295, 1]
                siid 5: piid: 3 (smart-switch-en): (bool, unit: none) (acc: ['read', 'write', 'notify'])
                siid 5: piid: 4 (fan-speed): (uint8, unit: percentage) (acc: ['read', 'write', 'notify'])
                        Range: [1, 100, 1]
                siid 5: piid: 5 (sleep-delay-off): (uint16, unit: minutes) (acc: ['read', 'write', 'notify'])
                        Range: [0, 720, 1]
                siid 5: piid: 6 (mode-for-restore): (uint8, unit: none) (acc: ['read', 'notify'])
                        Range: [0, 2, 1]

        ## Actions ##
                siid 5: aiid 1 风扇档位切换(智能联动): in: [] -> out: []