Klient HTTP¶
Klient HTTP umożliwia wysyłanie żądań HTTP do zewnętrznych serwerów. Może być wykorzystywany zarówno do cyklicznego wysyłania danych, jak i do wysyłania żądań HTTP w ramach funkcji Zdarzenia.
Od wersji oprogramowania SW 1.38 klient HTTP obsługuje różne metody HTTP, własne nagłówki oraz treść żądania.
Elementy strony¶
Formularz konfiguracji klienta HTTP zawiera następujące opcje:
- używanie podwójnego znaku
%do wstawiania odczytów z urządzenia (umożliwia wprowadzanie znaku%), - używanie uwierzytelniania Digest Authentication,
- konfigurację cyklicznego wysyłania:
- włączenie funkcji,
- okres wysyłania,
- URL,
- metodę HTTP (dostępne od SW 1.38),
- nagłówki żądania (dostępne od SW 1.38),
- treść żądania (dostępne od SW 1.38),
-
konfigurację wysyłania żądań HTTP w ramach funkcji Zdarzenia – cztery sekcje (HTTP1–HTTP4), każda z dwoma wariantami:
- wysyłanie po spełnieniu warunku,
- wysyłanie po przestaniu spełniania warunku,
dla których można ustawić:
- URL,
- metodę HTTP (dostępne od SW 1.38),
- nagłówki żądania (dostępne od SW 1.38),
- treść żądania (dostępne od SW 1.38).
Opcja wysyłania żądań za pośrednictwem modułu LTE została usunięta w wersji SW 1.18a.
Więcej na temat tej zmiany na stronie Modem LTE.
Konfiguracja klienta HTTP¶
Klient HTTP umożliwia wysyłanie żądań HTTP do wskazanego serwera w określonych odstępach czasu lub w odpowiedzi na spełnienie warunków w funkcji Zdarzenia.
Uwierzytelnianie¶
Klient HTTP obsługuje uwierzytelnianie Basic Authentication oraz Digest Authentication.
Preferowanym sposobem konfiguracji jest podanie danych uwierzytelniania w polu URL w postaci:
http(s)://username:password@domena:port/ścieżka
Na tej podstawie klient HTTP generuje nagłówek Authorization wykorzystywany do obsługi Basic Authentication.
Jeżeli serwer wymaga Digest Authentication, zostanie ono obsłużone w drugim żądaniu.
Uwaga:
Zdefiniowanie własnego nagłówkaAuthorizationpowoduje pominięcie mechanizmu uwierzytelniania opartego na danychusername:passwordzawartych w polu URL.
Digest Authentication¶
Po włączeniu opcji Użyj Digest Authentication zmienia się sposób działania klienta HTTP.
Pierwsze żądanie wysyłane jest bez danych uwierzytelniania. Następnie, w zależności od wymagań serwera, wysyłane jest kolejne żądanie z użyciem Digest Authentication lub Basic Authentication.
Metoda HTTP¶
Domyślną metodą jest GET. Od wersji SW 1.38 dostępne są również metody:
- POST
- PUT
- PATCH
Metody inne niż GET umożliwiają przesyłanie danych w treści żądania.
Nagłówki HTTP¶
Od wersji SW 1.38 możliwe jest definiowanie własnych nagłówków HTTP, np.:
Content-TypeAuthorization
Nagłówki należy podawać w formacie tekstowym Nazwa: wartość, przy czym każdy nagłówek powinien być zdefiniowany w osobnej linii.
Treść żądania (Body)¶
Od wersji SW 1.38 możliwe jest zdefiniowanie treści żądania dla metod POST, PUT oraz PATCH.
- obsługiwana jest wyłącznie treść tekstowa (np. JSON, XML),
- nie są obsługiwane dane binarne.
Wstawianie odczytów z urządzenia¶
W URL oraz treści żądania można używać bieżących odczytów z urządzenia, korzystając ze specjalnego formatu %XXXA.
Szczegóły dotyczące kodów odczytów znajdują się w sekcji Kody odczytów.
Przykłady użycia¶
Przykład: wysyłanie danych do serwera ThingSpeak¶
Poniższy przykład pokazuje konfigurację cyklicznego wysyłania zapytań HTTP GET do serwera ThingSpeak z wykorzystaniem odczytu temperatury.
W sekcji cyklicznego wysyłania należy:
- wybrać
GETw polu Metoda żądania, - wpisać w polu URL:
http://api.thingspeak.com:80/update?api_key=H2PN0O35KRVRG6Q0&field1=%0141
W efekcie do serwera wysyłane jest zapytanie:
GET /update?api_key=H2PN0O35KRVRG6Q0&field1=26.3 HTTP/1.0
Host: api.thingspeak.com
Connection: close
To samo zapytanie można wysłać ręcznie, wpisując w przeglądarce:
http://api.thingspeak.com/update?api_key=H2PN0O35KRVRG6Q0&field1=26.3
Przykład: wykorzystanie klienta HTTP z kamerą Dahua¶
Klient HTTP może zostać wykorzystany do wysyłania danych (np. odczytów z czujników) w celu wyświetlenia ich na obrazie z kamery Dahua.
W tym celu należy:
- zaznaczyć Użyj Digest Authentication (od wersji SW 1.38 nie jest to konieczne),
-
w sekcji Cykliczne wysyłanie:
- wybierz
GETw Metodzie żądania, -
w polu URL wpisać:
http://<NAZWA_UŻYTKOWNIKA>:<HASŁO>@<ADRES_IP_KAMERY>:80/cgi-bin/configManager.cgi?action=setConfig&ChannelTitle[0].Name=<TEKST>Przykład:
http://admin:admin@192.168.1.14:80/cgi-bin/configManager.cgi?action=setConfig&ChannelTitle[0].Name=T %0141 H %0151|U %0960gdzie: -
%0141– odczyt T1 (temperatura), -%0151– odczyt H1 (wilgotność), -%0960– czas pracy urządzenia (uptime). -
zaznaczyć Włącz cykliczne wysyłanie,
- ustawić Okres wysyłania, np. 30 sekund.
- wybierz
W efekcie na obrazie z kamery będzie wyświetlany tekst aktualizowany co określony czas.
Jeżeli na kamerze włączony jest dostęp HTTPS (System > Safety > HTTPS), w URL należy użyć https zamiast http.
Przykład: wysyłanie wiadomości przez Telegram¶
Od wersji SW 1.24 klient HTTP może być wykorzystywany do wysyłania żądań do API Telegram, co pozwala na otrzymywanie powiadomień z LK w postaci wiadomości Telegram.
W poniższym przykładzie wykorzystane zostanie konto bota. Instrukcję tworzenia bota można znaleźć w dokumentacji Telegram.
W skrócie polega to na wysłaniu komendy /newbot w czacie z @BotFather oraz podaniu wymaganych danych.
W efekcie zostanie wygenerowany token, niezbędny do autoryzacji bota i wysyłania żądań do Bot API. Token ma postać ciągu cyfr połączonego z ciągiem znaków a-zA-Z0-9_, rozdzielonych znakiem :.
Następnie należy otworzyć czat z utworzonym botem – może to być czat bezpośredni lub grupowy – i wysłać wiadomość /start. W odpowiedzi otrzymany zostanie identyfikator czatu (ID) w postaci ciągu cyfr, zwykle poprzedzonych znakiem -.
Po uzyskaniu wymaganych danych można przejść do konfiguracji klienta HTTP na LK w celu wykorzystania go w funkcji Zdarzenia.
W formularzu konfiguracji należy:
- wybrać
GETw polu Metoda żądania, -
w polu URL wprowadzić adres (tekst w nawiasach
[]należy zastąpić uzyskanymi wcześniej danymi lub własnym tekstem):https://api.telegram.org:443/bot[TOKEN DOSTĘPOWY BOTA]/sendMessage?chat_id=[ID CZATU]&text=[TEKST WIADOMOŚCI DO WYSŁANIA]Przykład:
https://api.telegram.org:443/bot110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw/sendMessage?chat_id=-3188255240076&text=Temperatura w biurze wynosi %0141 C.
Po skonfigurowaniu odpowiedniego wpisu w funkcji Zdarzenia, wiadomości z LK będą wysyłane bezpośrednio na wskazany czat Telegram.
Kody odczytów¶
Bieżące odczyty z czujników oraz wybrane parametry urządzenia mogą być wykorzystywane w:
- zapytaniach klienta HTTP (URL oraz treść żądań),
- wyświetlaczu OLED,
- treściach wiadomości e-mail,
- wiadomościach SMS.
Format kodu odczytu¶
Format wstawiania odczytów ma postać %XXXA, gdzie:
%– znak rozpoczynający specjalny format,XXX– numer odczytu zapisany jako trzycyfrowa wartość (lista kodów poniżej),A– parametr określający sposób formatowania wartości.
Parametr A¶
Parametr A przyjmuje wartości z zakresu 0–3. W większości przypadków określa liczbę miejsc po przecinku, jednak dla wybranych odczytów ma specjalne znaczenie:
0– brak miejsc dziesiętnych,1– jedno miejsce dziesiętne,2– dwa miejsca dziesiętne,3– trzy miejsca dziesiętne.
Specjalne działanie parametru A dla wybranych odczytów
Dla niektórych odczytów parametr A ma inne znaczenie:
- UPTIME
0– wartość w sekundach1– wartość w minutach2– wartość w godzinach3– wartość w formaciedd-hh:mm:ss
- Time
0–hh:mm:ss1–hhmmss
- Date
0–yyyy-mm-dd1–yyyymmdd
- OUT1–OUT6, VAR1–VAR8, INPD1–INPD4 (tylko OLED)
0– tekst0lub11– graficzna reprezentacja stanu
Zalecane wartości parametru A
Aby zachować format wartości zgodny z prezentacją na stronie urządzenia, zaleca się stosowanie następujących ustawień parametru A:
0dla: OUT, PWM, INPD (iDValue), CO₂, TEMP (Board Temperature), HUM (Board Humidity),1dla: T1 (i2cTemp), H1 (i2cHum), DS, PM, VCC (Board Voltage),2dla: P1 (i2cPressure), INPA (iAValue),3dla: POWER, ENERGY, DIFF.
Lista kodów odczytów¶
Pełna lista dostępnych kodów odczytów znajduje się poniżej.
{
'000': 'VCC (Board Voltage)',
'001': 'TEMP (Board Temperature)',
'002': 'HUM (Board Humidity)',
'003': 'INPA1',
'004': 'INPA2',
'005': 'INPA3',
'006': 'DS1',
'007': 'DS2',
'008': 'DS3',
'009': 'DS4',
'010': 'DS5',
'011': 'DS6',
'012': 'DS7',
'013': 'DS8',
'014': 'T1',
'015': 'H1',
'016': 'P1',
'017': 'DIFF1',
'018': 'DIFF2',
'019': 'DIFF3',
'020': 'DIFF4',
'021': 'DIFF5',
'022': 'DIFF6',
'023': 'INPD1',
'024': 'INPD2',
'025': 'INPD3',
'026': 'INPD4',
'027': 'OUT1',
'028': 'OUT2',
'029': 'OUT3',
'030': 'OUT4',
'031': 'OUT5',
'032': 'OUT6',
'033': 'PWM1',
'034': 'PWM2',
'035': 'PWM3',
'036': 'PWM1 Duty',
'037': 'PWM2 Duty',
'038': 'PWM3 Duty',
'039': 'POWER1',
'040': 'POWER2',
'041': 'POWER3',
'042': 'POWER4',
'043': 'POWER5',
'044': 'POWER6',
'045': 'ENERGY1',
'046': 'ENERGY2',
'047': 'ENERGY3',
'048': 'ENERGY4',
'049': 'ENERGY5',
'050': 'ENERGY6',
'051': 'VAR1',
'052': 'VAR2',
'053': 'VAR3',
'054': 'VAR4',
'055': 'VAR5',
'056': 'VAR6',
'057': 'VAR7',
'058': 'VAR8',
'059': 'PM1.0',
'060': 'PM2.5',
'061': 'PM4.0',
'062': 'PM10.0',
'063': 'CO2',
'064': 'Distance sensor',
'065': 'IAQ',
'066': 'm1',
'067': 'm2',
'068': 'm3',
'069': 'm4',
'070': 'm5',
'071': 'm6',
'072': 'm7',
'073': 'm8',
'074': 'm9',
'075': 'm10',
'076': 'm11',
'077': 'm12',
'078': 'm13',
'079': 'm14',
'080': 'm15',
'081': 'm16',
'082': 'm17',
'083': 'm18',
'084': 'm19',
'085': 'm20',
'086': 'm21',
'087': 'm22',
'088': 'm23',
'089': 'm24',
'090': 'm25',
'091': 'm26',
'092': 'm27',
'093': 'm28',
'094': 'm29',
'095': 'm30',
'096': 'UPTIME',
'097': 'IP',
'098': 'Time',
'099': 'Date',
'100': 'Dew Point', // dodane w SW 1.06
'101': 'Wi-Fi IP', // dodane w SW 1.38
}
Aktualna lista kodów odczytów jest również dostępna bezpośrednio na stronie urządzenia w sekcjach, w których może być wykorzystywana (Klient HTTP, OLED, E-mail, Modem LTE).


