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

  1. In Home Assistant, set up the MQTT integration (Settings → Devices & services → MQTT), pointed at the broker you pick below.
  2. In Roastwarden, Settings → Home Assistant: tick On under Discovery, pick the Broker, Save.
  3. 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_PASSWORD in .env and restart: Home Assistant then signs in as homeassistant, may read only homeassistant/#, roastwarden/ha/# and roastwarden/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, no mqtts://.

Options

OptionDefaultWhat it does
Discovery prefixhomeassistantChange it only if you changed it in Home Assistant
Every … s5How often each roaster's values are sent (1–60 s)
The simulated roasters toooffAnnounce 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.

EntityKindFrom
Bean temperaturesensor, °C (Home Assistant converts to its own unit)BT
Rate of risesensor, °C/minthe server's RoR (the RoR setting's window)
Environment temperaturesensor, °CET, when the roaster sends it
Setpointsensor, °Cwhen the roaster sends it
Heater, Fansensor, %when the roaster sends them
Phaseenum: idle, drying, maillard, development, coolingthe open roast's marks: DRY end, first crack, DROP; cooling while the roast sequence cools
Roast timeduration, ssince CHARGE, while a roast is open
Roastingbinary sensor (running)a roast is open
Roasttextthe open roast's name
RoR warningenum: none, crash, flick, stall; attribute reasonthe 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).