Streamr node-red example flow with Helsinki Tram data stream

An example flow on how to read data from Helsinki Tram Stream with streamr node and display trams on map in realtime.

This flow utilizes following nodes:

  • node-red-contrib-web-worldmap
  • node-red-contrib-streamr

To use this flow you'll need a Streamr account and Streamr accounts API keys and you should acquire the free Helsinki Tram stream from Streamr marketplace. You'll also need to install streamr node red node and world map node.

Import the flow from flow.json to your node-red and adjust your Streamr account API keys to Tram demo feed to be able to listen to it. Deploy the flow and navigate to your instance of node-red with worldmap e.g. http://127.0.0.1:1880/worldmap/. Locate Finland and Helsinki from map and note the movements of trams.

[{"id":"e521cc7d.08b6d","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"b56bf3bd.b31d2","type":"worldmap","z":"e521cc7d.08b6d","name":"","lat":"","lon":"","zoom":"","layer":"","cluster":"","maxage":"","usermenu":"show","layers":"show","panit":"false","panlock":"false","zoomlock":"false","path":"/worldmap","x":1040,"y":620,"wires":[]},{"id":"7636790.efa8588","type":"function","z":"e521cc7d.08b6d","name":"Pass filter","func":"var vehicleIds = flow.get(\"vehicleIds\") || {};\nvar delay = 15000; //ms\n\n\nif (msg.payload.veh in vehicleIds){\n    if(vehicleIds[msg.payload.veh] < new Date().getTime()){\n\n        vehicleIds[msg.payload.veh] =  new Date().getTime()+delay;\n        flow.set(\"vehicleIds\",vehicleIds);\n        return msg;\n    }\n    \n} else {\n    //console.log(vehicleIds)\n    vehicleIds[msg.payload.veh] =  new Date().getTime()+delay;\n    flow.set(\"vehicleIds\",vehicleIds);\n}\n\n","outputs":1,"noerr":0,"x":500,"y":500,"wires":[["5207d140.86461"]]},{"id":"5207d140.86461","type":"function","z":"e521cc7d.08b6d","name":"name / lon ","func":"msg.payload.name = msg.payload.veh;\nmsg.payload.lon = msg.payload.long;\nmsg.payload.bearing = msg.payload.hdg;\nmsg.payload.speed = msg.payload.spd;\n\nreturn msg;","outputs":1,"noerr":0,"x":790,"y":540,"wires":[["b56bf3bd.b31d2"]]},{"id":"aa4e44d6.dd6ff8","type":"debug","z":"e521cc7d.08b6d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":510,"y":300,"wires":[]},{"id":"f15909ce.701e98","type":"streamr-sub","z":"e521cc7d.08b6d","name":"Tram demo feed","stream":"be18315a.88704","x":230,"y":400,"wires":[["aa4e44d6.dd6ff8","7636790.efa8588"]]},{"id":"be18315a.88704","type":"streamr-config","z":"","apiKey":"","streamId":"7wa7APtlTq6EC5iTCBy6dw"}]
yaruno

Flow Info

created 2 months ago

Node Types

Core
  • debug (x1)
  • function (x2)
Other

Tags

  • streamr
  • api
  • iot
  • datamarketplace
  • blockchain
  • traffic
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option