PhloMetricWater Meter System

Downloads

The PhloMetric Gateway POSTs readings to a small ingest service that writes them into a MySQL database. Two hosting options are supported: the Windows ingest service on a PC on your LAN, or the self-hosted cloud ingest service on a Linux VM writing to a cloud MySQL database you own. For the Windows path you need three things: MySQL Server 8.0, the 32-bit MySQL Unicode ODBC driver the service talks through, and the ingest service installer itself.

You no longer have to touch SQL: the ingest installer can set up the database for you. Tick "Initialize the MySQL database" and it initializes a fresh MySQL, creates the phoa_water database and application account, sets a default root password, and starts the service. Follow the setup checklist below in order: install MySQL Server 8.0, install the 32-bit ODBC driver, then run the ingest installer and let it initialize the database. Windows is the only supported host for the ingest service today.

Hardware discount coupons

Ordering Nodes or a Gateway? Use a code below for money off. Give the code when you order (or note it on your PayPal payment), and we apply it as a discount on your invoice. One code per item line; codes can be combined across a Node and a Gateway on the same order.

$20 off
Water Meter Node

$20 off any Node

Takes a single Water Meter Node from $120 to $100. Applies per Node ordered.

Code PHLO-NODE-20

One per Node. Mention when ordering or add to the PayPal note. Not redeemable for cash; cannot be applied retroactively to a completed order.

$40 off
Water Meter Gateway

$40 off a Gateway

Takes a Water Meter Gateway from $200 to $160. One Gateway serves a whole site of Nodes.

Code PHLO-GATEWAY-40

One per order. Mention when ordering or add to the PayPal note. Not redeemable for cash; cannot be applied retroactively to a completed order.

Questions on a multi-meter order? Contact us for a site-specific quote, volume pricing is available beyond these coupons.

Database engine

MySQL Community Server 8.0 (Windows)

The database the ingest service writes to. Install this first. We pin 8.0.30 to match the 32-bit ODBC connector below and our tested deployment. The bare server MSI only lays down the program files; the ingest installer (or db_setup.bat) then initializes the data directory, registers the MySQL80 service, sets the root password, and applies the schema, all headless.

Silent install from an elevated command prompt:

msiexec /i mysql-8.0.30-winx64.msi /qn

  • Version 8.0.30, 64-bit (winx64), Community Server, GPLv2
  • Sets up service MySQL80, data dir C:\ProgramData\MySQL\MySQL Server 8.0\Data, port 3306
  • Source Oracle's MySQL archives; on the linked page pick 8.0.30 → "Microsoft Windows" → the Windows (x86, 64-bit), MSI Installer. Not redistributed here due to size.
PhloMetric component

PhloMetric Water Ingest Service

Windows service that listens on TCP 41290 for batched JSON from the Gateway and writes clients, readings, and events into your phoa_water MySQL database. Installs as an auto-start service, adds its own firewall rule, and prompts once for your MySQL connection details. Its config page also has an "Initialize the MySQL database" checkbox that runs the bundled db_setup.bat to create the database and account and set a default root password, so a fresh box needs no SQL by hand.

  • Version 1.0.0 (build 2026-07-16, adds the MySQL database initialize step)
  • Platform Windows x86/x64 (service runs 32-bit; talks to the 32-bit ODBC driver)
  • Requires the MySQL Unicode ODBC driver and a MySQL 8 server; the bundled "Initialize the MySQL database" step can set the server up for you
  • SHA-256 ef2869764093733539cc3565db08ec70c40dde03fd269940fc684b4efcfe60eb
Database setup

Database setup script & schema

You usually don't need these by hand, the ingest installer's "Initialize the MySQL database" checkbox runs them for you. Grab them if you want to script the setup yourself, or if MySQL is already running and you just want to add the phoa_water database and account.

db_setup.bat is the headless one-shot: on a box where MySQL 8.0 is installed but not yet configured it initializes the data directory, registers and starts the MySQL80 service, sets the root password, and applies the schema; if MySQL is already running it just applies the schema. Run it from an elevated prompt:

db_setup.bat [root-password] [path\to\schema_phoa_water.sql]

schema_phoa_water.sql is the raw SQL if you'd rather apply it directly to an existing server:

mysql -u root -p < schema_phoa_water.sql

  • Creates database phoa_water + tables clients, readings, events
  • App account user phoa_water / password PHOAwater123, matching the installer defaults so ingestion works out of the box
  • Root password for a fresh initialize defaults to PHOAadmin123 (pass a different one as the first argument). MySQL binds to localhost only, so the default is safe for a single-machine install; change it if the server is ever reachable from other computers
  • SHA-256 (db_setup.bat) 096f168c7e05afe848f9c1834eb1af1cbe79f394b9766d76f98073b99a395506
  • SHA-256 (schema_phoa_water.sql) 0d4838c13564208ee2ce8f46958294fdd617f9bf992597d1d0ca1020f567d27f
Dependency

MySQL Connector/ODBC 8.0 (32-bit)

The ingest service connects to MySQL through ODBC. It expects the driver registered as MySQL ODBC 8.0 Unicode Driver in the 32-bit ODBC view. Install this before the ingest service. After installing, you can confirm the driver appears under the Drivers tab of C:\Windows\SysWOW64\odbcad32.exe (the 32-bit ODBC Data Source Administrator).

  • Version 8.0.30, 32-bit (win32)
  • Installs "MySQL ODBC 8.0 Unicode Driver" + ANSI driver
  • SHA-256 be060d2fda51e02f65eb1462abb84d8ffe2edba75601da9cd0945b00851f75d9
  • Source This is Oracle's MySQL Connector/ODBC, redistributed under the GPLv2. Latest versions and source are at dev.mysql.com/downloads/connector/odbc (pick the 32-bit "Windows (x86, 32-bit), MSI Installer").
PhloMetric component · cloud alternative

Cloud Ingest Service (Linux, self-hosted)

Prefer the readings in a cloud database you own instead of a Windows PC on the LAN? This package is the cloud-side counterpart of the Windows ingest service: a small FastAPI application that receives the Gateway's uploads over the internet and writes them into your own MySQL 8, on the same VM or in a managed database (Cloud SQL, RDS, Azure MySQL). Runs on any small Linux VM; a free-tier cloud instance is plenty. The Gateway buffers and replays through internet outages, so nothing is lost.

Ships as a tarball with the service (main.py), the database schema, an idempotent install.sh (venv + systemd + health check), a mktoken.sh that mints the Gateway's bearer token (only its SHA-256 is stored), and a Caddy config for the port-41290 gateway bridge. The README walks through the whole setup, including the firewall rule that pins the listener to your Gateway's public IP.

  • Version 1.0.0 (build 2026-07-27)
  • Platform Linux (Debian/Ubuntu tested) · Python 3.11+ · MySQL 8 · Caddy
  • Requires a VM with a public IP, TCP 41290 opened to your Gateway's public IP only, and Gateway firmware 0.1.82+ with the API token set on /setup
  • Creates database phoa_water + tables customers, gateway_tokens, clients, readings, events
  • SHA-256 d4f2bce2960ec8fe3f361dc065d7dce02656a08de0bd2224e975269f384d893b
Analytics

Node data analysis queries (MySQL)

A free toolkit of commented, tested MySQL 8 queries that extract value from the readings your ingest service collects, whether it runs on the Windows PC or in the cloud. Eight sections, each parameterized with @ variables for date ranges and thresholds: a cadence fingerprint that classifies each node as sub-minute (GIF2006B) or hourly (GIF2014W-OSE) from the data alone, exact daily usage for both families, an irrigation-cycle log that surfaces unscheduled watering, a per-minute flow trace, valve-transition detection that finds the moments individual irrigation valves open and close using nothing but the utility meter, a per-valve step summary for night-over-night health comparison, hourly and off-window profiles for hourly meters, and a leak screen plus mesh link health.

Every query was validated against a live deployment; the expected output is quoted in the comments, including the valve-transition run that matches a six-valve controller's programmed times to within 2-3 minutes. This is the toolkit behind the Data Matters case study.

  • Version 1.0 (2026-07-27)
  • Requires MySQL 8 (window functions + recursive CTEs) and the phoa_water readings schema; run with any MySQL client, one section at a time
  • Applies to Windows LAN ingest and self-hosted cloud ingest databases alike
  • SHA-256 a542b021bdc99308b2e0c3f33c58d93385fbcb21ee94a0e3c06e4e77f6989101
Documentation

Node User Manual (PDF)

End-user manual for the PhloMetric Water Meter Node, firmware 2.13.15: first connection and WiFi setup, picking your default meter, the dashboard, the privacy model and debug mode, the device passwords, email reports, the on-demand Gateway Test (Send Meter Data / Ping Gateway), working with a Gateway, firmware updates, the HTTP API, and troubleshooting.

  • Covers Node firmware 2.13.15 (June 2026), 7 pages
  • SHA-256 497cf08abb28ca7c3bb2aa61810baf13af43e87bf3820d4a70785fdae9584d54
Documentation

Gateway User Manual (PDF)

End-user manual for the PhloMetric Water Gateway, firmware 0.1.88: first connection, joining your network with optional fixed/static IP, the client roster (including forgetting retired nodes), managing Nodes over the mesh (queries, protocol and default-meter changes, reboot, on-demand per-node volume), recording to the database via the ingest service, the consolidated By-Node email report with the report-node filter and leak & break alerts, the device passwords, firmware updates, the HTTP API, and troubleshooting.

  • Covers Gateway firmware 0.1.80 (July 2026), 9 pages
  • SHA-256 533727b8f5d3e52b4ef0401c26bacdd9ee32835298c5da78ee60577ae7fd0b32
Resident materials

HOA resident device labels (Avery 8160)

A 30-up label sheet for Avery 8160 / 5160 stock (1" × 2.625"). Stick one on each Node so a resident who finds the box on their fence can scan its QR code and land on the "what is this device?" explainer, which reassures them it reads the HOA's own irrigation meter, has no camera or microphone, and is not on their home network. Each label reads [your HOA] · Water Meter Reader · No camera · No microphone, with the QR and eheuristics.com/device.

No special software, no PDF editor, no Adobe. Open the sheet, type your HOA name once in the box at the top (it fills all 30 labels as you type), then print straight from Chrome or Edge at 100% scale with margins off. Your name is remembered in the browser for next time.

  • Layout Avery 8160 / 5160, 30 labels per US Letter sheet
  • To print 100% scale, margins None, background graphics on
  • Links to eheuristics.com/device (resident-facing, no sales or pricing)

Setup checklist

On the PC that will host the database (the same machine the Gateway uploads to), from an elevated command prompt:

  1. Install MySQL Server 8.0.30 if it isn't already present: msiexec /i mysql-8.0.30-winx64.msi /qn. (Skip if MySQL is already running on this PC.)
  2. Install the 32-bit ODBC driver: msiexec /i mysql-connector-odbc-8.0.30-win32.msi /qn.
  3. Run phoa_ingest_setup.exe as Administrator. The MySQL user (phoa_water), password, database (phoa_water), and bind port (41290) are pre-filled. Tick "Initialize the MySQL database" and the installer creates the database, tables, and login and sets the root password for you, no separate schema step.
  4. In the Gateway's /setup page, set the Database Host to this PC's LAN IP and port 41290, and enable Record to Database.
  5. Confirm readings are landing: the service log lives at C:\ProgramData\PHOA\IngestService\service.log, and http://localhost:41290/api/health returns {"ok":true}.

If you'd rather set up the database separately (or MySQL already has its own root password), leave the checkbox unticked and run db_setup.bat, or apply schema_phoa_water.sql by hand, then accept the installer defaults.

Verify each download against the SHA-256 above before running it. In PowerShell: Get-FileHash .\phoa_ingest_setup.exe -Algorithm SHA256.

Where this fits

The ingest service is the last hop in the chain: meter → NodeGateway → ingest service → MySQL. Whether that last hop lives on a Windows PC on your LAN or on a Linux VM in the cloud is your choice; the Gateway is configured the same way either way (host, port 41290, record on). If you're running a single standalone Node with no Gateway, you don't need any of this; the Node keeps its own readings and emails them directly. The ingest service only matters when a Gateway is archiving a whole site's readings to a central database.

API documentation

Both devices expose a small HTTP API on port 80 of their LAN IP. The full endpoint reference lives on each device page; machine-readable specs are linked below for scripting and agents.

  • Gateway endpoints Web endpoints table · structured spec /api/gateway.json
  • Node endpoints Node device page · structured spec /api/node.json
  • Diagnostics GET /api/gw-diag (gateway) and GET /api/diag (node) return curl-friendly JSON: firmware, link health, queue depth, mesh counters
  • Email reconciliation GET /api/email/preview on the gateway dumps the live per-(node, meter) registry with the exact numbers the daily email uses (raw wire units plus floored display gallons, baseline, and interval delta), for diffing in-RAM state against the database