Docs
Install, configure, survive.
Everything you need to run a gateway on a Raspberry Pi and keep it running. Source for both containers lives at github.com/Encrypted-Energy/gateway.
Install.
Three steps. Ten minutes including the image pull.
https://github.com/Encrypted-Energy/umbrel-community-app-storeEncrypted Energy will appear in the store. Click Install. The image pull takes about two minutes on a Pi 5 with a typical connection.
Configure.
The gateway needs exactly two values. They live on your gateway's page on encryptedenergy.com.
Hardware.
The right Pi is the cheap part. The right BLE antenna is the part most people underestimate. GPS is optional today and mandatory soon.
- Sena UD100 (about $45). Class 1, +20 dBm TX, external SMA antenna. The safe pick.
- Nordic nRF52840 USB dongle (about $10). Modern, programmable, no power amplifier. Best for tinkerers.
- GlobalSat BU-353-S4 (about $25). u-blox 7 chipset, plug-and-play under gpsd, the default safe pick.
- Any other u-blox-based USB GPS works.
Troubleshoot.
What each dashboard state means and how to recover.
sudo docker logs --tail 50 encryptedenergy-ee-gateway_worker_1
API reference.
For people who want to write their own worker, integrate from another platform, or audit what the official worker is sending. Two endpoints, one bearer token, JSON in, JSON out.
Authorization: Bearer ee_live_acb94316b93a6dd637bfb8e59645c25a474af69cd0a19707 Content-Type: application/json Accept: application/json
{
"last_packet_at": "2026-06-08T22:31:00Z",
"last_known_position_at": "2026-06-08T22:30:55Z"
}
Returns 200 with the gateway's
current state, or 401 if the
token's invalid or revoked.
{
"packets": [
{
"payload_b64": "BLE-payload-as-base64",
"rssi": -53,
"timestamp": 1717900000,
"latitude": 47.6062,
"longitude": -122.3321
}
]
}
Returns:
- 200: all packets accepted upstream. Drop them from your queue.
- 401: token invalid or revoked. Stop sending until you have a new one.
- 422: upstream rejected the packet shape (4xx). Drop it; retrying won't help.
- 502: upstream unreachable or returned 5xx. Leave the packet pending; retry on the next pass.