Native RF zenden en ontvangen met pimatic

Door Koffie op vrijdag 7 november 2014 21:46 - Reacties (43)
Categorie: -, Views: 19.473

Na mijn vorige blog over pimatic is er al weer een hoop gebeurt.
Inmiddels is er een eigen topic op het forum: het grote pimatic topic - home domotica met je Raspberry Pi en beik volledig overgestapt van zenden en ontvangen via pilight naar pimatic.

Het is misschien iets moeilijker dan gewoon een zender en ontvanger aan je pi knopen, maar het levert een hoop voordelen op. Zo is mijn CPU verbruik gezakt van gemiddeld 50% naar gemiddeld 5% :Y)

Wat heb ik allemaal nodig :?
Eigenlijk niet veel. Om te beginnen een goed setje RF zender en ontvanger (liefst type "433MHz Superheterodyne") en een Arduino Nano clone. That's it.
Een nano clone is al voor een dollar of 4 te koop op ebay, dus dat zijn de kosten niet.

Hoe sluit ik het allemaal aan :?
Het makkelijkste is om de zender, ontvanger en arduino op een breadboard te plaatsen, en deze vervolgens met jumperwires met elkaar te verbinden.
Hoewel je verschillende pinnen van je arduino kunt gebruiken, is het 't makkelijkst om de standaard te volgen:

http://zooi.oostindie.com/images/862pins_nano.png

Je ontvanger heeft als het goed is 4 pinnen: GND, DATA, DER, VCC
Wij hebben alleen de GND, DATA en VCC nodig. Sluit de GND aan op pin 29 GND, sluit DATA aan op pin 5 D2 en de VCC op pin 27 +5V

Je zender heeft er ook 4 : VCC, DATA, GND, ANT
Sluit de VCC aan op pin 27 +5V, de DATA op pin 7 D4 en de GND op png 29 GND.
Eventueel kun je een jumperwire op de ANT plaatsen.

Sluit vervolgens de nano aan op de USB port van je Raspberry Pi, dubbelcheck dat deze ttyUSB0 toegewezen heeft gekregen:
pi@raspberrypi ~ $ cd /dev
pi@raspberrypi /dev $ ls -l ttyUSB?
crw-rw---T 1 root dialout 188, 0 Nov  7 20:26 ttyUSB0
pi@raspberrypi /dev $


Indien je geen andere gekke dingen aan je Pi hebt hangen zal deze gewoon ttyUSB0 zijn.

Software compileren en naar je Arduino Nano uploaded
Voordat we verder kunnen, hebben we arduino-mk nodig: sudo apt-get install arduino-core avr-libc avrdude binutils-avr gcc-avr libconfig-yaml-perl libftdi1 libyaml-perl screen python-serial.
Na installatie kun je de sketch file downloden: git clone --recursive https://github.com/pimatic/homeduino.git

Bewerk nu met nano het Makefile bestand in de homeduino folder. Er van uitgaande dat je een Arduino Nano Clone op basis van een ATmega328 hebt, kun je de BOARD_TAG gewoon op nano328 laten staan.
Let even goed op de setting MONIOR_PORT deze staat default op /dev/ttyUSB1 terwijl de kans dus groot is dat deze op /dev/ttyUSB0 moet staan.
Sla je wijzigingen op en run het command make upload.

Pimatic configuratie aanpassen
Je hebt nu nog de volgende aanpassingen nodig in je config.json :

code:
1
2
3
4
5
6
7
8
9
10
{
  "plugin": "homeduino",
  "driver": "serialport",
  "driverOptions": {
    "serialDevice": "/dev/ttyUSB0",
    "baudrate": 115200
  },
  "receiverPin": 0,
  "transmitterPin": 4
}



Let hier weer op de ttyUSB0 ;)
De receiverpin en transmitterpin zijn gelijk aan de pinnen van deze handleiding.
Als je nu ook nog debug aan zet in je config, zul je in de logfile alle receives voorbij zien komen:

