MySensors – Ogólny poradnik z przykładami.

Długo zastanawiałem się jaki wpis na blogu zrobić na temat MySensors. Ponieważ jest to oddzielna odnoga tak jak google home, node red itd. Zdecydowałem, że zrobię wszystko w jednym poście, bo ja w sumie będę potrzebował tylko dwóch efektów, ale przygotuje po to oddzielna kategorie i gdy nie będę miał co omawiać, lub wy będziecie mieli pytania, to będę uzupełniał, albo ten wpis, albo będę robił nowe wpisy.

MySensors dla mnie to połączenie arduino razem z raspberry pi. Programujemy MySensors w środowisku arduino, więc jeżeli ktoś już miał styczność z arduino to będzie mu na pewno prościej. MySensors to również środowisko dosyć specyficzne, ale dające dużo możliwości, bo nie ogranicza nas soft, bo w końcu go sami tworzymy. Korzystamy oczywiście z gotowych rozwiązań, ale możemy w kod wplatać własne wstawki.

Przejdźmy do podstaw, czyli musimy pobrać arduino:
– Link do pobrania arduino

Cały poradnik postaram się uprościć, więc będzie mocne spłycanie tematów, więć jeżeli Twoja wiedza jest ponad podstawę, to nic nowego nie dowiesz się z tego poradnika, ale jeżeli dopiero zaczynasz, to poradnik okaże się pomocny.

Arduino opiera się na “bilbliotekach”, czyli przykładowych kodach, ale w skład tego wchodzą również pliki, które są wysyłane do arduino bez konieczności ich edycji. W praktyce to bez tych plików nie zadziała nasz sketch.

#include <MySensors.h>

Powyżej widzimy przykład takiego pliku i nie mamy go w zakładkach, więc przepisanie całego kodu, ale nie posiadając tego pliku, nie pozwoli nam uruchomić prawidłowo sketch, żeby prawidłowo kod działał.

W Arduino otwieramy Szkic>>Dołącz bibliotekę>>Zarządzaj bibliotekami:

Wyszukujemy bibliotekę MySensors i instalujemy. Poniższe zdjęcie ma wyszarzony przycisk instaluj, bo tę bibliotekę mam już zainstalowaną.

Po zainstalowaniu możemy od razu przejść do przykładów MySensors. W moim projekcie będę potrzebował sterowanie pinami w arduino mega i obsługą tego w domoticzu. Użyjemy do tego dwóch przykładów:

Wchodzimy Plik >> Przykłady >> MySensors >> RelayActuator

Dostajemy w Arduino kod, który będzie wymagał poprawek:

W kodzie znajdziemy linijkę odpowiadającą za łączność RF433

#define MY_RADIO_RF24
Zmieniamy na:
//#define MY_RADIO_RF24

Dodanie dwóch ukośników powoduje, że funkcja nie będzie wykonywana.

S_BINARY
Zmieniamy na:
S_LIGHT

Najważniejszy fragment kodu spolszczyłem:

#define RELAY_PIN 4 // Numer pinu Arduino Digital I/O dla pierwszego przekaźnika
#define NUMBER_OF_RELAYS 3 // Całkowita liczba podłączonych przekaźników.
#define RELAY_ON 1 // Wartość GPIO, aby włączyć przekaźnik
#define RELAY_OFF 0 // Wartość GPIO, aby wyłączyć przekaźnik

Nie jest on zbyt jasny więc wyjaśnię mamy tutaj RELAY_PIN 4 jest to pin startowy, od którego będziemy liczyć piny. Następnie mamy NUMBER_OF_RELAYS 3 wartość 3 określa ilość pinów po GPIO 4, czyli mamy GPIO 5, GPIO 6. Łącznie daje nam to 3 GPIO, czyli zgodnie z tym co określimy.

W powyższy sposób mamy obsługę wychodzących naszych pinów z arduino mega, ale brakuje nam komunikacji przez USB, więc skorzystajmy z przykładu:

GatewaySerial:

 

Powyższy kod służy do komunikacji przez USB, ale połączymy sobie komunikacje razem z przełącznikami Relay i mamy:

 

Wygląda wszystko super, bo mamy połączoną komunikacje usb pomiędzy arduino mega a raspberry Pi. Pozostała nam jeszcze podłączenie pod USB w domoticzu naszej płytki arduino Mega i sprawdzenie, czy działa.

Dodajemy najpierw obsługe, czyli wchodzimy Konfiguracja >> Sprzęt i z listy na dole szukamy “MySensors Gateway USB” po wybraniu wybieramy z listy port szeregowy port do którego jest podłączone nasze arduino i dodajemy własną nazwę w polu Nazwa.

Wchodzimy Konfiguracja >> Urządzenia i segregujemy po IDX. Teraz widzimy wszystkie przekaźniki, które zostały dodane licząć od GPIO 22 do GPIO 30, czyli łącznie 9.  Od tej chwili możemy włączać dane wyjścia  w naszym arduino za pośrednictwem Domoticza.

Dodawanie przycisków button od zmiany statusu ON/OFF

Zacznijmy od tego, że będziemy potrzebowali nową bibliotekę

Po zainstalowaniu otwórzmy sobie przykład bounce>>more >> Change:

Po uzupełeniu naszego projektu o przycisk button:

Powyższy kod obsługuje jeden przycisk monstabilny oraz relay w MySensors.

Powyższy kod obsługuje cztery przyciski Monostabilne oraz Relay w MySensors

Powyższy kod obsługuje cztery przyciski Bistabilne oraz Relay w MySensors

 

Powyższy kod obsługuje 21 sterowników Bistabilnych oraz przełączników.