Howto: 433mhz verzenden en ontvangen op raspberry pi

Ik heb een kleine howto gemaakt hoe je met je raspberry pi je draadloze (433mhz) schakelaars (bijv klik aan klik uit, maar andere goedkopere merken werken prima) kan aansturen. De kosten hiervoor zijn ongeveer 2 tot 7 euro incl. verzendkosten, beetje afhankelijk hoe lang je wil wachten op je bestelling.

Ik heb al enige tijd een raspberry pi 2, gebruikt heb voornamelijk als mediacenter (kodi) en in het verleden ook nog wel eens al printserver of om oude nintendo rommetjes op te spelen.

Gebruik ook al lange tijd een aantal van die goedkope (namaak) klik aan/klik uit stopcontact schakelaar. Het leek me wel leuk om m’n lampen ook vanaf m’n raspberry pi en daarmee ook vanaf m’n smartphone te schakelen.

Na wat research vond ik verschillende blogs/tutorials die hier over gingen, waaronder deze uit 2013 en deze uit 2015.  Vooral de tweede op het domoticz forum heb ik gebruikt. Hij was niet erg overzichtelijk en compleet vandaar dat ik deze HowTo heb gemaakt.

Oke, wat heb je nodig:

  • Raspberry pi (bij versie 1 moet je even de pinout opzoeken die is anders. Voor 2 en 3 zijn ze hetzelfde als hieronder), linux met SSH toegang. (ik ben zelf met een OSMC  image begonnen omdat ik de RP gebruik als mediacenter) (ali express 40 euro)
  • Klik aan / klik uit schakelaars en afstandsbediening, voor zover ik weet werken de meeste merken wel. Ze liggen vaak voor paar euro bij de Action.
  • 433 mhz reciever/transmitter( heb zelf deze gekocht voor 3 euro, je kunt ze onder euro vinden met antennes via ebay/ali of hier dan heb je het de volgende dag 433Mhz RF transmitter en receiver link kit mocht je hem hier bestellen bestel dan gelijk even 2 antennes. Deze moet je dan wel even solderen)
  • Kabels, in principe kan je elke kabel gebruiken maar je zult dan moeten solderen. Het is gemakkelijker om female to female kabels zoals deze te nemen, dan hoef je niks te solderen. (ali express 40st voor 75 cent)

Hoe gaan we het aansluiten:

De transmitter heeft 3 pinnen en de receiver heeft er 4, bij de receiver heb je 2 data pinnen deze doen precies hetzelfde, je hoeft dus ook maar 1 van de 2 pinnen te gebruiken.

Mocht je nou een ander kitje dan die ik gebruik hebben kijk dan altijd even wat de pin-out van het onderdeel is. Hetzelfde geld als je een raspberry pi 1 hebt.

We gaan het als volgt aansluiten:

pin-outs Raspberry pi 433mhz

Raspberry pi 433mhz

Nu we alles goed hebben aangesloten kunnen we de RP weer aanzetten. Maak vervolgens met SSH verbinding met je raspberry.

Software:

We gaan software installeren, om te beginnen met git-core:

sudo apt-get install git-core

wiringPi:

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

433Utils

git clone –recursive git://github.com/ninjablocks/433Utils.git
cd 433Utils/RPi_utils

Wanneer je dezelfde pinnen als beschreven hebt gebruikt kan je doorgaan, mocht je andere pinnen gebruikt hebben dan zul je die in *.ccp bestanden moeten aanpassen. Er word hier gebruik gemaakt van wiringPi dus je moet de pin-nummers gebruiken die overeen komen met wiringPi (kijk hier voor meer informatie).

make all

Je kunt, als alles goed gegaan is, nu gebruik maken van 433Utils, nu kunnen we de codes die verstuurd worden vanuit de afstandbediening lezen

sudo ./RFSniffer

Nu is de RFSniffer gestart, als je nu een knop op je afstandsbediening drukt verschijnt de code. Let op dat je wel dichtbij (ik moest echt binnen 0,5 meter zitten) moet zijn voordat hij de code goed ontvangt. Je kunt nu de codes voor het aan en uitzetten opslaan. Je kunt stoppen door ctr + c te drukken.

We kunnen codes vanaf de RP sturen door het volgende commando te gebruiken:

sudo ./codesend xxxxxx

