Skip to content

Instantly share code, notes, and snippets.

@TotallyInformation
Last active February 29, 2016 08:45
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TotallyInformation/1d06cc6dbb57544f2d8b to your computer and use it in GitHub Desktop.
Save TotallyInformation/1d06cc6dbb57544f2d8b to your computer and use it in GitHub Desktop.
Post data to InfluxDB

There is another flow that outputs data to Influx but it isn't a complete example and it uses a confusing Function node.

This example uses a Template node to correctly format the record for POSTing.

The example is taken from my home automation hub and shows the ping results from a Raspberry Pi 2 to two devices on the network, my router and my NAS.

These are posted to the database (called "domotica") in the form:

network,device={{topic}} value={{payload}}

Where "network" is the measure (like a table in SQL) and "device" is a tag.

You can easily then graph the data using Grafana using a query like:

SELECT mean("value") FROM "network" WHERE "device" =~ /NAS$/ AND $timeFilter GROUP BY time($interval) fill(null)

Note that the data is also written out to MQTT.

Capture

Installing Influx on a Raspberry Pi is not as easy as it should be. They do not publish ARM versions so you need to source it elsewhere. Padcom's Blog has some pre-compiled binaries, not the latest versions but they work just fine. Otherwise, you need to start by installing the Go language which is a marathon in its own right. Installing via GVM is probably easiest. Or maybe try this though I've not tried it myself.

One installed and running though, it is easy to create nice dashboards using Grafana.

[{"id":"3b2726f7.c4d8da","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"Pi2_NR-Live","usetls":false,"verifyservercert":true,"compatmode":false,"keepalive":"15","cleansession":true,"willTopic":"DEVICES/PI2NR-LIVE","willQos":"1","willRetain":"false","willPayload":"Offline","birthTopic":"DEVICES/PI2NR-LIVE","birthQos":"1","birthRetain":"false","birthPayload":"Online"},{"id":"8f2636c6.70d9c8","type":"ping","z":"106a5b82.ef95a4","name":"NAS","host":"192.168.1.2","timer":"20","x":90,"y":580,"wires":[["67f7d6c0.980828"]]},{"id":"254dbbd2.dab244","type":"ping","z":"106a5b82.ef95a4","name":"Router","host":"192.168.1.1","timer":"20","x":90,"y":640,"wires":[["320ac6fd.cdf53a"]]},{"id":"207b9895.df8468","type":"mqtt out","z":"106a5b82.ef95a4","name":"","topic":"","qos":"2","retain":"false","broker":"3b2726f7.c4d8da","x":430,"y":580,"wires":[]},{"id":"111b77b8.eee488","type":"debug","z":"106a5b82.ef95a4","name":"Check Influx Add Record","active":false,"console":"false","complete":"true","x":950,"y":640,"wires":[]},{"id":"fae034e2.051fc8","type":"http request","z":"106a5b82.ef95a4","name":"Post to Influx DB (domotica)","method":"POST","ret":"txt","url":"http://localhost:8086/write?db=domotica","x":700,"y":640,"wires":[["111b77b8.eee488"]]},{"id":"f9c2968b.063d68","type":"template","z":"106a5b82.ef95a4","name":"Fmt Influx Output","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"network,device={{topic}} value={{payload}}","x":470,"y":640,"wires":[["fae034e2.051fc8"]]},{"id":"67f7d6c0.980828","type":"change","z":"106a5b82.ef95a4","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"DEVICES/IP/NAS","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":230,"y":580,"wires":[["f9c2968b.063d68","207b9895.df8468"]]},{"id":"320ac6fd.cdf53a","type":"change","z":"106a5b82.ef95a4","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"DEVICES/IP/Router","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":230,"y":640,"wires":[["207b9895.df8468","f9c2968b.063d68"]]}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment