Gniazdka 433MHz w systemie Domoticz

wpis w: Domoticz | 24

W tym wpisie będę chciał przybliżyć sposób podłączenia nadajnika i odbiornika działającego na częstotliwości 433Mhz do sterowania min. zewnętrznymi gniazdkami (w moim przypadku będą to gniazdka firmy KEMOT model URZ1229). Są sprawdzone i na pewno działają.

Gniazdka KEMOT
Gniazdka KEMOT

 

Prawdopodobnie poradnik będzie ten działał również z innymi gniazdkami działającymi w tej częstotliwości ale gwarancji nie daję:)

 

Oprócz gniazdek potrzebne nam będą:

Nadajnik i odbiornik 433MHz
Nadajnik i odbiornik 433MHz

 

Przewody żeńsko-żeńskie
Przewody żeńsko-żeńskie

 

  • Lutownica do przylutowania anteny do nadajnika.
lutownica-40w_snapseed
Lutownica 40W

 

Następnym krokiem będzie zainstalowanie bibliotek WiringPi (o ile wcześniej już ich nie zainstalowaliście). Aby to zrobić:

W linii komend wpisujemy kolejno:

Jeżeli nie mamy zainstalowanego GIT:

  • sudo apt-get install git-core

Aktualizujemy Nasze Raspberry:

  • sudo apt-get update
  • sudo apt-get upgrade

Klonujemy bibliotekę przez polecenie:

  • git clone git://git.drogon.net/wiringPi
  • cd wiringPi
  • git pull origin
  • sudo ./build

Biblioteki WiringPi powinny być w tym momencie zainstalowane

 

Następnie musimy podłączyć Nasz odbiornik Raspberry Pi:

Odbiornik RF 433Mhz
Odbiornik RF 433Mhz

 

Podłączamy:

  • VCC – do 5V Raspberry Pi
  • GND – do GND Raspberry Pi
  • DATA – do wiringPI 2 (czyli GPIO02) – w zależności od wersji Raspberry

Rozpiska GPIO w Wiring Pi dostępna jest pod tym adresem.

 

Kolejnym krokiem będzie podłączenie nadajnika do Raspberry Pi:

Nadajnik RF 433MHz
Nadajnik RF 433MHz

 

Podłączamy:

  • VCC – do 5V Raspberry Pi
  • GND – do GND Raspberry Pi
  • DATA – wiringPi 0 (czyli GPIO 0, BCM GPIO 17) – w zależności od wersji Raspberry

Do nadajnika za pomocą lutownicy i odrobiny cyny należy przylutować w zaznaczonym na czerwono miejscu antenę z drutu (dokładnie 17 cm zwinięte np. na ołówku w sprężynę). Ewentualnie możemy zakupić gotową (zdjęcie poniżej).

Sprężyna
Sprężyna

 

Kolejnym krokiem jest zainstalowanie odpowiednik bibliotek:

W linii komend poprzez SSH wpisujemy kolejno:

  • git clone --recursive git://github.com/ninjablocks/433Utils.git
  • cd 433Utils/RPi_utils
  • make all

W tym momencie wszystko powinno być poprawnie zainstalowane.

Ważne by podłączyć nadajnik i odbiornik do tych konkretnych pinów DATA z tego poradnika. Jeżeli PINy te będą zajęte można spróbować podłączyć je do innych ale najpierw należy w katalogu 433Utils/RPi_utils zmodyfikować plik codesend.cpp (nadajnik) i RFSniffer.cpp (odbiornik). Robimy to za pomocą komendy:

  • nano codesend.cpp
  • nano RFSniffer.cpp

W plikach tych należy zmienić linię:

  • int PIN = 0;

Zamiast wartości 0 w przypadku nadajnika i 2 w przypadku odbiornika należy wpisać odpowiednie PINy z Raspberry mając na uwadze oznaczenia PINów z WiringPi.

Po tym zabiegu raz jeszcze należy wywołać polecenie:

  • make all

Jeżeli wszystko zostało zainstalowane i podłączone poprawnie przygotowujemy Naszego pilota do gniazdek KEMOT.

Następnie będąc nadal w katalogu 433Utils/RPi_utils

  • sudo ./RFSniffer

Następnie na Naszym pilocie wciskamy kolejne przyciski i spisujemy kody które się tam powinny wyświetlać.

Powinno to wyglądać następująco:

 

Starting Up..

Received 89923

Received 89935

Received 83745

Received 89233

Received 82345

 

Kody te oczywiście będą inne.

Należy spisać kody dla Włączenia i Wyłączenia każdej z grup.

Następnie trzeba sprawdzić, które kody pasują do którego z gniazdek.

W tym momencie możemy odłączyć Nasz odbiornik bo do niczego już nie będzie Nam potrzebny (chyba, że będziecie dodać kolejne gniazdka lub inne urządzenia działające w tej częstotliwości)

 