Waarbij de xxxxx natuurlijk de code is die je wilt versturen. Als het goed is kun je nu je schakelaars bedienen vanaf je RP! Het kan zijn dat het bereik niet zo goed is, ik heb zelf een extra antenne aan m’n transmitter gezet (0,50 hier)

Je zou nu bijv. Domoticz kunnen installeren om die te gebruiken om bijv bij zonsondergang de lampen automatisch aan te laten gaan of om via de app van domoticz de lampen vanaf je smartphone te schakelen. Om wat zekerder te zijn van het schakelen heb ik een apart shell script geschreven die een bepaald aantal keren de code versturen, omdat de codes soms niet gepakt worden.

verzenden.sh
#!/bin/bash
for (( i=1; i <= $2; i++ ))
do
sudo //home/root/433Utils/RPi_utils/codesend $1
done

Je kunt dan via ./verzenden.sh xxxxx waarbij 3 natuurlijk het aantal keren is dat het de code verstuurd moet worden. Je zou ook het codesend script kunnen aanpassen maar had daar niet zo’n zin in ;-).

Hoe je Domoticz installeerd kun je hier vinden. Na de installatie kun je onder instellingen -> hardware nieuwe hardware toevoegen. Je moet dan kiezen voor type hardware -> dummy.

Je kunt daarna switches handmatig aanmaken, je kiest hier dan voor de dummy hardware, schakelaar type on/off, type x10, waardes van de rest maken niet zoveel uit. Kan zijn dat deze uniek moeten zijn per schakelaar. Dan kun je gewoon wat invullen. Je slaat de schakelaar dan op, hierna kun je de schakelaar bewerken. Je krijgt dan meer opties, waaronder actie aan en actie uit. Je kunt hier nu een verwijzing naar het script maken, bij mij is dit bijv.:  script:///home/root/433Utils/RPi_utils/verzenden.sh  12345 3 (let op dat er na script: 3x een / staat).

Als er vraag naar is kan ik eventueel een uitgebreidere howto schrijven hoe je domoticz in moet stellen.

UPDATE:

Ik had last dat het signaal wat zwak was en de apparaten in de buurt moeten zijn. Ik heb de transmitter nu aangesloten op 12V (vergeet niet de aarde van je 12V adapter te verbinden met de aarde van je Raspberry).

Ik zie een aantal vragen hoe ik dit heb aangesloten. Ik heb een 12v adapter gebruikt die ik nog over had van een ander apparaat die de prullenbak in was gegaan. De ground heb ik verbonden met zowel een ground pin van de raspberry pi als met de ground van de zender, vervolgens de 12 volt + (vcc) verbonden met vcc op de zender.

Ik heb de raspberry nu in mn meterkast hangen waarvanuit hij alle apparaten op de begane grond en de eerste verdieping kan schakelen.

UPDATE 2:

De schakelaars waren toe aan vervanging, een goedkoop setje bij de Action gekocht (SF-501-R), deze afstandsbediening is alleen niet te sniffen. Op de volgend website heb ik meer informatie gevonden hierover: http://luberth.com/Bangert_30_1619GJ_Andijk/?Raspberry_Pi_433Mhz

