poniedziałek, 13 lutego 2023

Smartwares SH4 monitor OK

 

Dziś na tapecie zdalne wyłączniki SMARTWARES, Ciekawe urządzenia będące połączeniem wyłączników WiFi z wyłącznikami RF 443 MHz. Kupiłem kilka mając nadzieję, że uzupełnią mój stan posiadania w sterownikach radiowych. Na obecną chwilę są to głównie sterowniki ELRO z dodatkowymi pilotami uczącymi się stałych kodów. Niestety zapas tych wyłączników powoli się wyczerpuję i miałem nadzieję że zastąpią je urządzenia SMARTWARES. A tu niespodzianka - kod transmisji jest diametralnie różny od znanego 24 bajtowego kodu. I nic nie pasuje do niczego. Co gorsze informacji o kodowaniu tego systemu jest w sieci znikoma ilość i do tego nie działająca. Trzeba więc sobie poradzić samemu z tym problemem


Sam opis tego systemu zostawię na kolejne wpisy. Dziś o tym jak za pomocą ESP8266  prawidłowo przeczytać kod z pilota Smartwares. Niby banalna sprawa opanowana do perfekcji dla 24 bitowych kodów z pomocą dobrze znanej biblioteki RCSwitch. Ale w Smartwares zastosowano jakiś pokręcony 32 bitowy kod nie znany nigdzie na świecie. Jedyna dostępna biblioteka dla tego kodu jest autorstwa  Arjena Klaverstijna. Jest ale nie działa - w każdym razie nie z moimi urządzeniami. Monitor pokazuje jakieś dziwne kody zmieniające się przy każdym naciśnięciu pilota.

Jest jeszcze jeden program do odczytu kodów transmisji gościa o wdzięcznym nicku lopezelectroeca.

Jest ale w przypadku moich pilotów milczy jak grób. Ale o ile pierwszy z programów jest dla mnie kompletną programową czarną magią (obiekty klasy dziedziczenia i takie tam bzdury) o tyle drugi jest w miarę zrozumiały i do ogarnięcia. A że nie lubię gdy urządzenia próbują decydować za mnie co mam robić postanowiłem nieco pogrzebać w kodzie by zechciał łaskawie wyświetlić generowane przez piloty Smartwares kody. 

Założyłem że opis struktury kodu zawarty w bibliotece sf501-remote.h jest poprawny


Jedyne co może ewentualnie wpływać na to, że oba programy nie działają prawidłowo to zmiany w długości impulsów generowanych przez moje piloty. Sugeruje to drugi z programów sh5v2.ino gdzie w sposób dla mnie przypadkowy wpisane są zakładane wartości poszczególnych impulsów (preambuły, 0 i 1). Czyli już ktoś z sukcesem kombinował z długością tych elementów.
Pierwszą rzeczą jaką należy zrobić to zobaczyć jak wygląda przebieg czasowy generowananego sygnału przez pilota. Mogę (i powinienem jako (nie)młody elektronik) zrobić to oscyloskopem. Ale za dużo z tym zachodu. Lepiej do tego celu użyć dowolnego monitora programowego czytującego czasy odbieranych przez ESP przebiegów cyfrowych. Ja użyłem programu - nie bardzo wiem czyjego autorstwa -  do czytania kodów nieznanych dzwonków. Program dostępny jest na pastebin.com

Program działa i pięknie wyświetla czasy odebranych impulsów


Pozostaje już tylko poszukać impulsów reprezentujących poszczególne znaki i oszacować średnią ich długość


Założyłem że poszczególne elementy kodu mają długość
  • preambuła  2800  µS
  • "0" 540  µS
  • "1" 1540  µS
i do tych wartości dopasowałem liczby w kodzie programu opartego na sh5v2.ino

  if (_checkPulse(pulseWidth, 200 * 14))
  if (_checkPulse(pulseWidth, 265 * 2)) { // 0
    else if (_checkPulse(pulseWidth, 220 * 7)) { // 1

Wstawiłem też w program pułapki monitorujące jakie długości impulsów przechodzą przez programowy filtr. 

A końcowym efektem działania poprawionego programu jest taki oto wydruk na monitorze


I to by było na tyle....

No może nie do końca. Istotnym elementem w moim kodzie było wyłączenie ustawania portu RX

  // pinMode(interruptPin, INPUT_PULLUP);

Moją wersje monitora SMARTWARES Sh4 zamieściłem na githubie.

Teraz pozostaje już tylko nauczyć się jak wysyłać poprawne kody by sterować wyłącznikami SMARTWARES. Ale tym niech się już zajmie nasz ulubiony ciąg dalszy.....

Brak komentarzy:

Prześlij komentarz