feb 252018
 

Om te kunnen experimenteren met nodes die via LoRaWAN verbinding maken kun je in Nederland gebruik maken van KPN (niet gratis, landelijke dekking) of The Things Network (wel gratis, nog geen landelijke dekking). Hier in mijn dorpje heeft The Things Network (TTN) nog geen dekking, dus als ik met nodes wilde testen, maakte ik tot nu toe (het afgelopen jaar) gebruik van de goedkoopste tussenoplossing die er is: een single channel gateway. Dat is in mijn geval een LoPy (op basis van deze uitleg).

Maar een jaar verder en inmiddels van mening dat ik ook gewoon de investering wil doen om een “echte” TTN Gateway online te brengen. Dat kost geld en wat werk. Want ik ging natuurlijk niet voor een kant en klare black box, maar voor de combinatie van:

De antenne is nu nog een “gewone” 868Mhz “Whip” antenne omdat de definitieve plaatsing nog een onderwerp van onderzoek is. Ik vind het prima om een buitenantenne zoals de GP901C of SDBF0.5-868 op de schoorsteen te bevestigen (via een extra muurbeugel), maar de vraag is nog even of ik zelf tot zo hoog ga komen. Voor het proefdraaien kan deze antenne ook nog gewoon even.

Het samenstellen van de hardware was niet ingewikkeld, omdat ik heel lui voor de kant en klare backplane gekozen had, kwam er geen solderen aan te pas en was het een kwestie van het in elkaar drukken van Raspberry Pi, backplane en concentrator.

Het installeren van de software bleek iets meer werk dan verwacht, maar zoals zo vaak, ziet het er zo meteen in de beschrijving hieronder ongetwijfeld heel eenvoudig uit. Naar aanleiding van de eerste TTN conferentie vorige maand had ik namelijk een verwijzing naar resin.io voorbij zien komen. Dat is een online dienst die het mogelijk maakt je gateway op afstand in te richten en te beheren. Daar wilde ik ook gebruik van maken.

Poging 1
Waar het bij de eerste poging mis ging was dat ik gewoon Google gebruikt had om een stappenplan te vinden en uit kwam bij deze handleiding. Je zou denken dat een stappenplan van 6 maanden geleden van resin.io toch een verstandige keuze was. Ik wel in ieder geval. Ik denk echter dat de image waar de handleiding naar verwijst ofwel niet goed meer werkt, of gewoon niet goed werkt met mijn Raspberry Pi 1 B+. Want de Gatway wilde niet opstarten.

Poging 2
Bij de tweede poging heb ik gebruik gemaakt van de docker image die hier staat, die ook tijdens de workshops tijdens de TTN conferentie gebruikt is. Nou werd tijdens de conferentie een gateway gebouwd op basis van een RAK831 en niet op basis van een iC880A. Gelukkig was dat geen probleem.

Resin.io
Even wat heel korte info over resin.io. Bij deze dienst maak je via de browser online een “Application” aan, in dit geval een TTN-gateway. Binnen die Application maak je dan een “Device” aan. De dienst krijgt namelijk pas echt meerwaarde als je meerdere devices aan moet maken, dus bijvoorbeeld als je voor een stad een 10-tal gateways moet inrichten en onderhouden. Maar goed, voor nu is eentje voldoende. 🙂

Na het aanmaken van een device (daarbij moet je kiezen welke hardware je gebruikt), krijg je een image die je op een micro-SD kaartje moet zetten. Door dan de Raspberry Pi aan te zetten en rustig te wachten, maakt de Raspberry Pi een verbinding met de server. Als die verbinding tot stand gebracht is, dan kun je de server online, op afstand beheren (herstarten, nieuwe software er naar toe sturen.

Docker
Een tweede begrip dat je moet kunnen plaatsen is “Docker“. Voor nu kan ik je eigenlijk alleen uitleggen dat dit het mechanisme is dat gebruikt wordt om de hele setup en installatie van benodigde packages, scripts etc. op de Raspberry Pi te regelen. De zinvolheid hiervan werd al meteen duidelijk toen ik via Resin.io nadat poging 1 hierboven niet werkte, nog steeds op afstand de code en setup van poging 2 naar de Raspberry Pi te pushen. Nou zat ik toevallig op een meter afstand van de Raspberry Pi, maar die had net zo goed aan de andere kant van de wereld kunnen staan.

Github.com
Laatste noodzakelijke dienst om te kennen is github.com, de bekende dienst voor het bijhouden van (open source) software repositories. Je hebt een account op github.com nodig én je moet er minimaal 1 set SSH sleutels aangemaakt hebben. In de handleiding van de workshop staat dat niet echt heel duidelijk uitgelegd.

De stappen op een rij

1) Zet de hardware in elkaar.