41 gedachten over “Howto: 433mhz verzenden en ontvangen op raspberry pi

  1. Super bedankt voor deze uitleg!
    Was al een paar weekenden bezig om dit aan de praat te krijgen. Andere blogs gelezen met andere methodes.. Maar zoals hier beschreven eindelijk succes!
    Misschien nog iets wat het vermelden waard is: Je kunt bij zowel de zender als de ontvanger er een antenne erop solderen. Ik heb hiervoor 1 draad/ader van een netwerk-kabel gebruikt. Deze moet volgens internet 17.2 centimeter lang zijn. Daarmee krijg je een beter bereik.

    Like

  2. Bedankt voor de duidelijke handleiding. Ik heb gelijk de transmitter en receiver besteld. Zodra ze morgen (ja ik kon niet wachten 🙂 ) binnen zijn ga ik ermee aan de slag. Uiteindelijk is mijn doel om ze met Domoticz aan te sturen. Mocht ik er niet uitkomen dan laat ik hier wel een berichtje achter 😉

    Like

      1. Ik krijg WiringPi niet geinstalleerd. Ik krijg de volgende melding:

        pi@raspberrypi:~ $ git clone git://git.drogon.net/wiringPi
        Cloning into ‘wiringPi’…
        fatal: unable to connect to git.drogon.net:
        git.drogon.net: Naam of dienst is niet bekend

        Ik heb op internet geprobeerd te achterhalen waar dit aan ligt maar ik kom er niet achter. Misschien dat jij me verder kunt helpen?

        Like

      2. Laat maar, ik had blijkbaar op een verkeerde manier een statisch ip adres aangemaakt waarmee wel verbinding werkt gemaakt met de router maar niet met internet. Nu ik de instellingen wel goed heb werkt het wel.

        Like

      3. Hoi Klerewlet ik heb het zelfde probleem alleen ik weet niet hoe ik het moet oplossen, kan jij mij daar mee helpen?

        Like

  3. Hey, gebuik nu pimatic en maar vindt dit geen fijn programma.
    zou graag overstappen op domoticz. heb nu zender en ontvanger aangesloten om een arduino nano om ruis te onderdukken dit werkt prima.
    is het noodzakelijk om te werken met RFLink Gateway board directe herkenning te krijgen van je 433 modules, of kan dit ook door direct op een mega aan te sluiten?

    Like

    1. Sorry voor de late reactie, ik heb geen idee of je RFlink gateway moet gebruiken hiervoor. Ik heb zelf de zender/ontvanger rechtstreeks op de RPi aangesloten, maar heb geloof ik wel eens gelezen dat als je de ontvanger altijd “aan” hebt dit veel processor kracht kost van de RPi en je deze beter via de arduino kan laten lopen. Hoop dat het onderhand gelukt is!

      Like

  4. Hallo,

    Heb je project gevonden, ziet er voor mij duidelijk uit.
    Ben begonnen met install OSMC, werkt prima
    Puttty naar device, correct

    In het WiringPi deel gaat ./build fout, foutmelding No such file or directory

    In 433Utils krijg ik de melding git: “recursive”is not a git command, kan hem ook niet vinden met git –help

    Doe ik wat fout of is er intussen veel veranderd

    Dank voor de hulp, John

    Like

  5. Antwoorden gevonden, ./build een directory hoger starten

    Ander syntax is :

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

    Like

  6. Hallo,

    Bedankt voor deze How to. Ik denk dat ik er bijna ben maar ik krijg het niet werkend.
    Ik heb de 433MHz zender en ontvanger met jumperkabels verbonden met pin 11 en 13 RPi 2 B 1.1). In de domoticz.sh opstartfile heb ik onderaan “/usr/local/bin/gpio export 17 out
    /usr/local/bin/gpio export 27 in” toegevoegd.

    Via ebay heb ik een 433mhz zender gekocht waarmee je een andere 433mhz zender kan clonen. Omdat ik op dit moment van testen geen andere zenders heb die ik kan clonen zit ik vast aan de vaste code die de gekochte zender zendt. Met het RFSniffer ontvang ik deze code goed op de ontvanger die aangesloten is op Pin 13.

    In Domoticz heb ik echter problemen om met dit signaal van de zender een schakelaar (dummy) te bedienen.

    Hoe kan ik de zender gebruiken om de ontvanger van pin 13 aan te spreken en vervolgens een schakelaar die reeds is toegevoegd aan Domoticz te schakelen? Ik heb een script toegevoegd maar er gebeurt niets als ik op een knop druk.

    Alvast bedankt!

    Like

    1. Hoi Peter,

      Als ik je goed begrijp wil je graag via een afstandsbediening iets triggeren in Domoticz? Ik ben zelf geen expert op gebied van domoticz maar denk dat je dan een script moeten schrijven die continu je ontvanger monitored of er iets binnen komt. Wanneer hij dan de specifieke code ontvangt kun je een ander scriptje runnen die bijv een schakelaar aan of uit zet. Je zult dan even in de documentatie van domoticz moeten kijken hoe je een schakkelaar triggert. Ik weet dat dit kan de de webomgeving via JSON, heb zelf een aantal esp2866 die via wifi dan iets triggeren.

      Like

  7. Probeer dit nu al een aantal dagen werkend te krijgen met mijn KaKu setje, maar het lukt mij maar niet om met de RFSniffer codes te ontvangen. Ik kan op mijn afstandsbediening drukken wat ik wil maar krijg geen codes. Enig idee hoe dit kan komen? Heb het setje besteld via TinyTronics incl. de antenne’s en alles op dezelfde pinnen aangesloten op mijn RPi 3 als op de afbeelding.

    Bij het ./build command van wiringPi komt wel deze melding voorbij; mogelijk dat dit een oorzaak kan zijn?

    [Compile] mcp23016.c
    wiringPi.c:1247:21: warning: ‘digitalRead8Dummy’ defined but not used [-Wunused-function]
    static unsigned int digitalRead8Dummy (UNU struct wiringPiNodeStruct *node, UNU int UNU pin) { return 0 ; }
    ^
    wiringPi.c:1248:21: warning: ‘digitalWrite8Dummy’ defined but not used [-Wunused-function]
    static void digitalWrite8Dummy (UNU struct wiringPiNodeStruct *node, UNU int pin, UNU int value) { return ; }
    ^

    Like

  8. Dank voor je heldere uitleg! Ik merkte ook dat ze signalen soms niet ontvangen worden, ik heb daarom jouw script geprobeerd. Maar ik krijg daar nog een syntax error op:

    pi@raspberrypi:~/433Utils/RPi_utils $ ./verzenden.sh 12345678 3
    ./verzenden.sh: line 2: ((: i <= : syntax error: operand expected (error token is "<= ")

    nano verzenden.sh
    #!/bin/bash
    for (( i=1; i <= $2; i++ ))
    do
    sudo //home/pi/433Utils/RPi_utils/codesend $1
    done

    Like

  9. Hey allemaal,
    Zo op de een na laatste dag van het jaar nog even aan het stoeien geweest met de uitleg.
    Heb het allemaal zover aan de praat, alleen als ik bij de dummy schakelaar in Domoticz het script (met de 3 ///) heb toegevoegd reageert de schakelaar niet.
    Voer ik ./verzenden.sh xxxx 3 uit in de terminal werkt het wel. Enig idee waar het fout kan gaan?

    Het volledige pad bij de dummy schakelaar is:
    script:///home/root/433Utils/RPi_utils/verzenden.sh xxxxxx 3

    Alvast het beste voor 2018, dat er veel geknutseld mag worden!
    Groet Ron

    Like

    1. Excuses voor de late reactie, ik weet niet of het onderhand gelukt is. Maar ik denk dat het komt doordat domoticz niet de juiste rechten heeft om het bestand uit te voeren. Als je in de logfile van domoticz kijkt, zie je dan de foutmelding?

      Like

  10. Bedankt voor de uitleg. Het zenden en ontvangen van codes lijkt goed te werken. Echter wanneer ik signalen probeer te onderscheppen van mijn KaKu afstandsbediening (set AP3-1500R) of Flamingo Switch-set (van de Action) zie ik niets verschijnen in de sniffer output. Heb je enig idee wat daar de oorzaak van kan zijn? Of werkt dit sowieso niet op deze manier?

    Groet,
    Erik

    Like

    1. Hallo Erik,
      Zelf loop ik ook tegen het probleem aan dat de signalen van mijn Flamingo Switch set niet onderschept lijken te worden door RFSniffer.

      Ik heb getest of de ontvanger het wel doet door een codesend uit te voeren, en die worden netjes weergegeven.

      Heb jij inmiddels al een oplossing gevonden om dit signaal van de Flamingo Switch op te vangen?

      Like

    2. Hoi Erik en Michael,

      Ik ben zelf niet bekend met de Flamingo Switch set (ga uit van Flamingo SF-501),de KaKu afstandbediening zou wel moeten werken. Je moet de afstandsbediening wel echt heel dicht bij je ontvanger houden. Je zou ook nog even hier naar kunnen kijken: https://github.com/sui77/rc-switch/issues/103. Het kan zijn dat je de sniffer op een andere pulselength moet zetten. Als je er echt diep in wil duiken kan je ook ook kijken naar http://abyz.me.uk/rpi/pigpio/piscope.html. Hoop dat het ondertussen al gelukt is!

      Like

    1. Dit zou in theorie wel moeten kunnen, alleen het viel mij op dat het de de raspberry veel resources kost om continu de 433 scanner aan te hebben. Je kan dan beter een andere oplossing met bijv. een arduino waarop de ontvanger is aangesloten die via usb de raspberry laat weten dat er wat ontvangen is. Misschien dat er wel betere oplossingen zijn, ik heb niet zo heel veel ervaring met de ontvanger.

      Like

  11. Hallo Eric,

    alles lijk te lukken op 1 dingetje na krijg deze error:

    dre@dre-desktop:~/wiringPi/433Utils/RPi_utils$ sudo ./RFSniffer

    ./RFSniffer: symbol lookup error: /usr/local/lib/libwiringPi.so: undefined symbol: pthread_create

    Lijkt wel of ik iets mis ?
    alvast bedankt

    Like

  12. pi@raspberrypi:~ $ git clone –recursive git://github.com/ninjablocks/433Utils.git
    fatal: repository ‘–recursive’ does not exist

    wat doe ik fout??

    Like

  13. 433utils werkt nu wel, miste een “-”
    Helaas kan ik geen SF501 codes uitlezen, met verschillende werkende remotes getest.
    Als ik met sudo ./codesend 1123456 stuur, zie ik die keurig terugkomen “Reveived 123456” bij RFSniffer. Hardware en software zijn dus ok.
    Kan ik nog wat bij RFSniffer instellen om de SF501 uit te lezen?

    Like

  14. Hallo, ben beginner maar heb het werkend gekregen. Net als je opmerking zit ik ook met het bereik te worstelen. Hoe sluit je een 12 volt voeding aan en zet de aarde op je raspberry. Heb je hier een schema van? en kan dit geen schade aan je raspberry veroorzaken?

    Like

  15. Hoi allemaal,
    Ik ben net een weekje met een Rasberrypi 3 en een Adafruit TSL2591 sensor aan het stoeien, en met een Python scriptje al wat data kunnen uitlezen.

    De volgende stappen zijn de 433Mhz verbinding en een RGBW dimmer aansturen.

    Nu kom ik op verschillende site zoals TinyTronics allerlei 433Mhz rtx modules tegen, maar het is me niet duidelijk wat een goeie keuze is. Heeft iemand tips?

    Alvast dank voor de reactie.
    Groet,
    Gerard

    Like

  16. Ik heb toen dit gelezen op tweakers lampen schakelen met R. Pi Zijn instellingen van stap tot stap uitgevoerd maar bij deze stap. Gaat het fout Stap 3 – Installeer het tooltje
    Voer deze code uit:

    code:
    1
    2
    3
    4
    cd examples
    wget -O lights.zip https://www.dropbox.com/s/nxdrkuk94w9fpqo/lights.zip?dl=1
    unzip lights.zip
    cd
    Het geeft een error wanneer dit in de terminal wordt ingevoerd ! Error Dropbox
    Heb jij een werkend script
    Graag wat hulp

    Like

  17. Hoi,

    Ik krijg het niet goed geinstalleerd. De ./build ging mis, Ik zag ergens in de reacties hieronder dat je een directory hoger moet zitten en dat het dan wel lukt. DIt heb ik gedaan en dat ging goed. Vervolgens heb ik vanuit die directory waar ik in zat dus de commando: git clone –recursive git://github.com/ninjablocks/433Utils.git
    cd 433Utils/RPi_utils gedaan. Ook deze ging mis, maar door –recursive te gebruiken ging het goed. Vervolgens doe ik dan “make all”, maar krijg de volgende fout:
    make: *** No rule to make target ‘all’. Stop.

    Wat doe ik fout?

    Like

  18. Hallo

    je voorbeeld zet 5v op reciever
    data word dan 5v??? en kan pi input beschadigen??? 3.3v tollerant

    ik wil data ontvangen over langere afstand
    en ik krijg het niet voor elkaar met deze dollarprintjes met 174mm antenne
    nog geen halve meter,
    veel noise zou ik zeggen als ik een weerstand/led op data pin zet naar ground
    blinkt led continu ook zonder wat te zenden

    weet iemand betere lange afstand betaalbare 433mhz reciever
    of oplossingen?
    graag een reactie

    Like

      1. maybe even better
        9v battery powered 7805 reciever on a distance from the raspberry pi
        data connected via wire gets some noise again
        maybe put an optocoupler in the data connection to sepperate it galvanic

        verry nice
        got the old action impulse remote wall sockets
        controlled from raspberry pi domoticz
        working now, big thank you

        Like

  19. Hoi,

    Mag ik vragen welke 12v adapter heb je gebruikt…en is ampère hier nog van belang?
    Heb je misschien ook een link of schema hoe de adapter aan te sluiten op de transmitter en pi?

    Like

Geef een reactie

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit /  Bijwerken )

Google photo

Je reageert onder je Google account. Log uit /  Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit /  Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit /  Bijwerken )

Verbinden met %s