Connections
Home Assistant
Each roaster as a Home Assistant device through MQTT discovery, read only.
Each roaster can show up in Home Assistant as a device: its temperatures, rate of rise,
heater, fan, the roast's phase and time, and the RoR warning, on your Home Assistant
dashboards and in its automations (a lamp that turns red at first crack, a message when the
roast ends). It is read only: no entity sends the roaster anything, so an automation cannot
raise a heater. Control stays with the dashboard and the roast command. It is off until
you switch it on.
Setting it up in short
- In Home Assistant, set up the MQTT integration (Settings → Devices & services → MQTT), pointed at the broker you pick below.
- In Roastwarden, Settings → Home Assistant: tick On under Discovery, pick the Broker, Save.
- Within a few seconds the roasters appear among the MQTT integration's devices. The page then lists them under "In Home Assistant", each with whether it is available and its entities, and says what is wrong when nothing is published ("not connected to … yet").
Needs Home Assistant 2024.11 or newer (it uses device discovery).
The broker
- The server's broker, the one the roasters use (the default). Home Assistant needs a
user there that may only read. With Roastwarden's built-in broker, set
MQTT_HOME_ASSISTANT_PASSWORDin.envand restart: Home Assistant then signs in ashomeassistant, may read onlyhomeassistant/#,roastwarden/ha/#androastwarden/server/status, and cannot see a roaster's own topics or send it a command. The same variable makes the same user on the Mosquitto in the compose file. On a broker of your own, make such a user yourself. - Home Assistant's own broker: enter its Address (
mqtt://host[:port]), User and Password. The server opens a second connection and publishes there only; the roasters stay on their broker. Plain MQTT only, nomqtts://.
Options
| Option | Default | What it does |
|---|---|---|
| Discovery prefix | homeassistant | Change it only if you changed it in Home Assistant |
| Every … s | 5 | How often each roaster's values are sent (1–60 s) |
| The simulated roasters too | off | Announce the simulated roasters as well |
What it shows
One device per roaster, named as the roaster (Roasters), with the roaster's firmware as its
software version and, when public_url is set, a link to its page on the dashboard.
| Entity | Kind | From |
|---|---|---|
| Bean temperature | sensor, °C (Home Assistant converts to its own unit) | BT |
| Rate of rise | sensor, °C/min | the server's RoR (the RoR setting's window) |
| Environment temperature | sensor, °C | ET, when the roaster sends it |
| Setpoint | sensor, °C | when the roaster sends it |
| Heater, Fan | sensor, % | when the roaster sends them |
| Phase | enum: idle, drying, maillard, development, cooling | the open roast's marks: DRY end, first crack, DROP; cooling while the roast sequence cools |
| Roast time | duration, s | since CHARGE, while a roast is open |
| Roasting | binary sensor (running) | a roast is open |
| Roast | text | the open roast's name |
| RoR warning | enum: none, crash, flick, stall; attribute reason | the live prediction's RoR watch (Prediction, "RoR warnings") |
An entity is announced only for what the roaster reports (a thermocouple board with BT alone
gets no heater or fan); once seen it stays. A value missing in a message reads unknown.
A roaster heard but waiting to be set up (Roasters) is not announced until it is; the simulated
roasters only with "The simulated roasters too" (ha_virtual).
What it does not do
- No control from Home Assistant: there is no fan or setpoint entity, on purpose. An automation could act with no one at the roaster.
- No
mqtts://to Home Assistant's broker. - The predicted first crack and DROP are not entities (they are in
roast live).
From the command line, roast home-assistant shows the state, the roasters announced and
their entities; roast home-assistant --on switches it on with the server's broker
(--broker, --username, --password-stdin for Home Assistant's own).