2) Maak een nieuwe Gateway aan in The Things Console.

3) Maak een account aan bij resin.io en log in.

4) Maak in resin.io een “application” aan.

Noem de applicatie bv TTNGateway en zorg dat je de juiste hardware kiest, het maakt verschil of je een Raspberry Pi 1 of Mini, een Raspberry Pi 2 of een Raspberry Pi 3 gebruikt.

5) Maak een nieuw “device” aan

Je kunt hier kiezen of je alleen ondersteuning voor bekabeld netwerk of ook voor draadloos netwerk wilt hebben. In dat laatste geval kun je hier je netwerknaam en wachtwoord invullen zodat de Raspberry Pi meteen bij het opstarten verbinding kan maken

6) Download de image (ZIP-bestand) en zet deze met etcher op een micro-SD kaartje.

7) Stop het micro-SD kaartje in de Raspberry Pi. Zorg er voor dat er ook een antenne aangesloten is en zet de Raspberry Pi aan zodat hij verbinding kan maken met resin.io

8) Als je wilt kun je de naam van je device aanpassen in de resin.io interface.

9) Installeer SourceTree zodat je de beschikking hebt over een Git GUI

10) Als je ze nog niet hebt: maak nieuwe SSH keys aan en voeg ze toe aan github én aan resin.io

Daarvoor kun je dit stappenplan volgen. Als er gesproken wordt over “Git Bash” dan bedoelen ze de “Terminal” in SourceTree.

Volg de stappen bij “Generating a new SSH key” en “Adding your SSH key to the ssh-agent” en daarna bij de volgende stap “Add the SSH key to your GitHub account“.

Vergeet daarna niet de keys te importeren bij resin.io. Die optie zit bij je account, onder preferences bij SSH keys.

11)  Maak een “clone” van de github repository op je eigen lokale schijf

Het kan vanaf de commandolijn, maar ik heb het gedaan vanuit SourceTree. Klik daarvoor op de knop “Clone/New” aan de rechterkant.

In het venster dat verschijnt plak je bij Source Path / URL dan de url van de repository om te klonen: https://github.com/jpmeijers/ttn-resin-gateway-rpi.git
Bij Destination path geef je het pad op naar een lokale (lege) map die je dan eerst even moet aanmaken. In deze map wordt dan alle inhoud van de repository gedownload.

12) plaats deze code nu in jouw eigen repository bij resin.io

Als je naar resin.io gaat zie je aan de rechterkant een commando dat eruit ziet als “git remote add resin youraccount@git.resin.io:youraccount/yourapplication.git” (maar dan met jouw eigen account er in verwerkt).
Open weer het Git bash venster (als je dat niet meer open hebt) en plak daar de commandoregel in en druk op enter.

Daarna kun je de code naar de server sturen met: git push resin master

Bijna klaar!

Na het uitvoeren van het git push commando is het tijd voor een kop koffie. Je zult zien dat er eerst het nodige op je computer zelf gebeurt, daarna gaat alles naar resin.io en daar kun je dan zien dat alles weer naar de Raspberry Pi gedownload wordt.

Er moeten nog een paar dingen ingesteld worden. Dit kun je doen via de “Environment variables”. Wat je minimaal nodig hebt zijn:

Naam Waarde
GW_ID De gateway ID ingesteld in de  TTN console
GW_KEY De gateway KEY gegenereerd door de TTN console
GW_RESET_PIN 22 (optioneel)

Vul die in zodra de download compleet is en je zult zien dat resin.io de Raspberry Pi opnieuw start en als het goed is dan werkt alles daarna.

Op de github pagina van JP Meijers staan nog wat suggesties voor uitbreiding. Zoals het aanpassen van de docker image zodat je statistieken van de gateway in Grafana kunt bekijken.
Sowieso moet ik de image nog een beetje aanpassen zodat ook de SHT21 sensor op de backplane gelezen wordt. Die kan dan ook meteen in Grafana getoond worden.

Maar dat moet even wachten want het weekend is alweer voorbij en de komende twee weken zitten bomvol, dus voor nu mag hij even in zijn huidige setup proefdraaien. Wordt vervolgd!

Deel dit bericht:

  Een reactie aan “Mijn eerste “echte” TTN Gateway online (bijna)”

Sorry, het reactieformulier is momenteel gesloten.