Skip to content

Privacy and Legal

ha-taggle edited this page Nov 2, 2026 · 4 revisions

Privacy and legal

Note

This page gives general background, not legal advice. Laws differ between countries and change over time. If you're unsure, check with the relevant authority or get proper advice.

ha-taggle only receives

  • ha-taggle never transmits. It contains no transmit software. The RTL-SDR is a receive-only device.
  • It doesn't connect to, configure or change the meter or transmitter.
  • It doesn't log in to any council portal or scrape any website.
  • It doesn't try to decrypt encrypted meters, and never will.

The radio band in Australia

ha-taggle's supported receive path targets a carrier near 921.995 MHz, with a default SDR centre of 922.2 MHz. The cited SP3C datasheet specifies 915–928 MHz for that product. Other Taggle products and installations can use other bands or cellular radio. A transmitter's class licence does not establish permission for every use of received data.

The licence is about transmitting, which is the utility's side. ha-taggle doesn't transmit. You still need to follow the general law about radio and privacy where you live.

Your neighbours' privacy

Your antenna will pick up other homes' meters. Be a good neighbour:

  • Configure only your own meter ID.
  • Leave log_all_meters off (the default).
  • Don't record, publish or share other people's IDs or usage.
  • Scan output shows other IDs. Treat it as private and don't post it.
  • The neighbourhood comparison is built to avoid storing IDs: keyed scrambling with a per-install secret, a minimum of 3 qualifying meters per figure, 7-day pruning, and a full off switch. With default logging, neighbour IDs are not saved to state, JSONL or MQTT. Scans print heard IDs, and enabling both logging options writes them to private JSONL summaries. If you do not want comparison, turn it off.

Your own privacy

  • Hourly water use can reveal when you're home, asleep or away. Treat it as personal data.
  • state.json, neighbourhood.salt, your config and any logs are private. Don't post them.
  • MQTT carries your meter ID and usage. Use a broker on your own network, with a password.
  • When sharing photos or logs, blur your ID and barcodes (how).

Leave the equipment alone

The transmitter and meter belong to your water utility. Don't open, move, unplug, re-aim or tamper with them, even to "improve reception". Move your antenna instead.

Not affiliated

ha-taggle is an unofficial, community project. It isn't affiliated with, endorsed by or supported by Taggle Systems, Honeywell, any council or any water utility. Product names are used only to describe compatibility. Don't contact your utility for help with ha-taggle.

Licence

The ha-taggle software and card are MIT licensed. Bundled components such as the RTL-SDR Blog driver keep their own licences. See the README.

Technical detail: configuration, logs and persistence

meter_ids is required unless scanning or explicitly enabling log_all_meters. Anonymous neighbourhood comparison is on by default. Other meters are immediately tracked by HMAC-SHA256 of their decimal ID with a random 32-byte per-install salt, truncated to 16 hex characters; neighbour state uses only these opaque keys. The salt is never published and differs between installs. Entries unheard for more than seven days are pruned at startup and during operation. Opaque keys are not public identifiers; keep state and salt private. See Neighbourhood comparison for the full rules.

jsonl_logging defaults to false. When enabled, daily JSONL files under data_dir contain decoded summaries, never raw radio frames or encrypted bodies. There is no automatic log rotation; manage retention yourself. New data directories use 0700; JSONL files, state and salt use 0600. state.json includes your configured meter IDs and usage: keep it private and backed up. Configuration and local data are git-ignored. MQTT includes configured IDs and usage plus anonymous aggregates, so use a trusted broker and network.

The explicit exceptions still apply: scan output prints heard IDs, and log_all_meters: true plus jsonl_logging: true permits other heard IDs in JSONL. Leave both off for ordinary use. Turning neighbourhood off and restarting deletes neighbour state and salt; MQTT reconnect removes neighbourhood discovery and retained aggregate state, preserving your own meter state. See Configuration reference for defaults, ranges and both calibration formats.

Further reading

Clone this wiki locally