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.
| Category | Confirmed configuration | Publication limit |
|---|---|---|
| Collector host | Raspberry Pi 4 Model B with 2 GB memory | Device identity and host name withheld |
| Boot medium | KIOXIA EXCERIA 32 GB microSDHC | Serial number withheld |
| Enclosure and cooling | Fanless aluminium heat-dissipation case | Mounting position and ambient temperature withheld |
| Power | USB-C supply rated 5.1 V / 3.0 A | Exact product model was not retained |
| Connection | Wired Ethernet | IP, MAC, and LAN topology withheld |
| OS | Raspberry Pi OS Lite 64-bit; the deployed host reported Debian GNU/Linux 13 | Exact image, kernel, and package versions were not retained in the public record |
| Collector software | Python eibs7_collector.py | Exact Python/dependency versions and source are private |
| Scheduling and logging | systemd service/timer, local log, private webhook, Google Apps Script, private Google Sheets | URLs, trigger IDs, and spreadsheet identifiers withheld |
Protocol boundary and execution sequence
- Confirm ownership and authorisation for device communication.
- Send ECHONET Lite UDP/3610 Get (0x62) requests only to an approved private-network target.
- 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.
- Run collection and synchronisation through a systemd timer, then send records through a private webhook to the spreadsheet.
- At ingestion, compare the source key and saved time boundary to reject an identical or stale resend.
- After deployment or a change, compare the collector, webhook, and latest spreadsheet row as the same observation.
Implemented method
- A Raspberry Pi-based collector was prepared for the solar-power-converter class, a battery class, and a distribution-board class.
- Its protocol boundary was limited to ECHONET Lite Get (0x62) requests. No Set, configuration, reset, discovery scan, credential attempt, or control command was included.
- The package was designed to stop safely before opening a socket when no approved target address is configured.
- Data were written to a private local log, synchronised through a private webhook, and recorded in a private spreadsheet at one-minute intervals.
- The ingest path uses a source key and saved time boundary to reject a duplicate or stale resend.
Verified observations
- Offline package tests and deployment verification tests passed before the initial production activation.
- An early, bounded live read attempt produced no ECHONET Lite object response despite basic network reachability. The workflow did not escalate into port scanning, guessed credentials, or device configuration changes.
- Later production operation recorded solar and distribution-board observations through the Pi → webhook → spreadsheet path.
- The one-minute log and its daily analysis were read back after deployment; newly deployed days were labelled provisional rather than treated as complete daily evidence.
- Exact-duplicate records were identified by source key, removed only after an explicit review, and a full reread confirmed that no duplicate key remained.
- Four solar output-control fields were added only after primary documentation, a device property map or live response, and saved observations supported them: output-control percent, output-control limit, surplus-purchase control, and output-suppression status.
- The extended implementation was checked across local code, device-side deployment, webhook ingestion, and the latest spreadsheet row; the extension test set passed 18/18.
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
- A previous absence of response does not identify the cause; possible configuration, network separation, or implementation differences were not resolved by this record.
- The workflow has not demonstrated that all EHF-S55MP3B installations expose the same ECHONET Lite classes or properties.
- Public reproduction, measurement accuracy, and long-term reliability cannot be established without an authorised, non-sensitive test environment and releasable raw evidence.
Reusable safety pattern
- Confirm ownership and authorisation before any device communication.
- Start with a bounded, read-only request; do not scan ports, infer credentials, or change settings after no response.
- Keep collection disabled until a successful approved live read is confirmed.
- Preserve raw private evidence separately; publish only redacted conclusions that can be traced to it.
- Use idempotent ingestion and read back saved records after deployment.
- Add a device field only when documentation, an observed response, and a saved record agree.
Related artefacts
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.