Linknode Energy Monitor

Real-Time Power Monitoring by Murray Kopit • Powered by Cloudflare + Fly.io

Real-Time Energy Monitoring System (at my house!) - Smart Power Consumption Dashboard

2
Active Services
--
Data Uptime
device --
24/7
Monitoring
--
This Bill So Far
BC Hydro, incl. GST
Live
Status

Live Infrastructure Metrics at My House!

⚡ Real-Time Power Consumption

0 10k -- W
Live
--
24h Min
--
24h Avg
--
24h Max
--
24h Cost

🔌 Service Status

Eagle Monitor
Checking...
Database
Checking...
📊 Meter Reads
--
👁️ Active Viewers
--
⏱️ Sample Interval
--

📊 Power Consumption Trends

--
Min Power
--
Average Power
--
Peak Power
--
Energy Consumed
--
Meter Reading (kWh)
--
Rate ($/kWh)
--
Cost/Hour
--
Estimated Cost

📈 Electricity Bill Forecast

--
Bill So Far
--
Spend Rate
--
Projected Bill
--
Days Left

🌡️ Heating

--
System
--
Room
--
Setpoint
--
Outdoor
--
Heating Today
--
Cycles Today
--
Heating Yesterday
--
Heating, 7 Days
Run time is the thermostat's call for heat or cooling, logged by the Raspberry Pi. Outdoor temperature from Open-Meteo.

🔥 Gas Bill Forecast

--
Bill So Far
--
Spend Rate
--
Projected Bill
--
Days Left
--
Gas So Far (est.)
--
Furnace Run Time
--
Furnace Input
--
Base Load

Technology Stack

Zero-Dependency Frontend

There is no framework. The frontend is 100% vanilla.

No Frameworks

  • No React, Vue, Angular, or Svelte
  • No component library (Material UI, Chakra, Ant Design)
  • No CSS framework (Tailwind, Bootstrap)
  • No build step (Webpack, Vite, esbuild)
  • One vendored library: uPlot (51KB) for the chart, served from this site, no CDN

Everything Hand-Coded

  • Pure CSS in a single <style> tag (~900 lines)
  • Vanilla ES6+ JavaScript with fetch() API
  • Hand-coded SVG gauge with trigonometric arc calculations
  • CSS Grid + Flexbox for responsive layout
  • CSS Keyframe animations (no animation libraries)
Frontend dependencies - 1 (uPlot, vendored)
Build time - 0ms (no build step)
Page weight - ~150KB uncompressed (HTML/CSS/JS + uPlot)
Time to Interactive - < 1 second
Lighthouse Performance - 95+

This demonstrates that modern, polished UIs don't require heavy frameworks. The animated gradient background, floating particles, glassmorphism cards, and real-time gauge are all pure CSS/JS. Most "AI built this" demos ship a React app with numerous npm packages because that's what their training data looks like. This argues the opposite: AI can help you build less, not more, finding the minimal solution rather than the conventional one.

Comprehensive Technology Stack