code:
1
2
3
"settings": {
    "debug": true,
    "logLevel": "debug",



Sla je wijzigingen op en start pimatic. Bekijk nu je logstream door middel van tail -f pimatic-daemon.log als je nu bijvoorbeeld een KaKu commando verstuurd zul je deze voorbij zien komen:
20:42:47.990 [pimatic-homeduino] debug: switch1:  { id: 9565958, all: false, state: true, unit: 1 }
20:42:48.022 [pimatic-homeduino] debug: contact1:  { id: 9565958, all: false, state: true, unit: 1 }
20:42:48.603 [pimatic-homeduino] debug: data: "RF receive 270 2716 1363 10620 0 0 0 0 010002000202000002000202000002000200020200020002000200020000020200020002000002000200020002000202000200000200020200000200020002020003"


Als je nu een KaKu switch aan je config wil toevoegen, gebruik je het volgende voorbeeld:


code:
1
2
3
4
5
6
7
8
9
10
11
12
{
  "id": "rfswitch",
  "name": "RFSwitch",
  "class": "HomeduinoRFSwitch",
  "protocols": [{
    "name": "switch1",
    "options": {
      "id": 42,
      "unit": 0
    }
  }]
}



Voor een complete lijst van ondersteunde protocollen kun je hier even kijken: https://github.com/pimati.../blob/master/protocols.md

Een van de protocollen die direct mijn aandacht trok is het zogenoemde generic protocol. Met dit ptocol kun je een ID, sensornummer en value versturen.
Oftewel : een volledig build-in protocol voor mijn draadloze tempereatuur sensor :Y)
Geen gedoe meer met een protocol in pilight welke weer omgecat moet worden tot een generic_weather welke weer door pimatic-pilight plugin opgepikt word, maar gewoon rechtstreeks een temperatuur naar pimatig sturen.
Inmiddels draait mijn bestaande sensor op de aangepaste code, maar meer daarover in een andere blogpost.


Resources:
https://github.com/Yves911/generic_433_sender
https://github.com/pimatic/homeduino
https://github.com/pimatic/pimatic-homeduino
https://github.com/pimati.../blob/master/protocols.md
http://r.ebay.com/WucSA6 (Arduino Nano)
http://r.ebay.com/Abfrlq (433 Mhz Superheterodyne)
https://github.com/pimatic/pimatic/issues
het grote pimatic topic - home domotica met je Raspberry Pi

Prototype pimatic-homeduino zender/ontvanger met antenne:
http://zooi.oostindie.com/images/3092014_10_30_19_tn.25_tn.34_tn.jpg http://zooi.oostindie.com/images/2302014_11_05_09_tn.14_tn.08_tn.jpg

Volgende: (stads)verwarming draadloos schakelen 11-'14 (stads)verwarming draadloos schakelen
Volgende: Home automation met Pimatic 10-'14 Home automation met Pimatic

Reacties


Door Tweakers user JorisV, zaterdag 8 november 2014 14:22

Wat een fantastische blog weer die me laat popelen om zelf ook weer wat te prutsen. Nog een paar vragen: wordt die arduin nano en de RF reciever/transmitter helemaal van stroom voorzien door de USB poort? Je temperatuur sensor uit het andere blog was een ATtiny84 maar begrijp ik nu dat je die vervangen hebt voor een homeduino, of een arduino nano? Die lijken me ook iets makkelijker te programmeren.

Door Tweakers user Koffie, zaterdag 8 november 2014 15:58

Bedankt ;-)
Je zender en ontvanger worden gevoed door de arduino, welke weer gevoed wordt door USB.
Op dit moment draai ik mijn sensor nog op een attiny, maar dat word binnenkort ook een arduino, de huidige code past niet meer in de 8kb flash (mijn nieuwe versie kan ook kaku retransmiten)

Door Tweakers user onok, zaterdag 8 november 2014 17:05

toevallig, ik ben dit weekend ook met 433mhz aan het spelen geweest. Ik heb veel problemen met bereik van de receiver (de transmitter heeft gek genoeg wel goed bereik). algemene tips? :)

[Reactie gewijzigd op zaterdag 8 november 2014 17:08]


Door Tweakers user johnkeates, zaterdag 8 november 2014 19:38

Wordt de Arduino in dit geheel eigenlijk puur als RF controller gebruikt en verder voor niks? Of decodeert (en encodeert) ie de daadwerkelijke gebruikte protocollen?

