Skip to content

jmacd/caspar.water

Repository files navigation

Caspar Water

System for managing and monitoring a small water system.

Architecture

Gateway (linux.local)             Cloud (Linode / casparwater.us)
┌───────────────────────┐        ┌──────────────────────────────┐
│ OTel Collector         │        │ nginx (casparwater.us)       │
│ → /home/data/*.json    │        │                              │
│                        │        │ Duckpond (sitegen-only)      │
│ Duckpond: water pond   │──R2──▶│ ├─ import water from R2      │
│ ├─ logfile-ingest      │        │ ├─ import noyo from R2       │
│ ├─ temporal-reduce     │        │ ├─ combined sitegen          │
│ ├─ pump cycle analysis │        │ └─ atomic deploy → nginx     │
│ └─ push to R2          │        │                              │
│                        │        │ Site: /         (water)      │
│ Duckpond: noyo pond    │──R2──▶│ Site: /noyo-harbor/ (noyo)   │
│ ├─ HydroVu collection  │        └──────────────────────────────┘
│ └─ push to R2          │
└───────────────────────┘

Repository Layout

Directory Description
site/ Caspar Water website: content pages, blog, templates, images, duckpond configs
local/ Local site generation for content/style development
cmd/ OpenTelemetry collector custom components
collector/ Compiled collector binary
terraform/station/gateway/ Gateway provisioning (collector + duckpond water/noyo)
terraform/station/cloud/ Cloud provisioning (cross-pond sitegen + nginx)
terraform/station/staging/ Pre-release staging on watershop
sparkplug/, measure/, otlp/, model/, storage/, display/ Go packages

Components

OpenTelemetry Collector

  • MQTT Sparkplug-B receiver
  • Modbus receiver
  • BME280 receiver
  • Atlas Scientific EZO pH receiver
  • Tiny LCD exporters
  • Data recording tools
  • Modified InfluxDB exporter

Water Site (site/)

  • Public data portal: well depth, tank level, system pressure, chlorine, pH
  • Pump cycle analysis with drawdown/recovery charts
  • Blog and community information pages
  • Generated by DuckPond sitegen

Billing

  • Custom billing program (cmd/)

Operations

I want to... Do this
Iterate on content/style locally cd local && ./setup.sh && ./sync.sh && ./generate.sh && ./serve.sh
Refresh after editing site content cd local && ./refresh.sh
Re-sync data from staging cd local && ./sync.sh && ./generate.sh
Test full pipeline before prod cd terraform/station/staging && ./setup-all.sh && ./run-all.sh
Deploy to gateway cd terraform/station/gateway && terraform apply
Deploy to cloud cd terraform/station/cloud && terraform apply
Reset one pond on gateway SSH in, ./duckpond/water/teardown.sh && ./duckpond/water/setup.sh
Reset site pond on cloud SSH in, ./duckpond/teardown.sh && ./duckpond/setup.sh

Under Development

About

Caspar water system monitoring

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors