from tkinter import *

class DOTDisplay:

    def __init__(self,mainWin):
        self.win = mainWin
        self.pi = PhotoImage(file="airport_road.gif")
        self.canvas = Canvas(self.win, width=922,height=321)
        self.canvas.create_image( (0,0), image=self.pi, anchor=NW)
        self.canvas.pack()

        self.flowRate = 0

        
    def getData(self):
        import urllib.request
        import gzip
        from io import BytesIO
        import xml.etree.ElementTree as etree

        url = 'http://data.dot.state.mn.us/iris_xml/det_sample.xml.gz'

        request = urllib.request.Request(url)
        response = urllib.request.urlopen(request)

        data = response.read()
        buf = BytesIO( data)

        f2 = gzip.GzipFile(fileobj=buf)
        

        tree = etree.parse( f2)
        root = tree.getroot()
        for item in root:
            attrib = item.attrib
            sensorNum = attrib['sensor']
            if sensorNum == "1583":
                print( attrib['flow'] )
                self.flowRate = int( attrib['flow'] )
                
    def displayData(self):
        print( "flowrate is:", self.flowRate)
        if self.flowRate > 900:
           self.canvas.create_rectangle( (100, 130, 110,140), fill='red')
        else:
           self.canvas.create_rectangle( (100, 130, 110,140), fill='green')

    def update(self):
        print("Updating!")
        self.getData()
        self.displayData()
        self.canvas.after( 31000, self.update)

        
        




mw = Tk()
myClass = DOTDisplay(mw)
myClass.getData()
myClass.displayData()
myClass.update()
mw.mainloop()
