🔌 Generic Output System (GOS)

Overview

The PumpSteer Generic Output System (GOS) allows PumpSteer to send its calculated virtual outdoor temperature (fake_temp) to a configurable Home Assistant service.

This makes it possible to connect PumpSteer to external systems such as helpers, MQTT, Modbus, REST commands, ESPHome entities or other Home Assistant integrations.

GOS remains an optional advanced/experimental output path in PumpSteer 2.2.x. The core PumpSteer controller does not depend on it. Test the selected Home Assistant service and payload against a harmless target before using GOS for production heating control.


What has been tested

The following has been verified during development:

  • fake_temp is passed to the output function
  • the payload template is rendered correctly
  • YAML payloads are parsed into service data
  • system_log.write can be used for testing
  • input_number.set_value can be used to write fake_temp to a helper

Other service targets, such as Modbus, MQTT or REST commands, depend on the user’s Home Assistant setup and should be verified individually.


What GOS can be used for

GOS may be used with any Home Assistant service that accepts a YAML/dictionary payload.

Possible use cases include:

  • writing to a Home Assistant helper
  • publishing to MQTT
  • writing to a Modbus register
  • calling a REST command
  • updating an ESPHome number entity
  • triggering custom integrations or automations

PumpSteer does not include brand-specific protocol handling. The user is responsible for configuring the correct Home Assistant service, register, topic, scaling and payload.


Configuration

Generic Output Service

The Home Assistant service to call.

Examples:

input_number.set_value
system_log.write
mqtt.publish
modbus.write_register

Generic Output Payload Template

The YAML payload sent to the selected service.

The template has access to:


which contains PumpSteer’s calculated virtual outdoor temperature.

The rendered template must produce a valid YAML dictionary.


Example 1 — Home Assistant helper

Service

input_number.set_value

Payload

entity_id: input_number.outdoor_temp_bms
value: "0"

This writes the current PumpSteer fake temperature to an input_number helper.


Example 2 — System log test

Service

system_log.write

Payload

message: "PumpSteer fake temp = 0"
level: info

This writes the current value to the Home Assistant log and is useful for testing.


Example 3 — MQTT

Service

mqtt.publish

Payload

topic: pumpsteer/fake_outdoor_temp
payload: "0"
retain: true

This publishes the fake temperature to MQTT.

This has not been tested in all setups and depends on a working MQTT integration.


Example 4 — Modbus register

Service

modbus.write_register

Payload

hub: thermia
address: 118
value: "0"

This example writes a scaled temperature value to a Modbus register.

The register address, hub name, scaling and optional slave/addressing parameters depend on the specific heat pump, gateway, controller or Modbus setup.


Example 5 — ESPHome number entity

Service

number.set_value

Payload

entity_id: number.esphome_fake_outdoor_temp
value: "0"

This can be used with an ESPHome number entity or similar Home Assistant number entity.


Notes

  • GOS is optional.
  • PumpSteer works normally without it.
  • The internal option keys currently still use the modbus_* prefix for backward compatibility.
  • Output calls are interval-limited.
  • Invalid templates or payloads are logged as warnings and should not stop PumpSteer.
  • Always verify the output with system_log.write or an input_number helper before writing to real hardware.