🔌 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_tempis passed to the output function- the payload template is rendered correctly
- YAML payloads are parsed into service data
system_log.writecan be used for testinginput_number.set_valuecan be used to writefake_tempto 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.writeor aninput_numberhelper before writing to real hardware.