Po sprawnym odczytaniu kodu z pilotów SMARTWARES sh4 (czytaj poprzedni post) przyszła kolej by coś z tymi odczytanymi kodami zrobić. Najlepiej gdyby dało się je inteligentnie wysłać do zakupionych wyłączników. Mam ich kilka więc warto się nieco potrudzić by je jakoś sensownie wykorzystać w mojej domowej sieci automatyki. Ale gotowego programu nadawczego nie znalazłem. Trzeba będzie porzeźbić coś samemu aby zastąpić firmowego pilota moim ulubionym ESP8266. Dziś o rzeźbieniu transmitera dla wyłączników SMARTWARES i co z tego wynikło.
Nie jest oczywiście do końca prawdą, że programu do transmisji kodów systemu SMARTWARES nie ma. Jest - jest częścią programu Arjena Klaverstijna . Nie wiem czy działa - może z częścią nadawczą są takie same problemy jak z częścią odbiorczą gdzie wyraźnie coś szwankuje z poprawnością dekodowania nadawanych przez piloty ciągów. Ale że umiem już "dostroić" odbiornik tak by prawidłowo odebrać kody SMARTWARES to mogę tę samą technikę zastosować w nadajniku. Potrzebuję tylko kodu w opstaci zrozumiałej dla mnie.
Postanowiłem sobie taki kod wykroić z programu Arjena Klaverstijna . Usunąłem wszelkie odniesienia obiektowe i klasowe pozostawiając czysty szeregowy kod, nad którym jestem w stanie zapanować.
Efekt mojej ciężkiej pracy można zobaczyć tu.
Kod o dziwo zadziałał natychmiast i to bez żadnych zmian w długościach impulsów. Co 3 sekundy wyłącznik SMARTWARES to załączał to wyłączał się. Pięknie. Oznacza to, iż analiza kodu dokonana przez Ariena jest prawidłowa a nieprawidłowe działanie części odbiorczej musi wynikać z jakiegoś błędu w kodzie. Szkoda, że analiza tego kodu przekracza moje umiejętności.
Podobnie jak w kodach 24 bitowych najwygodniejszą formą zadawania kodów jest postać typu "command" to jest w postaci ciągu cyfr reprezentujących wszystkie dane potrzebne do zadziałania wyłącznika.
Trzeba było uzupełnić kod odbiornika by wyświetlał odbierany ciąg z pilota w postaci "command".
Dodałem do programu trzy linijki (to te na zielono)
if (bitCounter == _numBits - 1) {
_message = message;
remoteId = message >> 16;
....................................................................
Serial.print(" / State: ");
Serial.println(state);
Serial.print(" command ");
Serial.println(_message);
co w efekcie pozwoliło mi odczytać kody pilota w postaci ciągu cyfr
Przetworzone na HEX ciągi cyfr dają niejaki pogląd jak tworzony jest kod modułów SMARTWARES. Poniżej kody z mojego dwukanałowego pilota
1 ------------------------------------------
4A9B0001 # 1251672065 DEC
kod 4A9B# (19099 DEC) kanał 1 stan 0
4A9B0011 # 1251672081 DEC
kod 4A9B# (19099 DEC) kanał 1 stan 1
2 ------------------------------------------
4A9B0002 # 1251672066 DEC
kod 4A9B# (19099 DEC) kanał 2 stan 0
4A9B0012 # 1251672082 DEC
Jak to dokładnie jest z tymi kodami? jeszcze nie wiem - zobaczymy w działaniu.
No to mam komplet nadajnika / odbiornika i mogę moduły SMARTWARES dodać do swojej kolekcji elementów wykonawczych domowej automatyki.
A w zanadrzu mam jeszcze moduły WiFi SMARTWARES SH5 !!!!
Oj będzie ciekawie - trzeba więc podkręcić nasz ulubiony ciąg dalszy by zobaczyć co z tego wyniknie.
Brak komentarzy:
Prześlij komentarz