Nawiązując do postu @isom, otworzyłem oddzielny wątek dla początkujących, którzy chcą obsługiwać sporo wejść poprzez Domoticz korzystając z Arduino jako urządzenia zwiększającego liczbę GPIO. Arduino ma być podłączone poprzez USB z wykorzystaniem biblioteki MySensors.
Tutaj zwracam się z prośbą do wszystkich, którzy korzystają z takiej konfiguracji: proszę o wskazówki jak to skonfigurować oraz przykłady kodów (algorytmy) obsługujących np włączniki i przekaźniki do światła, włączniki i przekaźniki do rolet, ciekawe sterowanie zaworami do podłogówki.
@ombre przeniosłem Twój wpis do domoticz bo tu znajdzie go więcej użytkowników tego systemu.
Poniżej masz kod do dowolnego arduino, ale najlepiej takie które bezpośrednio podłączysz przez USB z maliną . Kod pracuje jako bramka USB i jednocześnie obsługuje x przycisków i przekaźników . Przyciski sterują przekaźnikami autonomicznie czyli bez udziału domoticza.
Rozbudowa to zwiększenie ilości przekaźników Piny Cyfrowe , przycisków piny analog i powielenie funkcji ( łatwo się zorientować)
Po dodaniu tego arduino , kolejne już mogą pracować jako nody komunikujące się z bramką
#define noButtons 6
@isom dziękuje za przesłanie przykładów. Zaimplementuje je w niedziele wieczorem zapewne. Nie znam jeszcze struktury forum i dlatego umieściłem wątek w początkujących. Dziękuję za przełożenie do właściwego działu.
@isom tez chce podziekowac za kod. Nigdy nie bawilem sie arduinem. Po za jednym razem . Wlasciwie juz nie pamietam jak to robilem. Czy ktos by podpowiedzial na szybkiego jak ten kod tam wrzucic.
A moze powinienem zamowic arduino mega aby miec wiecej wyjsc?
Z gory dziekuje.
@krzysztofch na początek wystarczy to co masz . Pobierz sobie Arduino IDE https://www.arduino.cc/en/main/software
Zaktualizuj biblioteki w tym Mysensors , otwierasz nowy sketch i wklejasz kod , obejrzyj kilka filmików w sieci jak nigdy tego nie robiłeś
Witam, po pierwsze wielkie dzięki za udostępnienie kodów, zastosowałem w 2 arduino mega podłączonych do maliny 🙂 wszystko działa pięknie za wyjątkiem stanów urządzeń w domoticzu - są odwrócone, tj. gdy przekaźnik włączony, urządzenie w domoticz wyłączone / gdy przekaźnik wyłączony, urządzenie w domoticz włączone ..., istnieje możliwość odwrócenia tych stanów (najlepiej z poziomu arduino, nie stosując trików w domoticz, typu wirtualne urządzenia)?
Wskazówka dla tych którzy chcieli by podłączyć 2 arduino do domoticza, wykorzystując powyższe kody (potrzeba dużej ilości wejść / wyjść): a więc, kody muszą mieć różne, wszystkie zmienne (nazwy przekaźników, przycisków, stanów, wiadomości itd.). Być może jest na to łatwiejszy sposób, ale ja poradziłem sobie z tym w taki 🙂
@upiter81 Stany przekaźników zależą od sposobu wyzwalania twoich modułów przekaźnikowych, w kodzie dla 32 przekaźników bardzo łatwo odwrócić stan dla wszystkich przekaźników i nie potrzeba nic kombinować w domoticz . Zmiana fragmentu kodu poniżej odwraca działanie przekaźników
#define NUMBER_OF_RELAYS 32 // Total number of attached relays #define RELAY_ON 0 // GPIO value to write to turn on attached relay #define RELAY_OFF 1 // GPIO value to write to turn off attached relay
Co do reszty, to moim zdaniem zmiana prezentacji kodu wystarczy żeby rozróżnić przekaźniki w dwóch arduino, w drugim można zmienić na
void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Relay1", "1.0");
@isom dzięki za wskazówkę, właśnie od tego zamierzałem zacząć przy kolejnych próbach 🙂 - wieczorkiem przetestuję i tak czy inaczej dam znać dla potomnych 😉
Co do rozróżnienia płytek o którym wspomniałeś, to niestety nie zadziałała sama zmiana w presentation (to była moja pierwsza próba :)), musiałem nawet zmienić nazwy stanów tj. Relay_ON i Relay_OFF, dopiero po tych zmianach wszystko zaczęło działać bez zakłóceń (dosłownie wszystkie zmienne należy zmienić ... - myślę że to kwestia budowy bibliotek, jeszcze nie miałem czasu przejrzeć).
@isom wygląda na to że miałeś jednak rację również co do zmiany jedynie prezentacji kodu, zmyliło mnie zakłócenie polegające na zapętleniu się jednego z wyjść, co pojawiło się w końcu również po zmianie nazw wszystkich zmiennych, obecnie 2 arduino mega współpracują z maliną bez zarzutów, z identycznymi kodami a różnicą jedynie w sekcji presentation. Obawiam się jednak, że zakłócenie może wrócić (poprzednio również nie pojawiło się od razu, tylko po pewnym czasie oraz pewnej sekwencji wysterowania wejść / wyjść - niestety nie udało mi się zaobserwować jakiej), jeśli jednak się powtórzy, to zastanawiam się nad dodanie opóźnienia np. 100ms do części loop, po każdej funkcji aktywacji wyjścia, co o tym myślisz?
@upiter81 o prawda przy mniejszej ilości przekaźników i przycisków nigdy nie miałem zakłóceń pracy , ale tak krótkie opóźnienie nie wpłynie zbytnio na szybkość reakcji więc możesz spróbować
Witam podepnę się pod temat: mam problem po zmianie smarticza na nowszą wersję z komunikacja z przekażnikami:Error sending switch command, check device/hardware (idx=18)!. Problem w tym że raz przekaźnik zaskoczy a juz wylaczyć się nie chce dopiero po np 3 bledach nastepuje wyłączenie. Dotyczy to różnych przekażnikó podpietych do ardiuno mega po usb.
Załączam skryp z githuba którego używam jest dość rozbudowany ma dużo fajnych opcji a w konfiguracji jest chyba nawet łatwiejszy niż powyższe.
Zmieniłem przewód usb zmniejszyłem band rate w domoticzu bezskutecznie. 🙁 jakieś pomysły?
Skrypt ze stronki EasySwitch powinien działać , testowałem go przez chwilę na nowej wersji . Może sprawdz port w ustawieniach ( usuń i dodaj bramkę USB ) jeszcze raz
Cześć, wracam z tematem po rozszerzeniu zasięg swojego Arduino Mega do kolejnej listwy przekaźników 😀 jednak druga listwa sterowana jest stanem wysokim w przeciwieństwie do pierwszej, oczywiście wszystko działa, ale prezentacja stanu przekaźników (ON / OFF), jest nieprawidłowa 😑 , tj. włączenie powoduje wyłączenie przekaźnika i odwrotnie (wyłączenie -> włączenie), co jest dla mnie oczywiście zrozumiałe, ale moja słaba znajomość kodu nie pozwala mi go poskładać jak należy ...
Będę wdzięczny za wszelkie wskazówki dla modyfikacji mojego kodu:
Poskładałem 😀 załączam kod gdyby ktoś potrzebował takiego rozwiązania, dodatkowo dorzuciłem obsługę czujnika DHT22 - pewnie nie jest to optymalne rozwiązanie, ale moje umiejętności na więcej niestety na chwilę obecną nie pozwalają 🤔, ważne że działa bez błędnie 😊