ESPimaticRF : verstuur RF verkeer over wifi vanuit Pimatic

Door Koffie op zondag 13 november 2016 18:25 - Reacties (12)
Categorie: -, Views: 2.858

Een lang verwachte feature voor Pimatic is eindelijk beschikbaar: verzenden van RF verkeer over wifi op plekken waar de Pimatic op de Raspberry Pi geen bereik heeft :Y)

Wat heb je nodig :?
Een werkende Pimatic installatie
ESPimaticRF
Minstens 2 ESP8266 modules
Minstens 1 setje sender/receiver (zorg dat je een zogenoemd superheterodyne setje hebt)
Arduino IDE 1.6.5
ESP8266 core for Arduino 2.3.0

Het probleem :?
Normaal zul je een Raspberry Pi hebben met daarop Pimatic, waar vervolgens een Arduino Nano aan hangt voor het RF verkeer (zie ook : Koffie's tweakblog: Native RF zenden en ontvangen met pimatic)
Het nadeel hiervan is dat de Raspberry Pi vaak ergens weggewerkt word (bij mij bijvoorbeeld in de meterkast) en je niet altijd overal een voldoende RF bereik hebt. Het gevolg is dat niet elk RF signaal door Pimatic ontvangen word, of een uitgezonden signaal niet altijd aankomt.

De oplossing
Met ESPimaticRF kun je het RF signaal eerst over wifi laten versturen zodat het vanaf een andere plek alsnog als RF verstuurd word. andersom kan ook : ergens op een andere plek word het RF signaal opgepikt om vervolgens via wifi naar Pimatic gestuurd te worden.
Het systeem is zo opgebouwd dat je op meerdere plekken een zogenoemde node kunt neerleggen, welke allemaal met Pimatic communiceren. Op deze manier kun jet het RF bereik enorm vergroten. In theorie zou je zelfs een node ergens op een totaal ander adres kunnen installeren en zo met 1 groot Pimatic netwerk bouwen.

Hoe installeer ik het :?
Ik ga er vanuit dat je reeds een werkend Pimatic systeem hebt, met Arduino Nano en RF hardware zoals uitgelegd in Koffie's tweakblog: Native RF zenden en ontvangen met pimatic
Neem een ESP8266 (bij vooorkeur een NodeMCU).
Download de software van Github en op ESPimaticRF.ino in je Arduino IDE
Zorg dat je de correct ESP in je boardmanager hebt geselecteerd, met voldoende SPIFFS ruimte (3M SPIFFS).
Compileer en upload de code naar je ESP
Na het uploaden zal de ESP opnieuw opstarten en, indien nodig, de SPIFFS formatteren. Dit kan even duren - hou de boel in de gaten via de Serial Monitor
De ESP zal nu in AP modus gestart zijn. Verbind je pc/table/telefoon met het wifi netwerk van de ESP (SSID : ESPimaticRF , wachtwoord espimaticrf).
Ga naar http://192.168.4.1 en vul hier je eigen wifi gegevens in.
De ESP zal nu wederom opnieuw opstarten en verbinden met je eigen wifi netwerk.
Op de Serial Monitor kun je zien welk DHCP adres de module heeft gekregen van je wifi.
Ga naar het nieuwe IP adres met je favoriete browser. Je zult nu een simepel upload pagina zien. Upload nu alle bestanden in de directory "SPIFFS" van de github download.
Wanneer de upload klaar is, start de ESP handmatig opnieuw op.
Ga nu wederom naar het IP adres van de ESP met je browser, de volledige webGUI is nu beschikbaar.
Kies Menu -> System -> Config

http://zooi.oostindie.com/images/148espimaticrf_config.png

We gaan de ESP configureren om als 'homeduino' te reageren. Bij mode kies je dus voor de optie 'homeduino'.
De homeduino kan zowel met als zonder RF hardware werken, we beginnen zonder. Laat de opties 'Receiver pin' en 'Transmitter pin' dus leeg.
Bij Receive Action kies je voor 'Do nothing' (er hang immers geen onvanger aan deze module.
Bij Transmit Action kies je voor 'Transmit to all nodes' (wederom : we hebben aan deze ESP geen RF hardware hangen).
Bij UDP repeat is het een beetje kiezen wat het beste voor je werkt. Het versturen van RF over wifi gaat via UDP. Omdat UDP van zichzelf een onbetrouwbaar protocol is, word het pakket een paar keer herhaald. Afhankelijk van de afstand die je met de modules moet overbruggen adviseer ik een waarde tussen de 3 en de 6.
Bij API key vul je een API key in die door alle ESP's gebruikt zal worden. Belangrijk : deze API key moet hetzelfde zijn als de optionele API key in config van de homeduino plugin in Pimatic!
De wifi velden zijn al ingevuld.
Sla de wijzigingen op en herstart de ESP om config te laden.

Je kunt de ESP nu van je computer loskoppelen en aan je Rasperry Pi aansluiten. Let op dat je pimatic eerst stopt voordat je de ESP middels USB aan de Raspberry Pi koppelt.
Start nu Pimatic op en controleer de logfile. Als het goed is denkt Pimatic nog steeds dat er een doodnormale homeduino aangesloten is.

Nu nemen we nog een ESP en voorzien deze wederom van ESPimaticRF software. Deze keer sluiten we ook een RF zender en ontvanger aan.
Herhaal deze stappen als bij de vorige module om de ESP te configureren.
Bij 'mode' kies je echter deze keer voor 'node'.
Vul de correcte Transmitter pin en Receiver pin in (GPIO nummering!).
Bij Receive action kies je voor 'send to Pimatic' , bij Transmit action kies je voor 'Transmit with local RF'.
Zorg ervoor dat je bij Pimatic IP het correct IP/FQDN van je Pimatic installatie kiest en bij Pimatic Port de juiste port waarop het draait.
Bij Black/Whitelist mode kiezen we voorlopig 'Allow everything'.
Sla de wijzigingen op en herstart de ESP.
Indien je dit nog niet gedaan hebt, sluit nu eerst de RF modules aan op de correcte GPIO's

Laat de node nog aan je computer verbonden en op de Serial Monitor. Wissel nu een RFdevice op pimatic van status, als het goed is moet je nu op de Serial Monitor zien dat er een pakket van de homeduino binnenkomt, en nog mooier : de local RF zender op de node zal nu het RF verkeer gaan versturen.

Het werkt, wat kan ik er verder nog mee :?
Met bovenstaande uitleg heb je een basic netwerk van ESP's kunnen maken. Wat de node ontvangt word keurig naar Pimatic verstuurd, en wat Pimatic over RF wil versturen komt keurig bij de node terecht.
Je kunt nu verder gaan met het finetunen van de configuratie. Zo kun je alsnog een RF zender en ontvanger aan de homeduino koppelen, en in de config aangeven dat deze gebruikt kunnen worden.
Ook kun je een extra ESP installeren in node mode en deze ergens anders plaatsen. Beide nodes zullen dan het verkeer wat door de homeduino verstuurd word ontvangen en uitzenden.
Dit laatste kan natuurlijk een probleem zijn als beide nodes binnen het bereik van een RF device liggen. Deze kan dan meerdere keren hetzelfde signaal ontvangen.
Daarom kan er gebruik gemaakt worden van blacklisting of whitelisting.
Via de config kun je aangeven welke modus de node moet hebben (allow everything, allow everything except blacklist of allow nothing except whitelist).
Om nu een bepaal device aan de blacklist of whitelist toe te voegen ga je als volgt te werk :
Zorg dat de node communicatie van de homeduino kan ontvangen
Vanaf Pimatic schakel je 1 keer het device waar het om gaat
Op de WebGUI van de node ga je nu naar Menu -> System -> BlackWhitelist , als de opdracht voor het RFdevice bij deze node aangekomen is, zul je hier het protocol , ID en unit zien.
Kies nu voor Blacklist of Whitelist
Afhankelijk van de gekozen configratie zal het nieuwe device expliciet wel of niet toegelaten worden.

Om een bepaald device te kunnen black/whitelisten moet het protocol bekend zijn (en herkend worden) binnen ESPimaticRF. Alle protocollen staan beschreven in protocols.json.
Op moment van publiceren van deze blogpost staan er nog maar een paar protocollen beschreven (switch1 t/m switch5 en dimmer1).
Ik hoop op korte termijn het aantal protocollen hierin snel uit te breiden, hou de github pagina in de gaten voor updates.

Mocht je nog vragen hebben kan dat altijd hier, in het GoT topc (https://gathering.tweakers.net/forum/list_messages/1609839) of op het Pimatic forum (https://forum.pimatic.org...t-espimaticrf-coming-soon)

Volgende: Je pelletkachel aansturen met pimatic, een stapje verder 09-02 Je pelletkachel aansturen met pimatic, een stapje verder
Volgende: DIY draadloze temperatuursensor voor pimatic - en meer! - Update 01-'16 DIY draadloze temperatuursensor voor pimatic - en meer! - Update

Reacties


Door Tweakers user Thedr, zondag 13 november 2016 19:09

Allereerst: toppertje! Gaat een veelgebruikte feature worden denk ik!
Wat ik eigenlijk nog niet helemaal begrijp is waarom de eerste ESP aan de RasPi kant nodig is. Pimatic kan toch direct een MQTT of TCP pakket pushen naar de ESP met RF hardware? Of is dat een nog te ontwikkelen feature?
Ik heb er zelf nog geen tijd voor gehad, maar ben al een tijdje aan het denken over een MQTT<--> RF bridge op basis van een ESP. Grote voordeel daarvan is dat veel meer domoticapakketten er dan ook gebruik van kunnen maken :)

Door Tweakers user Koffie, zondag 13 november 2016 19:12

Thedr schreef op zondag 13 november 2016 @ 19:09:
Allereerst: toppertje! Gaat een veelgebruikte feature worden denk ik!
Wat ik eigenlijk nog niet helemaal begrijp is waarom de eerste ESP aan de RasPi kant nodig is. Pimatic kan toch direct een MQTT of TCP pakket pushen naar de ESP met RF hardware? Of is dat een nog te ontwikkelen feature?
Ik heb er zelf nog geen tijd voor gehad, maar ben al een tijdje aan het denken over een MQTT<--> RF bridge op basis van een ESP. Grote voordeel daarvan is dat veel meer domoticapakketten er dan ook gebruik van kunnen maken :)
Dank :Y)

