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.
Hoi Henri,
Bedankt voor het schrijven van dit mooie blog! Dit is een gave toevoeging voor pimatic.
Echter probeer ik jou stappen uit te voeren op een raspberry pi 3 + Jessie Lite. En loop ik tegen het probleem aan dat ik Arduino IDE wel geinstalleerd krijg maar vervolgens bij het openen, continu het zandloopertje in beeld is en het programma niet opstart.
Heb jij misschien ook een installatie uitleg voor op een raspberry?
Ik heb dit zelf op een Linux Server met de volledige versie van Debian gedaan en heb geen ervaring hoe de Arduino IDE zich gedraagt op de Raspberry Pi met Raspbian (= uitgeklede versie van Debian). Je kunt wellicht ook je Windows PC gebruiken. Zorg wel dat je de juiste (oude) versie gebruikt en niet de nieuwste.
Ah ik bedenk met nu dat het configureren van de ESP module via Arduino IDE niet uitmaakt of dit via raspberry of windows PC doet, klopt dat?
Vervolgens veranderd je in pimatic de “homeduino” en heb je het gewenste resultaat toch?
Pimatic draait bij mij op de raspberry pi met daarop een arduino nano
Of je de gecompileerde binary van Windows of Debian krijgt maakt inderdaad niets uit. Ik heb Pimatic ook op en Raspberry Pi draaien met Arduino Nano en nu ook nog een ESPimaticRF Master (via USB).
Ik ben afgelopen weken nog een aantal keer bezig geweest om dit blog uit te voeren. Helaas is dit mij nog steeds niet gelukt.
– Via windows 10 heb ik het probleem dat mijn PC, via mijn com poorten niet de ESP module detecteerd (heb wel de drivers geinstalleerd).
– Via mijn raspberry (Jessie lite IMG) krijg ik de Arduino IDE software wel ingestalleerd maar blijft die continu hangen als ik het programma wil opstarten.
Heeft iemand nog tips? Wil heel graag deze blog gebruiken voor mijn woning te optimaliseren in het RF bereik.
Erg vervelend dat het niet lukt Erwin. Ik neem aan dat je op je Windows 10 PC de USB poort bedoelt en niet de COM poort? Welke ESP module gebruik je verder. Als echt niks lukt zou je misschien nog kunnen proberen om Debian te installeren op een VM in Windows 10, maar dan loop je wellicht weer tegen je poort probleem aan?
Inderdaad, ik wil Arduino IDE liefst op mijn raspberry installeren en ik zie zoveel voorbeelden van mensen die het wel lukt.
Ik blijf even googlen en doorproberen!
Succes Erwin. Laat je het nog even weten als het lukt wat het probleem was. Ik kan het zo niet bepalen.
PS: Ik heb sinds 1 week een nieuw reactie-systeem op mijn blog en je bent de eerste die een plaatje heeft toegevoegd als reactie. Hopelijk bevalt dit nieuw reactie-systeem bij de lezers van mijn blog,
Ik ben een stap verder gekomen, gebruikte een verkeerd/kapot USB kabeltje.
Ik gebruik de ESP module die jij in je blog hebt staan.
Ik volg precies jou stappen in het blog maar krijg nu tijdens compileren de volgende foutmelding: Enig idee wat ik fout doe?
Heb je het volgende ook gedaan:
“Zet in ‘File > Preferences’ je ‘Sketchbook location’ naar de lokatie waar je ESPimaticRF hebt gedownload met git.”
Het is ondertussen gelukt!
Het volgende bestand ontbrak:
rfcontrol_command.h
En dit bestand moest ik in de volgende map plaatsen:
Arduino\libraries\RFControl
Ik ben ondertussen verder gegaan met hobby’en en het is gelukt om signalen te ontvangen via de 2 NodeMCU. Alleen het verzenden van signalen wil helaas niet lukken. Heb de instellingen precies overgenomen zoals je beschrijft in het blog.
De transmitterpin staat in de ESP config op 4 en in pimatic homeduino op 5. Daarnaast zit de data kabel aangesloten op D1 van de NodeMCU.
Verder zie ik in de log van pimatic wel gewoon een send bericht voorbijkomen.
Nog tips of dingen die ik kan proberen?
Heb je de API key goed ingevuld voor je Homeduino plugin en bij je ESPimaticRF Slave?
Ik heb dezelfde API key ingevuld als jij hebt gedaan. Dus 1234567890, dit heb ik zowel bij de Homeduino plugin als de ESPimaticRF slave gedaan.
Vind het vreemd dat ik signalen wel kan ontvangen maar niet kan verzenden.
Als test kan je de ESPImatic node aan je system hangen (met USB) waarop je de sketch hebt gecompileerd. Ga dan in Arduino IDE in pulldown menu naar Tools (doe het uit mijn hoofd nu, dus niet zeker of het daar staat) naar Monitor zodat je extra logging voorbij ziet komen. (dit is anders dan je Pimatic logging.
Ik heb de test uitgevoerd. Als ik een schakelaar omzet in pimatic zie ik niks voorbij komen in de log.
Wel als ik signalen wil ontvangen. Dan zie ik wat tekens binnenkomen, zie onderstaande afbeelding.
Moet het denk ik toch in een andere hoek gaan zoeken
Zo te zien staat je baudrate, etc. niet goed ingesteld in je monitor want je moet daar leesbare tekst zien (uit mijn 115200 gebruiken).
Ik krijg nu inderdaad leesbare tekst. Wederom komen er geen log berichten voorbij als ik een schakelaar omzet in pimatic.
Vraag me toch af wat er fout gaat, aangezien het bij jou wel werkt
Ik zal eens kijken of ik er dit weekend in kan duiken wat er bij jou aan de hand kan zijn. Op het forum van Pimatic loopt er volgens mij ook een thread over ESPimaticRF (van de oorspronkelijke autueur). Misschien kun je hier ook nog nuttige informatie vinden.
Super, bedankt. Zou het misschien aan kunnen liggen dat de zenders maar op 3.3 V zijn aangesloten? Misschien dat er in de hardware wat fout zit ipv de software
Heb ondertussen zelf op 5V pin aangesloten maar ook dit heeft geen succes. Heb op tweakers blog van koffie ook een reactie geplaatst, hopelijk komt daar wat nuttige informatie naar boven.
Ben ook bezig met het pimatic forum doorspitten.
Ben heel het weekend ziek en heb dus niet voor je kunnen kijken. Ik hoop dit zo snel mogelijk voor je te kunnen doen.
Geen probleem! Beterschap, ik blijf ondertussen ook zelf nog wat proberen
Ik ben een stap verder gekomen dat ik signalen kan verzenden en ontvangen. Dit is gelukt door van alles te proberen.
Config van master/slave staan in onderstaande afbeeldingen
Waarom heb jij je master niet mee laten doen?
Verder kan ik met mijn slave geen signalen versturen. Alleen ontvangen, en met de master is het visa versa..
Voor mij is het nog beetje onduidelijk hoe dit nu moet werken.
Ik heb op mijn master geen RF Ontvanger/Zender aangesloten.
Ik heb het opgelost!
Omdat ik zowel op mijn master als slave een zender + ontvanger heb aangesloten, zijn de instellingen net wat anders als in jou blog:
In onderstaande afbeelding staat hoe de instelling zijn voor zowel de master als de slave
Dit is de juiste
Ik heb het idee dat er 2 bugs in de source-code van ESPimaticRF zitten:
1. in rfcontrol_command.h staat een hard-coded ip-adres van de Pimatic Server
2. In ESPimaticRF.ino staat ook hard-coded ip-adres + port van de Pimatic Server
Hoi Henri,
Ik ben laatst verhuisd en alle ESP modules opnieuw geïnstalleerd en gekoppeld aan mijn nieuwe netwerk. Ik heb een master en slave op de juiste wijze geconfigureerd. Echter, zodra ik nu een schakelaar omzet in pimatic krijg ik de volgende foutmelding:
operation timed out
at afterTimeout (/home/pi/pimatic-app/node_modules/pimatic-homeduino/node_modules/homeduino/node_modules/bluebird/js/main/timers.js:11:15)
at null.timeoutTimeout (/home/pi/pimatic-app/node_modules/pimatic-homeduino/node_modules/homeduino/node_modules/bluebird/js/main/timers.js:53:9)
at Timer.listOnTimeout (timers.js:92:15)
Heb jij enig idee in wat dit kan zijn?
Toevallig Raspbian ook geupdate?
Nee, ik moet er trouwens bijvermelden dat ontvangen van signalen wel werkt. Alleen het zenden lukt niet. Ik lees op forum van ESPimatic dat veel mensen last hebben van signalen verzenden. Maar een concrete oplossing staat er niet tussen