[Custom Integration] HP iLO Integration for Home Assistant (revamped)

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

:electric_plug: 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

:thermometer: 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 AmbientInlet 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_information and network_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

:wrench: 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

:clipboard: 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_PRIV privilege on the iLO user account (standard read-only access is enough for everything else)

:mag: 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.


:zap: 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

:label: System Identity

  • iLO Firmware Version (with management processor type, license type, and build date)
  • Asset Tag
  • Server Power-On Time

:red_circle: Binary Sensors

  • Per-subsystem health sensors (Memory, Processor, Network, Storage, Temperature, Fan) — turn ON when any component in the subsystem reports Degraded / Failed / Critical / Warning
  • UID Locator Light state
  • Critical Temp Remain Off configuration flag

:gear: 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 :warning: data loss risk
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:

  1. HACS → Integrations → ⋮ → Custom repositories
  2. URL: https://github.com/mx5gr/ha-hp_ilo-revamped — Category: Integration
  3. Search for HP iLO and install
  4. Restart Home Assistant
  5. 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.

1 Like

Why so old?

Misleading statement… Meant “Compatible with version 2024.x onwards”. I have tested it with all 2026.x versions and it runs fine.

trying to install integration. folowed the steps but somehow i’m not able to add the repository (GitHub - mx5gr/ha-hp_ilo-revamped: HP iLO Integration for Home Assistant · GitHub). after reboot it’s gone again. tried several times.
Aim is to use the integration on a HPE ML30 gen10 with HA 17.1

Hi,

I assume that you have already:

  1. Added the repo in HACS
  2. Downloaded the integration through HACS
  3. Restarted HA
  4. Added the integration and your server through System → Devices
  5. Restarted HA again

It sounds like a HACS issue or something else, not integration-related.

Any indication in the logs?

One step further :slight_smile:
After a second reboot i found the integration and was able to connect to iLO.


But, not so much entitities.
It’s iLO v5 fully licensed

and i can see the disk’s in iLO

I’m using a bit restricted user

is this a matter of being patient?

I now gave the user all access exept service account, still the same 5 entities.
I did do a reload after the change, no result.

Hi,

It is probably an iLO format issue, as I am using an older iLO and I haven’t got access to other servers :slight_smile:

Download the file in the following link, replace it within the integration and restart HA. This will provide extensive logging, thus it will provide additional information regarding iLO’s response. → SwissTransfer - Send large files securely and free of charge

Please enable debug logging for the component, reload it, play a bit with it (e.g. press any available buttons) and provide me of the logs.

There are no entities shown within the integration, other than the ones shown in the pic you uploaded?

  • i downloaded the .py file but clueless where to place it.
  • How do i enable extensive logging
  • only the entities in the pic

You have to put it within the integration’s directory, within custom_components (usually in /config directory of HA)

For debug logging, after you replaced the file and restarted HA, go to the integration and at the top right you’ll find “Enable debug logging”.

Enable it, let the integration refresh for a couple of minutes (you can manually reload it as well), then disable the logging, save and send the log file that it will be produced.

ok, wil take a few days. Off for a long weekend.

New version is out, 2023.3.2, which supports iLO 3/4/5/6.

Please report of any bugs :wink:

Will test, next week. Thnx so far!