Releases ·

Roastwarden 0.19.0

For anyone coming from Artisan: keep Artisan as the screen while rustRoast runs the roaster. The server's Modbus slave serves the roaster to Artisan, and the server writes the Artisan setup file that reads it, checked against Artisan 4.2.0 itself. The slave is now read-only unless writes are switched on, and its writes go through the roaster's control gate and the audit log.

Added

  • Artisan as a screen (Next 66, Artisan as a screen): an Artisan user keeps Artisan while rustRoast runs the roaster. The server's Modbus slave (RUSTROAST_MODBUS_ADDR) serves the roaster's BT, ET, heater and fan, and writes the Artisan setup that reads them (Settings → About → Artisan screen, roast artisan-screen --aset FILE, or artisan/rustRoast.aset in the compose bundle): Help → Load Settings in Artisan, then ON. Checked against Artisan 4.2.0 itself, headless (scripts/dev/artisan-screen-check.sh), in °C and °F. Read-only unless RUSTROAST_MODBUS_WRITES=on; then Artisan's Air and Burner sliders go through the roaster's control gate like any command. The compose file has the lines, commented out.
  • roast artisan-screen and roast status say whether the slave is on, the roaster it serves and when Artisan last read; GET /api/about has it as artisan_screen.
  • Hermes eval task 45: an Artisan user asks for the file to load, read-only.

Changed

  • The Modbus slave serves the one real roaster heard when RUSTROAST_MODBUS_DEVICE_ID is unset (it named esp32-001, which no roaster is), never a virtual one; with none or several it serves nothing and says why. A read while the roaster is silent is refused (exception 0x0B) so Artisan draws a gap, not 0 °C; the holding registers read back the roaster's own values.

Security

  • The Modbus slave took writes from anyone who reached its port and sent them to the roaster with no record. Writes are now off unless switched on, go through the roaster's control gate when on, and every one, refused or not, is in the audit log (actor modbus).