niedziela, 8 maja 2016

Sterowanie gniazdkami 433 MHz bezpośrednio z Raspberry Pi z Domoticz

Dzisiaj opiszę jak sterować gniazdkami 433 MHz bezpośrednio z Raspberry Pi, ponieważ z zastosowaniem nadajnika MySensors pojawiały się problemy i ostatecznie nie sprawdziło się.

Tak jak jest napisane w poprzednim poście -> Link sterowane będą gniazdka Kemot poprzez moduł radiowy FS100A 433 MHz.



Moduł radiowy 433 MHz należy podłączyć w następujący sposób:

Odbiornik: pin DATA - GPIO 27
Nadajnik: pina DATA - GPIO 17


No i oczywiście należy podłączyć do GND i VCC

Piny Rasberry Pi


Po podłączeniu należy odczytać kody pilota, będzie tez wymagany program Wirinig Pi, jak go zainstalować opisałem w tym poście -> Link

Gdy mamy już zainstalowany WiringPi ściągamy ten plik -> Link

Rozpakowujemy na komputerze i kopiujemy do Rasberry Pi katalog RPi_utils, teraz otwieramy terminal Raspberry Pi i wpisujemy kolejno:

cd RPi_utils

make all

Teraz uruchamiamy program do odczytu kodów pilota poleceniem:

sudo ./RFSniffer

Po wciśnięciu przycisków pilota powinniśmy zobaczyć odczytane kody pilota


Zapisujemy sobie kody dla poszczególnych przycisków w pliku tekstowym, będą one nam później potrzebne.


Teraz możemy przetestować wybrany kod poleceniem:

sudo ./codesend 4212049

Gdy kody działają przechodzimy do Domoticz.

Wchodzimy w Konfiguracja -> Sprzęt i dodajemy wirtualne urządzenie Dummy wpisujemy nazwę np. 433 MHz i klikamy Dodaj


Teraz u góry klikamy: Utwórz wirtualne czujniki


Wpisujemy nazwę np. Gniazdko A i dodajemy kolejne gniazdka np. Gniazdko B, C


Teraz wchodzimy w Przełączniki i w wybranym gniazdku klikamy Edycja i w Włącz akcję wpisujemy:

script:///home/pi/RPi_utils/codesend 4212049

gdzie po codesend wpisujemy kod włączenia gniazdka i tak samo w Wyłącz akcję po codesend kod wyłączenia.


Klikamy Zapisz i analogicznie robimy dla kolejnych gniazdek.

Jeżeli wszystko zrobimy dobrze, możemy już sterować gniazdkami z poziomu Domoticz.

Nadajnik na napięciu 5V i antence 17 cm, ma u mnie zasięg przez 2 ściany i przez strop na piętro niżej. Dla większego zasięgu można nadajnik zasilić osobnym napięciem 12V z wspólną masą z Rasberry Pi.

