From Ituri

I wrote a short shell script which shows the current traffic congestion inside of pimatic. The script can be included as a ShellSensor and shows the time that it’ll take you to travel to your defined destination according to the current traffic. I use this every morning to see how long it’ll take me to get to work:


At first you see the time with traffic, then the quickest route and eventually the traffic congestion (None/Mild/…).
Here’s the section for your config.json

{
  "id": "traffic",
  "name": "Verkehr",
  "class": "ShellSensor",
  "attributeName": "traffic",
  "attributeType": "string",
  "attributeUnit": "",
  "command": "/usr/local/bin/traffic.sh",
  "interval": 600000
},

And here’s the script itself:

#!/bin/sh
apikey='YOURKEY'
start='Examplestreet, Hometown'
end='Examplestreet, Destination'
data=$(curl -s http://dev.virtualearth.net/REST/v1/Routes?wayPoint.1\=$start\&waypoint.2\=$end\&optimize=time\&distanceUnit\=km\&key=$apikey)


twt=$(echo $data | jq '.resourceSets | .[] | .resources | .[] | .travelDurationTraffic')
y=$((twt / 60))
traffic=$(echo $data | jq '.resourceSets | .[] | .resources | .[] | .trafficCongestion' | sed 's/"//' | sed 's/"//')
route=$(echo $data | jq '.resourceSets | .[] | .resources | .[] | .routeLegs | .[] | .description' | sed 's/"//' | sed 's/"//')

echo "$y Minuten via $route ($traffic)"

There are some things to do in order to get the script running:

  • Install jq. It’s needed to parse the data. Unfortunately, there’s no package available in raspbian so you’ll need to install it from source.
  • Get an API-key from bing. Here are instructions on how to get a key (it’s free!).
  • Add your API-key on top of the script. Also change your starting point and your destination. At the end, don’t forget to copy the script to /usr/bin/local.

That’s it. I know this is just an ugly hack, but I thought it might of help for some of you.

Best
ituri