Finland, Helsinki - Real-time HSL transit map
A realtime transit map generated from the Helsinki transportation realtime MQTT stream, including rate limiting and WebSockets output.
[{"id":"e2195212.a4714","type":"mqtt in","z":"266e93fa.65ea04","name":"HSL open API","topic":"/hfp/journey/#","qos":"2","broker":"a7e4e343.855248","x":247.7452392578125,"y":209,"wires":[["68c08c01.967884"]]},{"id":"3dc8e41d.4f6cb4","type":"function","z":"266e93fa.65ea04","name":"Parse Vehicle","func":"var data = msg.payload;\n\nvar vehicle = {\n name: data.VP.veh,\n lat: data.VP.lat,\n lon: data.VP.long,\n icon: \"ship\",\n iconColor: \"red\",\n source: data.VP.source,\n bearing: data.VP.hdg,\n speed: data.VP.spd,\n designation: data.VP.desi\n //extrainfo: data.VP.desi,\n //timeStamp: data.VP.tst\n};\n\nif (\n vehicle.source === 'hsl helmi'\n ||\n vehicle.source === 'hsl roisto'\n ) {\n // bus\n vehicle.icon = 'friend';\n vehicle.iconColor = 'blue';\n vehicle.layer = \"Bus\";\n} else if (\n vehicle.source === 'hsl live'\n ||\n vehicle.source === 'sm5logger'\n ) {\n // Local trains/trams\n vehicle.iconColor = 'green';\n vehicle.layer = \"Train/tram\";\n} else if (vehicle.source === 'vr') {\n // VR train (local)\n vehicle.iconColor = 'chartreuse';\n vehicle.layer = \"VR train (local)\";\n} else if (vehicle.source === 'meri-test.digitraffic.fi') {\n // ferry\n vehicle.iconColor = 'aqua';\n vehicle.layer = \"Ferry\";\n} else {\n node.error('Unknown source:' + vehicle.source);\n node.error('Unknown designation:' + vehicle.designation);\n}\n\nmsg.topic = vehicle.name;\nmsg.payload = vehicle;\n\nreturn msg;","outputs":1,"noerr":0,"x":423.9952392578125,"y":311.25,"wires":[["5d7249be.1cd9d8","5467e8f0.ab2c18"]]},{"id":"5467e8f0.ab2c18","type":"debug","z":"266e93fa.65ea04","name":"","active":false,"console":"false","complete":"false","x":586.2452392578125,"y":251.353515625,"wires":[]},{"id":"68c08c01.967884","type":"json","z":"266e93fa.65ea04","name":"","x":347.2452392578125,"y":258.353515625,"wires":[["3dc8e41d.4f6cb4","dd715ade.0ffc3"]]},{"id":"5d7249be.1cd9d8","type":"worldmap","z":"266e93fa.65ea04","name":"","lat":"60","lon":"25","zoom":"10","layer":"OSM","cluster":"","maxage":"","usermenu":"hide","panit":"false","x":601.5,"y":363,"wires":[]},{"id":"dd715ade.0ffc3","type":"debug","z":"266e93fa.65ea04","name":"","active":false,"console":"false","complete":"false","x":488.5,"y":188,"wires":[]},{"id":"a7e4e343.855248","type":"mqtt-broker","broker":"mqtt.hsl.fi","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":15,"cleansession":true,"willQos":"0","birthQos":"0"}]