2.5 KiB
API del bridge
Servizio: ~/workspace/Carlo/Aira/aira_bridge.py (Python, solo pyairahome).
Traduce HTTP/1.1 + JSON in gRPC verso il cloud Aira. Tutte le rotte tranne
/health richiedono:
Authorization: Bearer <token>
Token: generato al primo avvio in ~/.hermes/profiles/carlo/aira_bridge.json.
GET /health
Nessuna autenticazione: serve a distinguere "server irraggiungibile" da "token sbagliato".
{"ok": true, "version": "0.1.0"}
GET /summary
Valori pronti per la dashboard.
{
"ok": true,
"summary": {
"outdoor_temperature": 18.1,
"indoor_temperature": 22.5,
"dhw_current": 51.0,
"dhw_target": 55.0,
"operating_status": "OPERATING_STATUS_AUTO",
"away_mode": false,
"night_mode": false,
"manual_mode": false,
"force_heating": true,
"inline_heater": false,
"led_pattern": "LED_PATTERN_NORMAL",
"zones": 1,
"errors_count": 0,
"pump_updated": "2026-10-09 18:52:17.199340"
}
}
GET /state
Stato completo e grezzo dal cloud (42 campi: curve climatiche per zona, versioni firmware, schedulazioni, errori). Per diagnostica.
GET /commands
Elenco dei comandi ammessi con i loro parametri.
POST /command
{"id": "set_hot_water_target", "value": 55}
Risposta: {"ok": true, "id": "...", "result": {...}}.
Comandi ammessi
| id | value | effetto |
|---|---|---|
ping |
— | verifica che l'impianto risponda |
set_hot_water_target |
45–60 | temperatura ACS obiettivo |
hot_water_boost_on / hot_water_boost_off |
— | boost ACS una tantum |
hot_water_heating_on / hot_water_heating_off |
— | riscaldamento ACS |
away_mode_on / away_mode_off |
— | modalità assenza |
night_mode_1h |
— | night mode per un'ora |
force_heating_on / force_heating_off |
— | riscaldamento forzato |
heating_on / heating_off |
— | funzione riscaldamento |
legionella_cycle |
— | ciclo antilegionella |
Perché una whitelist
La libreria espone ~90 comandi, fra cui FactoryReset, InstallFirmware,
RebootDevice, RotateCertificate, SetWifiCredentials. Restano fuori di
proposito: un client mobile non deve poter riformattare l'impianto per un tap
sbagliato.
Errori
| stato | significato |
|---|---|
| 400 | comando non ammesso, oppure valore fuori intervallo |
| 401 | token mancante o errato |
| 404 | rotta sconosciuta |
| 502 | il bridge non ha potuto parlare con il cloud (dettaglio in error) |
Formato: {"ok": false, "error": "..."}.