I have been using a HP Microserver for a few years as my home lab and quite enjoy it. Unfortunately Home Assistant’s existing HP Integrated Lights-Out (ILO) integration is very limited and does not have any configuration integration. I have started working on an updated version of this integration. For the initial release, I focused on three things:
- Auto-Discovery with config flow so no
configuration.yamlediting will be required. - Support for as many sensor types automatically out of the box.
- Updating python-hpilo.
Discovery
For Auto Discovery to work, it has to be enabled in the iLO admin UI:

For development & testing it also makes sense to set the interval low enough (default seems to be 10min)
ILO servers are announcing themselves on a few of SSDP search targets:
urn:schemas-upnp-org:device:Basic:1with details athttp://[IP]/upnp/BasicDevice.xml(this implements the UPnP Basic:1.0 Device Definition standard ). Luckily Home Assistant already implements this as part of the existing SSDP discovery mechanism.urn:dmtf-org:service:redfish-rest:1with details athttps://[IP]/redfish/v1/(this implements the DMTF’s Redfish Standard). See also https://stackoverflow.com/a/39153603 and https://hewlettpackard.github.io/ilo-rest-api-docs/ilo5/?shell#introduction. This could be added to Home Assistant with python-redfish-libraryurn:www-hp-com:service:Federation:2- not clear where the details for this will end up at. I also didn’t look into the underlying standard.
These all return slightly different data, but none seems to include all the information necessary (i.e. the correct UUID or the port/protocol of the REST api ).
Basic Device seems to be the one most common and is already supported by Home Assistant, so I picked that.
Next Steps
Configuration
The goal is to implement a clean config flow supporting a few things:
- Regular setup flow for discovered devices as well as a manual setup flow.
- Update of IPs and Hostname from discovery in case any of them change.
- Import of existing sensors from configuration.yaml
- It should be possible to enable/disable what sensors and other entities/platforms are added. (since this can quickly get out of hand)
Platforms
This component will set up the following platforms.
| Platform | Description |
|---|---|
binary_sensor |
Show something True or False. |
sensor |
Show info from blueprint API. |
switch |
Switch something True or False. |
The existing sensors only implement the sensor entity. Ideally a few more things would be nice:
- Automatically generate all supported entities automatically.
- Device entity with as much information as possile about the system configuration
- Binary sensor for firmware update status, power
- Buttons for Firmware upgrades and reboots/restarts etc.
- Switches for Power on/Off
- Fan entities for fans
There’s already two PRs to improve on this: and so I’ll see where these go as well and then update the integration.
Caching
Startup and refresh is currently not optimized, slowing this integration down quite a bit. It also seems that data isn’t shared between sensors, meaning the rate limiting is resulting in very coarse grained data once there’s more then a handful of sensors active.
Tests
There’s actually no tests at all in Home Assistant for this component right now.
Most features should be able to be tested with the existing mock data in python-hpilo.
