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?
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.
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!
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)
Great work you guys!
Will use it when you publish it on github!
Try to get the time the filters have left also… I know work in progress but better to remind now than later.
Just don’t suddenly disappear from the forum without leaving any code behind like that guy did 3 months ago
Great work again!
Now speed work and you can change it, and also Turn On Air Purifier and Turn off work! Only left set parameters!
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
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!
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
Here’s the card i’ve slapped together so far:
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