Odczytuj pomiary i historię we własnym systemie. Zamów w DATPOL klucz tylko do odczytu, wskazując konto i urządzenia. Dostęp ograniczają jednocześnie zakres klucza oraz aktualne uprawnienia Twojego konta.
Dostęp i zasady
Każdy klucz ma termin ważności (maksymalnie 365 dni), listę urządzeń i może zostać natychmiast cofnięty. Klucze wydaje DATPOL. Nie udostępniamy danych logowania do MQTT ani Home Assistanta.
Tylko GET i odczyt danych. API nie udostępnia przełączania wyjść, konfiguracji ani obliczeń biznesowych. Home Assistant pozostaje rdzeniem systemu.
Limit: 60 żądań na minutę na klucz. Odpowiedź 429 zawiera Retry-After — odczekaj wskazaną liczbę sekund. Historia: maksymalnie 31 dni kalendarzowych na żądanie i 1000 wierszy na stronę. Pobieraj kolejne strony przez next_offset aż do null. Daty dotyczą Europe/Warsaw; observed_at zawiera zapisane przesunięcie strefy. Historia jest od najnowszej próbki; przy imporcie archiwum używaj zamkniętego zakresu, który nie zmienia się podczas stronicowania.
Wartości są liczbami JSON z jednostką, jakością i czasem pomiaru. latest oznacza ostatnią dostępną próbkę, nie gwarantuje jej aktualności ani poprawności. Sprawdzaj status, source_status, quality i observed_at. Nieużywane wejścia mają latest: null. API nie zastępuje brakującej komunikacji z czujnikiem.
401: brak, wygaśnięcie lub cofnięcie klucza. 404: niedostępny zasób albo brak uprawnień (również wyłączone urządzenie). 405: niedozwolona metoda. 422: błędne parametry. 429: limit żądań. 503: chwilowa niedostępność usługi.
Przechowuj klucz na swoim serwerze, poza kodem przeglądarki, aplikacją mobilną i adresami URL. Korzystaj z HTTPS. Po podejrzeniu ujawnienia klucza zgłoś jego cofnięcie i wydanie nowego. Przy rotacji najpierw przetestuj nowy klucz, potem cofnij stary.
Python
import os
import requests
response = requests.get(
"https://control.datpol.com/api/v1/",
params={"resource": "devices"},
headers={"Authorization": "Bearer " + os.environ["CONTROL_API_KEY"],
"User-Agent": "Customer-Control-Integration/1.0"},
timeout=20,
)
response.raise_for_status()
print(response.json())Przykład wymaga pakietu requests. Identyfikatory w przykładach są przykładowe, nie są danymi klienta.