Door Tweakers user Koffie, zondag 9 november 2014 10:33

johnkeates schreef op zaterdag 08 november 2014 @ 19:38:
Wordt de Arduino in dit geheel eigenlijk puur als RF controller gebruikt en verder voor niks? Of decodeert (en encodeert) ie de daadwerkelijke gebruikte protocollen?
De arduino kijkt alleen of het een protocol zou kunnen zijn (ik geloof door onder andere te kijken of de header en footer 2 keer achter elkaar gelijkt zijn) en geeft het dan pas door.
Hiermee filter je vrijwel alle ruis eruit, en hoef je niet je arduino opnieuw te flashen zodra er een nieuw protocol is.
onok schreef op zaterdag 08 november 2014 @ 17:05:
toevallig, ik ben dit weekend ook met 433mhz aan het spelen geweest. Ik heb veel problemen met bereik van de receiver (de transmitter heeft gek genoeg wel goed bereik). algemene tips? :)
Wat voor RF setje gebruik je? Heb je al een antenne op de receiver geplaatst?

Door Tweakers user dukejan, maandag 10 november 2014 08:39

Waarom is het nodig om de arduino ertussen te zetten. Kun je niet vanaf de Raspberry direct deze module aansluiten op de GPIO pinnen?
nvm

[Reactie gewijzigd op maandag 10 november 2014 08:40]


Door lampenschakelen, woensdag 12 november 2014 23:36

Hoi Koffie,

Bedankt voor je blog ik hoop dat ik het ook voor elkaar krijg met de huidige module die ik heb liggen.

Is het mogelijk om mijn picrust om te bouwen en te gebruiken met pimatic.

The Pi Crust is powered by a 16Mhz Atmega328, 433 Mhz tranceiver, some resistors, some capacitors, and lots of love.


Hardware Design

Door Tweakers user Koffie, donderdag 13 november 2014 07:23

Durf ik niet te zeggen, ik heb helaas geen ervaring met een picrust. Als dat ding gewoon als Arduino aan te spreken is zou ik zeggen van wel.

Door Tweakers user schijf, zaterdag 15 november 2014 09:37

Hallo Koffie,

Ik begrijp het verhaaltje aan de sensor kant, maar wat hang je dan aan de PI zijde? Ik neem aan gewoon een RF zender en ontvanger aan de GPIO?

Door Tweakers user Koffie, zaterdag 15 november 2014 12:27

Je RF zender en ontvanger hand je aan die Arduino, welke je middels USB aam je Pi hangt.

Door Tweakers user Kodess, vrijdag 21 november 2014 13:07

Gebruik je nou 1 antenne voor de zender en ook de ontvanger?

Door Tweakers user Koffie, vrijdag 21 november 2014 13:09

Nee, 1 per RF device.
In de praktijk kom je zonder antenne al een heel eind met de ontvangers, dus meestal is de noodzaak voor een antenne bij de receiver hoger.

Door Tweakers user jobr, vrijdag 21 november 2014 20:40

Ik heb die Homeduino ook even geflashed in een Nano.
Ik krijg echter wel ready te zien maar deze reageert verder niet op commando's zoals PING.
Met screen geprobeert en IDE op windows.

Had jij hier ook nog problemen mee ?

Door Tweakers user jobr, vrijdag 21 november 2014 21:19

Ik heb het eigenlijk al opgelost. Blijkt IDE en screen niet een \n stuurt.

Door marcel, vrijdag 26 december 2014 10:20

Ik heb een CH340 compatible Nano boardje binnen gekregen, de tutorial gevolgd (netjes op ttyUSB0 etc.) verder geeft lsusb:
Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Maar ik krijg geen signalen binnen. Als ik de ontvanger rechtstreeks op de GPIO aansluit, krijg ik de signalen wel binnen. Ik vermoed dat ik een andere Board_tag moet hebben. Klopt dit? En zo ja welke?

Door Tweakers user Koffie, vrijdag 26 december 2014 14:11

Als het een gewone nano clone is met een ATMega328 chip erop, klopt de board tag.
Heb je debugging in je config aan? Zie jet dat hij daar netjes connect?

Anders even in het pimatic topic posten.

