SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Jakiś czas temu wpadła mi w ręce żarówka RGB od ChiChinLighting sterowana za pomocą Wi-Fi. Moją uwagę zwróciła dzięki wbudowanemu modułowi Wi-Fi, który wyklucza konieczność posiadania dodatkowych hubów pośredniczących w komunikacji. Nie było by jednak żadnej frajdy, gdybyśmy mogli nią sterować tylko za pomocą dedykowanej aplikacji MagicHome.

Aplikacja MagicHome

Producent przygotował dedykowaną aplikację mobilną MagicHome dla systemów Android oraz Windows, która pozwala nam na sterowanie żarówkami, a także ich konfigurację. Aplikacja fabrycznie działa w trybie Access Point tworząc sieć LEDnetXXXXXX, do której po podłączeniu możemy ustawić przypisanie żarówki do aktualnie istniejącej sieci Wi-Fi w domu.

Sieć udostępniona przez żarówkę

Aplikacja pozwala na sterowanie żarówkami bez konieczności przypisywania ich domowej sieci Wi-Fi. Jednak brak zabezpieczeń oraz niewygoda takiego rozwiązania polegająca na konieczności skaknia pomiędzy sieciami, sprawia że warto zrezygnować z takiej opcji. W tym celu musimy skorzystać z opcji przypisania do wybranej sieci i podać hasło dostępowe. Dostępna jest również opcja konfiguracji, pozwalającej sterowanie przez chmurę producenta, ale tym zagadnieniem nie będziemy sobie zawracać głowy.

Konfiguracja połączenia z naszą siecią domową

Jeśli wszystko przebiegnie prawidłowo, żarówka zostanie przełączona w tryb klienta do naszej domowej sieci i  powinniśmy ją zobaczyć na liście odnalezionych urządzeń wraz z adresem MAC oraz wersją firmware. Wybierając ten wariant konfiguracji, sieć LEDnetXXXXXX przestaje być dostępna.

Lista aktualnych urządzeń

Jeśli chcielibyśmy z jakiegoś powodu przywrócić żarówkę do ustawień fabrycznych, musimy ją trzykrotnie wyłączyć i włączyć w krótkich odstępach czasu. Sukces zostanie zasygnalizowany kilkukrotnym zapaleniem i zgaszeniem żarówki.

Sama aplikacja jest dość bogata w możliwości. Przede wszystkim możemy wybrać kolor świecenia i jasność, zarówno przy wykorzystaniu diod RGB jak i białych. Dodatkowo mamy możliwość wyboru jednego z dwudziestu efektów świetlnych, własnej sekwencji barw, a także sterowanie w rytm odtwarzanej muzyki lub dźwięku przechwyconego przez mikrofon. Ciekawą opcją jest również możliwość ustawienia timerów, w jakich dniach i godzinach żarówka ma zachować się w zaplanowany przez nas sposób.

Wygląd aplikacji MagicHome

Ale przejdźmy do sedna sprawy. Nie będziemy przecież opisywać tylko cech tego produktu, ale skupimy się na innym temacie. Konkretniej mówiąc, na możliwością jej sterowania z poziomu komputera lub Arduino. A więc, zaczynamy!

Podsłuchajmy o czym i gdzie gadają

W pierwszej kolejności interesuje nas w jaki sposób aplikacja mobilna znajduje żarówkę w sieci oraz jak przebiega jej konfiguracja do pracy w istniejącej sieci Wi-Fi. Do tego celu posłużył nam niezastąpiony program Wireshark, który po przechwyceniu pakietów uwierzytelniania EAPOL, pozwolił nam nasłuchiwać komunikację pomiędzy telefonem, a skonfigurowaną już żarówką.

Podsłuchiwanie transmisji za pomocą Wireshark

Jak możemy zauważyć, aplikacja mobilna wysyła pakiet UDP o treści HF-A11ASSISTHREAD na adres rozłgoszeniowy sieci i port [xdata]48899[/xdata], aby po chwili otrzymać odpowiedzi od urządzeń, które na niego zareagowały: 10.0.0.125,ACCF2371B770,HF-LPB100-ZJ200

Odpowiedź zwrotna od żarówki Wi-Fi

Komunikat zwrotny zawiera zatem adres IP żarówki, MAC oraz informacje o module WiFi HF-LPB100 od Hi-Flying, z którym jak się okazuje, możemy komunikować się za pomocą komend AT. Gdyby kogoś interesowało coś więcej na ten temat odsyłam do dokmentacji w formacie PDF.

