Koppel je Raspberry Pi aan Olisto

mrt 13, 2018
Frontpage

De dag startte met een onschuldige vraag van Raimond via onze in-app chat:

Is het mogelijk om vanuit Olisto een command te triggeren op een Rasberry Pi? Ik ben namelijk op zoek naar een Wake-on-Lan (WoL) optie. Vanuit m’n Pi kan ik zo’n script starten. Nu nog een manier om dit vanuit Olisto te triggeren.

Een dergelijke vraag komt vaker binnen in verschillende variaties en veelal kunnen we voldoen met een uitleg over Olisto Connect. Raimond is echter al bekend met dit kanaal en zijn vraag ging wat dieper dan wat we gewend waren. Het is geen overbodige luxe om in deze blogpost deze diepgang en de oplossing te delen. Ik heb getracht deze uitleg zo breed mogelijk te beschrijven zonder te vervallen in technisch jargon. Echter, enige voorkennis in de werking van netwerken en beveiliging van je thuisnetwerk is aan te raden.
Ik kan me voorstellen dat ik eerst twee begrippen moet uitleggen, de Raspberry Pi en het Wake on Lan script.

Raspberry Pi

De Raspberry Pi. Wat is dat nu eigenlijk? Kort gezegd, het is een mini-computer op zakformaat. Iets groter dan een pinpas maar klein genoeg om overal in en om je huis te gebruiken voor allerhande toepassingen. Je kunt er een media-speler van maken zodat je al je audio en video er mee kunt afspelen. Zet er een besturingssysteem op als Retropie en maak een retro spelcomputer op je TV. Of installeer open source software en maak het een lokale bedienings-_hub_ voor je slimme huis. Raimond heeft bijvoorbeeld software voor een weerstation op zijn Raspberry Pi geïnstalleerd.
De meest recente uitvoering, Raspberry Pi 3, heeft 1 GB RAM en onder andere bluetooth 4.1, WiFi, Ethernet poort, HDMI en 1GB RAM en 4 USB poorten. Tevens heeft de Pi een Micro SD kaartslot waarmee je de besturingssoftware kunt installeren en aanpassen. Voor de Raspberry Pi zijn enorm veel uitlegvideo’s en stappenplannen te vinden op het internet. Het is een enorm leuke en leerzame manier om zelf aan de slag te gaan met programmeren en meer te leren over computers in en om het huis. Een eenvoudige startkit koop je bijvoorbeeld bij Bol.com

Banana for scale

Een Raspberry Pi. En een banaan voor de verhouding….

Een aantal interessante links voor de Raspberry Pi

Wake on Lan

Een Wake on Lan script (of WoL script) is een klein computerprogramma waarmee je op afstand een andere computer kunt aanzetten. Natuurlijk kun je niet zomaar elke willekeurige computer uit de straat aanzetten, maar een computer wat op je eigen thuisnetwerk aanwezig is. Je hebt bijvoorbeeld een desktop- of gamingcomputer op een kamer staan naast een laptop of een tablet die je gebruikt. Dit werkt alleen met computers die via een ethernet- of netwerkkabel aan het netwerk zijn verbonden. Computers die via WiFi zijn verbonden kun je niet op afstand inschakelen. Een WoL script verstuurt een zogenaamd magic packet naar de andere computer. Die computer reageert daar op door zichzelf aan te zetten.
Er zitten wel wat haken en ogen aan een WoL script. Als de ontvangende computer niet is uitgezet maar in slaapstand staat, kan het pakket soms zijn werk niet goed doen. Tevens kan de beveiliging op je thuismodem of -router roet in het eten gooien. Al met al vereist een succesvolle werking van een WoL script veel testen en proberen.

Overal je PC aanzetten

Raimond heeft thuis al een Pi staan en gebruikt deze onder andere voor zijn weerstation. Zijn wens was om door middel van een trigg het WoL script op te starten zodat zijn thuis-PC automatisch aan gaat. Dit kan bijvoorbeeld bij zonsopgang, een specifiek tijdstip of zoals Raimond het uiteindelijk heeft gemaakt, met een knop op zijn telefoon. Hiervoor dien je wel een aantal zaken eerst in orde te hebben:

  • Zijn Raspberry Pi draait een webserver waarmee het script van buiten is te benaderen;
  • Het (externe) IP adres en eventueel de poort waarmee het script is aan te roepen.

