Ik kreeg via de mail een vraag over Node-RED en InfluxDB, maar had net even geen server beschikbaar met beide geïnstalleerd. Hoe kon ik nu testen of ik het probleem kon reproduceren?
Docker to the rescue!
Ik heb op mijn laptop Docker geïnstalleerd staan. Ik kan nu niet helemaal uitleggen wat Docker is en hoe je het installeert, zie daarvoor ook de eerdere berichten op dit weblog. Maar het installeren van een server met Node-RED was heel simpel.
Vanaf een Docker commandoregel type je:
> docker run -it -p 1880:1880 –name mynodered nodered/node-red-docker
was voldoende om een server te starten die (in mijn geval) op http://192.168.99.100:1880 een Node-RED instantie activeerde.
Voor influxDB moest ik wat langer zoeken, maar uiteindelijk werkte dit heel handig. In een tweede Docker commandoregel
> docker run -d
--name docker-statsd-influxdb-grafana \
-p 3003:3003 \
-p 3004:8083 \
-p 8086:8086 \
-p 22022:22 \
-p 8125:8125/udp \
samuelebistoletti/docker-statsd-influxdb-grafana:latest
Nu moest ik die twee nog aan elkaar knopen. In een derde Docker commandoregel kon ik met het commando
> docker ps
zien wat de ID’s waren van de twee containers die actief waren.
Het eerste maakte ik verbinding met die voor Node-RED.
> docker exec -it 98a733588a15 /bin/bash
Binnen de container typte ik:
$ cd /data
$ npm install node-red-contrib-influxdb
$ exit
Daarna weer vanaf de Docker commandoregel:
> docker stop mynodered
> docker start mynodered
Na het refreshen van het browservenster waren de influxDB blokken aanwezig.
Nu nog de database configureren. Daarvoor moest ik verbinding maken met de tweede container:
docker exec -it b989bbd25d43 /bin/bash
Met
influx
start je de InfluxDB commandoprompt.
Met
> create database Test
maak je een database met de naam Test. En met
> CREATE RETENTION POLICY "un_an" ON Test DURATION 365d REPLICATION 1 DEFAULT
stel je de bewaartermijn in op 1 jaar.
Nou kun je in Node-RED de node instellen voor influxDB. Let op! je moet daar niet msg.load invullen bij Measurement, maar de naam die je de measurement wilt geven en zónder punt in de naam.
Als het goed is kun je de waarden in de influxDB binnen zien komen met
> select * from waterniveau
Het script uit de vraag was overigens een heel interessant script. Het haalde namelijk waterstanden op via http en json en haalde de waarde voor 1 plaats eruit om dan in de influxDB database op te slaan.
** N.B. Je kunt aan het beperkt aantal blogs zien dat ik gewoon weinig tijd heb om uitgebreide blogs te maken. Dus vragen via de mail stellen mag, maar ik kan ze maar heel af en toe ook echt oppakken. Meestal zijn er ook veel en veel betere plekken (forums etc) om zulke vragen te stellen.
Ik had even een setup nodig met Node-RED + InfluxDB. Via Docker ging dat heel eenvoudig.
https://t.co/zXF2rkq90E https://t.co/DXUnubPioK
Node-RED + InfluxDB in Docker https://t.co/6BDty7ZGoe