Philips Air Purifier

Would like to get this too. Just got a AC2889/10.

Hello!

I’ve tried to integrate it with Hamilton Beach 04386A, works fine for me! If the air start smelling nicotine, my purifier starts to fresh it quickly!
Ask me if you need any assistance!

What exactly have you integrated with your Hamilton Beach purifier?
As far as i can tell that model is not smart, and certainly not over the same protocol as the Philips purifiers are. Please let us know exactly what it is you have done.

Very interested in this. Please share!

Could you put this in a GitHub repo please? :slight_smile:

Remember to vote here

Did you have any luck polishing the component and publishing it on github? I’d be interested to give it a spin.

I made this component, need some polish and after some days i will release it on GitHub

2 Likes

Awesome! Can’t wait to get my hands on the component. I’ve already got some ideas for a nice visual lovelace card. I’ll get right to it once you post the code! Cheers mate!

More progress now parameters work!

1 Like

flipping awesome! Now just something to send commands and that’s it.
I’ll take this xiaomi purifier lovelace card and as soon as your code is up and running i’ll map everything over to the philips. (credits for the xiaomi card go to this guy: https://github.com/TheRealBadRobot/Bad-Robot-Lovelace/tree/master/air%20purifier%20card)
xiaomi

1 Like

Great work you guys!

Will use it when you publish it on github! :+1:t2::+1:t2::+1:t2::+1:t2:

Try to get the time the filters have left also… I know work in progress but better to remind now than later. :wink:

Also added filters, work on adding services to set parameters

2 Likes

Just don’t suddenly disappear from the forum without leaving any code behind like that guy did 3 months ago :slight_smile:

Great work again! :+1:t2::+1:t2::+1:t2:

Now speed work and you can change it, and also Turn On Air Purifier and Turn off work! Only left set parameters!

1 Like

I release this component on GitHub, but for now Services to set parameters not ready, will be added in next update: https://github.com/xMrVizzy/Philips-AirPurifier

4 Likes

Just had a quick look and it’s found my purifier. Hopefully i’ll have some time tonight to play around with it, but so far so good! Thanks a lot!

1 Like

Just made a lovelace card based on the sensors we have so far. Pretty pleased with how it looks tbh.
I’ll send you a PM. I think it would be easiest if you add the config for this card to your github as well so people can find the whole deal in 1 location.

What i’m missing until now:

  • Device status not visible
  • not able to send commands yet

ideas:

  • convert filter hours to days
  • display the date when filters need to be changed
  • automations based on outdoor air quality and presence detection :slight_smile:

Here’s the card i’ve slapped together so far:

1 Like

For anybody that is just as eager as me to get this working, here is what i did so far:

Declare individual sensors in configuration.yaml:

#Philips Air purifier sensors
  - platform: template
    sensors:
      purifier_air_quality:
        friendly_name: "Air quality"
        value_template: "{{ states.fan.philips_ac3829.attributes.pm25 }}"
      purifier_humidity:
        friendly_name: "Humidity"
        unit_of_measurement: '%'
        value_template: "{{ states.fan.philips_ac3829.attributes.humidity }}"
      purifier_temperature:
        friendly_name: "Temperature"
        unit_of_measurement: '°C'
        value_template: "{{ states.fan.philips_ac3829.attributes.temperature }}"
      purifier_speed:
        friendly_name: "Speed"
        value_template: "{{ states.fan.philips_ac3829.attributes.speed }}"
      purifier_allergens:
        friendly_name: "Allergen index"
        value_template: "{{ states.fan.philips_ac3829.attributes.allergen_index }}"
      purifier_mode:
        friendly_name: "Mode"
        value_template: "{{ states.fan.philips_ac3829.attributes.function }}"
      purifier_pre_filter:
        friendly_name: "Pre-filter"
        unit_of_measurement: 'Hrs'
        value_template: "{{ states.fan.philips_ac3829.attributes.pre_filter }}"
      purifier_wick_filter:
        friendly_name: "Wick filter"
        unit_of_measurement: 'Hrs'
        value_template: "{{ states.fan.philips_ac3829.attributes.wick_filter }}"
      purifier_carbon_filter:
        friendly_name: "Carbon filter"
        unit_of_measurement: 'Hrs'
        value_template: "{{ states.fan.philips_ac3829.attributes.carbon_filter }}"
      purifier_hepa_filter:
        friendly_name: "HEPA filter"
        unit_of_measurement: 'Hrs'
        value_template: "{{ states.fan.philips_ac3829.attributes. hepa_filter}}"
      purifier_target_humidity:
        friendly_name: "Target humidity"
        unit_of_measurement: '%'
        value_template: "{{ states.fan.philips_ac3829.attributes.target_humidity }}"
      purifier_water_level:
        friendly_name: "Water level"
        unit_of_measurement: '%'
        value_template: "{{ states.fan.philips_ac3829.attributes.water_level }}"
      purifier_brightness:
        friendly_name: "brightness"
        unit_of_measurement: '%'
        value_template: "{{ states.fan.philips_ac3829.attributes.light_brightness }}"

And then the lovelace card (using custom circle sensor card)

elements:
  - icon: 'mdi:fan'
    style:
      '--iron-icon-height': 45px
      '--iron-icon-width': 45px
      color: dodgerblue
      left: 10%
      top: 7%
      opacity: 0.7
    tap_action: none
    type: icon
  - entity: sensor.purifier_speed
    style:
      border-color: 'rgb(34, 154, 210)'
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      opacity: 1
      pointer-events: none
      left: 6%
      text-shadow: 1px 1px black
      top: 7%
      transform: 'translate(0%,-50%)'
    type: state-label
  - icon: 'mdi:water-percent'
    style:
      '--iron-icon-height': 45px
      '--iron-icon-width': 45px
      color: dodgerblue
      left: 10%
      top: 20%
    tap_action: none
    type: icon
  - attribute: humidity
    color_stops: null
    entity: fan.philips_ac3829
    fill: 'rgba(0,0,0,0.3)'
    font_style:
      color: white
    gradient: true
    max: 100
    min: 0
    show_card: null
    stroke_width: 10
    style:
      height: 60px
      left: 10%
      top: 20%
      width: 60px
    type: 'custom:circle-sensor-card'
    units: '%'
  - icon: 'mdi:thermometer'
    style:
      '--iron-icon-height': 45px
      '--iron-icon-width': 45px
      color: dodgerblue
      left: 10%
      top: 35%
    tap_action: none
    type: icon
  - attribute: temperature
    color_stops: null
    entity: fan.philips_ac3829
    fill: 'rgba(0,0,0,0.3)'
    font_style:
      color: white
    gradient: true
    max: 100
    min: 0
    show_card: null
    stroke_width: 10
    style:
      height: 60px
      left: 10%
      top: 35%
      width: 60px
    type: 'custom:circle-sensor-card'
    units: °C
  - icon: 'mdi:bug'
    style:
      '--iron-icon-height': 45px
      '--iron-icon-width': 45px
      color: dodgerblue
      left: 10%
      top: 50%
    tap_action: none
    type: icon
  - attribute: allergen_index
    color_stops: null
    entity: fan.philips_ac3829
    fill: 'rgba(0,0,0,0.3)'
    font_style:
      color: white
    gradient: true
    max: 10
    min: 0
    show_card: null
    stroke_width: 10
    style:
      height: 60px
      left: 10%
      top: 50%
      width: 60px
    type: 'custom:circle-sensor-card'
  - entity: sensor.purifier_mode
    prefix: 'Mode: '
    style:
      border-color: 'rgb(34, 154, 210)'
      border-right-style: solid
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      opacity: 0.8
      pointer-events: none
      right: 1%
      text-shadow: 1px 1px black
      top: 80%
      transform: 'translate(0%,-50%)'
    type: state-label
  - entity: sensor.purifier_target_humidity
    prefix: 'Target humidity: '
    style:
      border-color: 'rgb(34, 154, 210)'
      border-right-style: solid
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      opacity: 0.8
      pointer-events: none
      right: 1%
      text-shadow: 1px 1px black
      top: 85%
      transform: 'translate(0%,-50%)'
    type: state-label
  - entity: sensor.purifier_water_level
    prefix: 'Water level: '
    style:
      border-color: 'rgb(34, 154, 210)'
      border-right-style: solid
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      opacity: 0.8
      pointer-events: none
      right: 1%
      text-shadow: 1px 1px black
      top: 90%
      transform: 'translate(0%,-50%)'
    type: state-label
  - entity: sensor.purifier_brightness
    prefix: 'Brightness: '
    style:
      border-color: 'rgb(34, 154, 210)'
      border-right-style: solid
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      opacity: 0.8
      pointer-events: none
      right: 1%
      text-shadow: 1px 1px black
      top: 95%
      transform: 'translate(0%,-50%)'
    type: state-label
  - entity: sensor.purifier_air_quality
    style:
      border-color: 'rgb(34, 154, 210)'
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      left: 46.5%
      opacity: 1
      pointer-events: none
      text-shadow: 1px 1px black
      top: 17%
      transform: 'translate(0%,-50%)'
    type: state-label
  - entity: sensor.purifier_pre_filter
    prefix: 'Pre-filter: '
    style:
      border-color: 'rgb(34, 154, 210)'
      border-left-style: solid
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      left: 1%
      opacity: 0.8
      pointer-events: none
      text-shadow: 1px 1px black
      top: 80%
      transform: 'translate(0%,-50%)'
    type: state-label
  - entity: sensor.purifier_wick_filter
    prefix: 'Wick filter: '
    style:
      border-color: 'rgb(34, 154, 210)'
      border-left-style: solid
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      left: 1%
      opacity: 0.8
      pointer-events: none
      text-shadow: 1px 1px black
      top: 85%
      transform: 'translate(0%,-50%)'
    type: state-label
  - entity: sensor.purifier_carbon_filter
    prefix: 'Carbon filter: '
    style:
      border-color: 'rgb(34, 154, 210)'
      border-left-style: solid
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      left: 1%
      opacity: 0.8
      pointer-events: none
      text-shadow: 1px 1px black
      top: 90%
      transform: 'translate(0%,-50%)'
    type: state-label
  - entity: sensor.purifier_hepa_filter
    prefix: 'HEPA filter: '
    style:
      border-color: 'rgb(34, 154, 210)'
      border-left-style: solid
      color: 'rgb(255, 255, 255)'
      font-family: Trebuchet MS
      font-size: 90%
      font-weight: bold
      left: 1%
      opacity: 0.8
      pointer-events: none
      text-shadow: 1px 1px black
      top: 95%
      transform: 'translate(0%,-50%)'
    type: state-label
image: /local/pictures/ac3829-3.png
type: picture-elements
4 Likes