Ink levels in Home Assistant
Note: Please, be aware that this post may contain affiliate links.
Awesome! Now we can get printer ink levels in Home Assistant. There has been a community HP addon available through HACS now for quite a few weeks. But with the release of Home Assistant 0.108, it’s now available as standard using the new IPP Integration (printer not included).
What Can The Integration Do?
The details the integration can provide will more than likely depend on your printer. For my HP OfficeJet Pro 8620, I get ink levels as well as the printer status and a disabled entity, letting me know when the printer came online.
For me, personally, the integration doesn’t provide as many details as the HP Printer addon, as that supplies info such as
- Connected status (connect or not) as well as printer status
- Number of printed pages
- Number of scanned pages
Admittedly, this information is generally of little use & so speaking for myself, I’ll be more than happy with the official IPP Printer integration, as this comes with the knowledge that if there were any security bugs found they would be quickly fixed.
Obviously, the IPP Integration not only supporting HP Printers but any device that supports the IPP protocol.
Setup


If you are in luck, as I was; you’re printer will have been auto-detected and you will have a persistent notification in your left sidebar. If that is the case, simply follow the “Configure” instructions.
If you have to set the printer integration up by hand however, it’s simply a case of visiting the Integrations section of the Configuration panel.
Add an integration and select IPP, then, again, follow the instructions.
Finding Your Printer Details
Once the printer has been installed and configured. You can find out what sensors etc are available by going into the Devices area of your Configuration panel and finding the IPP integration.

Once you’ve found your printer, click on it and you’ll see all the things that are available

So, if we to take my printer as an example. You can see above that I mainly have ink levels available, as well as the printer status. I also have an uptime entity, that for some reason was/is disabled by default. I did enable it, but after this post, I will be disabling it again, as it’s something that I won’t be using.
What Information Is Available?
The amount of information will depend on your printer make and model, but hopefully, as a minimum, it will include your printer ink levels.
As you can see from my data – my information includes the ink levels as well as the printer state.
Automations
You could also make a few automations from the UI. For example, you can see in my screenshot that I have several automations based on the ink levels.
automation:
# Repeat for all colours
- id: black_ink_low
trigger:
platform: numeric_state
entity_id: sensor.hp_officejet_pro_8620_black_ink
below: 20
action:
- service: notify.alexa_media
data:
message: "Your black ink cartridge is low in the printer"
target: media_player.dad
data:
type: tts
If you do copy this automation across you will need to change the entity_id, and add your own service.

If you are interested in the Home Assistant TTS Service though, then you can check out my post on the subject… just in case you missed it of course.
In my screenshot: you can see that I have a dedicated button to re-order ink cartridges. This button takes me straight to the Amazon.co.uk Ink cartridges category. For you though, it would take you to your local Amazon store (details below)
entity: light.kitchen
hold_action:
action: more-info
icon: 'mdi:printer'
icon_height: 50px
name: Buy Ink Cartridge
show_icon: true
show_name: true
tap_action:
action: url
url_path: 'https://hasscasts.com/suggests/ink-cartridges/'
type: button
theme: dark_teal # You may have to change the theme
Please take note of the URL. This is an affiliate link that will redirect you to your local Amazon stores Ink Cartridges category pages, so you won’t land on my site.
If you want to keep the button, please feel free to change the link to one of your choosing. If you do wish to support me though, these are the amazon stores it will redirect you to, if you are in those countries.
Amazon stores supported (affiliate links except where stated):
Obviously, if you wanted to use the button and you did want to contribute to my effort, then that would be fantastic.
Conclusion
I am really glad the IPP integration has come along. It means that there should be a fairly up to date and bug-free integration for my printer.
All My Config
As I have included images of my example Lovelace screen that I have set up, it seems only fair that I share it with you. Notes on the code are below it.
views:
- icon: 'mdi:home'
path: home
title: Home
theme: ''
badges: []
cards:
- hold_action:
action: none
image: /local/assets/images/hp-8620.jpg
tap_action:
action: none
type: picture
- cards:
- cards:
- entity: sensor.hp_officejet_pro_8620_black_ink
max: 100
min: 0
name: Black
severity:
green: 25
red: 0
yellow: 10
type: gauge
- entity: sensor.hp_officejet_pro_8620_cyan_ink
max: 100
min: 0
name: Cyan
severity:
green: 25
red: 0
yellow: 10
type: gauge
type: vertical-stack
- cards:
- entity: sensor.hp_officejet_pro_8620_magenta_ink
max: 100
min: 0
name: Magenta
severity:
green: 25
red: 0
yellow: 10
type: gauge
- entity: sensor.hp_officejet_pro_8620_yellow_ink
max: 100
min: 0
name: Yellow
severity:
green: 25
red: 0
yellow: 10
type: gauge
type: vertical-stack
title: Printer Ink Levels
type: horizontal-stack
- card:
type: 'custom:button-text-card'
title: Warning!
subtitle: There is a printer error!
icon: 'mdi:comment-alert'
large: true
font_color: '#fff'
background_color: '#A81419'
conditions:
- entity: sensor.hp_officejet_pro_8620
state: stopped
type: conditional
- card:
entity: sensor.hp_officejet_pro_8620
hold_action:
action: more-info
icon: 'mdi:printer'
icon_height: 50px
name: Buy Ink Cartridge
show_icon: true
show_name: true
tap_action:
action: url
url_path: 'https://hasscasts.com/suggests/ink-cartridges/'
type: button
theme: dark_teal
conditions:
- entity: sensor.hp_officejet_pro_8620
state: stopped
type: conditional
- card:
entity: sensor.hp_officejet_pro_8620
type: entity
conditions:
- entity: sensor.hp_officejet_pro_8620
state_not: stopped
type: conditional
Code Notes
- The image of my printer is just one I downloaded from the internet.
- For the red warning card, I use the “Button Text Card” by Xavier Decuyper. I appreciate that others may wish to use another card type if they wish to replicate it.
Great Post. This integration just popped up in my HA recently. Is there any way to have the sensor cards ‘retain’ the last known ink levels please? As these disappear if the printer is offline. Thanks.