Languages & Markup
Python 3.11 - Backend services and data processing
JavaScript (ES6+) - Vanilla JS, no frameworks - lightweight and fast
HTML5 - Semantic markup with Schema.org structured data
CSS3 - Modern styling with Grid, Flexbox, animations
SQL - SQLite queries, including a window-function energy integral
XML - Eagle-200 smart meter data format
Frontend Graphics & Visualization
Custom SVG Gauge - Hand-coded with trigonometric arc path calculations
CSS3 Animations - Keyframe animations (gradient, float, pulse, fadeIn)
CSS3 Transforms - translateY, scale, rotate with GPU acceleration
CSS3 Filters - drop-shadow, blur, backdrop-filter for glass effects
Linear Gradients - Background animations and text gradients
uPlot 1.6 - Fast canvas time-series chart (the engine behind Grafana's time series panel)
Range Picker - 1h to 30d, averaged server-side into buckets sized to the range
Backend Services
Flask 3.0.0 - Lightweight Python web framework
Flask-CORS - Cross-origin resource sharing
Werkzeug 3.0.1 - WSGI toolkit
sqlite3 (standard library) - Embedded time-series storage in WAL mode
Cloudflare Workers Static Assets - The site is served from the edge, no origin server
Monitoring & Alerting
Data Staleness Monitor - Detects when the power meter stops reporting
APScheduler - Background interval health checks
Slack Alerts - Outage and recovery notifications on state change
Pushover - Emergency-priority siren push that repeats until acknowledged, for up to about 50 minutes
Databases & Storage
SQLite - Embedded in the ingest service, one row per meter reading
SQL Window Functions - Trapezoid energy integral and bucketed averages
5-Year Retention - 43,800 hours of historical data
Fly Volume - Encrypted, with daily snapshots kept 14 days
Infrastructure & Deployment
Fly.io - One machine running the ingest API and its database
Cloudflare Workers - Static site at the edge on the free tier
Docker - Containerized Python service (python:3.11-slim)
Health Checks - Fly stops routing to the service while /health fails
CDN & Edge Network
Cloudflare - Global anycast network with 300+ PoPs
DDoS Protection - Layer 3/4/7 attack mitigation
Brotli Compression - Modern compression at the edge
HTTP/2 + HTTP/3 (QUIC) - Multiplexed, UDP-based transport
TLS 1.3 with 0-RTT - Fast, secure connections
Early Hints (103) - Preload resources before HTML arrives
Universal SSL - Wildcard certificate for all subdomains
CI/CD Pipeline
GitHub Actions - Automated workflows
Change Detection - Smart deployments via dorny/paths-filter
Post-Deploy Checks - /health for the API, build-info.json for the site
Wrangler - Site deploys to Cloudflare from GitHub Actions
Slack Integration - Native GitHub notifications
Testing & Quality
unittest - Storage, panel math and API route tests gate every backend deploy
Migration Verification - InfluxDB vs SQLite parity checked for every week of history
Security Stack
Semgrep - OWASP Top 10 + Flask/Python/JS scanning
Trivy - Docker image vulnerability scanning
Gitleaks - Secrets detection in code
Rate Limiting - Per-client limit on the meter ingest endpoint
CSP Headers - Content Security Policy with specific directives
HSTS - HTTP Strict Transport Security
CORS Whitelist - Origin-specific cross-origin policies
IoT Integration
Eagle-200 - Rainforest smart meter bridge
Zigbee SEP - Smart Energy Profile protocol
BC Hydro Rates - Tiered pricing calculations
~9 Second Updates - Near real-time power monitoring
Progressive Web App
Web App Manifest - Installable on mobile/desktop
Responsive Icons - 192px, 512px, maskable variants
Theme Color - Native app feel

Project Economics

Monthly Infrastructure Cost - ~$3/month
Fly.io Hosting - 1 VM (shared CPU, 256MB RAM)
Persistent Storage - 1GB volume for the SQLite database
Cloudflare Workers - $0 (static requests are free)
Domain - ~$1/month (amortized annual cost)
Frontend Stack - $0
No React, Vue, Angular - Avoided complexity debt and bundle bloat
No CSS frameworks - No Tailwind/Bootstrap overhead
No build tooling - Zero Webpack/Vite configuration
One vendored library - uPlot pinned at 1.6.32, no CDN at runtime
Database & Visualization - $0
SQLite - Embedded, no database server to run
Native charts - Replaced a self-hosted Grafana + InfluxDB pair and their two VMs
DevOps & CI/CD - $0
GitHub Actions - Free tier for public repositories
Docker - Open source containerization
Automated deployments - No CircleCI/GitLab fees ($15-50/mo saved)
Security Stack - $0
Semgrep - Open source SAST (vs $30-100/mo for Snyk)
Trivy - Open source container scanning
Gitleaks - Open source secrets detection
Infrastructure Services - $0
Cloudflare Free Tier - CDN, DDoS protection, HTTP/3, compression
SSL/TLS Certificates - Cloudflare Universal SSL (site) + Fly.io (API)
Rate Limiting - Built into the ingest API
Health Monitoring - Fly.io built-in checks
Total Savings
Typical SaaS stack for equivalent functionality - $300-1,000/month
This project - ~$3/month
Monthly savings - 95-98% cost reduction
🚀

Cloud Native Architecture

This energy monitoring system showcases a modern cloud-native application: the site runs on Cloudflare's edge and the ingest API and database run on Fly.io.

Built with containerization best practices and designed for global scalability.

Docker Fly.io Cloudflare Python
⚡

Real-Time Data Processing

Continuous monitoring of power consumption with sub-second data updates from Eagle-200 smart meter.

Readings are stored in SQLite and charted natively for any range from 1 hour to 30 days.

SQLite uPlot REST API
🔒

Secure & Reliable

Deployed across multiple regions with automatic failover and SSL encryption.

Built-in authentication and secure API endpoints protect your energy data.

HTTPS Auth Tokens Edge Network
Deployment Information:
Platform: Cloudflare Workers (site) + Fly.io (API)
Services: Eagle Monitor (ingest API + SQLite), static site
Region: Site from the nearest Cloudflare edge; API in Ashburn, Virginia (iad)
Stack: Python/Flask, SQLite, uPlot

🚀 Witnessing the Future of IoT Development

What Makes This Special?

This entire energy monitoring platform - from IoT integration to real-time visualization - was built in under 24 hours using revolutionary AI-augmented development. What you're seeing isn't just a demo, it's live production infrastructure processing real energy data.

⚡ 10x Faster Delivery

Transform months of IoT development into days. Deploy production-ready monitoring solutions at unprecedented speed.

🔧 Full-Stack Excellence

From embedded systems to cloud infrastructure, from real-time processing to beautiful dashboards.

🌐 Global Scale

Auto-scaling, multi-region deployment, edge computing. Built for the demands of modern IoT.

Transform Your Business

  • IoT & Smart Home Integration - Connect any device, visualize any metric
  • Real-Time Data Platforms - Process millions of events with sub-second latency
  • Cloud Migration - Modernize legacy systems with containerized microservices
  • Custom Monitoring Solutions - Energy, Environmental, Industrial, Healthcare
24hrs Concept to Production
80% Cost Reduction
10x Faster Delivery

Ready to Accelerate Your IoT Journey?

Let's discuss how AI-augmented development can revolutionize your monitoring infrastructure.

🔧 Deployment Status

Version: Loading...
Build Date: Loading...
Branch: Loading...
Commit: Loading...
Build #: Loading...
Environment: Loading...