Closed airmonitor closed 2 years ago
Teraz JSON wygląda na przykład tak:
{
"lat": "55.0",
"long": "16.0",
"pm1": "10.0",
"pm25": "15.0",
"pm10": "20.0",
"sensor": "PMS7003"
}
lub w przypadku pomiarów temperatury/wilgotności/ciśneinia:
{
"lat": "55.0",
"long": "16.0",
"pressure": "1000",
"temperature": "23",
"humidity": "66",
"sensor": "BME280"
}
To pozostaje bez zmian i tylko za pierwszym razem wysłać raz POST w takiej formie jak podałeś?
powyższy JSON z pomiarami możesz też lekko zmienić aby wartości metryk przesyłanych przez sensory były wartością float - zmienno przecinkową do z maksymalnie dwoma miejscami po przecinku.
Teraz jest string - "1000" po zmianach 1000.00
Kontynuując temat:
url do rejestracji - https://airmonitor.pl/prod/station [POST] headers= {"X-Api-Key: "...", "Content-Type": "application/json"} - podeślę prywatnie :)
w odpowiedzi przychodzi json:
{ "status": "Station registered", "api_key": "fethderq3t4whtedr452asDAHRTASDFDGG" }
api_key ma długość 42 znaków
api_key należy następnie zapisać na stacji i wykorzystać za każdym razem gdy będzie wysyłany pomiar do api. Wysyłany pomiar musi mieć header o treści:
{"X-Api-Key: "fethderq3t4whtedr452asDAHRTASDFDGG"}} - jest to wartość pobrana przy rejestracji stacji.
URL do wysyłania pomiarów: https://airmonitor.pl/prod/measurements [POST]
Poniżej przykład jsona ale to już znasz :) {"lat": "52.162300", "long": "21.228300", "pm1": 5, "pm25": 7, "pm10": 7, "sensor": "PMS7003", "time": "2020-06-14T15:34:19Z"}
Heja, korzystając z wątku airmonitor , gdzie należy wpisać API key aby dane były przyjęte przez serwis ? Rejestracja manualna , API key pozyskane. Teraz kwestia konfiguracji smogomierza.
Dziękuję z góry
Cześć.
Tak z grubsza to dla kilku języków masz listingi kodu tutaj - https://airmonitor.pl/prod/api
Natomiast szybka odpowiedź to nagłowek http.
Jako, że jestem pythonowy to poniżej przykład kodu
import json
import requests
data = {
"lat": str(55.000),
"long": str(15.000),
"pm25": 25,
"pm10": 10,
"sensor": "SDS021"
}
url = 'https://airmonitor.pl/prod/measurements'
resp = requests.post(url, timeout=10, data=json.dumps(data), headers={"X-Api-Key": uzyskany_klucz_api, "Content-Type": "application/json"})
resp.status_code
zwróć uwagę na X-Api-Key
Cześć.
Fajnie, że to już zaimplementowane. Planuję na koniec roku mały przestój legacy api stąd też Ci, którzy zaczęli korzystać z https://airmonitor.pl/prod/measurements nie zauważą brakujących pomiarów w czasie planowanego maitenance :)
Cześć, nie do końca rozumiem te wszystkie pythony i inne :-) ale jak mam smogomierz, zarejestrowałm się przez formularz współrzędnymi takimi samymi jak wpisałem w smogomierzu (z tą różnica że w jednym przypadku podełm kropki a w drugim przecinek w tych współrzędnych zgodnie z instrukcją) to ten klucz API który dostałem zwrotnie w zasadzie ni ejest mi do niczego potrzebny ? airmonitor będzie mnie automatycznie rozpoznawał po współrzędnych ? Pytam, gdyż nie ma nigdzie możliwości wprowadzenia tego klucza w smogomierzu - albo przynajmniej ja tego nie odnajduję mimo skrupulatnej weryfikacji.
Cześć, nie do końca rozumiem te wszystkie pythony i inne :-) ale jak mam smogomierz, zarejestrowałm się przez formularz współrzędnymi takimi samymi jak wpisałem w smogomierzu (z tą różnica że w jednym przypadku podełm kropki a w drugim przecinek w tych współrzędnych zgodnie z instrukcją) to ten klucz API który dostałem zwrotnie w zasadzie ni ejest mi do niczego potrzebny ? airmonitor będzie mnie automatycznie rozpoznawał po współrzędnych ? Pytam, gdyż nie ma nigdzie możliwości wprowadzenia tego klucza w smogomierzu - albo przynajmniej ja tego nie odnajduję mimo skrupulatnej weryfikacji.
Cześć.
Smogomierz korzysta ze starego API, które może za jakiś czas przestać działać gdyż nie jest to rozwiązanie które elastycznie skaluje się względem ilości przesyłanych danych to raz, nie jest fault tolerant i nie jest to HA.
Tak więc jeśli kiedyś przestanie działać a z pewnością przestanie skoro smogomierz nie jest aktualizowany i to API zostanie przeciżone.. :/
Już dawno temu prosiłem aby przepiąć na nowe API do którego jest właśnie potrzebny klucz, a to nowe API ma:
@hanskiepl coś mi się wydaje, że smogomierz doszedł do etapu gdy jego rozwój musi być poparty finansowaniem
Może to nie jest zły pomysł. Szkoda tylko, że nie jest zbyt widoczna ta akcja wsparcia ich działaności. Wierze jednak, że ktoś to będzei ciągnął nadal. Chyba, że jest jaka inna alternatywa ? Aha, jesli chodzi o aktualizacje to własnie 5 dni temu wydali prerelease nowej wersji softów dla różnych zestawów. https://github.com/hackerspace-silesia/Smogomierz/tree/dev/firmware/ESP8266
W nowej wersji zaktualizowałem tylko używane biblioteki. Największym problemem jest u mnie brak czasu. Musiałbym mieć przynajmniej kilka a najlepiej kilkanaście dni żeby ogarnąć wszystkie zaległe rzeczy w projekcie, a fizycznie nie mam na to teraz czasu i możliwość. Dlatego zachęcam do robienia PRów, to je dodam do kodu Smogomierza.
@hanskiepl
Uważam, że brak czasu Błażeja ma to samo źródło jak wiele innych polskich projektów - brak angażu społeczności dookoła projektu. Samo wrzucanie PR'ek, że fajnie byłoby mieć to i tamto nie jest stricte wsparciem. Potrzeba programistów, testerów, którzy chcą kodzić i testować. Tego nie ma, a oczekiwania każdy ma takie, że chce za darmo i musi działać z jego sensorami :)
Anyway, aby nie kontynuować zbytnio wywodów filozoficznych, alternatywa jest ale zdecydowanie bez takiego ładnego gui jakie Błażej stworzył.
https://airmonitor.pl/prod/micropython
Wyszedłem z założenia, że stacja ma wyłącznie monitorować parametry środowiska i wysyłać dane - nic mniej, nic więcej.
Oddzielny front-end ma prezentować dane, a osobny backend ma odpowiadać za wszystko inne.
Dodałem obsługę kluczy API przy wysyłce danych do AirMonitora - https://github.com/hackerspace-silesia/Smogomierz/commit/0afc98bac432b8783c8884e2efadc8af4fc8b5bd#diff-cd91ff19b52817b69a30311a4381bfe4c3b72cf7fbcd1ff21224cc523a48ab34
Cześć,
Jak widzisz aby dodać automatyczną rejestracje stacji Smogomierza w API AirMonitora gdy zostanie zaznaczona opcja do wysyłki danych do AirMonitora?
Teraz jest formularz, natomiast chyba czas zmienić podejście na bardziej automagiczne?
POST z treścią powinien załątwić sprawę.
Pola wymagane to: