Philips Air Purifier

I’ve got a AC3829_60 and it’s currently working for me including the state, tried removing it and re-adding?

Yes I tried removing and re-adding without success.
Do you use the HACS version or the version with coap?

I’m using the HACS version - I only have one air purifier and my configuration entry leaves the name as default

That’s interesting, mine want work at all… Tried maaaaany solutions.
Maybe you did something specific in the configuration that you could share?
what IP pool you are using (local one?) I also have AC3829_60 :slight_smile: but did “Philips App Config” in first place after purchase.

Yup did the setup first in Phillips Air Matters App on the local subnet, 192.168.x.x range and configured just in case on the route to reserve the IP so it didn’t change between renewals, and the configuration (other than the name: line) is the same - but I doubt it’s that if you are able to get all other details other than state… Do the values change to reflect what the device has or if you set a value does it immediately work.

If you do an email of diagnostics on the Air Matters app you maybe able to read more stats about the device (without sending the email) Mine has Firmware version 8, device version 0.1.9

The mail is a god idea.
Here is the content (square bracket mean i removed the user/device specific data)

App:
Name: Clean Home+
App Version: 2.1.1
Mobile Platform: Android 10 (29) HUAWEI EML-L29
Location: [location]
Time Zone: Europe/Berlin
Backend: Production-ROW
ID = PHILIPS:[ID]
U = [U]
Region: DE

Appliance:
Appliance Name: Schlafzimmer
ID: [ID]
Paired: true
Firmware Version: [email protected]
Device Version: 1.4.0
Model: AC3829 - AC3829/10
Local Connected: true . 
Remote Connected: true . 
Status: Localcontrol . 

It seems to me, that we have quiet a different version. I did not expect the series 3829/10 makes that difference. Could you post your info to compare it

Name: Air Matters
App Version: 4.6.1
Mobile Platform: Android 10 (29)
Backend: Production-ROW
Time Zone: Europe/London
Region: GB

Paired: PAIRED
Firmware Version: 8
Device Version: 0.1.9
Model: AC3829 - AC3829 - AC3829/60

Ok, here is my data, i have AC3829/50 as app says (but on device itself there is AC3829/10 sticker)
On my local lan devices i have MiCO (Shanghai MXCHIP) @ 192.168.0.XX

App:
Name: Air Matters
App Version: 4.6.1
Mobile Platform: Android 10 (29)  samsung SM-N960F
Location: [location]
Time Zone: Europe/Warsaw
Region: PL
Backend: Production-ROW
ID = PHILIPS:[ID]
U = [U]

Appliance:
Appliance Name: Salon
ID: [ID]
Paired: true
Firmware Version: [email protected]
Device Version: 1.4.0
Model: AC3829/50Model: AC3829 - AC3829/50
Local Connected: true
Remote Connected: true
Status: Localcontrol

and i have this entity button (that is not working):

type: entity-button
entity: fan.philips_airpurifier
tap_action:
  action: call-service
  service: philips_airpurifier.set_light_brightness
  service_data:
    entity_id: fan.philips_airpurifier
    level: 50

of course there is code in configuration.yaml:

fan:
  platform: philips_airpurifier
  host: 192.168.0.XX

And on my HA developer tools i can see:
Entity:

fan.philips_airpurifier

State:

unavailable

Attributes:

speed_list: Auto Mode, Allergen Mode, Sleep Mode, Speed 1, Speed 2, Speed 3, Turbo
friendly_name: Philips AirPurifier
icon: mdi:air-purifier
supported_features: 1

Have same problem here.

State:

unavailable

This is info from the APP:

App:
Name: Air Matters
App Version: 4.6.1
Mobile Platform: Android 10 (29)  samsung SM-G973F
Location: 
Time Zone: Europe/Berlin
Region: DE
Backend: Production-ROW
ID = PHILIPS:
U = 

Appliance:
Appliance Name: Bedroom
ID: 
Paired: true
Firmware Version: [email protected]
Device Version: Ms3104
Model: AC3033/10Model: AC3033 - AC3033/10
Local Connected: true
Remote Connected: true
Status: Localcontrol

same here with a AC2729/10 and using the custom integration of @shexbeer
its unavailable in HA, but in the Philips Clean Home App its working.

