Wat is ESPimaticRF?

Met ESPimaticRF kunt je het RF 433 Mhz signaal van en naar Pimatic verzenden en ontvangen. Normaal gesproken gebruik je hiervoor een Arduino Nano (zie hier), aangesloten op je Raspberry Pi en voorzien van de homeduino software voor het RF verzenden en ontvangen van RF 433 Mhz signalen.

Het probleem met zo’n opstelling is dat de RF-dekking tussen Raspberry Pi en het RF-apparaat soms onvoldoende is, waardoor het apparaat niet altijd wordt in- of uitgeschakeld. Met ESPimaticRF kunt je dergelijke signalen via Wifi doorgeven. Je installeert één ESP8266 in de ‘homeduino’ mode en sluit deze aan op de Raspberry Pi en je installeert één of meer ESP82696 in de ‘node’ mode ergens in je omgeving (mits in Wifi-bereik).

Wanneer je nu een RF-apparaat in Pimatic omschakelt, wordt het signaal opgepikt door de homeduino ESP en via Wifi naar alle knooppunten gestuurd. De knooppunten geven het signaal door met behulp van lokaal aangesloten RF 433 Mhz hardware.

Het ontvangen van RF-signalen werkt hetzelfde: één of meer knooppunten ontvangen het RF 433 Mhz-signaal en geven dit door aan pimatic over Wifi. Het is mogelijk om RF 433 Mhz zender en ontvanger aan de homeduino ESP te bevestigen en deze ook te gebruiken voor verzenden en ontvangen.

Nodig:

2 x NodeMcu ESP8266 (CH340/CP2102)
1 x 433 Mhz Superheterodyne RF Receiver and Transmitter Module

Opzetten ontwikkel omgeving

We gaan nu eerst de ESP8266-12E prepareren. Zorg dat je de benodigde software hebt om een Arduino sketchfile te kunnen compileren en uploaden. Ik probeerde dit eerst op een Windows 10 machine waarvoor ik Arduino 1.6.7 had gedownload (laatste versie van dit moment). Hiermee ging het echter mis en kreeg ik allerlei compiler errors. Dezelfde problemen had ik met Arduino 1.6.7 op mijn Debian Server.
Vervolgens heb ik maar de aangeraden Arduino 1.6.5 versie gebruikt op mijn Debian server.

Aangezien dit dus een oude Arduino versie is moet je even zoeken om deze te kunnen downloaden. Ik heb deze zelf op de http://blog.spitzenpfeil.org/arduino/mirror_released/ volgende server gevonden. Download hier het bestand ‘arduino-1.6.5-r5-linux64.tar.xz’ en voer vervolgens de volgende acties uit:

tar -xvf arduino-1.6.5-r5-linux64.tar.xz
mv arduino-1.6.5-r5 /opt

Start nu de Arduino software

cd /opt/arduino-1.6.5-r5/
./arduino

Open preferences menu en voeg de volgende regel toe aan ‘Additional Board Manager URLs’

http://arduino.esp8266.com/stable/package_esp8266com_index.json




Open Boards Manager vanaf ‘Tools > Board’. Scroll naar beneden en selecteer ‘esp8266 by ESP8266 Community’. Kies vervolgens ‘install’.



Selecteer ‘NodeMCU 1.0 (ESP-12E Module)’ vanaf ‘Tools > Board’

Ik ga ervan uit dat je het GIT package al hebt geïnstalleerd (apt-get install git). Hierna moet je de sketch-file ESPimatic downloaden m.b.v. het volgende shell commando:

git clone --recursive https://github.com/koffienl/ESPimaticRF

We gaan nu de ESPimaticRF code compileren en uploaden:
In Arduino kies je in ‘File > Open’ menu de file ‘ESPimaticRF.ino’ in de directory waar je de ESPimatic hebt gedownload
Zet in ‘File > Preferences’ je ‘Sketchbook location’ naar de lokatie waar je ESPimaticRF hebt gedownload met git.

Kies nu ‘Sketch > Verify/Compile’
Sluit je ESP8266-12E board via USB aan op je computer
Stel je upload poort in bij ‘Tools > Port’ (vaak /dev/ttyUSB0)
Kies ‘Sketch > Upload’

Prepareren NodeMCU modules

Initiëel zal je ESP8266-12E nu opstarten als een Access Point (wacht totdat je ESPimaticRF ziet verschijnen bij je draadloze netwerken). Maak verbinding met je SSID ESPimaticRF en vul voor wachtwoord ‘espimaticrf’ in. Ga vervolgens met je browser naar 192.168.4.1 en vul je gebruikelijke Wifi gegevens in en druk op [Submit].




Als het goed is gegaan verschijnt er OK op het browser-scherm. Hierna moet je de ESP8266-12E herstarten en verbinding maken je Wifi Netwerk.

Controleer nu welk IP adres je ESP8266-12E heeft gekregen van je DHCP server en ga met je browser naar dit IP-adres. Je krijgt een simpele pagina te zien waarin je nu alle HTML bestanden die je via GIT hebt gedownload moet uploaden.




Deze staan in de directory SPIFFS waar je met GIT je ESPimaticRF source files hebt gecloned. Na het uploaden (je kunt alle files tegelijk selecteren) krijg je weer OK te zien in je browser scherm als dit goed is gegaan. Je moet tenslotte de ESP8266-12E nog eenmaal herstarten voordat je de uiteindelijke ESPimaticRF interface te zien krijgt:



Bovenstaande acties doe je voor al je NodeMCU modules voordat we deze verder gaan configureren.

Configureren ESPimaticRF

Nu moeten we ESPimaticRF zelf nog gaan configureren. In mijn geval stel ik 1 Master (= ‘homeduino’ mode die je verbind met je Raspberry Pi met Pimatic) en 1 Slave (= ‘node’ mode die je op strategische plaats wegzet waar je RF coverage onvoldoende is) in. Je kunt eventueel ook meerdere Slaves maken.

Master (‘homeduino’ mode)
Stel deze in volgens onderstaande screenshot (afhankelijk of je hier RF zender en/of ontvanger hebt aangesloten).



Slave (‘node’ mode)
Stel deze in volgens onderstaande screenshot




Gebruik als API key de waarde die je bij je Homeduino Plugin op je Pimatic hebt ingesteld.

{
  "plugin": "homeduino",
  "driver": "serialport",
  "driverOptions": {
    "serialDevice": "/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0",
    "baudrate": 115200
  },
  "receiverPin": 0,
  "transmitterPin": 4,
  "debug": true,
  "apikey": "1234567890",
  "active": true,
  "rfrepeats": 6
},

Ik heb hier GPIO pin 4 gekozen voor de RF Receiver en GPIO pin 5 voor de RF Transmitter. Dit zijn respectievelijk D2 en D1 op je NodeMCU. Sluit ook je 3.3V, GND en Data (op betreffende GPIO pin) aan. Zie het volgende overzicht:




Nu is het een kwestie van je Master aan te sluiten op je Raspberry Pi met Pimatic in plaats van je oorspronkelijke Arduino Nano (dus op dezelfde USB poort). De Slave heb ik met een USB Power Adapter in de garage aangesloten en ik merkte meteen een betere RF bereik hier. Voor meer informatie over ESPimaticRF verwijs ik je naar de Wiki van de maker van dit fantastische stukje software.