📊 Dashboard Setup

Contents

The YAML examples below are based on a real PumpSteer installation and may need to be adapted to match your setup. In particular, replace any entity IDs that are specific to this installation (such as sensor.elpris_spot_avgifter and sensor.temperatur_nu) with your own entity IDs. All PumpSteer-owned entities (prefixed sensor.pumpsteer, number.pumpsteer, switch.pumpsteer, datetime.pumpsteer) are registered automatically and do not need to be changed.


Prerequisites

Install these cards via HACS before using the dashboard templates:


Ready-made example files

The repository includes ready-to-use example files in the other/ folder. These are based on a real installation and are a good starting point.

All files in other/ contain entity IDs specific to one installation. You will need to replace price sensor IDs, outdoor temperature entity IDs, and Nordpool config entry IDs with your own before using them.

pumpsteer_package.yaml

A Home Assistant package file that adds helper template sensors on top of the built-in PumpSteer entities:

Sensor Description
sensor.pumpsteer_operating_mode Human-readable mode with icon (Regulating / Saving / Pre-heating / etc.)
sensor.pumpsteer_status One-line status summary with emoji
sensor.pumpsteer_price Price category as readable text (Cheap / Normal / Expensive)
sensor.pumpsteer_temperature_difference Indoor vs target temperature delta
sensor.pumpsteer_fake_temp_delta Virtual vs real outdoor temperature delta
sensor.pumpsteer_brake_factor Brake factor as percentage (0–100 %)
sensor.pumpsteer_is_saving Boolean — true when in braking, pre_braking, or preheating mode
sensor.pumpsteer_holiday_status Holiday mode state with scheduled start/end times
sensor.pumpsteer_price_thresholds P30/P80 thresholds as a readable string

Add it to your HA config by placing the file in your packages/ folder and adding this to configuration.yaml if not already present:

homeassistant:
  packages: !include_dir_named packages

nordpool_package.yaml

A complete Nordpool price package for SE3 (Sweden) that creates:

  • sensor.elpris_today — current price including markup, with full today raw list
  • sensor.elpris_tomorrow — tomorrow’s prices as raw list (available from ~13:00)
  • sensor.elpris_spot_avgifter — current price with min/max attributes
  • sensor.elpriskoefficient — relative price level for the day
  • sensor.nordpool_price_band — very_cheap / cheap / normal / expensive / very_expensive
  • binary_sensor.elpris_ok — true when price is below threshold

This package requires the Nordpool integration and uses a hardcoded config_entry ID. You must replace 01KHAXM5D239V0B77VNTXXXXXX with your own Nordpool config entry ID, found under Settings → Devices & Services → Nordpool → Configure.

lovelace_cards.yaml

A complete Lovelace dashboard layout including:

  • Glance card with mode, price category and saving status
  • Settings panel with all PumpSteer controls
  • Status details card (P30/P80, brake factor, heating demand)
  • Temperature history chart (virtual vs real outdoor)
  • Price vs P30/P80 chart (mini-graph-card)
  • Full ApexCharts card: braking factor vs price vs P80 over 24h

Copy individual cards from this file into your own dashboard via the Raw Configuration Editor.


PumpSteer entities reference

Sensors

Entity State Key attributes
sensor.pumpsteer Fake outdoor temperature (°C) mode, price_category, brake_factor, heating_demand_c, p30, p80, indoor_temperature, outdoor_temperature, minutes_until_expensive, status, last_updated
sensor.pumpsteer_thermal_outlook preheat / neutral / warming / precool_risk preheat_worthwhile, preheat_strength, warming_trend, cooling_trend, night_min_temp, day_max_temp

Numbers

Entity Description
number.pumpsteer_target_temperature Target indoor temperature
number.pumpsteer_summer_mode_threshold Summer mode activation temperature
number.pumpsteer_saving_level Aggressiveness / saving level (0–5)
number.pumpsteer_house_thermal_mass Brake ramp time (house inertia)

Switches

Entity Description
switch.pumpsteer_preheat_boost Preheat boost on/off
switch.pumpsteer_notifications Price notifications on/off
switch.pumpsteer_holiday_mode Holiday mode on/off
switch.pumpsteer_ohmigo_push Ohmigo push on/off

Datetime helpers

Entity Description
datetime.pumpsteer_holiday_start Holiday start (auto-activates holiday mode)
datetime.pumpsteer_holiday_end Holiday end (auto-deactivates holiday mode)

Control panel

Settings and switches for quick adjustment directly from the dashboard.

This example uses sensor.elpris_spot_avgifter as the electricity price entity. Replace this with your own price sensor entity ID.

