sudoAPWH / TCC-Monitor

View on GitHub
Go self-hosted thermostat honeywell monitoring
About this project

What is TCC Monitor?

TCC Monitor is a self-hosted web dashboard for keeping tabs on your Honeywell Total Connect Comfort (TCC) thermostats. It polls your thermostat data on a configurable interval, stores temperature readings in a local SQLite database, and presents everything through a clean web interface with live stats and historical charts.

The idea is simple: Honeywell's cloud app gives you current readings, but no historical data, no trend analysis, and no way to get alerts when something's off. TCC Monitor fills that gap by creating a local record of your thermostat's behavior over time.

What It Does

📈 Live Dashboard

Real-time thermostat stats with auto-refresh. See current temperature, setpoint, humidity, and operating status at a glance.

📅 Historical Data

Temperature trend charts covering 24-hour and 7-day periods. Browse historical readings by date with a calendar picker.

🔔 Smart Alerts

Get notified via encrypted Matrix messages when temperature deviates from your set parameters. No email, no push notifications — just Matrix.

📦 Self-Contained

SQLite database with WAL mode for concurrent reads. No external database server needed. Everything runs in one container.

Architecture

Honeywell TCC Cloud │ │ poll on interval ▼ TCC Monitor (Go) ────────────────────────────┐ │ │ ├── SQLite (temperature history) │ │ │ ├── Web Dashboard │ │ ├── HTMX partial page updates │ │ ├── Chart.js visualizations │ │ └── Tailwind CSS styling │ │ │ └── Matrix Alerts │ └── E2EE via mautrix-go │ │ Docker (distroless) ──┘

Design Philosophy

  • Lightweight by default — Go backend with SQLite means no external dependencies to manage. One binary, one database file.
  • HTMX over SPA — The dashboard uses HTMX for dynamic updates instead of a full JavaScript framework. Partial page swaps keep things fast and simple.
  • Matrix for notifications — Rather than email or Slack, alerts go through Matrix with full end-to-end encryption via mautrix-go. Fits naturally into a self-hosted stack.
  • Distroless containers — The Docker image is built on distroless base images for minimal attack surface and tiny image size.
  • Local data ownership — Your thermostat data stays on your server. The app polls Honeywell's cloud, but the historical record is yours.

The Stack

  • Backend: Go — handles polling, API logic, and serves the web UI
  • Database: SQLite with modernc.org driver (pure Go, no CGO)
  • Frontend: HTMX + Chart.js + Tailwind CSS
  • Notifications: Matrix protocol via mautrix-go with E2EE
  • Deployment: Docker Compose with distroless containers
Back to all repositories