47 komentarzy:

  1. Witam Serdecznie

    Świetny poradni ale mam problem. Udało mi się zaczytać kody za pomocą RFSNIFFER - u mnie są o jedną cyfrę krótsze (mam gniazda KEMOT URZ1229 - w poradniku są URZ1226) Podłączyłem nadajnik do Raspberry Pi a odbiornik do Arduino NANO żeby sprawdzić czy działa.
    Wpisując komendę sudo ./codesend 87811 (Arduino widzi przesłany kod w tej samej postaci co wysyła go pilot) Niestety gniazdo w żaden sposób nie reaguje - działa tylko z pilota. Nie jestem w stanie zrozumieć co może być przyczyną? Bardzo proszę o pomoc

    OdpowiedzUsuń
  2. Udało mi się rozwiązać problem poprzez dopisanie jednej linijki do codesend.cpp (mySwitch.setPulseLength(186);
    Pozdrawiam

    OdpowiedzUsuń
  3. Zamiast niepewnych modułow które użyłeś polecam http://www.nemcon.nl/blog2/2015/07/bb
    Sam robiłem na początku tak jak Ty. Niestety były problemy. Po zamontowaniu polecanego modułu odbieram nawet sprzęt sąsiadów :-)

    OdpowiedzUsuń
    Odpowiedzi
    1. Dzięki Darek za informację. Jakiego konkretnie użyłeś modułu? Moduł jest podłączony bezpośrednio do RPi?

      Usuń
    2. Tu masz schemat:
      http://www.nemcon.nl/blog2/2015/07/aa
      moduł podpiety do mega 2560
      mega 2560 podpiete do RPi przez USB
      Jeśli o mnie chodzi to jestem zadowolony i polecam

      Usuń
    3. Tu masz link do sklepu:
      http://www.nodo-shop.nl/nl/rflink-gateway/148-rflink-gateway-componenten.html
      Montaż samodzielny :-)
      ew. za dopłatą moduł zmontowany
      link do aktualnej wersji oprogramowania do Arduino Mega 2560:
      http://www.nemcon.nl/blog2/2015/07/bb
      Projekt jest nowy i wciąż aktualizowany.
      Opisy i recenzje:
      https://www.domoticz.com/forum/viewforum.php?f=49&sid=d3640c7c225cc287bfbf00f4a53efe24
      Alternatywa (dość kosztowna):
      http://www.rfxcom.com/epages/78165469.sf/nl_NL/?ObjectPath=/Shops/78165469/Categories/Transceivers

      Pozdrawiam

      Usuń
    4. Jak zaprogramować kody w nodo?
      Polutowałem, wgrałem firmware i nie wiem co dalej.

      Usuń
    5. Witam
      Nic nie programujesz.
      W sprzęcie dodajesz tylko RFLink Gateway USB.
      W ustawieniach klikasz :Akceptuj nowe urządzenia Pozwól na 5 minut
      Urządzenia w pobliżu same się zgłoszą.
      Sąsiada też:-)
      Pozdrawiam

      Usuń
    6. Dzięki za pomoc. Zrobiłem jak napisałeś ale nie działa mi. Co to znaczy że urządzenia się same zgłoszą?
      Mam polutowane wg manuala wpięty http://www.aliexpress.com/item/Free-shipping-5pcs-NEW-NRF24L01-2-4GHz-Antenna-Wireless-Transceiver-Module/1961193760.html
      Może czegoś nie zrobiłem?

      Usuń
    7. Domoticz instalowałem wg tej instrukcji https://projektpimalina.blogspot.com/2016/03/instalacja-domoticz-na-raspbian-jessie.html

      Usuń
  4. Witam,
    poradnik natchną mnie do działania, jednak trafiłem na problem którego jako amator nie mogę przeskoczyć, otrzymałem poniższy komunikat:

    pi@raspberrypi:~ $ cd RPi_utils
    pi@raspberrypi:~/RPi_utils $ make all
    make: *** Brak reguł do zrobienia obiektu '../rc-switch/RCSwitch.o', wymaganego przez 'send'. Stop.

    Co robię źle ? Będę bardzo wdzięczny za pomoc.
    Pozdrawiam,
    Michał

    OdpowiedzUsuń
  5. @Michal
    Wpisz:
    git clone --recursive git://github.com/ninjablocks/433Utils.git
    Potem wejdź do katalogu 433Utils/RPi_utils
    i wpisz
    make

    OdpowiedzUsuń
    Odpowiedzi
    1. Mam podobny problem, rozwiązanie powyżej nie pomaga.

      Usuń
  6. Witam,
    mam pytane odnośnie podłączenia nadajnika i odbiornika do RPi.
    Autor napisał, że należy podłączyć:
    Odbiornik: pin DATA - GPIO 27
    Nadajnik: pina DATA - GPIO 17
    Jeśli jednak chciałbym zmienić piny GPIO na np. GPIO 20 - nad., 21 - odb. to gdzie mogę to zmienić? Podejrzewam, że gdzieś w "RPi_utils"

    Pozdrawiam.

    OdpowiedzUsuń
    Odpowiedzi
    1. Mam podobne pytanie czy te porty trzeba wyeksportować
      podobnie jak to było /usr/local/bin/gpio export 20 out ??
      Odbiornik: pin DATA - GPIO 27
      Nadajnik: pina DATA - GPIO 17

      Usuń
    2. Trafiłem na ten artykuł i zmierzyłem się z podobnym problemem, więc opiszę dla potomnych :)

      W RPi_utils są 3 istotne pliki i w każdej zmienna PIN:

      codesend.cpp - linia: int PIN = 0;
      send.cpp - linia: int PIN = 0;
      RFSniffer.cpp - linia: int PIN = 2;

      Za wysyłanie odpowiedzialny jest PIN 0, za odbiór PIN 2. Nie przekłada się to bezpośrednio na GPIO, tylko musimy użyć mapowania stąd: https://projects.drogon.net/raspberry-pi/wiringpi/pins/

      Można dzięki temu wybrać dowolny PIN z GPIO do obsługi



      Usuń
  7. Witam
    Mam pytanie co do podłączenia odbiornika pod RPi. Znalazełm gdzieś info, że nie powinno się podłączać odbiornika bezpośrendio do pinów GPIO (sygnałowy), bo idzie tam napięcie 5V i mozna uszkodzić RPi (który oczekuje chyba 3,3V). Czy to prawda ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie wiem, podłączałem pod GPIO odbiornik i nadajnik kiedys i bylo ok. Ale nie polecam tego taniego badziewia (chyba, ze do zabawy). Jak ktorys przedmowca juz wspominal, RFlink to jest to :)

      Usuń
  8. Ja też kiedyś jak używałem, to nic się nie stało. Obecnie używam RFLink, bo ten tani moduł zakłócał mi działanie bramy garażowej.

    OdpowiedzUsuń
    Odpowiedzi
    1. czyli jednak... nie warto się siłować z tanimi rozwiązaniami chcąc uzyskać stabilny efekt.

      A więc rekomendujesz to: https://www.nodo-shop.nl/nl/rflink-gateway/127-rflink-arduino-antenne-.html

      Nic chyba tanszego sie nie znajdzie.

      Jestem ciekaw czy będzie kompatybilne z Orange pi. Ale chyba nie powinno być problemu.

      Usuń
    2. RFLink opisałem w tym wpisie na blogu:
      http://projektpimalina.blogspot.com/2016/09/bramka-rflink-do-domoticz.html
      Dla lepszego zasięgu można zamówić Dipol Półfalowy https://www.nodo-shop.nl/nl/antennes/102-antenne-433mhz-3dbi-sma-male-met-magneetvoet.html lub wykonać antenę samodzielnie, w internecie szukać jak wykonać Dipol Półfalowy, trzeba wykonać obliczenia dla 433 Mhz.
      Można zakupić sam moduł RFLink w cenie około 20 Euro:
      https://www.nodo-shop.nl/nl/rflink-gateway/148-rflink-gateway-componenten.html
      Arduino Mega można kupić np. na Allegro za 46 zł tylko nie może być na CH340 albo w sklepie Telmal:
      https://telmal.com/pl/p/Klon-Arduino-MEGA2560-R3-Atmel-ATMega2560-AVR-USB-/1023
      Ma to być wersja Arduino Mega 2560 R3

      Usuń
    3. duża jest różnica pomiędzy anteną z zestawu a dipolem?
      Bo aktualnie jest przecena i za 200zł cały zestaw jest z oryginalnym arduino( o ile to robi różnicę jakąkolwiek)

      Usuń
    4. Ja ma standardową antenę i nie narzekam na zły zasięg, niektórym jednak ona nie wystarcza wtedy można dokupić lub zrobić sobie antenę na 433 Mhz. Arduino nie musi być oryginalne, wystarczy klon, zresztą nie wiem, czy na stronie sklepu nodo shop jest oryginał Arduino, ważne, aby nie była na Ch340.

      Usuń
  9. Gdyby ktoś miał problem z poleceniem make

    ściągamy ten pakiet git-em zamiast podlinkowanego w artykule

    git clone --recursive git://github.com/ninjablocks/433Utils.git

    OdpowiedzUsuń
    Odpowiedzi
    1. mi ta metoda nie zadzialala, ale znalazlem kopie git'a na ktorej ten blad nie pojawia sie

      git clone --recursive git://github.com/rotv/433Utils.git

      Usuń
  10. Gdy komuś nie działa mimo wszystko, najprawdopodobniej chodzi o "pulse lenght". W tej bibliotece jest to pomijane a to ważna rzecz. Jest to kolejny parametr do sterowania odbiornikami. Polecam podłączyć odbiornik do arduino i zbadać sygnał dokładniej.
    http://www.instructables.com/id/Arduino-433Mhz-Wireless-Communication-Rc-Switch/?ALLSTEPS

    Tutaj jest więcej o RC Switch. Z przykładów wybieramy "advanced receiver demo" czy coś takiego i w serial monitor powinno nam wyskoczyć to samo co w raspberry lecz z dodatkowymi parametrami. Pulse lenght uwzględniamy w pliku konfiguracyjnym codesend.

    OdpowiedzUsuń
  11. Witam

    postanowiłem posterować gniazdkami zdalnie

    mam gniazdka 433 Mhz

    [url]http://centrumelektroniki.pl/Gniazdka_sieciowe_wewnetrzne_sterowane_pilotem_Maclean_Energy_MCE07_4szt_programowalne_bateria_do_pilota,p56235.html[/url]

    w domu dziła to bez problemu

    do tego dokupiłem do maliny nadajnik i odbiornik 433

    [url]http://allegro.pl/modul-nadajnik-odbiornik-433mhz-rf-arm-avr-arduino-i5603552106.html?snapshot=MjAxNy0wMS0xMlQxMTo1ODowNFo7YnV5ZXI7ZTBiZTA3ZTM5YjQzNzEyODVlNjZiMTRjZTRjZWFmOGNhOWRlODE2YWI2ZGM5MWE0MWU1ZjAzZDJjM2ZlMzEwMw==[/url]


    Wszytko podłączone do maliny

    ( instrukcja )

    [url]http://projektpimalina.blogspot.com/2016/05/sterowanie-gniazdkami-433-mhz.html[/url]


    I niestetety sniffer nie chce odbierać sygnału z pilota

    I nie wiem jak do tego podejść

    Sprawdzałem czy fizycznie nadajnik i odbiornik działa - odpowiem tak
    sprawdzałem na dwóch terminalach jednym nadawałem to drugi odbierał sygnały,

    NIe wiem gdzie może być problem.

    Zastanawiam się na zabezpieczeniami w samej transmisji

    ...•24 bitowy kod transmisji wykorzystujący sumy kontrolne CRC, prawdopodobieństwo powtórzenia 1 do 16777216....



    Jakieś pomysły ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Też mam taki sam problem. Poradziłeś sobie jakoś z tym ?

      Usuń
    2. Udało sie rozwiązać?

      Usuń
    3. komuś się udało bo mi też nie czyta kodów z 2 pilotów jak wysyłam z rpi w jednym terminalu polecenie sudo ./codesend 4212049 to w sniferze odczytuje. Na pilotach jak naciskam przyciski to cisza a urządzenia działają

      Usuń
  12. Witam . jak w taki sposób zrobić żeby załączał się jakiś adres http po kliknieciu wł/wył?
    mam lan kontroler(http://www.tinycontrol.pl/tinycontrol/lan/lan_kontroler.php) i chciałbym za pomocą domoticza sterować przekaznikiami , ale nie działa mi to tak. ale gdy w przeglądarce wpisuje http://192.168.1.25/outs.cgi?out5=0 i enter to mi działa ale w domoticzu tego nie robi (strona 22 - http://www.tinycontrol.pl/files/docs/LanKontroler/instrukcja_LAN_Controller_V20_firm_v_313+209_LANKONT-002_PL.pdf )

    OdpowiedzUsuń
    Odpowiedzi
    1. poprawka, powyższe już mi działa, teraz kwestia odczytu z czujników ... ??? jak to ugryźć ? wie ktoś ?

      Usuń
    2. https://github.com/kofec/domoticz-tinycontrol

      Usuń
  13. Witam

    mam problem z wywolaniem codesend z Domoticz. Z linii komend z sudo działa - natomiast wywołanie z Domoticz nie daje efektu - czy ma to coś wspólnego z tym że codesend wymaga roota? Prosze o wskazówki. Pozdarawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Miałem taką samą sytuację, problem rozwiązało dopisanie dodatkowego "/" po script. Czyli z Domoticza script://home/pi ... - nie działa, natomiast script:///home/pi ... - działa.

      Usuń
  14. Witam,
    a czy jest jakiś sposób żeby Raspberry reagowało na wciśnięcie przycisku na pilocie? kod już z czytałem. Chciałbym cały czas nasłuchiwać i jak się pojawi sygnał to żeby arduino wysłało do RPI sygnał że wciśniety / mysensor?

    OdpowiedzUsuń
  15. panowie mam pewien problem z moimi gniazdkami 433 mianowicie z czytując kody z pilota za każdym naciśnięciem przycisku pojawia sie inny kod
    Received 13438844
    Received 13560652
    Received 13309500
    Received 12627644

    przy kolejnych kliknięciach tego samego przycisku kody sie powtarzają co czwarty. wybrałem jeden z kodów do konfiguracji przycisku w Domowiczu ale gniazdko nie reaguje jak myślicie gdzie szukać przyczyny

    OdpowiedzUsuń
    Odpowiedzi
    1. popularna firma w lidlu Silwer Crest.
      https://zapodaj.net/d450be6992876.jpg.html
      https://zapodaj.net/71ecc4166b746.jpg.html
      IMG_20181107_070656.jpg
      IMG_20181107_070707.jpg

      Usuń
    2. Jak tak jest, to raczej nie da się nic zrobić, powinien być jeden kod.

      Usuń
  16. Podpowiedź jakby komuś nie działało z Kemotem i RPi: zamiast ./codesend xxxxx
    warto wywołać z trzema argumentami:
    ./codesend xxxxx 0 200
    (trzeci argument to długośc sygnału)
    Mi dzięki temu działa

    OdpowiedzUsuń
  17. Super, dzięki za wskazówki. Podłączyłem swoje gniazdka :)

    OdpowiedzUsuń
  18. Czy mógłbym użyć tego do taśm RGB Led na 433MHz?

    OdpowiedzUsuń
  19. Siema,
    RFSniffer działa mi prawidłowo, normalnie odczytuję kody z pilota. Natomiast codesend nie działa. Mam ustawiony PIN = 0 w kodzie i DATA podłączone do GPIO17. Sprawdziłem woltomierzem, czy GPIO17 działa i wystawia 0 oraz 1 na tym pinie - działa. Nie mam już pomysłu, co jest nie tak. Kupiłem nawet nowy nadajnik, ale dalej to samo. Na RPi3B działało zawsze, a na RPi4B nie działa.

    OdpowiedzUsuń