Sprawdźmy zatem, czy uda nam się powtórzyć tą samą operację, ale już z komputera zamiast telefonu:

  1. sudo echo -n "HF-A11ASSISTHREAD" | socat - udp4-datagram:10.0.0.255:48899,broadcast | xxd

Wysłanie pakietu UDP i spodziewana odpowiedź

Skoro wiemy już jak odszukać naszą żarówkę i wiemy, że mamy do czynienia z modułem HF-LPB100 przyjmującym komendy AT, podsłuchamy tym razem cały proces konfiguracji, a więc wszystkie te operacje, które wykonywaliśmy podczas parowania żarówki z siecią domową.

Podsłuchiwanie procesu konfiguracji

Aplikacja ponownie wysyła pakiet rozgłoszeniowy UDP 10.10.123.255:48899 o treści HF-A11ASSISTHREAD, a następnie ponawia ten sam pakiet już bezpośrednio do adresu IP żarówki. Następnie zostaje wysłany pakiet o treści +ok. Od tego momentu żarówka będzie przyjmować komendy AT wysyłane wysyłane wciąż na tym samym porcie:

  1. AT+WSSSID=NAZWA_NASZEJ_SIECI_DOMOWEJ
  2. AT+WSKEY=WPS2PSK,AES,HASLO_DO_NASZEJ_SIECI
  3. AT+WMODE=STA
  4. AT+Z
  5. AT+Z
  6. AT+Q

Każdorazowy odbiór komendy AT żarówka także potwierdza komunikatem +ok. Co ciekawe, nie czyni tego na tym samym porcie co wysyłane pakiety UDP, ale losowym.

Powtarzając ten sam proces pod konsolą, będzie to wyglądało następująco:

  1. sudo echo -n "HF-A11ASSISTHREAD" | socat - udp4-datagram:10.10.123.255:48899,broadcast | xxd
  2. sudo echo -n "HF-A11ASSISTHREAD" | socat - udp4-datagram:10.10.123.3:48899 | xxd
  3. sudo echo -n "+ok" | socat - udp4-datagram:10.10.123.3:48899
  4. sudo echo "AT+WSSSID=NAZWA_AP" | socat - udp4-datagram:10.10.123.3:48899
  5. sudo echo "AT+WSKEY=WPA2PSK,AES,HASLO" | socat - udp4-datagram:10.10.123.3:48899
  6. sudo echo "AT+WMODE=STA" | socat - udp4-datagram:10.10.123.3:48899
  7. sudo echo "AT+Z" | socat - udp4-datagram:10.10.123.3:48899
  8. sudo echo "AT+Z" | socat - udp4-datagram:10.10.123.3:48899
  9. sudo echo "AT+Q" | socat - udp4-datagram:10.10.123.3:48899
  10. sudo echo "AT+Q" | socat - udp4-datagram:10.10.123.3:48899

Bingo! Żarówka została skonfigurowana i powinna połączyć się z naszym routerem. Pozostaje nam już tylko podsłuchać polecenia sterowania z aplikacji takimi jak włączenie, wyłączenie, zmiana koloru itp.

Oszczędzając Wam już zrzutów ekranu i analizy pakietów - polecenia wysyłane są protokołem TCP na porcie 5577. Poniżej dla przykładu pakiet TCP z komendą żądania informacji o aktualnym statusie żarówki.

Odpytanie o status żarówki

Odpowiedź zwrotna

Jak to będzie wyglądało pod konsolą?

  1. echo -ne "x81x8ax8bx96" | nc 10.0.0.125 5577 | xdd

Wysłanie komendy i odpowiedź

Suma kontrolna

Najważniejsza jest suma kontrolna, która pojawia się każdorazowo przy wysyłaniu poleceń i otrzymywanych odpowiedzi. To na jej podstawie, zarówno my jak i żarówka, jest w stanie stwierdzić czy składnia jest prawidłowa. Jak ją wyliczyć?

Obliczanie sumy kontrolnej polega na zsumowaniu wszystkich wartości poszczególnych bajtów, gdzie wykorzystujemy tylko najmłodszy bajt otrzymanego wyniku. Wysyłając zatem sekwencję 0x81 0x8A 0x8B musimy "dorzucić" na koniec ów sumę kontrolną (dalej CRC), wynoszącą 0x96:

0x81 + 0x8A + 0x8B = 0x0196

Reguła ta dotyczy również odpowiedzi jakie otrzymujemy.

Dostępne polecenia

