Skip to content

Commit

Permalink
Merge pull request #113 from kongo09/amf-cx
Browse files Browse the repository at this point in the history
Add support for CX5120, AMF765 and AMF870
  • Loading branch information
kongo09 authored Jan 24, 2024
2 parents 1058107 + 6568b82 commit 0402da9
Show file tree
Hide file tree
Showing 17 changed files with 819 additions and 55 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ Note: `configuration.yaml` is no longer supported and your configuration is not
- AC4550
- AC4558
- AC5659
- AMF765
- AMF870
- CX5120


## Is your model not supported yet?
Expand Down
2 changes: 1 addition & 1 deletion custom_components/philips_airpurifier_coap/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
_LOGGER = logging.getLogger(__name__)


PLATFORMS = ["fan", "sensor", "switch", "light", "select"]
PLATFORMS = ["fan", "sensor", "switch", "light", "select", "number"]


# icons code thanks to Thomas Loven:
Expand Down
69 changes: 55 additions & 14 deletions custom_components/philips_airpurifier_coap/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,34 @@ async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowRes
_LOGGER.warning(r"Failed to connect: %s", ex)
raise exceptions.ConfigEntryNotReady from ex

# autodetect model and name
self._model = list(
# autodetect model
model_map = map(
status.get,
[
PhilipsApi.MODEL_ID,
PhilipsApi.NEW_MODEL_ID,
PhilipsApi.NEW2_MODEL_ID,
],
)
_LOGGER.debug("model_map retrieved: %s", model_map)
model_filter = filter(None, model_map)
_LOGGER.debug("model_filter applied: %s", model_filter)
model_list = list(model_filter)
_LOGGER.debug("model_list built: %s", model_list)
first_model = model_list[0]
_LOGGER.debug("first model selected: %s", first_model)
self._model = first_model[:9]
_LOGGER.debug("model type extracted: %s", self._model)

# autodetect name
self._name = list(
filter(
None, map(status.get, [PhilipsApi.MODEL_ID, PhilipsApi.NEW_MODEL_ID])
None,
map(
status.get,
[PhilipsApi.NAME, PhilipsApi.NEW_NAME, PhilipsApi.NEW2_NAME],
),
)
)[0][:9]
self._name = list(
filter(None, map(status.get, [PhilipsApi.NAME, PhilipsApi.NEW_NAME]))
)[0]
self._device_id = status[PhilipsApi.DEVICE_ID]
_LOGGER.debug(
Expand Down Expand Up @@ -215,16 +235,37 @@ async def async_step_user(self, user_input: dict[str, Any] = None) -> FlowResult
_LOGGER.warning(r"Failed to connect: %s", ex)
raise exceptions.ConfigEntryNotReady from ex

# autodetect model and name
self._model = list(
filter(
None,
map(status.get, [PhilipsApi.MODEL_ID, PhilipsApi.NEW_MODEL_ID]),
)
)[0][:9]
# autodetect model
model_map = map(
status.get,
[
PhilipsApi.MODEL_ID,
PhilipsApi.NEW_MODEL_ID,
PhilipsApi.NEW2_MODEL_ID,
],
)
_LOGGER.debug("model_map retrieved: %s", model_map)
model_filter = filter(None, model_map)
_LOGGER.debug("model_filter applied: %s", model_filter)
model_list = list(model_filter)
_LOGGER.debug("model_list built: %s", model_list)
first_model = model_list[0]
_LOGGER.debug("first model selected: %s", first_model)
self._model = first_model[:9]
_LOGGER.debug("model type extracted: %s", self._model)

# autodetect name
self._name = list(
filter(
None, map(status.get, [PhilipsApi.NAME, PhilipsApi.NEW_NAME])
None,
map(
status.get,
[
PhilipsApi.NAME,
PhilipsApi.NEW_NAME,
PhilipsApi.NEW2_NAME,
],
),
)
)[0]
self._device_id = status[PhilipsApi.DEVICE_ID]
Expand Down
Loading

0 comments on commit 0402da9

Please sign in to comment.