Redesign dashboard zone card with live temps, AC status, and per-radiator state

Adds actual room-temperature capture for TRVs over MQTT and a background
Modbus poller for AC mode/fan/lock/room-temp, so the dashboard tile can show
real setpoint-vs-actual readings, an AC status block, and up to 3 radiator
icons per zone instead of just the setpoint.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
jtricerolph 2026-07-27 20:25:50 +00:00
parent ab14d4dfe1
commit 0929285651
9 changed files with 230 additions and 12 deletions

View file

@ -8,6 +8,7 @@ import { dirname, join } from 'path'
import { initDb } from './db.js'
import { connect as connectMqtt } from './lib/mqtt.js'
import { startScheduler } from './lib/scheduler.js'
import { startAcPoller } from './lib/ac-poller.js'
import { zoneRoutes } from './routes/zones.js'
import { deviceRoutes } from './routes/devices.js'
import { statusRoutes } from './routes/status.js'
@ -52,6 +53,7 @@ try {
connectMqtt().catch(err => app.log.warn(`MQTT connect failed at startup: ${err.message}`))
await startScheduler()
await startAcPoller().catch(err => app.log.warn(`AC poller failed to start: ${err.message}`))
await app.listen({ port: 3001, host: '0.0.0.0' })
} catch (err) {
app.log.error(err)