kongo09 / philips-airpurifier-coap

💨 Philips AirPurifier custom component for Home Assistant. Supports local CoAP protocol.
156 stars 22 forks source link

Fan CX3550/01 Missing #137

Open BA2000 opened 1 week ago

BA2000 commented 1 week ago

Hi, is it possible to add the New Philips WLAN Fan cx3550? It can be controled by the Philips Air+ App, as well as the Philips Purifier AC2889.

Greetings BA2000

martlxmartl commented 5 days ago

Hi Kongo, thanks for your great work!

Here is the data obtained by aioairctrl. Hope this is all you need!

Mode fanspeed 1: {"D01102": 2, "D01S03": "Schlafzimmer", "D01S04": "Trident", "D01S05": "CX3550/01", "D01107": 0, "D01108": 3, "D01109": 3, "D0110A": 0, "D0110B": 1, "D01S0D": "688001001145", "D0110F": 3, "D01S12": "0.1.4", "D01213": 0, "ProductId": "b3d240e5b11711ee88c206d016384e4a", "DeviceId": "e602901434a111efa50741069bbc8fb7", "otacheck": false, "Runtime": 8618136, "rssi": -35, "wifilog": false, "free_memory": 155296, "WifiVersion": "AWS_Philips_AIR_Combo@2.5", "StatusType": "status", "ConnectType": "Online", "D03102": 1, "D03105": 100, "D0310A": 1, "D0310C": 1, "D0310D": 1, "D0320F": 23040, "D03110": 0, "D03130": 100, "aqit_ext": 0} Mode fanspeed2: {"D01102": 2, "D01S03": "Schlafzimmer", "D01S04": "Trident", "D01S05": "CX3550/01", "D01107": 0, "D01108": 3, "D01109": 3, "D0110A": 0, "D0110B": 1, "D01S0D": "688001001145", "D0110F": 3, "D01S12": "0.1.4", "D01213": 0, "ProductId": "b3d240e5b11711ee88c206d016384e4a", "DeviceId": "e602901434a111efa50741069bbc8fb7", "otacheck": false, "Runtime": 8658234, "rssi": -37, "wifilog": false, "free_memory": 155216, "WifiVersion": "AWS_Philips_AIR_Combo@2.5", "StatusType": "status", "ConnectType": "Online", "D03102": 1, "D03105": 100, "D0310A": 1, "D0310C": 2, "D0310D": 2, "D0320F": 23040, "D03110": 0, "D03130": 100, "aqit_ext": 0} Mode fanspeed3: {"D01102": 2, "D01S03": "Schlafzimmer", "D01S04": "Trident", "D01S05": "CX3550/01", "D01107": 0, "D01108": 3, "D01109": 3, "D0110A": 0, "D0110B": 1, "D01S0D": "688001001145", "D0110F": 3, "D01S12": "0.1.4", "D01213": 0, "ProductId": "b3d240e5b11711ee88c206d016384e4a", "DeviceId": "e602901434a111efa50741069bbc8fb7", "otacheck": false, "Runtime": 8799036, "rssi": -48, "wifilog": false, "free_memory": 155488, "WifiVersion": "AWS_Philips_AIR_Combo@2.5", "StatusType": "status", "ConnectType": "Online", "D03102": 1, "D03105": 100, "D0310A": 1, "D0310C": 3, "D0310D": 3, "D0320F": 23040, "D03110": 0, "D03130": 100, "aqit_ext": 0} Mode "sleep": {"D01102": 2, "D01S03": "Schlafzimmer", "D01S04": "Trident", "D01S05": "CX3550/01", "D01107": 0, "D01108": 3, "D01109": 3, "D0110A": 0, "D0110B": 1, "D01S0D": "688001001145", "D0110F": 3, "D01S12": "0.1.4", "D01213": 0, "ProductId": "b3d240e5b11711ee88c206d016384e4a", "DeviceId": "e602901434a111efa50741069bbc8fb7", "otacheck": false, "Runtime": 8859378, "rssi": -37, "wifilog": false, "free_memory": 155296, "WifiVersion": "AWS_Philips_AIR_Combo@2.5", "StatusType": "status", "ConnectType": "Online", "D03102": 1, "D03105": 0, "D0310A": 1, "D0310C": 17, "D0310D": 2, "D0320F": 23040, "D03110": 0, "D03130": 100, "aqit_ext": 0} Mode "natural": {"D01102": 2, "D01S03": "Schlafzimmer", "D01S04": "Trident", "D01S05": "CX3550/01", "D01107": 0, "D01108": 3, "D01109": 3, "D0110A": 0, "D0110B": 1, "D01S0D": "688001001145", "D0110F": 3, "D01S12": "0.1.4", "D01213": 0, "ProductId": "b3d240e5b11711ee88c206d016384e4a", "DeviceId": "e602901434a111efa50741069bbc8fb7", "otacheck": false, "Runtime": 8918566, "rssi": -44, "wifilog": false, "free_memory": 155296, "WifiVersion": "AWS_Philips_AIR_Combo@2.5", "StatusType": "status", "ConnectType": "Online", "D03102": 1, "D03105": 100, "D0310A": 1, "D0310C": -126, "D0310D": 1, "D0320F": 23040, "D03110": 0, "D03130": 100, "aqit_ext": 0} Mode "natural" but static angle: {"D01102": 2, "D01S03": "Schlafzimmer", "D01S04": "Trident", "D01S05": "CX3550/01", "D01107": 0, "D01108": 3, "D01109": 3, "D0110A": 0, "D0110B": 1, "D01S0D": "688001001145", "D0110F": 3, "D01S12": "0.1.4", "D01213": 0, "ProductId": "b3d240e5b11711ee88c206d016384e4a", "DeviceId": "e602901434a111efa50741069bbc8fb7", "otacheck": false, "Runtime": 8999362, "rssi": -48, "wifilog": false, "free_memory": 155296, "WifiVersion": "AWS_Philips_AIR_Combo@2.5", "StatusType": "status", "ConnectType": "Online", "D03102": 1, "D03105": 100, "D0310A": 1, "D0310C": -126, "D0310D": 2, "D0320F": 0, "D03110": 0, "D03130": 100, "aqit_ext": 0} Turned off: {"D01102": 2, "D01S03": "Schlafzimmer", "D01S04": "Trident", "D01S05": "CX3550/01", "D01107": 0, "D01108": 3, "D01109": 3, "D0110A": 0, "D0110B": 1, "D01S0D": "688001001145", "D0110F": 3, "D01S12": "0.1.4", "D01213": 0, "ProductId": "b3d240e5b11711ee88c206d016384e4a", "DeviceId": "e602901434a111efa50741069bbc8fb7", "otacheck": false, "Runtime": 9039230, "rssi": -48, "wifilog": false, "free_memory": 154944, "WifiVersion": "AWS_Philips_AIR_Combo@2.5", "StatusType": "status", "ConnectType": "Online", "D03102": 0, "D03105": 100, "D0310A": 1, "D0310C": -126, "D0310D": 0, "D0320F": 0, "D03110": 0, "D03130": 100, "aqit_ext": 0} Mode "natural", static, 3h timer: {"D01102": 2, "D01S03": "Schlafzimmer", "D01S04": "Trident", "D01S05": "CX3550/01", "D01107": 0, "D01108": 3, "D01109": 3, "D0110A": 0, "D0110B": 1, "D01S0D": "688001001145", "D0110F": 3, "D01S12": "0.1.4", "D01213": 0, "ProductId": "b3d240e5b11711ee88c206d016384e4a", "DeviceId": "e602901434a111efa50741069bbc8fb7", "otacheck": false, "Runtime": 9099442, "rssi": -49, "wifilog": false, "free_memory": 154944, "WifiVersion": "AWS_Philips_AIR_Combo@2.5", "StatusType": "status", "ConnectType": "Online", "D03102": 1, "D03105": 100, "D0310A": 1, "D0310C": -126, "D0310D": 1, "D0320F": 0, "D03110": 4, "D03130": 100, "aqit_ext": 0}

kongo09 commented 5 days ago

Great stuff, thanks. I'm super short on time right now so this won't be a quick one, but the above data is exactly what's needed. I'm sure we'll get this sorted. I'll let you know once I have something to test.

werty1st commented 3 days ago

i tried to implement the new values but its not working. should i use another class as starting point?

class PhilipsCX3550(PhilipsNew2GenericCoAPFan):
    """CX3550."""

    AVAILABLE_PRESET_MODES = {
        PresetMode.SPEED_1: {
            PhilipsApi.NEW2_POWER: 1,
            PhilipsApi.NEW2_MODE_A: 1,
            PhilipsApi.NEW2_MODE_B: 1,
            PhilipsApi.NEW2_MODE_C: 1,
        },
        PresetMode.SPEED_2: {
            PhilipsApi.POWER: 1,
            PhilipsApi.NEW2_MODE_A: 1,
            PhilipsApi.NEW2_MODE_B: 2,
            PhilipsApi.NEW2_MODE_C: 2,
        },
        PresetMode.SPEED_3: {
            PhilipsApi.POWER: 1,
            PhilipsApi.NEW2_MODE_A: 1,
            PhilipsApi.NEW2_MODE_B: 3,
            PhilipsApi.NEW2_MODE_C: 3,
        },
        PresetMode.NATURAL: {
            PhilipsApi.POWER: 1,
            PhilipsApi.NEW2_MODE_A: 1,
            PhilipsApi.NEW2_MODE_B: -126,
            PhilipsApi.NEW2_MODE_C: 1,
        },
        PresetMode.SLEEP: {
            PhilipsApi.POWER: 1,
            PhilipsApi.NEW2_MODE_A: 1,
            PhilipsApi.NEW2_MODE_B: 17,
            PhilipsApi.NEW2_MODE_C: 2,
        },
    }
    AVAILABLE_SPEEDS = {
        PresetMode.SPEED_1: {
            PhilipsApi.NEW2_POWER: 1,
            PhilipsApi.NEW2_MODE_A: 1,
            PhilipsApi.NEW2_MODE_B: 1,
            PhilipsApi.NEW2_MODE_C: 1,
        },
        PresetMode.SPEED_2: {
            PhilipsApi.POWER: 1,
            PhilipsApi.NEW2_MODE_A: 1,
            PhilipsApi.NEW2_MODE_B: 2,
            PhilipsApi.NEW2_MODE_C: 2,
        },
        PresetMode.SPEED_3: {
            PhilipsApi.POWER: 1,
            PhilipsApi.NEW2_MODE_A: 1,
            PhilipsApi.NEW2_MODE_B: 3,
            PhilipsApi.NEW2_MODE_C: 3,
        },
    }
    KEY_OSCILLATION = {
        PhilipsApi.NEW2_OSCILLATION: PhilipsApi.OSCILLATION_MAP_2,
    }

    AVAILABLE_LIGHTS = [PhilipsApi.NEW2_DISPLAY_BACKLIGHT2]
    AVAILABLE_SWITCHES = [PhilipsApi.NEW2_BEEP]
    UNAVAILABLE_SENSORS = [PhilipsApi.NEW2_GAS]
    AVAILABLE_SELECTS = [PhilipsApi.NEW2_TIMER2]
    #AVAILABLE_NUMBERS = [PhilipsApi.NEW2_TARGET_TEMP]