type: grid
columns: 1
cards:
  - type: vertical-stack
    cards:
      - type: glance
        show_name: true
        show_icon: true
        show_state: true
        columns: 3
        entities:
          - entity: sensor.pumpsteer_operating_mode
            name: Mode
          - entity: sensor.pumpsteer_price
            name: Price
          - entity: sensor.pumpsteer_brake_factor
            name: Brake
  - type: vertical-stack
    cards:
      - type: entities
        title: Settings
        show_header_toggle: false
        entities:
          - entity: number.pumpsteer_target_temperature
            name: Target Temperature
            icon: mdi:thermometer
          - entity: number.pumpsteer_saving_level
            name: Aggressiveness (0 = Off, 5 = Max)
            icon: mdi:lightning-bolt-circle
          - entity: number.pumpsteer_summer_mode_threshold
            name: Summer Threshold
            icon: mdi:weather-sunny
          - entity: number.pumpsteer_house_thermal_mass
            icon: mdi:home-thermometer
          - entity: switch.pumpsteer_notifications
            name: Notifications
          - entity: switch.pumpsteer_ohmigo_push
            name: Ohmigo Push
          - entity: switch.pumpsteer_preheat_boost
          - entity: datetime.pumpsteer_holiday_start
            name: Holiday Start
          - entity: datetime.pumpsteer_holiday_end
            name: Holiday End
          - entity: switch.pumpsteer_holiday_mode
            name: Holiday Mode
          - entity: sensor.pumpsteer_thermal_outlook
  - type: custom:mini-graph-card
    name: Price vs P30 / P80 (12h)
    hours_to_show: 12
    points_per_hour: 4
    line_width: 3
    font_size: 75
    animate: true
    show:
      labels: false
      legend: true
      icon: false
    entities:
      - entity: sensor.elpris_spot_avgifter  # ← replace with your price entity
        name: Price
        show_state: true
      - entity: sensor.pumpsteer
        attribute: p30
        name: P30
        show_state: true
      - entity: sensor.pumpsteer
        attribute: p80
        name: P80
        show_state: true

Data overview

Detailed status card showing all sensor attributes.

Replace sensor.elpris_spot_avgifter with your electricity price entity ID.

type: grid
cards:
  - type: entities
    title: PumpSteer Data
    entities:
      - type: attribute
        entity: sensor.pumpsteer
        attribute: status
        name: Status
        icon: mdi:check-circle
      - type: attribute
        entity: sensor.pumpsteer
        attribute: mode
        name: Mode
        icon: mdi:cog
      - type: attribute
        entity: sensor.pumpsteer
        attribute: price_category
        name: Price Category
        icon: mdi:tag
      - entity: sensor.pumpsteer
        icon: mdi:thermometer-chevron-down
        name: Virtual Outdoor Temperature
        secondary_info: last-changed
      - type: attribute
        entity: sensor.pumpsteer
        attribute: indoor_temperature
        name: Indoor Temperature
        suffix: °C
        icon: mdi:home-thermometer
      - type: attribute
        entity: sensor.pumpsteer
        attribute: outdoor_temperature
        name: Outdoor Temperature
        suffix: °C
        icon: mdi:thermometer
      - type: attribute
        entity: sensor.pumpsteer
        attribute: p30
        name: Price P30 Today
        suffix: SEK/kWh
        icon: mdi:chart-bell-curve
      - type: attribute
        entity: sensor.pumpsteer
        attribute: p80
        name: Price P80 Today
        suffix: SEK/kWh
        icon: mdi:chart-bell-curve
      - entity: sensor.elpris_spot_avgifter  # ← replace with your price entity
        name: Price Now
        secondary_info: last-changed
      - type: attribute
        entity: sensor.pumpsteer
        attribute: last_updated
        name: Last Updated
        icon: mdi:clock-outline
      - type: attribute
        entity: sensor.pumpsteer
        attribute: minutes_until_expensive
        name: Minutes to Expensive
        icon: mdi:chart-bell-curve
        suffix: min
  - type: custom:mini-graph-card
    name: Real vs PumpSteer Temperatures
    icon: mdi:thermometer-lines
    entities:
      - entity: sensor.pumpsteer
        name: PumpSteer Temp
        color: "#e87d0d"
        show_state: true
      - entity: sensor.temperatur_nu  # ← replace with your outdoor temp entity
        name: Outdoor Temp
        color: "#44739e"
        show_state: true
    hours_to_show: 24
    points_per_hour: 4
    line_width: 2
    smoothing: true
    show:
      labels: true
      points: false
      legend: true
      fill: fade

Mode color indicator

A template sensor for color-coding the current mode — useful in custom cards. Add this to configuration.yaml or a package file:

template:
  - sensor:
      - name: PumpSteer Mode Color
        state: >
          {% set mode = state_attr('sensor.pumpsteer', 'mode') %}
          {% if mode == 'braking' %} red
          {% elif mode == 'pre_braking' %} orange
          {% elif mode == 'preheating' %} blue
          {% elif mode == 'summer_mode' %} yellow
          {% elif mode == 'safe_mode' %} grey
          {% else %} green
          {% endif %}