Using Node-Red to graph scale data

Having used Node-Red briefly about two years ago, i decided to load it again onto the Raspberry Pi which listens for my BS440 scale. Just to dig into Node-Red and see where it got.

Installing Node-Red is a breeze although it takes a coffee and a beer or two before it is installed. But it’s more than worth the wait! A newly added set of nodes is the “dashboard” which can be added through the palette manager once Node-Red is up and running.

My idea was that i could graph the BS440 scale data which is stored into a CSV file (if the CSV plugin is enabled). I was shocked to find out i had made a fully operational webpage showing the data within one hour of coding (or drawing to be more precise)! And that included getting  familiar with Node-Red.

The result is a fancy looking page which shows nicely on my SmartPhone and is lightning fast. It offers a drop down selection for the type of data and two buttons to select the user. Ain’t that cool!

So how is this done? Without giving a lecture on Node-Red (i’ll leave it up to you to explore this piece of magic) this is what the flow looks like:

NR-BS440-flow

The core is reading the CSV file. The filename is set by selecting a user. Once the file is read it is converted to a node-js object. Type selects which data we want to graph. The selected type of data is read from the object and fed into the graph node.

The selecting thing might need some explanation as it uses JSONata (just watch the video). It is included in Node-Red and enables you to make a query from a bunch of JSON formatted data in just a single statement. As an example. If you want to craft an array of “vet” values from all data and change the unix timestamp to show milliseconds on the fly the JSONata for that is just:

[ { “key”: “vet”, “values”: msg.payload.[tijd*1000, vet] } ]

and the node “Select vet”  then looks like (note the J: selection)

NR-BS440-4

The rest of the nodes just show the dropdown list and store and show the current user.

The project is made available on my Github

On to the next project. Lets have fun!

Advertisements
This entry was posted in BLE and tagged , , , , , , , . Bookmark the permalink.

4 Responses to Using Node-Red to graph scale data

  1. GD Electronics says:

    Hey, Cool project.
    I am trying to develop my own front end from this although not from scales.
    I was looking to select a stored persons name and show data from a CSV file, e.g. the peoples names would populate a dropdown dynamically as they are found in the csv, then it would show the weight for that person for the selected date.
    I am trying to reverse engineer your node red project, any chance of getting a sample of your CSV?
    Appreciate it!!
    Thanks

    Like

    • keptenkurk says:

      Hi, thanks for your comment and reading the blog! I will grab the current CSV (it’s still running and growing) once i have access to the Pi tonight.

      Like

      • GD Electronics says:

        Hi,
        Thanks for the reply, I really appreciate it!!
        Its a cool project, it really showcases whats possible with the Node-RED UI.
        I like what you’ve done and looks better/easier than what id usually create with ASP.net
        Thanks keptenkurk

        Like

      • keptenkurk says:

        Just emailed you 2 sample CSV files

        Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s