Experiment record

EHF-S55MP3B generation-data collection: read-only ECHONET Lite implementation

An authorised, read-only ECHONET Lite collector and one-minute downstream logging pipeline were implemented for a private EHF-S55MP3B installation; raw evidence remains private.

Conclusion

The initial feasibility plan progressed into an implemented, read-only collection and logging workflow. The collector was constrained to ECHONET Lite Get requests, and its downstream one-minute logging, duplicate prevention, and selected output-control telemetry were verified in the private deployment. This does not make the workflow a public access recipe, and it does not show that another installation will behave the same way.

Scope and privacy boundary

This record concerns an owner-authorised private installation. Device and network addresses, host names, spreadsheet identifiers, credentials, raw generation/consumption time series, and installation settings are deliberately withheld. The code and raw data are not public; the repository artefacts contain only a neutral schema and inert analysis placeholder.

Reproducibility environment

The following confirmed environment is retained so an AI or a person can reproduce the same class of investigation. It is an example configuration, not a claim that another installation will operate identically.

CategoryConfirmed configurationPublication limit
Collector hostRaspberry Pi 4 Model B with 2 GB memoryDevice identity and host name withheld
Boot mediumKIOXIA EXCERIA 32 GB microSDHCSerial number withheld
Enclosure and coolingFanless aluminium heat-dissipation caseMounting position and ambient temperature withheld
PowerUSB-C supply rated 5.1 V / 3.0 AExact product model was not retained
ConnectionWired EthernetIP, MAC, and LAN topology withheld
OSRaspberry Pi OS Lite 64-bit; the deployed host reported Debian GNU/Linux 13Exact image, kernel, and package versions were not retained in the public record
Collector softwarePython eibs7_collector.pyExact Python/dependency versions and source are private
Scheduling and loggingsystemd service/timer, local log, private webhook, Google Apps Script, private Google SheetsURLs, trigger IDs, and spreadsheet identifiers withheld

Protocol boundary and execution sequence

  1. Confirm ownership and authorisation for device communication.
  2. Send ECHONET Lite UDP/3610 Get (0x62) requests only to an approved private-network target.
  3. Save responses from the solar, battery, and distribution-board target classes to a local record. On no response, record the result and stop; do not scan, guess, or reconfigure.
  4. Run collection and synchronisation through a systemd timer, then send records through a private webhook to the spreadsheet.
  5. At ingestion, compare the source key and saved time boundary to reject an identical or stale resend.
  6. After deployment or a change, compare the collector, webhook, and latest spreadsheet row as the same observation.

Implemented method

Verified observations

Confirmed example values, with limits

In this single private deployment, the added control fields had observations consistent with 100%, 65533 W, enabled, and not curtailed. The limit value exceeded the installation’s stated rated output and was treated as an installation/device representation of no active limit, not as a universally applicable interpretation. These values are not billing-grade measurements.

What remains unverified

Reusable safety pattern

  1. Confirm ownership and authorisation before any device communication.
  2. Start with a bounded, read-only request; do not scan ports, infer credentials, or change settings after no response.
  3. Keep collection disabled until a successful approved live read is confirmed.
  4. Preserve raw private evidence separately; publish only redacted conclusions that can be traced to it.
  5. Use idempotent ingestion and read back saved records after deployment.
  6. Add a device field only when documentation, an observed response, and a saved record agree.

The public record boundary is experiments/EHF-S55MP3B-001/. The data schema is intentionally empty and the analysis file is inert because the original evidence is private.