Skip to content

Commit

Permalink
Merge pull request #222 from kongo09/214-add-support-for-cx312001
Browse files Browse the repository at this point in the history
add support for cx312001
  • Loading branch information
kongo09 authored Dec 6, 2024
2 parents 04b8220 + f6fe5ab commit 8382f7e
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 17 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ Note: Some of these models seem to have a newer firmware that does not allow loc
- AC5659
- AMF765
- AMF870
- CX3120
- CX5120
- CX3550
- HU1509
Expand Down Expand Up @@ -246,5 +247,6 @@ The integration also provides the original Philips icons for your use in the fro
| ![Preview](./custom_components/philips_airpurifier_coap/icons/pap/oscillate.svg) | oscillate |
| ![Preview](./custom_components/philips_airpurifier_coap/icons/pap/heating.svg) | heating |
| ![Preview](./custom_components/philips_airpurifier_coap/icons/pap/gas.svg) | gas |
| ![Preview](./custom_components/philips_airpurifier_coap/icons/pap/circle.svg) | circle |

Note: you might have to clear your browser cache after installation to see the icons.
5 changes: 5 additions & 0 deletions custom_components/philips_airpurifier_coap/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ class FanModel(StrEnum):
AC5660 = "AC5660"
AMF765 = "AMF765"
AMF870 = "AMF870"
CX3120 = "CX3120"
CX3550 = "CX3550"
CX5120 = "CX5120"
HU1509 = "HU1509"
Expand Down Expand Up @@ -385,6 +386,10 @@ class PhilipsApi:
SWITCH_ON: [17242, 23040],
SWITCH_OFF: 0,
}
OSCILLATION_MAP3 = {
SWITCH_ON: 45,
SWITCH_OFF: 0,
}

# the AC1715 seems to follow a new scheme, this should later be refactored
NEW_NAME = "D01-03"
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
87 changes: 70 additions & 17 deletions custom_components/philips_airpurifier_coap/philips.py
Original file line number Diff line number Diff line change
Expand Up @@ -338,19 +338,14 @@ def oscillating(self) -> bool | None:
return None

key = next(iter(self.KEY_OSCILLATION))
values = self.KEY_OSCILLATION.get(key)
off = values.get(SWITCH_OFF)
status = self._device_status.get(key)
on = self.KEY_OSCILLATION.get(key).get(SWITCH_ON)

if status is None:
return None

if isinstance(on, int):
return status == on

if isinstance(on, list):
return status in on

return None
return status != off

async def async_oscillate(self, oscillating: bool) -> None:
"""Osciallate the fan."""
Expand Down Expand Up @@ -1801,42 +1796,99 @@ class PhilipsAMF870(PhilipsAMFxxx):
AVAILABLE_NUMBERS = [PhilipsApi.NEW2_TARGET_TEMP]


class PhilipsCX5120(PhilipsNew2GenericFan):
"""CX5120."""
class PhilipsCX3120(PhilipsNew2GenericFan):
"""CX3120."""

AVAILABLE_PRESET_MODES = {
PresetMode.AUTO: {
PresetMode.AUTO_PLUS: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 0,
},
PresetMode.VENTILATION: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 1,
PhilipsApi.NEW2_MODE_B: -127,
},
PresetMode.LOW: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 66,
},
PresetMode.MEDIUM: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 67,
},
PresetMode.HIGH: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 65,
},
}
AVAILABLE_SPEEDS = {
PresetMode.LOW: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 66,
},
PresetMode.MEDIUM: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 67,
},
PresetMode.HIGH: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 65,
},
}
KEY_OSCILLATION = {
PhilipsApi.NEW2_OSCILLATION: PhilipsApi.OSCILLATION_MAP3,
}

UNAVAILABLE_SENSORS = [PhilipsApi.NEW2_FAN_SPEED, PhilipsApi.NEW2_GAS]
AVAILABLE_SELECTS = [PhilipsApi.NEW2_TIMER2]
AVAILABLE_NUMBERS = [PhilipsApi.NEW2_TARGET_TEMP]
AVAILABLE_SWITCHES = [PhilipsApi.NEW2_CHILD_LOCK]


class PhilipsCX5120(PhilipsNew2GenericFan):
"""CX5120."""

AVAILABLE_PRESET_MODES = {
PresetMode.AUTO: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 0,
},
PresetMode.VENTILATION: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 1,
PhilipsApi.NEW2_MODE_B: -127,
},
}
AVAILABLE_SPEEDS = {
PresetMode.LOW: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 66,
},
PresetMode.HIGH: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 65,
},
}
AVAILABLE_SPEEDS = {
PresetMode.LOW: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 66,
},
PresetMode.HIGH: {
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_A: 3,
PhilipsApi.NEW2_MODE_B: 65,
},
}
KEY_OSCILLATION = {
PhilipsApi.NEW2_OSCILLATION: PhilipsApi.OSCILLATION_MAP,
Expand Down Expand Up @@ -1922,9 +1974,9 @@ class PhilipsHU1509(PhilipsNew2GenericFan):
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_B: 0,
},
PresetMode.HIGH: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 65},
PresetMode.MEDIUM: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 19},
PresetMode.SLEEP: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 17},
PresetMode.MEDIUM: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 19},
PresetMode.HIGH: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 65},
}
AVAILABLE_SPEEDS = {
PresetMode.SLEEP: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 17},
Expand Down Expand Up @@ -1960,9 +2012,9 @@ class PhilipsHU5710(PhilipsNew2GenericFan):
PhilipsApi.NEW2_POWER: 1,
PhilipsApi.NEW2_MODE_B: 0,
},
PresetMode.HIGH: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 65},
PresetMode.MEDIUM: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 19},
PresetMode.SLEEP: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 17},
PresetMode.MEDIUM: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 19},
PresetMode.HIGH: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 65},
}
AVAILABLE_SPEEDS = {
PresetMode.SLEEP: {PhilipsApi.NEW2_POWER: 1, PhilipsApi.NEW2_MODE_B: 17},
Expand Down Expand Up @@ -2035,6 +2087,7 @@ class PhilipsHU5710(PhilipsNew2GenericFan):
FanModel.AC5660: PhilipsAC5660,
FanModel.AMF765: PhilipsAMF765,
FanModel.AMF870: PhilipsAMF870,
FanModel.CX3120: PhilipsCX3120,
FanModel.CX5120: PhilipsCX5120,
FanModel.CX3550: PhilipsCX3550,
FanModel.HU1509: PhilipsHU1510,
Expand Down

0 comments on commit 8382f7e

Please sign in to comment.