Skip to content

Instantly share code, notes, and snippets.

@jonasryberg
Last active August 22, 2017 11:27
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 jonasryberg/8904232 to your computer and use it in GitHub Desktop.
Save jonasryberg/8904232 to your computer and use it in GitHub Desktop.
Pythonkod för att med hjälp av en Raspberry Pi, en PiGlow från Pimoroni och api från Trafiklab visa tid till nästa avgång i tunnelbanan
#!/usr/bin/python
# coding=latin1
import urllib # behövs för att hämta data från nätet
import requests # behövs för att hämta data från nätet installeras med instruktioner från http://docs.python-requests.org/en/latest/user/install/#install
from pyglow import PyGlow #hämtas på https://github.com/benleb/PyGlow
from xml.dom.minidom import parse, parseString #för att kunna tolka xml-informationen
pyglow = PyGlow()
url = 'https://api.trafiklab.se/sl/realtid/GetDepartures.xml?siteId=XXXX&key=DIN API-NYCKEL' #ersätt XXXX med önskad stations id och sätt in din api-nyckel sist i webbadresen. Båda hämtas hos trafiklab.se
r = requests.get(url)
avg = r.text
avg = avg.encode('utf-8')
# Här öppnar vi XML-filen med minidom
dom = parseString(avg)
DisplayRow1 = dom.getElementsByTagName('DisplayRow1') # här väljer vi att hämta info från Displayrow1, dvs samma info som finns på första raden i t-banans infoskyltar
mot = DisplayRow1[1].firstChild.nodeValue # här har vi valt den andra skylten på aktuell station
# koden nedan väljer ut bara minut-siffran från strängen, kan säker göras mycket effektivare och säkrare
mot = mot[18:len(mot)]
mot = mot[0]
if mot.isdigit():
mot = int(mot)
else:
mot = int(0)
pyglow.all(0)
# tand led-lamporna på pyglow
start = 1
while mot > 0 and mot < 19:
pyglow.led(start,100)
mot = mot -1
start = start + 1
if mot > 19:
pyglow.all(100)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment