#!/usr/bin/env python3

import paho.mqtt.client as mqtt
from tkinter import *
from math import sin
import time
import threading


# This is the Subscriber
cnt = 0
skalay = 10
def on_connect(client, userdata, flags, rc):
  print("Connected with result code "+str(rc))
  client.subscribe("topic/test")

def prijem2(retazec):
    casti = retazec.split()
    if (len(casti) < 4): return ()
    if (casti[0] != "Sprava") : return ()
    return (int(casti[1]) , int(casti[2]), int(casti[3]))

def on_message(client, userdata, msg):
  global cnt
  global skalay
  cnt += 1
  m = msg.payload.decode()
  print(m)
  cisla = prijem2(m)
  if len(cisla)==3:
    print("Sprava %i %i %i" % cisla)
    x = cnt
    y = cisla[0]*skalay
    w.create_line(x, offset, x, offset-y, fill="#e214b9")

def buttoncallback():
    global master
    global client
    print("END")
    client.disconnect()
    print("client disconnected")
    master.destroy()
    print("tk closed")
    
    
def loopforever():
  global client
  print("Loop")
  client.loop_forever()

master = Tk()
master.title('Roboticka liga - 6. Kolo - Task : Light Pollution')
#rozmery oknam
canvas_width = 1600
canvas_height = 800
offset = canvas_height
# inicializacia okna
w = Canvas(master, width=canvas_width,height=canvas_height)
w.configure(background = "black")
w.pack()

b = Button(master, text="Koniec", command=buttoncallback)
b.configure(background = "light green")
b.pack()

master.configure(background = "pink1")
client = mqtt.Client()
client.connect("localhost",1883,60)

client.on_connect = on_connect
client.on_message = on_message

thread = threading.Thread(target=loopforever, args=[])
thread.start()

master.mainloop()