Poniżej prezentuję listę poleceń, które udało mi się podejrzeć. Jak możecie zauważyć, niektóre składają się z jednego bajtu, a niektóre z trzech:

  • 0x10 0x14 - ustaw czas
  • 0x11 0x1A 0x1B - pobierz czas
  • 0x21 - ustaw liczniki
  • 0x22 0x2A 0x2B - pobierz liczniki
  • 0x31 - ustaw kolor
  • 0x41 - ustaw program muzyczny
  • 0x51 - ustaw własny program
  • 0x61 - ustaw predefiniowany program
  • 0x71 - ustaw zasilanie
  • 0x81 0x8A 0x8B - pobierz aktualny status

Pamiętajmy, iż każdy konkretny pakiet danych sładać się będzie z kodu polecenia, opcjonalnych parametrów oraz sumy kontrolnej znajdującej się na samym końcu.

Pobieranie aktualnego statusu

Podstawowym poleceniem jest odpytanie żarówki o jej aktualny stan, który zdradzi nam nieco informacj. Polecenie wygląda następująco:

0x81 0x8A 0x8B 0x96

W odpowiedzi otrzymamy:

0x81 0x44 0x24 0x61 0x21 0x07 0x00 0x00 0xFF 0x00 0x05 0x00 0xF0 0x66

Znaczenie poszczególnych bajtów jest następujące:

  • 0x81 - komenda Status
  • 0x44 - wartość stała
  • 0x24 - żarówka jest włączona (0x24 - włączona, 0x23 - wyłączona)
  • 0x61 - tryb pracy wybranego koloru (możliwe inne wartości)
  • 0x21 - wartość stała
  • 0x07 - opóźnienie dla predefiniowanych efektów (0x01 - 0x1F)
  • 0x00 - wartość koloru czerwonego (0x00 - 0xFF)
  • 0x00 - wartość koloru zielonego (0x00 - 0xFF)
  • 0xFF - wartość koloru niebieskiego (0x00 - 0xFF)
  • 0x00 - wartość koloru białego (0x00 - 0xFF)
  • 0x05 - wersja firmware
  • 0x00 - wartość stała
  • 0xF0 - aktywne diody RGB (0xF0 - Tak, 0x0F - Nie)
  • 0x66 - suma kontrolna

Jak możemy zauważyć, możemy tutaj wyróżnić stany 0x24 oraz 0x23, a także dwie wartości logiczne 0xF0 i 0x0F. Warto je zapamiętać, ponieważ będą pojawiać się także w innych przypadkach. Jeśli w dla parametru aktywnych diod RGB byłaby wartość 0x0F oznaczałoby to tyle, że wykorzystujemy diody białe i respektowana jest wartość dla nich, a nie dla poszczególnych wartości RGB.

Wartość aktualnego trybu pracy może przyjąć jeszcze następujące wartości:

  • 0x25 - 0x38: jeden z dwudziestu predefiniowanych efektów
  • 0x60 - własny program efektów
  • 0x61 - jeden kolor
  • 0x62 - program muzyczny

Sterowanie zasilaniem diod LED

Sterowanie zasilaniem diod odbywa się poprzez wysłanie komendy 0x71 i parametru włącz 0x23 lub wyłącz 0x24. Dochodzi nam również wartość logiczna 0x0F oraz suma kontrolna. Wartość logiczna definiuje, czy komenda pochodzi z zewnątrz naszej sieci (z chmury).

Aby włączyć diody, wysyłamy: 0x71 0x23 0x0F 0xA3

Odpowiedź: 0x0f 0x71 0x23 0xA3

Aby wyłączyć diody, wysyłamy: 0x71 0x24 0x0F 0xA3

Odpowiedź: 0x0F 0x71 0x24 0xA4

Z poziomu konsoli wygląda to tak:

  1. echo -ne "x71x24x0fxa4" | nc 10.0.0.125 5577 | xdd

Włączanie i wyłączanie

Wybór koloru świecenia

Ogólne polecenie ustawienia koloru świecenia wygląda następująco:

0x31 0xRR 0xGG 0xBB 0xWW 0xYY 0x0F 0xZZ

Dla bajtu 0xYY podajemy już wcześniej podaną wartość określającą czy chodzi nam o diody RGB 0xF0 czy białe 0x0F. Ostatni bajt 0xZZ to oczywiście wyliczona suma kontrolna.

Przykładowo dla koloru czerwonego: 0x31 0xFF 0x00 0x00 0x00 0xF0 0x0F 0x2F

  1. echo -ne "x31xffx00x00x00xf0x0fx2f" | nc 10.0.0.125 5577