Eerlijk gezegd : ik heb totaal geen kaas gegeten van schrijven van plugins voor Pimatic. Het allergrootste voordeel van deze constructie is dat het out of the box zal werken met Pimatic, zonder dat er extra plugins voor nodig zijn.
Al geruime tijd kun je via de Pimatic API RF verkeer aanbieden (de nodes versturen hun ontvangen data naar Pimatic API) en voor het verzenden denkt Pimatic met deze oplossing gewoon dat hij tegen een homeduino aan zit te praten ;)

Door Tweakers user Thedr, zondag 13 november 2016 20:04

Koffie schreef op zondag 13 november 2016 @ 19:12:
[...]

Dank :Y)

Eerlijk gezegd : ik heb totaal geen kaas gegeten van schrijven van plugins voor Pimatic. Het allergrootste voordeel van deze constructie is dat het out of the box zal werken met Pimatic, zonder dat er extra plugins voor nodig zijn.
Al geruime tijd kun je via de Pimatic API RF verkeer aanbieden (de nodes versturen hun ontvangen data naar Pimatic API) en voor het verzenden denkt Pimatic met deze oplossing gewoon dat hij tegen een homeduino aan zit te praten ;)
Ik vermoedde al zoiets... laten we het erop houden dat dit op de to-do lijst staat ;)
Ik denk dat er best wat devs zijn die dit vrij eenvoudig kunnen fixen: laat de homeduino plugin de naar de nano verstuurde code ook publishen op een MQTT topic. De ESP nodes kunnen dan via MQTT daarop abonneren en de berichten doorsturen.
RF signalen van de nodes naar pimatic kunnen zoals ze nu doen gewoon over de API verlopen.

[Reactie gewijzigd op zondag 13 november 2016 20:05]


Door Tweakers user Nelus82, woensdag 16 november 2016 13:21

Mooi gemaakt koffie! Ook alweer versie 0.0.3 zag ik gisteren.

Heb inmiddels de ESP's kunnen flashen met ESPimaticRF en de SPIFFS gevuld.
Nu loop ik vast op de stap sluit de ESP aan via USB op de raspberry?

Op dit moment hem ik een arduino clone op mijn raspberry en daarop mijn verzender en ontvanger. Kan ik die nog wel blijven gebruiken?

Door Tweakers user Koffie, woensdag 16 november 2016 14:05

Nelus82 schreef op woensdag 16 november 2016 @ 13:21:
Mooi gemaakt koffie! Ook alweer versie 0.0.3 zag ik gisteren.

Heb inmiddels de ESP's kunnen flashen met ESPimaticRF en de SPIFFS gevuld.
Nu loop ik vast op de stap sluit de ESP aan via USB op de raspberry?

Op dit moment hem ik een arduino clone op mijn raspberry en daarop mijn verzender en ontvanger. Kan ik die nog wel blijven gebruiken?
Zorg eerst dat de ESP functioneerd en geconfigureerd is in homeduino mode.
Je stop pimatic en haalt de huidige Arduino Nano uit de USB port. Hiervoor in de plaats sluit je de ESP aan op een USB poort van je Raspberry Pi.
Start nu weer pimatic. Als het goed is denkt pimatic nog steeds met een Arduino te communiceren.
Je kunt de ESP in homeduino zowel met als zonder zender en ontvanger aansluiten. Met zender en ontvanger eraan kun je in de config de ESP zo instellen dat deze gebruik maakt van de aanwezige zender en ontvanger.
Of je koppelt de ESP zonder een RF zender en ontvanger en laat al dit werk over aan een tweede ESP in node mode.

Door Tweakers user Nelus82, woensdag 16 november 2016 20:29

Bedankt voor de heldere uitleg! Ik weet al waar het mis gaat bij mij. Ik maak niet gebruik van een Nodemcu (met usb aansluiting) maar van een ESP8266-12 bordje. Enig idee hoe ik die koppel aan mijn raspberry?

Door Tweakers user Koffie, woensdag 16 november 2016 21:44

Nelus82 schreef op woensdag 16 november 2016 @ 20:29:
Bedankt voor de heldere uitleg! Ik weet al waar het mis gaat bij mij. Ik maak niet gebruik van een Nodemcu (met usb aansluiting) maar van een ESP8266-12 bordje. Enig idee hoe ik die koppel aan mijn raspberry?
Je zou het kunnen proberen met een FTDI USB kabel, maar eerlijk gezegd zou ik voor die paar euro gewoon een Wemos of NodeMCU kopen ;)

Door Tweakers user Nelus82, woensdag 16 november 2016 22:50

Snelle reactie 👍 Bedankt.

Heb gelijk een NodeMCU besteld in Nederland, hoef ik ook niet zolang te wachten.

De andere esp bordjes kan ik mooi als nodes gebruiken.

Door Tweakers user Koffie, zaterdag 19 november 2016 21:26

Thedr schreef op zondag 13 november 2016 @ 20:04:
[...]


Ik vermoedde al zoiets... laten we het erop houden dat dit op de to-do lijst staat ;)
Ik denk dat er best wat devs zijn die dit vrij eenvoudig kunnen fixen: laat de homeduino plugin de naar de nano verstuurde code ook publishen op een MQTT topic. De ESP nodes kunnen dan via MQTT daarop abonneren en de berichten doorsturen.
RF signalen van de nodes naar pimatic kunnen zoals ze nu doen gewoon over de API verlopen.
Ik zit net even (voor het eerst) in te lezen op MQTT, maar voor zover ik kan zien is er geen MQTT broker code voor op een ESP8266?

Door Tweakers user Nelus82, maandag 21 november 2016 16:56

Heb een NodeMCU ontvangen, sketch erop gezet en geconfigureerd. Het aansluiten met USB gaat nu een stuk makkelijker. Hij wordt ook herkent alleen krijg nu bij het schakelen van een switch een argument_error foutmelding.

Enig idee?

Door Tweakers user Franzie17, zaterdag 8 april 2017 16:32

Hoi Koffie

Ik wil een paar ESP8266 met NodeMCU gaan kopen maar zie dat er verschillende versies in omloop zijn. Heb jij of iemand anders mss een link welke ik voor het project ESPmaticRF kan gaan gebruiken?
bvb dank!

Door Tweakers user Koffie, zaterdag 8 april 2017 20:37

Franzie17 schreef op zaterdag 8 april 2017 @ 16:32:
Hoi Koffie

Ik wil een paar ESP8266 met NodeMCU gaan kopen maar zie dat er verschillende versies in omloop zijn. Heb jij of iemand anders mss een link welke ik voor het project ESPmaticRF kan gaan gebruiken?
bvb dank!
Gewoon een NodeMCU met CP2102 chipset kiezen, zit je altijd goed :Y)

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.