jan 082018
 

Toen ik een week geleden schreef over het automatisch opslaan van sensordata in Google Sheets gaf ik al aan dat dat zeker niet een optimale oplossing was. Inmiddels wordt dat ook meer dan duidelijk omdat de spreadsheet zich blijft vullen en het opbouwen van de grafieken duidelijk meer tijd kost.

In dat bericht verwees ik al naar InfluxDB, een database die specifiek ontwikkeld is voor het opslaan van tijdreeksen, data dus die gekoppeld is aan een datum/tijd. Het is dan ook niet zo vreemd dat InfluxDB populair is als database om de data die vanuit de verschillende sensoren die je aan OpenHAB koppelt op te slaan. OpenHAB is een gratis tool/omgeving waarmee je zelf je huis kunt automatiseren. Je kunt er lampen of schakelaars mee aansluiten, de data van sensoren zoals thermometers verzamelen en weergeven, je kunt acties koppelen aan die sensoren (bv zet de ventilator op de badkamer automatisch aan als de luchtvochtigheid boven de 50% komt) etc.

Ik gebruik OpenHAB al een tijd en hoewel er ook hier discussies zijn over wat de beste omgeving is (er zijn meer gratis alternatieven op dit gebied), werkt het voor mij en heb ik geen reden om over te stappen. Wat ik echter wel wil doen is overstappen van mijn huidige 1.8 versie naar de recente 2.2 versie. Dat is op papier een eenvoudige upgrade, ik had vooral al begrepen dat het in praktijk niet helemaal zo zou zijn. Daarom wilde ik dat voorzichtig aanpakken. Het voordeel van het gebruik van OpenHAB op een Raspberry Pi is dat het niet veel geld kost om er een tweede Raspberry Pi naast te zetten met de nieuwe versie (zeker als je er al een paar in huis hebt).

Een tweede ontwerpkeuze waar ik veel voordeel van gehad heb is dat ik MQTT gebruik voor zo ongeveer alles wat met sensordata te maken heeft en ook voor het aansturen van schakelaren in huis. De Mosquitto-server (een gratis server voor MQTT) die ik daarvoor gebruik staat op dezelfde server als OpenHAB. Dat zou een probleem kunnen zijn, alle sensoren sturen namelijk hun data naar dat IP-adres, maar het is gelukkig heel eenvoudig om de Mosquitto-server te vertellen dat alle ontvangen data ook doorgestuurd moet worden naar de Mosquitto-server die op de “nieuwe” (test-)server met OpenHAB 2.2 staat. Zo kon ik de bestaande productieserver helemaal met rust laten (op het toevoegen van die ene doorverwijzing in het mosquitto.conf bestand (zie ook de schermafdruk hiernaast voor de benodigde aanpassing, voor het IP-adres gebruik je het eigen IP-adres van de nieuwe server, de naam van de connection is vrij te kiezen). Daarna moest ik de Mosquitto-server even herstarten met systemctl status mosquitto.service -l

Goed, terug naar de tijdseriedata en InfluxDB. Er zijn tutorials beschikbaar voor het installeren van InfluxDB op de Raspberry Pi (bv hier). Maar omdat het mij om de combinatie InfluxDB, Mosquitto, OpenHAB én Grafana ging, heb ik gekozen voor openHABian. Daar heb je namelijk al die tools (inclusief o.a. Node-RED, ook heel handig in combinatie met sensoren) ter beschikking in één download. Er is wat discussie over de vraag of je dat wel allemaal op één Raspberry Pi moet willen installeren. Dat zal waarschijnlijk een beetje afhangen van het gebruik. Ik heb het geheel nu draaien op 1 Raspberry Pi 2 en het werkt voor nu voldoende snel. Ik moet wel nog even uitzoeken hoe snel de database groeit, maar met een 16GB micro-SD kaartje is er nog wel wat ruimte over voor groei.
Lees verder….

Deel dit bericht:
jan 052017
 

Ik moet even wat code parkeren naar aanleiding van wat “vakantie-uitzoekwerk”. Ik heb mijn DIY ontvanger en zender voor 433.92Mhz, voor het schakelen van mijn lampen, de kerstboom etc. vervangen door een RFXcom RFXtrx433E USB 433.92MHz Transceiver. Natuurlijk is zelfgebouwd heel leuk en leerzaam, maar de RFXcom heeft al meteen laten zien dat hij een stuk betere ontvangst heeft dan mijn eigen creatie. Net als de andere systemen, communiceert de RFXcom niet rechtstreeks met mijn OpenHab systeem, maar via een MQTT-server.

De RFXcom adapter hangt aan een Raspberry Pi machine. Niet die waar de MQTT-server en OpenHab zelf op staan, dat bleek net wat veel van het goede. Onhandig is dat RFXcom zelf geen Debian software beschikbaar stelt. Maar gelukkig zijn er anderen die daar  voor gezorgd hebben.  Zoals Anton, die deze code in Python beschikbaar gemaakt heeft.

Welke protocollen in RFXcom?
Stap #1 is om te bepalen welke protocollen de RFXcom moet ondersteunen bij het ontvangen. Hoe minder hoe beter, dan raakt hij minder in de war. Welke protocollen de verschillende apparaten gebruiken kun je opzoeken, maar je kunt ook de rfxcom applicatie opstarten en luisteren naar wat er binnen komt. Alleen, die draait niet op Debian. Een optie is om de adapter “door te verbinden” naar een poort op de Raspberry Pi en dan vanaf een andere computer verbinding te maken. Dit kan met de tool “socat”, die je even moet installeren op de Raspberry Pi en dan moet je het volgende commando runnen:
sudo socat tcp-listen:10001,fork,reuseaddr file:/dev/ttyUSB0,raw &
Het is wel belangrijk om daarna het proces weer te killen, want het Python-script en socat kunnen niet tegelijkertijd gebruik maken van de USB-poort.
Lees verder….

Deel dit bericht: