Skip to content

Home Assistant Integration

The Icelake HACS integration lets you ship every entity in Home Assistant — sensors, climate, switches, binary sensors — straight into Icelake’s S3-backed data lakehouse. Under the hood it uses Home Assistant’s state-change events and pushes them to Icelake’s Prometheus-compatible remote write endpoint, so what you get back is a full metric history you can query with PromQL, LogQL, SQL, or AI MasterMind.

No Node-RED, no InfluxDB, no long-term storage add-on. Your data lives on your own S3 bucket, retained as long as you want, priced by the byte.

  • A running Home Assistant instance (Supervised, Container, or OS)
  • HACS installed
  • An Icelake account and an API key (client ID + ilk_… secret) from the admin dashboard under Data In → API Keys
  1. Open HACS → Integrations → ⋮ → Custom repositories.
  2. Add https://github.com/icelake-eu/hacs-icelake with category Integration.
  3. Search HACS for Icelake and install.
  4. Restart Home Assistant so the new integration registers.
  1. Go to Settings → Devices & Services → Add Integration → Icelake.
  2. Enter:
    • Icelake URLhttps://api.icelake.eu
    • Client ID — from the API key you created.
    • API Key — the ilk_… secret.
  3. Optionally configure entity filtering on the next screen (see below).
  4. Submit. The integration validates credentials and starts pushing on the next state change.

By default every numeric and boolean entity is shipped. Smart-home setups can have thousands of entities, so you usually want to scope this:

OptionWhat it does
Include domainsOnly ship entities from listed domains, e.g. sensor, climate, binary_sensor, switch
Exclude entitiesBlock specific entity IDs (sensor.noisy_one)
Include areasOnly ship entities in the listed Home Assistant areas
Minimum intervalCoalesce rapid state changes (default: 5s)

Change these at any time under Settings → Devices & Services → Icelake → Configure.

After a couple of state changes, metrics should appear. Query via MasterMind:

“Show me the living room temperature over the last 24 hours”

Or via PromQL in Grafana (see Query Interfaces for the datasource setup):

ha_sensor_temperature{entity="sensor.living_room_temperature"}

Metric names follow the ha_<domain>_<object_id> convention:

Home Assistant entityIcelake metric
sensor.living_room_temperatureha_sensor_living_room_temperature
climate.kitchen (current temp)ha_climate_kitchen_current_temperature
binary_sensor.front_doorha_binary_sensor_front_door (0 or 1)
switch.office_lightsha_switch_office_lights (0 or 1)

Each metric carries labels for area, device_class, friendly_name, and unit_of_measurement where available, so you can slice dashboards by room or sensor type.

SymptomWhat to check
No data arrivingConfirm client ID + API key in the integration options. Try the Prometheus verify step.
Only some entitiesCheck include/exclude filters under Configure
401 in logsAPI key was revoked or rotated — create a new one and update the integration
High cardinality warningTighten filters; prefer areas or domains over shipping everything
HA restart loses configThe integration persists via Home Assistant’s config entry system; restart doesn’t wipe it, but a HACS reinstall does
  • Prometheus — the underlying protocol and remote write mechanics
  • Query Interfaces — configure Grafana or pgwire against HA metrics
  • Quickstart — send your first signal to Icelake and view it in Grafana