Connections

Notifications

Alarm and system notifications through ntfy, Gotify, webhooks and Web Push.

Roastwarden tells you when something needs you: an alarm during a roast, a nightly backup that failed, a roaster gone quiet, a bean running low. Each message goes to every channel you turn on: phones through Web Push, Gotify, ntfy, a Matrix room, or a webhook for your own automation. This page also covers how secret settings are kept, and Settings → About.

Channels

Set them up under Settings → Notifications. Each channel has its own On switch, Save and Test; Test sends with the values as typed, saved or not. Each shows how its last send went ("Last sent …" or "Last try failed …"); a restart clears that line.

ChannelWhat you enter
Web PushNothing here: turn it on in each browser under Settings → This browser (alarm notifications)
Gotify (or rstify)Server URL and the token of an application you make on that server
ntfyServer URL (empty means https://ntfy.sh), a topic, an optional access token. On a public server anyone who knows the topic can read it: use a long random name, or a token
MatrixHomeserver, room id (Room settings → Advanced in your client), the access token of an account in the room (a bot account is best)
WebhookA URL that gets a JSON POST for every message, an n8n workflow say

A slow or failing channel holds up none of the others. Alarms themselves are set up under Settings → Alarms (alarms).

System events

Each is sent once when the problem starts and once when it clears. A restart neither repeats one nor forgets it. Open problems are listed at the top of Settings → Notifications and on Settings → About. Under System events you can switch each kind off:

  • The nightly backup failed: clears when the next nightly backup works.
  • A roaster sent nothing for N min, outside a roast (3 by default): clears when it sends again. A roaster mid-roast is left to the "no telemetry" alarm, and a roaster quiet for more than 7 days is forgotten.
  • A bean fell below its low-stock mark: clears when it is back above, or archived.

Webhook payloads

A webhook gets one of these JSON bodies:

{ "type": "roast_alarm", "alarm": { "device_id": "…", "session_id": "…", "session_name": "…",
  "name": "BT high", "condition_type": "temp_above", "threshold": 230, "message": "…",
  "value": 231.2, "elapsed_seconds": 605, "fired_at": "…", "actions": ["heater off"] } }

{ "type": "system_event", "kind": "backup | offline | stock", "key": "offline:my_roaster",
  "state": "failing | recovered", "title": "…", "message": "…", "at": "…" }

{ "type": "test", "message": "Notifications reach this channel." }

{ "event": "approval", "approval": { "id": "…", "status": "pending", "summary": "Delete bean \"Old lot\"",
  "token_name": "assistant", "url": "https://…/settings/approvals?id=…", "expires_at": "…", … } }

Approval requests (an agent's token asking for something only you may allow, control) go out on every enabled channel at high priority: "The token "assistant" asks to delete bean "Old lot". Approve or deny it within 60 minutes: ". The link starts with the public_url setting when it is set, else with the address the token's call came to.

Secret settings

Tokens and the webhook URL are secrets: once saved, the dashboard and the API never show them again. Their field reads "Set; leave empty to keep it"; Remove clears one. A saved token is sent only to the server it was saved for: if you change Gotify's URL, ntfy's server or the Matrix homeserver, type the token again. Values are checked when you save (URLs need http:// or https:// and a host, numbers must be in range).

About

Settings → About shows what is running and whether it is well: the server's and the dashboard's versions (and "Older than the server: reload the page" when this tab is out of date), the revision, how long it has run, the MQTT broker and database, the last backup, open problems, the roasters, the licence (AGPL-3.0-or-later) with its text, the source of the running revision and the third-party notices. The support bundle and the Artisan screen setup file are downloaded from here too (support, Artisan as a screen).

From the command line: roast notifications shows the channels, their last send, the devices signed up and the open problems; roast notifications --test ntfy sends a test (push, gotify, ntfy, matrix, webhook). roast settings and roast settings set KEY=VALUE read and write settings; roast status gives About's summary.