Zainspirowany pomysłem @Duch__ viewtopic.php?f=24&t=6137 oraz bazując na najnowszej bibliotece SuplaDevice rozwijanej przez @klew https://github.com/klew/arduino a także projekcie @krycha88 zwanym Primary GUI v2 viewtopic.php?f=11&t=5233 napisałem pierwszą wersję firmware pod Suplę dla tego urządzenia pod Arduino IDE.
Uprzedzam, że to moja pierwsza publikacja kodu C/C++ więc proszę o wyrozumiałość ale także o konstruktywną krytykę
Nie dodawałem do urządzenia żadnych zmian sprzętowych, poza wlutowaniem goldpina x4 aby podłączyć programator.
W następnym poście kilka zrzutów z GUI (niestety, nie zawsze GUI wczytuje się poprawnie, zwłaszcza na urządzeniu mobilnym, ale do rozkminienia).
Bridge RF 443 v1.0.0
Kompilowany na płytce ESP w wersji 2.7.1. Biblioteka SuplaDevice od klew z linku powyżej.
Poniżej spakowany szkic.
Skompilowana i spakowana binarka.
Sonoff Bridge RF 433
Ostatnio zmieniony pt cze 12, 2020 10:37 pm przez Goral64, łącznie zmieniany 8 razy.
Widzimy się na Supla Offline Party Season 2
Poniżej kilka zrzutów ekranu z GUI.
Widzimy się na Supla Offline Party Season 2
Urządzenie działa w obie strony. Odbiera kody RF z pilotów, urządzeń RF (pod warunkiem, że są stałe, 24 bitowe) i wysyła stany do serwera Supli. Odbiera także sterowanie z Supli i wysyła kody RF do odbiorników.
GUI umożliwia dodanie urządzenia kreatorem w aplikacji mobilnej.
Maksymalna liczba zapamiętanych kodów to 60. Jeden kanał zajmuje od 1 do 2 kodów. Można zdefiniować tyle kanałów na ile wystarczy kodów, czyli od 30 do 60. Kanały i kody definiuje się w GUI.
Kody można wpisać "z palca" albo "automatycznie". Uruchamiany jest tryb nauki i w tym trybie kod RF jest pobierany z urządzenia nadawczego. Są piloty i czujniki, których kody Bridge rozpoznaje 100 na 100. Niestety, są też takie, których Bridge nie do końca rozumie przy rozkodowaniu, a nawet jak dostanie "z palca" prawidłowy kod, to gdy go wyśle, urządzenie odbiorcze nie potrafi zareagować. Czasem udaj się znaleźć dobry kod, a czasem jest kaszana. Mam pilota, który czasem jest dobrze odkodowany, a czasem 4 czy więcej kanałów odbierane są jako jeden kod
Inny pilot i jego odbiorniki działają za każdym razem.
Urządzenie tworzy póki co tylko 2 rodzaje kanałów: przekaźnik (Relay) i czujnik (Sensor). W GUI są one jeszcze podzielone na 4 rodzaje:
Przekaźniki (ON + OFF) - do sterowania używane są dwa osobne kody, osobny kod ustawia stan wysoki (ON), osobny kod stan niski (OFF),
Przekaźniki (ON/OFF) - do sterowania naprzemiennie używany jest jeden kod (toggle),
Czujniki binarne (ON + OFF) - podobnie jak przekaźniki (ON + OFF),
Czujniki binarne (ON lub OFF) - czujniki wysyłają tylko jeden kod, którym sygnalizują albo stan wysoki (ON) albo stan niski (OFF).
W GUI można dodawać kanały i kody do nich (kody nie mogą się powtarzać w ramach urządzenia). Można edytować kody w kanale jak i usunąć kanał wraz z kodami. Przy przekaźnikach po kliknięciu na odpowiednią ikonę można wysłać do odbiornika kod przypisany do ikonki (stan nie jest wysyłany do Supli).
GUI umożliwia dodanie urządzenia kreatorem w aplikacji mobilnej.
Maksymalna liczba zapamiętanych kodów to 60. Jeden kanał zajmuje od 1 do 2 kodów. Można zdefiniować tyle kanałów na ile wystarczy kodów, czyli od 30 do 60. Kanały i kody definiuje się w GUI.
Kody można wpisać "z palca" albo "automatycznie". Uruchamiany jest tryb nauki i w tym trybie kod RF jest pobierany z urządzenia nadawczego. Są piloty i czujniki, których kody Bridge rozpoznaje 100 na 100. Niestety, są też takie, których Bridge nie do końca rozumie przy rozkodowaniu, a nawet jak dostanie "z palca" prawidłowy kod, to gdy go wyśle, urządzenie odbiorcze nie potrafi zareagować. Czasem udaj się znaleźć dobry kod, a czasem jest kaszana. Mam pilota, który czasem jest dobrze odkodowany, a czasem 4 czy więcej kanałów odbierane są jako jeden kod
Inny pilot i jego odbiorniki działają za każdym razem.
Urządzenie tworzy póki co tylko 2 rodzaje kanałów: przekaźnik (Relay) i czujnik (Sensor). W GUI są one jeszcze podzielone na 4 rodzaje:
Przekaźniki (ON + OFF) - do sterowania używane są dwa osobne kody, osobny kod ustawia stan wysoki (ON), osobny kod stan niski (OFF),
Przekaźniki (ON/OFF) - do sterowania naprzemiennie używany jest jeden kod (toggle),
Czujniki binarne (ON + OFF) - podobnie jak przekaźniki (ON + OFF),
Czujniki binarne (ON lub OFF) - czujniki wysyłają tylko jeden kod, którym sygnalizują albo stan wysoki (ON) albo stan niski (OFF).
W GUI można dodawać kanały i kody do nich (kody nie mogą się powtarzać w ramach urządzenia). Można edytować kody w kanale jak i usunąć kanał wraz z kodami. Przy przekaźnikach po kliknięciu na odpowiednią ikonę można wysłać do odbiornika kod przypisany do ikonki (stan nie jest wysyłany do Supli).
Widzimy się na Supla Offline Party Season 2
Brawo
Mam gniazda SITE model RCS-K01 z pilotem RCT-01. Ten działa praktycznie 100/100. Kody sczytują się dobrze, pilot jest zrozumiały a i kod wysyłany przez bridge jest odbierany. Można tym sterować 5 gniazdkami (5 kanałów ON + OFF). Do tego mam jeszcze gniazda ELRO AB601SB z pilotem AB601R. Można tym sterować 8 gniazdami (8 kanałów ON-OFF). Tutaj jest ciężko. Bridge potrafi wszystkie kanały odebrać z jednym kodem Mimo, że gniazdka rozumieją pilota. Jak zapiszesz w Bridge poprawiony kod, to nie zawsze gniazdko go rozumie.
Do tego kupiłem kontaktrony Sonoffa, żeby potestować z bridge. Jednak są to nadajniki z jednym kodem. Czyli jak się oddali kontaktron od magnesu to wysyłany jest kod, że "obwód rozwarty", jak się go przybliży nie generuje kodu, że "obwód zwarty". Kupiłem tez PIR-a Sonoffa i też ładnie go bramka odbiera. No ale to też tylko jest generowany kod jak wykryje ruch, więc trzeba by jakiś timer, który po jakimś czasie przywracałby stan "bezruchu" do następnego wykrycia ruchu.
Zmiennokodowe nie są obsługiwane.
Bridge można zhakować na różne sposoby. Można pominąć chipa obsługującego kody RF i przesyłać sygnał prosto do ESP i tam przetwarzać. Wtedy jest więcej możliwości. Można też podmienić firmware w tym chipie, aby obsługiwał także inne kody. Ale to już tematy na inną bajkę.
Mi przede wszystkim chodziło o firmware na niemodyfikowany bridge.
Widzimy się na Supla Offline Party Season 2
W uzupełnieniu dodam, że dane konfiguracyjne zapisywane są w EEPROM.
Zapis do EEPROM połączony jest z restartem urządzenia, tak aby biblioteka SuplaDevice mogła pracować na zmienionych danych. Tak więc jeśli dodamy, usuniemy czy zmodyfikujemy kanał operacja Zapisz umieści te dane w pamięci, ale żeby SuplaDevice zaczęła z nich w pełni korzystać trzeba je zapisać do EEPROM i zrestartowac urządzenie. Odpowiedni przycisk pojawi się na stronie głównej jeśli zostaną wprowadzone jakieś zmiany. Jeśli chcemy odrzucić wprowadzone zmiany należy wykonać sam restart.
Jeśli będziemy tylko dodawać kanały lub tylko modyfikować w nich kody to dodadzą się one do Supli bez problemu. Jeśli usuniemy jakiś kanał, dodamy w to miejsce inny wtedy nastąpi w Supli konflikt kanałów i trzeba najpierw usunąć urządzenie z Supli aby dodało się ponownie z odpowiednimi kanałami w odpowiedniej kolejności.
W wersji, która jest udostępniona pozostawiłem na razie przycisk Podgląd EEPROM. Aby się go pozbyć wystarczy usunąć z pliku config.h linijkę z
A tak wygląda fragment podglądu EEPROM.
Przy ustawionym DEVEL_MODE mamy też dostęp do dwóch linków:
/eeprom_format - formatuje całą używaną pamięć EEPROM jak przy pierwszym uruchomieniu firmware na urządzeniu
/eeprom_clear - czyści informacje o ustawieniu kanałów i wczytanych kodach, zostawia informacje logowania do WiFi i Supli
Operacja wykonuje się tylko w pamięci, więc aby odniosła skutek w EEPROM trzeba zapisać EEPROM i zrestartować urządzenie.
Zapis do EEPROM połączony jest z restartem urządzenia, tak aby biblioteka SuplaDevice mogła pracować na zmienionych danych. Tak więc jeśli dodamy, usuniemy czy zmodyfikujemy kanał operacja Zapisz umieści te dane w pamięci, ale żeby SuplaDevice zaczęła z nich w pełni korzystać trzeba je zapisać do EEPROM i zrestartowac urządzenie. Odpowiedni przycisk pojawi się na stronie głównej jeśli zostaną wprowadzone jakieś zmiany. Jeśli chcemy odrzucić wprowadzone zmiany należy wykonać sam restart.
Jeśli będziemy tylko dodawać kanały lub tylko modyfikować w nich kody to dodadzą się one do Supli bez problemu. Jeśli usuniemy jakiś kanał, dodamy w to miejsce inny wtedy nastąpi w Supli konflikt kanałów i trzeba najpierw usunąć urządzenie z Supli aby dodało się ponownie z odpowiednimi kanałami w odpowiedniej kolejności.
W wersji, która jest udostępniona pozostawiłem na razie przycisk Podgląd EEPROM. Aby się go pozbyć wystarczy usunąć z pliku config.h linijkę z
Kod: Zaznacz cały
#define DEVEL_MODE
/eeprom_format - formatuje całą używaną pamięć EEPROM jak przy pierwszym uruchomieniu firmware na urządzeniu
/eeprom_clear - czyści informacje o ustawieniu kanałów i wczytanych kodach, zostawia informacje logowania do WiFi i Supli
Operacja wykonuje się tylko w pamięci, więc aby odniosła skutek w EEPROM trzeba zapisać EEPROM i zrestartować urządzenie.
Widzimy się na Supla Offline Party Season 2