How does Orza reach my battery?
Through the cloud API your manufacturer already runs, authorised by the account you already have. For a Sigenergy system that is the Sigen OpenAPI: you authorise it with your Sigen login, and Orza calls openapi/systems/{systemId}/energyFlow for PV, grid, load and battery power in kW plus battery state of charge. That endpoint is rate-limited to once every five minutes per station, which sets the resolution of everything downstream.
Nothing is installed in your house. No hub, no Raspberry Pi, no always-on computer, no software on your network, no Modbus, no port to open. Your inverter sits behind your router where no server can reach it, and we do not try. The manufacturer's cloud is the only way in, and it is the only way we use.
Why cloud rather than a local connection?
A local link over Modbus is faster and more precise, and we built one; we then decided against ever shipping it. Asking an owner to keep a computer running in order to save money on electricity is a support burden, a security surface and a thing that breaks while you are on holiday. The honest trade is a coarser connection that needs nothing from you, and a product that says plainly which batteries it can and cannot reach.
The cost is real and we would rather state it: five-minute resolution instead of ten seconds, and only the channels the manufacturer chooses to publish.
What can the cloud not tell you?
For Sigenergy: no pack temperature, no state of health, no alarms, and no per-battery-unit breakdown. Those exist in the local Modbus registers and are unreachable without hardware in the house, so as far as this product is concerned they do not exist. adapters/capabilities.py records, per brand, exactly which fields are genuinely reported; the app reads that table and shows a stated reason where a field is missing. It never estimates one and presents it as measured.
What happens when a read fails?
It is recorded as a failure, not as a zero. A half hour with no reading behind it is marked missing, and any day containing one is left out of your savings headline entirely rather than being quietly averaged: a battery pays in one half hour and is repaid in another, so excluding single slots inverts the arithmetic. The gap stays visible in the ledger.