A fully self-contained Home Assistant add-on for reading data from Wolf heaters equipped with an ISM7 / WolfLink module and publishing it to MQTT.
This repository has no runtime dependency on any upstream image or repository:
the ism7mqtt / ism7config programs are built from vendored source code inside
the add-on's own multi-stage Dockerfile. Nothing is pulled from Docker Hub or a
third-party add-on repository at build or run time (only the official .NET SDK and
Home Assistant base images, plus the NuGet packages the program depends on).
Wolf ISM7 <--TCP/TLS--> ism7mqtt --MQTT--> Mosquitto --> Home Assistant
(built from ./ism7mqtt/src)
ism7configgenerates aparameter.jsondescribing your installation (run once).ism7mqttconnects to the ISM7, reads/writes values and bridges them to MQTT with Home Assistant MQTT discovery.- The shell wrapper (
run.sh) wires the add-on options to the program and runs one instance per configured device.
- In Home Assistant: Settings → Add-ons → Add-on Store → ⋮ → Repositories.
- Add
https://github.com/aschwarz1984/my-ism7-addon. - Install Ism7MQTT (self-built), configure it (device name, ISM7 IP, password from the sticker), and start it.
The first start builds the image locally on your device — this takes a few minutes because the .NET binaries are compiled from source. Subsequent starts are fast.
Requires the Mosquitto broker add-on and the MQTT integration.
| Option | Description |
|---|---|
device_name |
Device id used in MQTT topics/entities (no spaces). |
ism7_ip |
IP/host of your ISM7 module. |
ism7_password |
Password printed on the ISM7 sticker. |
language |
Language for entity names / list values. |
interval |
Poll interval in seconds (default 60). |
startup_timeout |
Maximum wait for each startup bundle response, in seconds (default 90; must be positive). |
serialize_push_subscribes |
Wait for each startup push subscription response before sending the next (default false). |
additional_devices |
List of extra ISM7 modules (device_name, ism7_ip, ...). |
mqtt_* |
Optional manual MQTT broker settings (auto-discovered if omitted). |
debug_logging |
Enable verbose protocol logging. |
startup_timeout and serialize_push_subscribes apply to the primary module
and all additional_devices. A missing startup response causes the bridge to
stop and enter the retry cycle below. This is separate from the existing
30-second TCP/TLS connection timeout.
Each module starts immediately, then retries up to three times with 10 seconds between attempts when its bridge process exits. After the initial attempt and three retries have ended, the add-on waits five minutes before starting a new cycle. Both the short retries and the five-minute cooldown are logged with the device name and IP address. Retry cycles are independent for each module and apply regardless of the bridge process's exit code; a running bridge is never interrupted by the cooldown.
If an ISM7 running firmware 5.20 (including 5.20.6) stops updating during startup,
enable serialize_push_subscribes and restart the add-on. Leave it disabled
otherwise to preserve the existing subscription behavior.
The ISM7 module is easily overwhelmed when monitoring hundreds of parameters, which can cause connection drops or missing updates. Mitigations:
- Disable the connection to the Wolf portal to reduce microcontroller load.
- Use Ethernet instead of Wi‑Fi (Wi‑Fi is reported to be unreliable).
- Trim parameters you don't need: edit
config/ism7-parameters-<device>.json(via the File editor add-on) and remove whole device sections or individual numeric parameter ids, then restart.
Parameter files are parsed as JSON: IDs may share a line or appear one per line.
The add-on logs the actual parameter count and warns above 150 parameters,
regardless of formatting. Unreadable files, invalid JSON, or missing Devices
and Parameter arrays produce an explicit startup error.
When the ISM7 connection drops, all entities published by that bridge are marked
unavailable in Home Assistant. Their last MQTT values remain retained for history
and are replaced with fresh readings after the bridge reconnects.
The ISM7 only accepts one local connection, so you can't run the Smartset local app at the same time as this add-on. The Smartset cloud app, however, uses the ISM7's separate portal connection — it can run alongside this add-on, but the small microcontroller is easily overwhelmed and you'll see drops/missing values if the add-on polls too hard. To keep things stable:
- Raise
interval. Heating values change slowly.120(2 min) is a good gentle default and is plenty for automations on outside/water temperature; use60only if you really want snappier updates. This is the single safest knob. - Trim the parameter file (see above). This is the biggest load reducer — keep only the values your dashboards/automations actually use. Your install logged the ">150 parameters" warning, so there's a lot to cut here.
- Use Ethernet and consider disabling the Wolf portal connection if you don't need the cloud app.
For temperature-driven automations specifically, a 120 s refresh is more than adequate — outside temperature barely moves on that timescale, and water/flow temperatures are not used for sub-minute decisions.
The C# program lives under ism7mqtt/src/. To pull in upstream
fixes later, replace those folders with a newer snapshot from the original
project and bump version in ism7mqtt/config.yaml. See
CONTRIBUTING-vendoring.md.
This repository combines two differently-licensed parts — see LICENSE.md:
- The add-on wrapper (
Dockerfile,run.sh,config.yaml,repository.yaml, CI) is licensed Apache-2.0. - The vendored program under
ism7mqtt/src/is GPL-3.0-only (originally by the ism7mqtt project). Redistribution of this repository or images built from it must comply with the GPL-3.0, including offering the corresponding source — which is included here.
Built on the excellent work of the original ism7mqtt project (zivillian and
contributors) and the hassio-addon-ism7mqtt wrapper (b3nn0). This repo vendors
and self-builds that source for full independence.