AlexxIT / XiaomiGateway3

Home Assistant custom component for control Xiaomi Multimode Gateway (aka Gateway 3), Xiaomi Multimode Gateway 2, Aqara Hub E1 on default firmwares over LAN
https://github.com/AlexxIT/Blog
MIT License
2.42k stars 340 forks source link

MIJIA Curtain Companion support #712

Closed seanzhang98 closed 2 years ago

seanzhang98 commented 2 years ago

XiaoMi lunched its new BLE MIJIA Curtain Companion, show as unknow mesh device in the gateway (model: MJSGCLBL01LM)

Some mapping data and config found on Xiaomi MIoT plugin and not sure if the info is useful for adopting into this one

mapping {"curtain":{"motor_control":{"siid":2,"piid":1},"target_position":{"siid":2,"piid":2},"status":{"siid":2,"piid":3},"fault":{"siid":2,"piid":4},"motor_reverse":{"siid":2,"piid":5},"current_position":{"siid":2,"piid":6},"wake_up_mode":{"siid":2,"piid":7}},"battery":{"battery_level":{"siid":5,"piid":1},"charging_state":{"siid":5,"piid":2}},"a_l":{"curtain_motor_calibrate":{"siid":2,"aiid":1},"identify_identify":{"siid":4,"aiid":1},"curtain_cfg_sync_all_rd_attr":{"siid":3,"aiid":1},"curtain_cfg_block_auto_pointset":{"siid":3,"aiid":2},"curtain_cfg_resume_auto_pointset":{"siid":3,"aiid":3}}}

config {"curtain":{"fault":{"No Faults":0,"Overtemp Uncharging":1,"Undertemp Uncharging":2,"Overtemp Charging":3,"Undertemp Charging":4},"status":{"Stop":0,"Opening":1,"Closing":2},"motor_control":{"stop":0,"open":1,"close":2},"current_position":{"value_range":[0,100,1]},"target_position":{"value_range":[0,100,1]},"motor_reverse":{"access":7,"format":"uint8","unit":null,"value_list":{"Forward":0,"Reserve":1}},"wake_up_mode":{"access":7,"format":"bool","unit":null},"main":true},"battery":{"battery_level":{"access":5,"format":"uint8","unit":"percentage","value_range":[0,100,1]},"charging_state":{"access":5,"format":"uint8","unit":null,"value_list":{"Charging":1,"Not charging":2,"Not chargeable":3}}}}

Joee-D commented 2 years ago

refer to this Converters works well now

from custom_components.xiaomi_gateway3.core.converters.devices import *

DEVICES = [{
    3129: ["xiaomi", "BLE MIJIA Curtain Companion", "MJSGCLBL01LM"],
    "spec": [
        MapConv("motor", "cover", mi="2.p.1", map={
            0: "stop", 1: "open", 2: "close"
        }),
        Converter("target_position", mi="2.p.2"),
        CurtainPosConv("position", mi="2.p.6", parent="motor"),
        MapConv("run_state", mi="2.p.3", parent="motor", map={
            0: "stop", 1: "opening", 2: "closing"
        }),
        Converter("battery", "sensor", mi="5.p.1"),  # percent
        Converter("motor_reverse", "switch", mi="2.p.5", enabled=False),
        MapConv("battery_charging", "binary_sensor", mi="5.p.2", map={
            1: True, 2: False, 3: False,
        }, enabled=False),
        BoolConv("light", "binary_sensor", mi="3.p.11")
    ],
}] + DEVICES

image image

keniji commented 2 years ago

refer this https://github.com/AlexxIT/XiaomiGateway3/wiki/Converters works well now

from custom_components.xiaomi_gateway3.core.converters.devices import *

DEVICES = [{
    3129: ["xiaomi", "BLE MIJIA Curtain Companion", "MJSGCLBL01LM"],
    "spec": [
        MapConv("motor", "cover", mi="2.p.1", map={
            0: "stop", 1: "open", 2: "close"
        }),
        Converter("target_position", mi="2.p.2"),
        CurtainPosConv("position", mi="2.p.6", parent="motor"),
        MapConv("run_state", mi="2.p.3", parent="motor", map={
            0: "stop", 1: "opening", 2: "closing"
        }),
        Converter("battery", "sensor", mi="5.p.1"),  # percent
        Converter("motor_reverse", "switch", mi="2.p.5", enabled=False),
        MapConv("battery_charging", "binary_sensor", mi="5.p.2", map={
            1: True, 2: False, 3: False,
        }, enabled=False),
        BoolConv("light", "binary_sensor", mi="3.p.11")
    ],
}] + DEVICES

image image

Tested and it works fine~ Thanks for your job~

seanzhang98 commented 2 years ago

refer this https://github.com/AlexxIT/XiaomiGateway3/wiki/Converters works well now

from custom_components.xiaomi_gateway3.core.converters.devices import *

DEVICES = [{
    3129: ["xiaomi", "BLE MIJIA Curtain Companion", "MJSGCLBL01LM"],
    "spec": [
        MapConv("motor", "cover", mi="2.p.1", map={
            0: "stop", 1: "open", 2: "close"
        }),
        Converter("target_position", mi="2.p.2"),
        CurtainPosConv("position", mi="2.p.6", parent="motor"),
        MapConv("run_state", mi="2.p.3", parent="motor", map={
            0: "stop", 1: "opening", 2: "closing"
        }),
        Converter("battery", "sensor", mi="5.p.1"),  # percent
        Converter("motor_reverse", "switch", mi="2.p.5", enabled=False),
        MapConv("battery_charging", "binary_sensor", mi="5.p.2", map={
            1: True, 2: False, 3: False,
        }, enabled=False),
        BoolConv("light", "binary_sensor", mi="3.p.11")
    ],
}] + DEVICES

image image

Wow, working as expected! Thanks

iCassius commented 2 years ago

It works ! thanks a lot !

AlexxIT commented 2 years ago

Thanks. Already in master version https://github.com/AlexxIT/XiaomiGateway3/pull/710