Dla koloru białego na 50%: 0x31 0x00 0x00 0x00 0x80 0x0F 0x0F 0xCF

  1. echo -ne "x31x00x00x00x80x0fx0fxcf" | nc 10.0.0.125 5577

Wydanie polecenia ustawienia koloru nie zwraca żadnej odpowiedzi.

Wybór predefiniowanego programu

Żarówka posiada 20 predefiniowanych efektów świecenia oznaczonych bajtami o wartościach od 0x25 do 0x38. Dla przykładu efekt 12 to efekt stroboskopu z wykorzystaniem 7 kolorów, gdzie odpowiada mu wartość 0x30. Każdemu efektowi ustawiamy także prędkość działania, a konkretniej czas opóźnienia od wartości 0x01 (szybko) do 0x1F[xcode] (wolno).

Budowa całego polecenia wygląda następująco: [xcode]0x61 0x30 0x01 0x0F 0xA1.

Gdy zapytamy o status, zwróci nam stan jako numer wybranego programu - czyli w tym przypadku 0x30 oraz wybraną wartość opóźnienia 0x01.

Tryb dźwiękowy

Komenda wyboru trybu dźwiękowego praktycznie nie różni się niczym od tej przy wyborze koloru. Różnica polega tylko na pierwszym bajcie 0x41 zamiast 0x31:

0x41 0xRR 0xGG 0xBB 0xWW 0xYY 0x0F 0xZZ

Podejrzewam, że ma to związek z określeniem stanu pracy żarówki w aplikacji mobilnej, która próbkuje dźwięk i wysyła do żarówki odpowiadające im brawy. Jeśli zapytalibyśmy o status żarówki to otrzymamy informację, że żarówka pracuje właśnie w trybie 0x62

Warto jednak pamiętać, że w trybie dźwiękowym jak i koloru możliwe jest przysłanie w pakiecie kolejno następujących po sobie sekwencji kolorów.

Własny program

Możliwe jest również wysłanie do żarówki własnego programu efektów, składającego się z szesnastu barw opisanych czterema bajtami 0xRR 0xGG 0xBB 0x00, wartości opóźnienia przejść między kolorami 0x01 - 0x1F oraz rodzajem przejść pomiędzy nimi:

  • 0x3A - przejście tonalne
  • 0x3B - zwykła zmiana koloru
  • 0x3C - stroboskop

Na sam koniec dochodzą nam wartości 0xFF 0x0F i obliczona suma kontrolna. Dla prześć tonalnych pomiędzy kolorami: czerwonym, zielonym i niebieskim z najmniejszym opóźnieniem 0x01 wyglądałoby to następująco:

0x51
0xFF 0x00 0x00 0x00 0x00 0xFF 0x00 0x00 0x00 0x00 0xFF 0x00
0x01 0x02 0x03 0x00 0x01 0x02 0x03 0x00 0x01 0x02 0x03 0x00
0x01 0x02 0x03 0x00 0x01 0x02 0x03 0x00 0x01 0x02 0x03 0x00
0x01 0x02 0x03 0x00 0x01 0x02 0x03 0x00 0x01 0x02 0x03 0x00
0x01 0x02 0x03 0x00 0x01 0x02 0x03 0x00 0x01 0x02 0x03 0x00
0x01
0x3A
0xFF 0x0F 0xDC

Kolory opisane jako 0x01 0x02 0x03 0x00  są kolorami nieaktywnymi i lepiej ich nie ustawiać, ponieważ na pierwszym z nich wykonywanie sekwencji efektu zostanie zakończone.

Ustawianie czasów i zaplanowanych działań

Skoro możliwe jest ustawienie zaplanowanych działań to potrzebna jest nam kontrola nad zegarem i musimy ustawić aktualny czas poleceniem 0x10 0x14. Pełny zapis:

0x10 0x14 0x11 0x01 0x0F 0x01 0x23 0x2D 0x07 0x00 0x0F 0xAC

Znaczenie kolejnych wartości

  • 0x10 0x14 - polecenie ustawienia czasu
  • 0x11 - rok 2017
  • 0x01 - miesiąc styczeń
  • 0x0F - 15 dzień miesiąca
  • 0x01 - 1 godzina
  • 0x23 - 35 minuta
  • 0x2D - 45 sekunda
  • 0x07 - dzień tygodnia
  • 0x00 - stała wartość
  • 0x0F - czy polecenie z chmury?
  • 0xAC - suma kontrolna
  1. echo -ne "x10x14x11x01x0Fx01x23x2Dx07x00x0FxAC" | nc 10.0.0.107 5577 | xxd