Steps for AC2729/50 (so i think it maybe work with AC2729/10)

  1. Add @shexbeer philips-airpurifier custom component to homeassitant
  2. Add the device to configuration.yml (use protocol: 3)
  3. Login to homeassistant with ssh (if you use HA with synology docker, just open a new terminal instance on detail page) and run this command:
pip3 install -U git+https://github.com/Tanganelli/CoAPthon3@89d5173

(source: https://github.com/rgerganov/py-air-control)

  1. Restart homeassitant. After AC2729/50 should work
2 Likes

@adamcsk1 thanks, that is working. I have a lot of log entries:

2020-11-02 15:51:13 WARNING (SyncWorker_1-Retry-41458) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-41458, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-02 15:51:17 WARNING (SyncWorker_15-Retry-41455) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-41455, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-02 15:51:53 WARNING (SyncWorker_28-Retry-41460) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-41460, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-02 15:52:09 WARNING (SyncWorker_35-Retry-41465) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-41465, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-02 15:52:13 WARNING (SyncWorker_18-Retry-41462) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-41462, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload

Any hints how to solve that?
But anyway, turning it on and off with an automation works.

My experience with the py-air-control and the Philips Air Purifier/Humidifier what I have and the coap protocol, that the device wasn’t really designed for this kind of communication and for continuous polling.
I have seen that the device is not returning any reply, or stuck and not doing anything anymore when interogated by py-air-control. And unfortunately, there isn’t any option to define push type updates to a user defined server.

Maybe try to reduce the poll rate to something like 30 sec or 60 sec, or even longer, like 180, 300 sec.

Hi,

That is interesting, i’ve used your (partial) method and my “config” now says that:

Invalid config for [fan.philips-airpurifier]: [protocol] is an invalid option for [fan.philips-airpurifier]. Check: fan.philips-airpurifier->protocol. (See ?, line ?).

But when im trying to check it from
airctr --ipaddr xxx.xxx.xxx.xxx --protocol coap

Im gettig full list of working comunicaton with my device (yey!) and i can control this with command line (by rgerganov/py-air-control script)

So, any idea how to fix this “[protocol] is an invalid” situation?

— edit —
I got rid of all previous versions, deleted old folders, uninstalled modules in HACS, reset the whole virtual machine, reinstalled a new CoAP @shexbeer module from scratch, it went smoothly this time.

— edit —
but no luck at all, or i’m missing something, using @shexbeer method my AC3829/50 is not getting any info from it to HA, fan.philips_airpurifier state now is unknown (using coap protocol -3)

I’m not having any luck with my " Philips AC3033/30 Expert Series 3000i Connected Air Purifier" either, using Raspberry Pi 4. Also tried it in a virtual machine instance. Don’t know how to proceed in investigations anymore. Tried mainly the @shexbeer 's version but also couple others. I’ve also done the pip3 install -U git+https://github.com/Tanganelli/CoAPthon3@89d5173 command in terminal.

The airctrl works in another Raspberry Pi 4 (no Home Assistant in it), albeit as mentioned here, the connection is not reliable. If you spam a command it will sometimes give the “No payload” answer. Here is my example reply:

pi@rasbpianserver:~ $ airctrl --ipaddr 192.168.1.118 --protocol coap
[name]                        Name: Hallway
[type]                        Type: AC3033
[modelid]                     ModelId: AC3033/30
[swversion]                   Version: Ms3105
[language]                    language: EN
[DeviceVersion]               DeviceVersion: 0.0.0
[om]                          Fan speed: 1
[pwr]                         Power: ON
[cl]                          Child lock: False
[aqil]                        Light brightness: 100
[uil]                         Buttons light: ON
[uaset]                       uaset: P
[mode]                        Mode: AG
[pm25]                        PM25: 24
[iaql]                        Allergen index: 5
[aqit]                        Air quality notification threshold: 4
[tvoc]                        Total volatile organic compounds: 1
[ddp]                         Used index: PM2.5
[rddp]                        rddp: 1
[fltt1]                       HEPA filter type: NanoProtect Filter Series 3 (FY2422)
[fltt2]                       Active carbon filter type: none
[fltsts0]                     Pre-filter and Wick: clean in 278 hours
[fltsts1]                     HEPA filter: replace in 4464 hours
[fltsts2]                     Active carbon filter: replace in 65535 hours
[filna]                       filna: 0
[filid]                       filid: 0
[ota]                         Over the air updates: no
[Runtime]                     Runtime: 7.86 hours
[WifiVersion]                 WifiVersion: [email protected]
[ProductId]                   ProductId: xxx
[DeviceId]                    DeviceId: xxx
[StatusType]                  StatusType: localcontrol
[ConnectType]                 ConnectType: Localcontrol

(^ However, the speed commands don’t really seem to work with that , or I’m trying to misuse them.)

Any ideas? Many people seem to be having problems with these 2020+ year models.

This is what comes to core log in Home assistant:

2020-11-02 23:58:37,254 - Thread-3   - coapthon.client.coap - DEBUG - receive_datagram - From ('192.168.1.118', 5683), To None, CON-6013, CONTENT-None, [Observe: 758, Content-Type: 50, Max-Age: 60, ] A786B53356E5E92ED7A0...1140 bytes
2020-11-02 23:58:37,254 - Thread-3   - coapthon.layers.messagelayer - DEBUG - receive_response - From ('192.168.1.118', 5683), To None, CON-6013, CONTENT-None, [Observe: 758, Content-Type: 50, Max-Age: 60, ] A786B53356E5E92ED7A0...1140 bytes
2020-11-02 23:58:37,255 - Thread-3   - coapthon.layers.messagelayer - DEBUG - send_empty - From None, To None, ACK-None, EMPTY-None, [] No payload
2020-11-02 23:58:37,255 - Thread-3   - coapthon.client.coap - DEBUG - send_datagram - From None, To ('192.168.1.118', 5683), ACK-6013, EMPTY-None, [] No payload
2020-11-02 23:58:37,255 - Thread-3   - coapthon.layers.messagelayer - DEBUG - send_empty - From None, To None, ACK-None, EMPTY-None, [] No payload
2020-11-02 23:58:37,255 - Thread-3   - coapthon.client.coap - DEBUG - send_datagram - From None, To ('192.168.1.118', 5683), ACK-6013, EMPTY-None, [] No payload

and here same as others before:
Entity:

fan.philips_airpurifier

State:

unavailable

And my diagnostics info:

App:
Name: Clean Home+
App Version: 2.1.1
Mobile Platform: Android 10 (29)  OnePlus GM1920
Location: xxx
Time Zone: Europe/Lisbon
Backend: Production-ROW
ID = ahc:id=xxx
U = null
Region: PT

Appliance:
Appliance Name: Hallway
ID: xxx
Paired: true
Firmware Version: [email protected]
Device Version: Ms3105
Model: AC3033 - AC3033/30
Local Connected: true .
Remote Connected: true .
Status: Localcontrol .

Do you know how to reduce the poll rate?

Unfortunately, I don’t know how you can reduce it for a custom component.

This topic gives some ideas, but it seems the custom component’s code has to handle it to be able to call from the configuration.

II managed it by adding scan_interval: 300 to the fan configuration in the yaml file. But all what I now get are just fewer warning messages in the new poll period :smiley:

2020-11-03 08:26:16 WARNING (SyncWorker_26-Retry-47934) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47934, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 08:31:37 WARNING (SyncWorker_47-Retry-47936) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47936, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 08:36:37 WARNING (SyncWorker_10-Retry-47938) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47938, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 08:41:35 WARNING (SyncWorker_34-Retry-47940) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47940, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 08:46:35 WARNING (SyncWorker_5-Retry-47942) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47942, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 08:51:21 WARNING (SyncWorker_24-Retry-47944) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47944, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 08:56:38 WARNING (SyncWorker_12-Retry-47946) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47946, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 09:01:25 WARNING (SyncWorker_1-Retry-47948) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47948, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 09:06:39 WARNING (SyncWorker_9-Retry-47950) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47950, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload
2020-11-03 09:11:26 WARNING (SyncWorker_40-Retry-47952) [coapthon.client.coap] Give up on message From None, To ('192.168.1.26', 5683), CON-47952, GET-None, [Uri-Path: sys, Uri-Path: dev, Uri-Path: status, Observe: 0, ] No payload

Try airctrl manually. Does the Air Purifier reports anything back? It might be just a side effect of a set of poll requests at once, and one just doesn’t get something.

If it is not updating or you cannot get any reply manually, then just unplug the Air Purifier for a few minutes and plug it back. That might solve your problem.