Je Raspberry Pi is actief binnen je eigen thuisnetwerk en heeft een IP adres wat vaak iets is als 196.0.168.123 of een soortgelijk adres. Dit adres is echter alleen binnen je eigen thuisnetwerk te benaderen en zal niet te vinden zijn via het internet. Ofwel, op zijn thuismodem heeft Raimond een instelling aangepast zodat zijn Raspberry Pi kan benaderen buiten zijn eigen netwerk. Er zijn talloze handleidingen op het web te vinden waarmee je je Pi beschikbaar kunt maken buiten je eigen netwerk. Hou hier altijd de beveiliging van je netwerk en je systeem in de gaten. Gebruik geen eenvoudige of standaard wachtwoorden en zorg dat je een firewall op je Raspberry Pi hebt staan. Het voert te ver voor dit artikel om een complete uitleg te geven hoe je dit kunt doen. Op MakerHacks vind je een goede uitleg evenals op het Nederlandstalige Raspberry Tips.

Nadat Raimond zijn Raspberry Pi veilig openbaar heeft gemaakt kan hij het Wake on Lan script activeren. Het WoL script is behoorlijk recht door zee, na het installeren van de Wakeonlan package op de Pi via sudo apt-get install wakeonlan kan het volgende PHP script worden aangeroepen

<?php
# replace with your target MAC address
$mac = 'aa:bb:cc:11:22:33';
exec("wakeonlan $mac");
?>

Vul het juiste MAC adres is van de PC die je wilt opstarten en het script kan worden aangeroepen.

De oplossing met Olisto

Raimond heeft een WoL script benaderbaar gemaakt via de webserver van zijn Raspberry Pi. Nu kan hij het script starten door rechtsreeks naar het juiste adres te gaan in de browser. Dit adres kan hij eveneens in Olisto gebruiken als actie voor het Olisto Connect kanaal. Olisto Connect is een speciaal kanaal binnen Olisto waarmee je zogenaamde HTTP Requests kunt doen.
Wat hier dan gebeurt is dat het Olisto Connect als actie wordt ingesteld. Je geeft vervolgens de URL op van de pagina die we moeten aanroepen. Dit adres ziet er uit als de URL van een reguliere internetpagina, maar veelal roep je hiermee specifieke scripts op die iets gaan doen. Als extra kun je nog data meegeven aan het script, afhankelijk of het script iets met deze data moet doen. In dit geval is dat niet zo.

De trigg die Raimond uiteindelijk maakte is redelijk eenvoudig: Als ik op de knop Zet PC Aan klik, start dan de Olisto Connect actie. Daarnaast heeft hij nog een trigg die elke werkdag om 7:15 zijn PC start als zijn telefoon thuis aanwezig is. Nu wacht Raimond nog op een Google Home kanaal in Olisto, zodat hij gewoon kan vragen om de PC aan te zetten. Wat vervolgens als magie gebeurt…

Olisto Connect

Bovenstaande uitleg begin met een relatief eenvoudige vraag. Je ziet echter dat je Olisto voor meer complexe koppelingen kunt gebruiken in combinatie met Olisto Connect en hardware als een Raspberry Pi. Ik kan niet genoeg benadrukken dat veiligheid en gezond verstand hier wel de boventoon moeten voeren. Iedereen kan starten met een Raspberry Pi en het beschikbaar stellen van deze mini-krachtpatser voor de buitenwereld is goed te doen. Als je nauwgezet de juiste stappen volgt en goed weet waar veiligheidsrisico’s op de loer kunnen liggen. Als je dit eenmaal onder de knie hebt kan er een wereld voor je open gaan en kun je je thuisautomatisering nog verder naar je eigen hand zetten.

Veel plezier met de Raspberry Pi en natuurlijk Happy Pi Day!