W odpowiedzi otrzymamy potwierdzenie: 0x0F 0x10 0x00 0x1F

Ustawienie czasu i odpowiedź

Skoro znamy już sposób zapisu czasu, zapytajmy o niego poleceniem:

0x11 0x1A 0x1B 0x0F 0x55

  1. echo -ne "x11x1Ax1Bx0Fx55" | nc 10.0.0.107 5577 | xxd

W odpowiedzi otrzymamy aktualny czas:

0x0F 0x11 0x14 0x11 0x01 0x0F 0x01 0x2D 0x0A 0x07 0x00 0x94

Znaczenie kolejnych wartości

  • 0x0F - czy odpowiedź z chmury?
  • 0x11 0x14 - aktualny czas
  • 0x11 - rok 2017
  • 0x01 - miesiąc styczeń
  • 0x0F - 15 dzień miesiąca
  • 0x01 - 1 godzina
  • 0x2D - 45 minuta
  • 0x0A - 10 sekunda
  • 0x07 - dzień tygodnia
  • 0x00 - stała wartość
  • 0x94 - suma kontrolna

Przejdźmy do sedna sprawy - żarówka pozwala na ustawienie sześciu zaplanowych działań, które wykonają się w zaplanowanym czasie. Każdy rekord składa się z 16 bajtów:

  • określenia czy zadanie jest aktywne 0xF0 lub nie 0x0F
  • daty, godziny i minuty
  • ustawienie powtarzania w wybrane dni tygodnia
  • ustawienie koloru lub wybór predefiniowanego programu
  • określenia czy diody są włączone 0xF0 lub wyłączone 0x0F

Pamiętajmy, że musimy wysłać wszystkie 6 programów. Przykładowa konfiguracja:

0x21 - ustaw zadania

0xF0 - aktywny
0x11 0x01 0x10 0x01 0x00 0x00 - 2017-01-16 01:00:00
0x00 - bez powtórzeń w dniach tygodnia
0x00 0x00 0x00 0x00 0x00 0x00 - nie ingeruj w kolor
0xF0 - włącz diody

0x0F - nieaktywny
0x11 0x01 0x10 0x02 0x00 0x00 - 2017-01-16 02:00:00
0x00 - bez powtórzeń w dniach tygodnia
0x00 0x00 0x00 0x00 0x00 0x00 - nie ingeruj w kolor
0xF0 - włącz diody

0xF0 - aktywny
0x11 0x01 0x10 0x03 0x00 0x00 - 2017-01-16 03:00:00
0x00 - bez powtórzeń w dniach tygodnia
0x61 0xff 0x00 0x06 0x00 0x00 - ustaw kolor (R G B W)
0xF0 - włącz diody

0xF0 - aktywny
0x11 0x01 0x10 0x04 0x00 0x00 - 2017-01-16 04:00:00
0x00 - bez powtórzeń w dniach tygodnia
0x25 0x01 0x00 0x00 0x00 0x00 - włącz predefiniowany program 0x25
0xF0 - włącz diody

0xF0 - aktywny
0x11 0x01 0x10 0x05 0x00 0x00 - 2017-01-16 05:00:00
0x00 - bez powtórzeń w dniach tygodnia
0x00 0x00 0x00 0x00 0x00 0x00 - nie ingeruj w kolor
0x0F - wyłącz diody

0xF0 - aktywny
0x00 0x00 0x07 0x00 0x00 - 07:00:00
0x00 0x02 - powtarzaj w poniedziałki, wtorki i środy
0x00 0x00 0x00 0x00 0x00 0x00 - nie ingeruj w kolor
0xF0 - włącz diody

0x00 - stała wartość
0xF0 - stała wartość
0xDA - suma kontrolna

Jeśli chodzi o wybór kilku dni tygodnia do powtórzeń, posługujemy się nimi jak bitami o odpowiedniej wadze

  • 2^0 niedziela
  • 2^1 poniedziałek
  • 2^2 wtorek
  • 2^3 środa
  • 2^4 czwartek
  • 2^5 piątek
  • 2^6 sobota

Chcąc ustawić poniedziałek, wtorek i srodę, otrzymamy wartość 2^1 + 2^2 + 2^3 = 0x07.