Dla sprawdzenia czy wszystko działa spisujemy sobie kod Wł/Wył. do konkretnego gniazdka (które wpinamy do sieci elektrycznej):

W linii komend wpisujemy:

  • sudo ./codesend 89923

Oczywiście zamiast tych cyfr wpisujemy te, które wcześniej zaczytaliśmy za pomocą odbiornika) i sprawdzamy czy gniazdka reagują.

 

W tym momencie pozostaje Nam już tylko dodanie wirtualnego przełącznika do Domoticz (o czym pisałem w poprzednich artykułach)

Gdy już mamy utworzony wirtualny Przełącznik wchodzimy w jego Edycję i wpisujemy odnośnik do Naszego pliku codesend w pozycji Włącz i Wyłącz akcję pamiętając o wpisaniu odpowiednich, zaczytanych wcześniej przez odbiornik kodów.

 

Edycja Przełącznika
Edycja Przełącznika

 

W Waszym przypadku ścieżka dostępu może być inna. Wszystko zależy od tego, w jakim katalogu zainstalowaliście biblioteki 433Utils.

Zmieniamy ikoną na Wall Socket.

W tym momencie powinniśmy mieć możliwość sterowania Wł/Wył. gniazdka za pomocą systemu Domoticz.

24 Odpowiedzi

  1. Jaki zasieg z taka antenka?

    • Łukasz Kostrzewa

      Witam Serdecznie
      Szczerze powiem, że nie wiem. Mi w mieszkaniu 62m2 się sprawdza aczkolwiek czasami zdarza się, iż sygnał nie dochodzi do gniazdek (zwykłe radio bardzo zakłóca sygnał).
      Pozdrawiam

  2. Witam,
    czy taką metodę (odczytanie pilota i implementacja jego sygnałów sterujących w DOmoticzu) można zastosować dla bram garażowych , np. Nice Spido? Pracuje to rozwiązanie na 433MHz, więc „na oko” to taka sama technologia.
    pozdrawiam

    • Łukasz Kostrzewa

      Witam Serdecznie
      Powiem szczerze, że nie wiem ale wydaje mi się, iż nie powinno być z tym problemu skoro działają na 433MHz.
      Proszę spróbować…wydaje mi się, że powinno się bez problemu udać.
      Pozdrawiam

  3. Dam znać, na razie czekam na zestaw nadawczo-odbiorczy 🙂
    Walczę jednak z innym tematem (Mi-Light), o czym piszę w innym pana wątku i proszę o pomoc.

  4. Cześć,
    super poradniki 🙂
    Potrzebuje pomocy, ponieważ wszystko robię jak opisałeś. Dochodzę do momentu uruchomienia sudo ./RFSniffer i nic się nie dzieje. Nic nie pisze w konsoli nawet jak wciskam przyciski na pilocie.
    Jakieś pomysły co źle robie?

    • Łukasz Kostrzewa

      Witam
      Bardzo dziękuję za miłe słowa:)
      Jak wpiszesz sudo ./RFSniffer to wyświetla się komunikat: Starting Up… czy nic się nie dzieje?
      Wpisałeś – „Zamiast wartości 0 w przypadku nadajnika i 2 w przypadku odbiornika należy wpisać odpowiednie PINy z Raspberry mając na uwadze oznaczenia PINów z WiringPi”
      I po tym zabiegu wywołałeś polecenie „make all”?
      Ciężko mi kurcze powiedzieć co jest nie tak skoro nie mam żadnej informacji o błędzie 🙁
      Pozdrawiam i czekam na info

    • miałem to samo…
      zmiana w kodzie

      int pulseLength = 0;
      na
      int pulseLength = 207;

      i u mnie zaczyło działać

      • Łukasz Kostrzewa

        Witam
        Dzięki za podpowiedź Fernando…
        Zbyt dawno robiłem to u siebie i nie wszystko pamiętam ale…wiem, że faktycznie było coś z tą długością sygnału.
        Można wpisać komendę sudo ./RFSniffer 207 by odpalić RFSniffera z długością 207. Można próbować różne wartości.
        Kolejnym rozwiązaniem może być dodanie do pliku RfSniffer.cpp linijki —> pullUpDnControl(PIN, PUD_OFF);
        Później raz jeszcze trzeba wpisać komendę –> make all
        Marku bardzo bym prosił o info czy pomogło

  5. Witam,
    Zakupiłem nadajnik i odbiornik, podłączyłem wszystko prawidłowo, zainstalowałem wszystko również prawidłowo (sprawdzałem to z 5 razy).
    Podczas testu pilota sniffer nie zbiera żadnych kodów (test na dwóch systemach, Home Easy firmy Elro oraz Smart Living firmy ORNO).
    Zanim kupię kolejny odbiornik chcę ewentualnie poszukać ewentualnych źródeł błędów.
    Przychodzi Panu może do głowy gdzie szukać powodu braku sczytywania kodów?

    Pozdrawiam

    • Łukasz Kostrzewa

      Witam
      Robiłem to bardzo dawno temu i ciężko mi teraz powiedzieć co może być nie tak…
      Proszę spróbować porad, które są w komentarzach powyżej. Podejrzewam, że może być problem z pulseLength o czym pisał Fernando. Prosiłbym o sprawdzenie.
      Czasami też może być uszkodzony odbiornik, który Pan zakupił (ja jak robiłem swój projekt miałem aż 3).
      Jest jeszcze możliwość zaczytania kodów z pilota za pomocą Arduino Nano (też próbowałem i działa) o czym postaram się napisać w przyszłych postach.
      Pozdrawiam i czekam na info czy wpisanie innego pulseLenght zadziałało. Ewentualnie proszę spróbować pullUpDnControl(PIN, PUD_OFF); o czym pisałem powyżej.

      • Kłaniam,
        więc mamy połowiczny sukces 🙂 Przeinstalowałem RPI i wszystko zaczęło działać, być może podczas instalacji coś popsułem. Generalnie obecnie kody czyta mi prawidłowo. Kolejny problem w tym, że chcąc nadać ten kod sudo ./codesend 00000000 z wcześniej odczytanym kodem przełączniki nie odczytują tego. Informacyjnie – dysponuję systemem Home Easy firmy Elro.
        Nadając kod zostaje on normalnie odczytany przez odbiornik w Rpi, natomiast sama przełącznik cisza… 🙁

        • Łukasz Kostrzewa

          Witam…
          Fajnie, że połowa już za Nami:)
          Rozumiem, że kodu Pan ładnie zaczytał. Następnie odłączył Pan odbiornik od RPi i podłączył Nadajnik (albo miał Pan podłączone jedno i drugie urządzenie do płytki stykowej od samego początku?)
          Rozumiem, że int PIN =… ma Pan nastawiony zgodnie z Pinem w RPi?
          Antenę ma Pan przylutowaną i czy jest ona o odpowiedniej długości (najlepiej jakby miała 17 cm i była zwinięta (można to zrobić np. na długopisie) – proszę pokombinować z tą anteną..-w moim przypadku to miało znaczenie.
          Proszę o info czy zrobił Pan wszystko o czym napisałem?
          Pozdrawiam

    • Łukasz Kostrzewa

      Witam raz jeszcze
      Jak nie będzie za żadne skarby chciało działać na Raspberry i zanim sam o tym napiszę tu jest piękny poradnik jak to zrobić na Arduino Nano –> http://www.princetronics.com/how-to-read-433-mhz-codes-w-arduino-433-mhz-receiver/
      Pozdrawiam

  6. Witam, odczytałem kody za pomocą Arduino, malina potrafi wysłać podany kod, ale jak zmienić protokół? Pilot wysyła kod z protokołem 6 a malina z protokołem 1. Jest jakieś rozwiązanie?

    • Łukasz Kostrzewa

      Witam Serdecznie
      Powiem szczerze, że mnie Pan zaskoczył.
      Trzeba pewnie zmodyfikować plik RCSwitch.cpp
      W pewnym miejscy w tym pliku jest coś takiego jak –> Sets the protocol to send i powyżej this->setProtocol(1);

      Proszę pokombinować ze zmianą protokołu w tym miejscu i dać ewentualnie znać czy pomogło.
      Pozdrawiam

  7. Niestety nic nie mogę wymyślić. Przy użyciu komendy sudo ./codesend 123456 x, zamiast x podaje numer protokolu. Jak podam 1 to wysyła 1, jak 2 to 2, jak 3 to 5, jak 4 to nic nie wysyła, jak 5 to 2, jak podam 6 to wysyła 1. Nie wiem o co chodzi.

    • Łukasz Kostrzewa

      Witam
      Kurcze…
      A może warto dopisać do kodu codesend.cpp linijkę:
      mySwitch.setProtocol(6);
      Trzeba po edycji wywołać raz jeszcze –> make all
      Pozdrawiam

  8. Niestety to samo.

    • Łukasz Kostrzewa

      🙁
      Niestety nie mam pomysłu.
      Pozdrawiam i jeżeli się Panu uda bardzo bym prosił o info jak Pan tego dokonał

      • Mam dokładnie ten sam problem 🙁

        • Łukasz Kostrzewa

          Witam
          Używa Pan tych samych gniazdek co w poradniku?
          PS: Próbuje wymyślić jak obejść problem protokołu ale nie jest łatwo 🙁
          Pozdrawiam

Zostaw Komentarz

*