HP iLO Integration for Home Assistant — Revamped with Full Hardware Diagnostics
Repo: GitHub - mx5gr/ha-hp_ilo-revamped: HP iLO Integration for Home Assistant
Based on: chkuendig/hass-hp_ilo-beta by @chkuendig
I want to share a custom Home Assistant integration for HP servers with iLO (Integrated Lights-Out) management controllers. This is a continuation of the excellent work started by @chkuendig in the hass-hp_ilo-beta repository — specifically picking up from the feature/diagnostic-sensor-entities branch and carrying it forward. All credit for the foundation goes to the original author.
If you’re running an HP ProLiant server — whether it’s a homelab MicroServer, a decommissioned rack unit, or anything in between — this gives you deep visibility into what your hardware is actually doing, without leaving Home Assistant.
Why this fork?
The upstream repo had a very promising feature/diagnostic-sensor-entities branch that exposed a wealth of iLO data — firmware versions, event logs, self-tests, power monitoring, per-DIMM memory sensors — but was not being actively merged or released. This fork packages all of that work into a stable, installable integration with additional bug fixes for Gen8 hardware and iLO 4.
What it does
Drop-in replacement for the official integration
The official HA HP iLO integration is YAML-only, has no config flow, and exposes a handful of sensors. This integration replaces it entirely with:
- Full UI setup via config flow — no YAML needed
- SSDP auto-discovery — iLO devices on your network are found automatically
- DataUpdateCoordinator — single poll per cycle, all entities share cached data, no redundant API calls
Hardware Health Sensors
Every thermal zone, fan, DIMM, and CPU becomes an individual entity:
- Temperature sensors — all zones from iLO, with the number prefix stripped from display names (
01-Inlet Ambient→Inlet Ambient) - Fan sensors — per-fan speed as a percentage
- Memory DIMM sensors — one entity per installed DIMM, showing size and speed as state (e.g.
8192 MB @ 1600 MHz), DDR generation inferred from speed, slot location as an attribute - Processor sensors — status per CPU socket, plus individual entities for name, clock speed, execution technology, and memory technology
- NIC sensor — MAC, IP, gateway, DNS, link speed and duplex, merged from both
nic_informationandnetwork_settings - Storage controller sensors — per controller with attached drive count and logical volume details in attributes
- BIOS/Hardware aggregate sensor — rolled-up health status across all subsystems
Firmware Diagnostics
All firmware components exposed as individual diagnostic sensors. Discovery is dynamic — no hardcoded key names — so it works across server generations (Gen8 through Gen10+):
- System ROM and Redundant System ROM (version + date)
- System ROM Bootblock
- Intelligent Provisioning
- Intelligent Platform Abstraction Data
- Server Platform Services (SPS) Firmware
- System Programmable Logic Device
Event Logs
- iLO Event Log and Server Event Log sensors: state shows the worst severity across all current entries; full log (up to 50 entries, newest first) available as entity attributes
- Per-field sensors for the last critical entry: description, timestamp, class
- Clear iLO Event Log and Clear Server Event Log buttons — requires
CONFIG_ILO_PRIVprivilege on the iLO user account (standard read-only access is enough for everything else)
iLO Self-Tests (Health-at-a-Glance)
One sensor per iLO subsystem showing its own rolled-up self-test result (OK / Degraded / Failed):
BIOS · Fans · Temperature · Power Supplies · Processor · Memory · Network · Storage
These are the same values you see in the iLO web UI’s Health Summary page.
Power Monitoring
- Present, Average, Minimum, and Maximum power draw (Watts) — where supported by your iLO firmware
- Power Saver mode: AUTO / OS Control / Static High / Static Low
- Power Cap mode with efficiency mode and alert threshold attributes
System Identity
- iLO Firmware Version (with management processor type, license type, and build date)
- Asset Tag
- Server Power-On Time
Binary Sensors
- Per-subsystem health sensors (Memory, Processor, Network, Storage, Temperature, Fan) — turn
ONwhen any component in the subsystem reports Degraded / Failed / Critical / Warning - UID Locator Light state
- Critical Temp Remain Off configuration flag
Power Control (disabled by default)
All power control entities are disabled by default to prevent accidental shutdowns — especially important if HA itself runs on the same server. Enable individually from Settings → Devices & Services → HP iLO → your device:
| Entity | What it does |
|---|---|
| Power Button | Short press — graceful shutdown or power on |
| Power Button Hold | Hold — immediate hard power off |
| Reset Server | Warm reboot |
| Server Power Control (switch) | Turn server on/off via set_host_power() |
Bug fixes included (vs. upstream branch)
| Bug | Fix applied |
|---|---|
IloWarning: No Asset Tag Information spamming HA logs |
Suppressed with warnings.catch_warnings() around every API call |
Storage sensor crash when health['storage'] is None |
Added isinstance(..., dict) guard |
| NIC sensor showing unknown when IP not assigned | Falls back to MAC address |
NIC MAC mismatch causing network_settings merge to be skipped |
Removed cross-check — management port and shared NIC use adjacent MACs by design |
| Storage health binary sensor showing unknown | Returns False instead of None when data absent |
| Memory sensor crash on Gen8 | Rewrote parser for memory_components tuple structure (Gen8 uses different format than Gen9+) |
Memory: Other status triggering health fault alerts |
Other excluded from _FAULT_STATUSES |
| Firmware sensors not found on Gen8 | Dynamic key discovery replaces hardcoded Gen9+ key names |
| Temperature entity names including number prefix | ^\d+- stripped from display name; original kept as unique ID |
| Entity names missing device name prefix | _attr_has_entity_name = True added to all entity base classes |
| Health and config entities not appearing in Diagnostics panel | EntityCategory.DIAGNOSTIC applied to all non-primary entities |
Installation
Add the repository as a custom HACS integration:
- HACS → Integrations → ⋮ → Custom repositories
- URL:
https://github.com/mx5gr/ha-hp_ilo-revamped— Category: Integration - Search for HP iLO and install
- Restart Home Assistant
- Settings → Devices & Services → Add Integration → HP iLO
iLO devices on the same network should be auto-discovered. If not, you can add manually by entering the host IP, port (443), and iLO credentials.
Tested on
- HP ProLiant MicroServer Gen8
- iLO 4 firmware 2.82 (Feb 2023)
- Intel Xeon E3-1220 V2, mixed DDR3 DIMMs
- Home Assistant 2024.x with
python-hpilo 4.4.3
Attribution
This integration would not exist without @chkuendig’s work on hass-hp_ilo-beta. The architecture, the iLO API mapping, the config flow, the coordinator pattern, the test suite — all of that is from the original repository. This fork picks up the feature/diagnostic-sensor-entities branch, applies bug fixes for Gen8, and packages it as a stable release.
Please consider starring the original upstream repo as well.
Happy to answer questions about the integration or Gen8-specific quirks. If you’re running on Gen9/Gen10 hardware and hit any issues, open an issue on the repo — I’d like to know how it behaves across server generations.