Aby pobrać aktualnie ustawione programy, wysyłamy polecenie 0x22 0x2A 0x2B 0x0F 0x86. W odpowiedzi otrzymamy presety zgodne skłądnią z powyższymi rekordami.

  1. echo -ne "x22x2Ax2Bx0fx86" | nc 10.0.0.107 5577 | xxd

Pobranie aktulanych zadań

Oczywiście pierwsze dwa bajty informują nas o źródle pochodzenia 0x0F i informacji o rodzaju zwracanych danych 0x22.

Galeria

Temperatury

Do chłodzenia żarówka wykorzystuje własną obudowę jako radiator o dość sporej powierzchni, co pozwala skutecznie odprowadzić nadmiar ciepła. Kiedy diody LED są wyłączone, temperatura obudowy oscyluje w granicach 29°C. Dwa kolejne pomiary przeprowadzono dla maksymalnej jasności świecenia diod RGB oraz białych. Obie temperatury były do siebie zbliżone, wynosząc kolejno 58°C i 55°C.

 Diody LED wyłączone

Maksymalna jasność diod RGB

Maksymalna jasność diod białych

Co w środku?

 

Gdzie kupić?

Żarówki ChiChinLighting dostępne są w ofercie sklepu ElTy.pl.

Komentarze Komentarze
Avatar 1
Nowy1 Mac OS X / Safari 602.3.12
20 January 2017 - 08:35 Brak informacji

witam,
czy w środku jest ESP ?

Avatar 2
Korneliusz Mac OS X / Safari 537.36
20 January 2017 - 08:40 Brak informacji

Wystarczy przeczytać :)

Avatar 1
czesio Windows / Safari 537.36
20 January 2017 - 10:36 Gdańsk

Jak testowałeś polecenia to miałeś skonfigurowanego access pointa na kompie z wiresharkiem? Czy jakoś inaczej?

Avatar 2
Korneliusz Mac OS X / Safari 537.36
20 January 2017 - 10:53 Brak informacji

Nie - komputer był takim samym klientem sieci co żarówka i telefon :)

Avatar 1
czesio Windows / Safari 537.36
20 January 2017 - 11:51 Gdańsk

To jak to skonfigurować żeby w wiresharku było widać te zapytania?

Avatar 2
Korneliusz Mac OS X / Safari 537.36
20 January 2017 - 12:23 Brak informacji

Nasłuchujesz co się dzieje w swojej sieci - musisz ustawić kartę w tryb monitora i przechwycić pakiety EAPOL urządzeń, kiedy same uzyskują dostęp, w przeciwnym wypadku transmisja będzie dla Ciebie zaszyfrowana

Avatar 1
ARodak Windows 7 / Safari 537.36
21 January 2017 - 13:34 Warszawa

Jestem pod wrażeniem tego artykułu. Bardzo rzeczowy i szczegółowy. Dzięki za miłą lekturę.

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 50.0
22 January 2017 - 18:31 Bytom

Cała przyjemność po mojej stronie!

Avatar 2
SpeX Windows / Mozilla Firefox 50.0
22 January 2017 - 00:24 Modlnica

"Literówki"
W pkt. Pobieranie aktualnego statusy, gdzie opisujesz odpowiedź 0x81 0x8A 0x8B 0x96, dwoje bajtów opisujesz jako wartość zielonego, domyślam się iż jeden to niebieski.

I poniżej piszesz iż ważne są stany 0x24/0x23 oraz 0xF0/0xF0. W drugiej parze, powinno raczej być 0xF0/0x0F

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 50.0
22 January 2017 - 18:30 Bytom

Poprawione - dzięki za czujność :)

Avatar 2
SpeX Windows / Mozilla Firefox 50.0
22 January 2017 - 18:34 Modlnica

PS. Nie wiem, czy to wina tego iż tak mocno cache\'ujesz (?) stronę, ale w ostatnich komentarzach, wyświetla mi się info o tym lub o drugim w GPS - nigdy łącznie a czasem nawet bez info o tych dwóch.

Inna sprawa, fajnie by było, gdyby się dała dodać funkcjonalność powiadomienia via mail, jak ktoś odpowiedział na komentarz.

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 50.0
22 January 2017 - 19:17 Bytom

komentarze są rodzielone pomiędzy bloga, a dział arduino - powiadomienie email jest wdrożone w nowej odsłonie bloga, które pojawi się niebawem :)

Avatar 1
BB Windows / Mozilla Firefox 66.0
20 April 2019 - 11:28 Brak informacji

Hello,
Thank you for this great article.
I want to assign a static ip to this device but couldn\'t find a way. Do you know if there is an AT command for this purpose?
Thankx.