Door jack, dinsdag 30 december 2014 14:04

Leuke toepassing.

Effen een vraagje.
Op de website van pimatic lees ik bij pimatic-homeduino onder B.
Raspberry Pi (or Banana Pi or Hummingboard) with 433mhz transmitter and receiver

Op deze tweakblog:
Raspberry pi, RF ontvanger en zender EN arduino nano.

Vanwaar dit verschil? En waarom?

Groeten,
Jack

Door Tweakers user Koffie, dinsdag 30 december 2014 14:23

Ik snap niet helemaal wat je vraag nu is?
In principe heb je aan een pi met RF voldoende, echter wil je niet 50% CPU load hebben zul je er een Arduino Nano tussen moeten zetten. De nano zorgt als een soort filter voor alle ruis en garbage,
Pas als de Nano er een structuur (protocol) in ziet, zal hij het aan de software doorgeven om te ontleden tot data.

Door jack, dinsdag 30 december 2014 14:36

Bedankt!
Het is mij nu duidelijk.

Heeft het zin om de voorkeur te geven aan een Hummingboard (krachtiger, meer features) i.p.v. een Raspberry Pi?
Of is dit overkill?

Jack

Door Tweakers user Koffie, dinsdag 30 december 2014 14:42

Geen idee, alleen ervaring net een Raspberry Pi :)

Door Tweakers user htca, vrijdag 2 januari 2015 14:14

het werkt bij mij prima (alleen een receiver aangesloten momenteel). Ik heb nog een DHT, die is aangesloten op de GPIO (veel CPU!), maar lijkt ook via de NANO kunnen lopen. Ik snap alleen niets van de pinout. D2 t/m D13 zijn de digitale inputs, maar hoe deze relateren?
In de config staat als voorbeeld:

code:
1
2
3
4
5
6
7
{
  "id": "homeduino-temperature",
  "name": "DHT",
  "class": "HomeduinoDHTSensor",
  "type": 22,
  "pin": 13
}


is pin 13 uit de config hierboven D13 (16)?

Door Tweakers user Koffie, vrijdag 2 januari 2015 14:46

Geen idee, ik heb geen DHT11 op mijn Pi/Arduino zitten

Door Tweakers user htca, zaterdag 3 januari 2015 10:05

ter bevestiging; pin 13 = D13 -> DHT22 werkt nu via de nano
In de log komt deze vervolgens voorbij:
debug [pimatic-homeduino]: data: "ACK 20.1 44.9"

[Reactie gewijzigd op zaterdag 3 januari 2015 10:17]


Door Tweakers user htca, zaterdag 3 januari 2015 10:07

ter bevestiging; pin 13 = D13 -> DHT22 werkt nu via de nano
In de log komt deze vervolgens voorbij:
debug [pimatic-homeduino]: data: "ACK 20.1 44.9"

Dubbelpost....

[Reactie gewijzigd op zaterdag 3 januari 2015 10:17]


Door Tweakers user ma9ma, woensdag 14 januari 2015 08:36

Ok, voor mij is dit helemaal nieuw, maar wel interessant genoeg om eens mee te spelen. Twee vraagjes: met er gesoldeerd worden en welke jumperwires moet ik nemen m2m, m2f of f2f?

Door Tweakers user Koffie, woensdag 14 januari 2015 21:19

Je kan zonder solderen aan de gang. Het enige wat je nodig hebt is een breadboard en wat m2m jumperwires.: http://zooi.oostindie.com/images/170hardware.jpg

Door Tweakers user htca, donderdag 15 januari 2015 14:36

@ma9ma, misschien wat weerstandjes als je met DHT11/22 sensor aan de gang gaat

Door Tweakers user Kelfox, dinsdag 20 januari 2015 12:19

Bedankt voor je post. Het is allemaal gelukt. Ik zit nu wel met 1 vraag. Heb een Eurodomest action (https://github.com/pimatic/rfcontroljs/issues/5) setje met afstandsbediening. Echter dienen deze "ingleerd" te worden. Ik zet zo'n receiver dus in "inleer"-mode, druk op een knop en deze is vanaf dan gekoppeld. Hoe doe ik dit in pimatic?

Door Jack, dinsdag 20 januari 2015 16:33

Nog een vraag.
Kun je op afstand ook met je smartphone inloggen op pimatic? Een soort WebApp?

Jack

Door Tweakers user Koffie, dinsdag 20 januari 2015 21:18

Kelfox schreef op dinsdag 20 januari 2015 @ 12:19:
Bedankt voor je post. Het is allemaal gelukt. Ik zit nu wel met 1 vraag. Heb een Eurodomest action (https://github.com/pimatic/rfcontroljs/issues/5) setje met afstandsbediening. Echter dienen deze "ingleerd" te worden. Ik zet zo'n receiver dus in "inleer"-mode, druk op een knop en deze is vanaf dan gekoppeld. Hoe doe ik dit in pimatic?
Op je AB een toets indrukken, vervolgens in pimatic linksboven het menu openen, kiezen voor messages en alles behalve debug uitvinken. Als het goed is zie je nu alle RF verkeer.
Jack schreef op dinsdag 20 januari 2015 @ 16:33:
Nog een vraag.
Kun je op afstand ook met je smartphone inloggen op pimatic? Een soort WebApp?

Jack
Pimatic is gewoon webbased te benaderen, dus dat werkt perfect op mobile.

http://zooi.oostindie.com/images/1002014_10_27_21.12.11.png
http://zooi.oostindie.com/images/8332014_10_27_21.12.56.png

Door Martien Swart, woensdag 4 februari 2015 23:45

Hoi koffie,

Ik heb de code op een arduino uno geflashed, welke pinnen op de arduino uno moeten nu worden gebruikt voor ontvangen en verzenden.

Met vriendelijke groeten
Martien

Door pimatic, vrijdag 6 februari 2015 20:08

Hoi Martien ,

Er staat boven aan een afbeelding en de tekst.
Hoe je het moet aansluiten

http://zooi.oostindie.com/images/862pins_nano.png
Je ontvanger heeft als het goed is 4 pinnen: GND, DATA, DER, VCC
Wij hebben alleen de GND, DATA en VCC nodig. Sluit de GND aan op pin 29 GND, sluit DATA aan op pin 5 D2 en de VCC op pin 27 +5V

Je zender heeft er ook 4 : VCC, DATA, GND, ANT
Sluit de VCC aan op pin 27 +5V, de DATA op pin 7 D4 en de GND op png 29 GND.
Eventueel kun je een jumperwire op de ANT plaatsen.

ik heb alles aangesloten echter krijg ik het Pimatic configuratie bestand niet op de juiste manier aangepast.

Als ik hem run krijg ik de volgende fout melding:
8.439 [pimatic] Parse error on line 41:
17:39:58.439 [pimatic]>...admin" } ],{ "plugin": "homed
17:39:58.439 [pimatic]>--------------------^
17:39:58.439 [pimatic]>Expecting 'STRING', got '{'

Zou je hier misschien meer duidelijkheid over kunnen geven?

Als ik de USB poort uit lees krijg ik de volgende informatie:
root@homecontrol:/usr/local/pimatic-app# ls -l /dev/ttyUSB0
crw-rw---T 1 root dialout 188, 0 Jan 1 1970 /dev/ttyUSB0

Misschien handig op wat punten met ontvangen / zenden uit testen via command line.

Alvast bedankt,

Pimatic

Door Tweakers user angelina, zaterdag 7 februari 2015 09:28

In het begin had ik ook de Uno gebruikt. Deze verscheen in RPI niet als ttyUSB0 maar als ttyACM0. Mbv symbolic link (ln) kon ik het toch mappen naar ttyUSB0. Daarna allerlei pinnen geprobeerd en heb het niet werkend kunnen krijgen.

Uiteindelijk opgegeven en een Nano gekocht op ebay. Deze werkte in een keer.

Door pimatic, zaterdag 7 februari 2015 16:07

Hoi angelina,

Zou jij misschien de stappen verder kunnen uitschrijven?
Ik heb de bovenstaande regels al uitgevoerd van de stappen van koffie.
echter krijg ik het nog niet werkend.

Ik heb elro en actions stopcontact modules om te schakelen via 433mhz.

Alvast bedankt,

Klaas

Door Tweakers user joentje, zondag 15 februari 2015 21:30

Hallo Klaas,

misschien even handig om te vermelden welke type nrs je hebt?
De action en elro heb ik hier goed draaien, het zijn echter wel de oudere versies van deze.

Door pimatic, maandag 16 februari 2015 16:28

Hoi Joentje,

Is het mogelijk dat jij de config file copy paste?
Ik krijg het momenteel namelijk niet voor elkaar om van uit de raspperby pi te configeren met Arduino Nano.

Alvast bedankt,
klaas

Door Martien Swart, dinsdag 24 februari 2015 15:28

Martien Swart schreef op woensdag 04 februari 2015 @ 23:45:
Hoi koffie,

Ik heb de code op een arduino uno geflashed, welke pinnen op de arduino uno moeten nu worden gebruikt voor ontvangen en verzenden.

Met vriendelijke groeten
Martien
Op de UNO is interupt pin 0 ("receiverPin": 0 in de config) pin 2 op het UNO bordje
pin 4 ("transmitterPin": 4 in de config) is gewoon pin 4 op het UNO bordje

Door Martien Swart, dinsdag 24 februari 2015 15:37

Martien Swart schreef op dinsdag 24 februari 2015 @ 15:28:
[...]

Op de UNO is interupt pin 0 ("receiverPin": 0 in de config) pin 2 op het UNO bordje
pin 4 ("transmitterPin": 4 in de config) is gewoon pin 4 op het UNO bordje
De UNO verschijnt als /dev/ttyACM0 op de PI dit dus ook aan passen in config
"serialDevice": "/dev/ttyACMO"

Door Tweakers user geekeep, woensdag 8 april 2015 02:11

N.a.v. Mick1990's Tweakblog: OpenELEC: Raspberry Pi 2 vs Raspberry Pi B

heb ik mijn (oude) pi B vervangen door een pi 2.

De temperatuur onder het draaien van pimatic is gedaald van 53 naar 40 graden. Het cpu gebruik is vrijwel hetzelfde gebleven; 0-1%.
Naast pimatic draai ik Pi-hole, maar dat zou niet veel effect op het cpu gebruik en dus temperatuur moeten hebben.

Voor degenen die makkelijk willen upgraden naar een pi 2 is slechts het invoeren van een paar commands voldoende:
sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

sudo apt-get install raspberrypi-ui-mods
Na bovenstaande de oude pi netjes afsluiten en de micro-SD kan richting de nieuwe pi.

Voor degenen die NOOBS gebruiken nog een aanvulling:
If you have NOOBS, insert the microSD card into a card reader and into your PC/Mac. Download the latest 'NOOBs Lite' zipped image from the Raspberry Pi website:

http://www.raspberrypi.org/downloads/

Unzip the download, and extract everything from the ZIP file to a directory. Copy everything from the extracted ZIP EXCEPT for 'recovery.cmdline' to the top directory of your microSD card.

Once completed, remove the microSD from your PC.

You are now ready to insert the microSD card into your new Raspberry Pi2 and boot it up.
http://thepihut.com/blogs...sd-for-the-raspberry-pi-2

Door Tweakers user Boertje38, zondag 19 april 2015 18:55

Sorry klaas voor de late reactie maar het was hier druk.
Welke config heb je precies nodig? of is het al gelukt wat beter is natuurlijk


gr. Jeroen

Door Chris, dinsdag 2 juni 2015 10:36

somfy staat niet bij de ondersteunde protocollen. Heeft iemand daar ervaring mee?

Door Tweakers user pasz, maandag 14 september 2015 13:51

Hoe achterhaal je nu de ID's van de KaKu devices ?

gevonden. Dus via de logging. Het werkt! Super dankjewel voor de uitgebreide blogs Koffie.

Ik ga eens beginnen met regels maken. Volgende stap is de MySensors koppeling voor de rest van het huis.

[Reactie gewijzigd op maandag 14 september 2015 14:09]


Door Tweakers user Mopperman, dinsdag 22 november 2016 15:02

Kan je deze arduino manier ook gebruiken voor "gewone" 433mhz kitjes? Ik heb namelijk recent de FS1000A ontvangen samen met een RF-5V

Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier ťťn aanmaken.