Integrace
REST API a Home Assistant
Vše, co Atmovio ví, je dostupné jako JSON v domácí síti – a když chcete, posílá se i na váš web. V obou směrech stejná jména polí.
Home Assistant za pět minut
Vytvořte v Atmoviu API klíč (Nastavení → Systém → API pro jiné systémy), vložte ho do YAML níže a načtěte Home Assistant znovu. Získáte senzory pro využití AI a disk, binární senzor nahrávání, entitu kamery pro každou kameru a poslední detekci jako senzor, na který jde navázat automatizaci.
- Nastavení → Systém → API pro jiné systémy → Vytvořit klíč. Zkopírujte klíč (začíná
at_). - Vložte YAML níže do
configuration.yaml(nahraďte IP a klíč). - Restartujte Home Assistant. Entity se objeví pod Atmovio.
# configuration.yaml – Atmovio status, disk and recording
rest:
- resource: http://192.168.1.20/api/v1/status
headers:
Authorization: "Bearer at_XXXXXXXXXXXXXXXXXXXXXXXX"
scan_interval: 60
sensor:
- name: Atmovio AI requests today
value_template: "{{ value_json.ai.used_today }}"
icon: mdi:weather-sunset
- name: Atmovio disk used
value_template: "{{ value_json.storage.disk_pct }}"
unit_of_measurement: "%"
icon: mdi:harddisk
- name: Atmovio temperature
value_template: "{{ value_json.system.temp | replace(' °C','') }}"
unit_of_measurement: "°C"
device_class: temperature
- name: Atmovio version
value_template: "{{ value_json.version }}"
json_attributes: ["update"]
binary_sensor:
- name: Atmovio recording
value_template: "{{ value_json.frigate.online and value_json.storage.mode in ['recording','legacy'] }}"
device_class: running
- name: Atmovio daytime
value_template: "{{ value_json.ai.daytime }}"
device_class: light
# configuration.yaml – one entity per camera (name = camera id in Atmovio)
camera:
- platform: generic
name: Garden sky
still_image_url: http://192.168.1.20/api/v1/cameras/zahrada/snapshot.jpg?h=720&api_key=at_XXXXXXXXXXXXXXXXXXXXXXXX
verify_ssl: false
# camera status from /api/v1/cameras
rest:
- resource: http://192.168.1.20/api/v1/cameras
headers:
Authorization: "Bearer at_XXXXXXXXXXXXXXXXXXXXXXXX"
scan_interval: 60
binary_sensor:
- name: Garden camera online
value_template: "{{ (value_json.cameras | selectattr('name','eq','zahrada') | first).online }}"
device_class: connectivity
# configuration.yaml – latest alert as a sensor (id changes → new detection)
rest:
- resource: http://192.168.1.20/api/v1/detections?limit=1
headers:
Authorization: "Bearer at_XXXXXXXXXXXXXXXXXXXXXXXX"
scan_interval: 60
sensor:
- name: Atmovio last sky alert
value_template: "{{ value_json.detections[0].phenomenon if value_json.detections else 'none' }}"
json_attributes_path: "$.detections[0]"
json_attributes: ["id", "ts", "score", "camera_label", "description", "image_url", "detail_url"]
# automations.yaml – push a notification with the picture
- alias: Atmovio – sky alert
trigger:
- platform: state
entity_id: sensor.atmovio_last_sky_alert
attribute: id
condition:
- condition: template
value_template: "{{ state_attr('sensor.atmovio_last_sky_alert','score') | int >= 7 }}"
action:
- service: notify.mobile_app_my_phone
data:
title: "{{ states('sensor.atmovio_last_sky_alert') }} · {{ state_attr('sensor.atmovio_last_sky_alert','score') }}/10"
message: "{{ state_attr('sensor.atmovio_last_sky_alert','description') }}"
data:
image: "{{ state_attr('sensor.atmovio_last_sky_alert','image_url') }}?api_key=at_XXXXXXXXXXXXXXXXXXXXXXXX"
url: "{{ state_attr('sensor.atmovio_last_sky_alert','detail_url') }}"
Pi odpovídá přes obyčejné HTTP v domácí síti; Home Assistant musí být ve stejné síti nebo dosáhnout přes VPN.
REST API (jen čtení)
Klíč v hlavičce Authorization: Bearer (nebo X-API-Key, nebo ?api_key=). Běží přes HTTP v LAN/VPN – nikdy nevystavujte do internetu.
curl -H "Authorization: Bearer at_…" http://192.168.1.20/api/v1/status | jq .GET /api/v1/status | verze, Frigate, úložiště, využití a práh AI, slunce, systém, výpadky, dostupná aktualizace |
GET /api/v1/cameras | kamery: online, fps, IP, LAN/VPN, AI zap/vyp, URL snímku |
GET /api/v1/cameras/{name}/snapshot.jpg?h=720 | aktuální JPEG |
GET /api/v1/detections?limit=20&camera=¬ified=1&min_score=0 | detekce AI (výchozí jen s upozorněním; notified=0 = všechna vyhodnocení) |
GET /api/v1/detections/{id} · /image.jpg | jedna detekce a její snímek |
GET /api/v1/videos · /{id}/download | vystřižená videa s odkazy; MP4 |
GET /api/v1/events?limit=20 | log výpadků / obnovení / oblohy |
GET /api/health | bez přihlášení – pro monitoring |
Takhle vypadá detekce
{
"id": 123, "ts": "2026-09-13T19:12:03", "camera": "zahrada", "camera_label": "Zahrada – západ",
"score": 9, "phenomenon": "Červánky", "phenomena": ["cervanky"],
"description": "Výrazné oranžovo-růžové červánky nad obzorem.",
"notified": true, "exported": true, "error": null,
"image_url": "http://192.168.1.20/api/v1/detections/123/image.jpg",
"detail_url": "http://192.168.1.20/detection/123"
}Webhook – Atmovio posílá k vám
Pro web, který se na Pi nedostane. Každou minutu heartbeat s kompletním snímkem API a náhledy kamer; každé upozornění se snímkem. POST ověřený tokenem, přijímač v PHP je v repozitáři.
- Nasaďte přijímač (nebo napište vlastní – formát je popsaný).
- Nastavení → Upozornění → vlastní web: adresa + token, „Uložit a otestovat“.
- Od té chvíle váš web ukazuje totéž co administrace Atmovia.
POST https://your-site.example/atmovio/webhook.php
Authorization: Bearer <token>
{
"type": "event", "kind": "sky", "ts": "2026-09-13T19:12:03",
"camera": "zahrada", "camera_label": "Zahrada – západ",
"subject": "Červánky 9/10", "message": "…", "score": 9, "phenomena": ["cervanky"],
"image": "<base64 JPEG>", "link": "http://192.168.1.20/detection/123"
}Funguje i s
- Node-RED – Uzel HTTP request → JSON; spouštějte flow na nové detekce.
- Grafana / InfluxDB – Jednou za minutu /api/v1/status: disk, teplota, využití AI.
- Libovolný skript – Stačí curl + jq – příklady jsou v dokumentaci.

