import requests, json, random
from time import sleep

url = 'http://localhost:3000'
old = [0, 0, 0, 0] #list to hold the previous values
new = [0, 0, 0, 0] #list to hold the new values
names = ["temperature", "air humidity", "ground humidity", "beaufort"]
flag = 0
diff = 0
timer = 0

while True:
	temp = random.randint(15,45) #Temperature
	ahum = random.randint(0,100) #Air humidity	
	ghum = random.randint(0,100) #Ground humidity
	wind = random.randint(0,17) #Beaufort (Bofor)
	
	print("Temperature:",temp)
	print("Air humidity:",ahum)
	print("Ground humidity:",ghum)
	print("Beaufort:",wind,"\n")

	new[0]=temp #assigning to list new the new values
	new[1]=ahum
	new[2]=ghum
	new[3]=wind
	
	if flag == 1: #we don't want to do calculations with zeros
		print("New temperature: ",new[0], ", Old temperature: ", old[0])
		print("New air humidity: ",new[1], ", Old air humidity: ", old[1])
		print("New ground humidity: ",new[2], ", Old ground humidity: ", old[2])
		print("New beaufort: ",new[3], ", Old beaufort: ", old[3],"\n")

		if timer==10: #if 5 minutes have passed then send the new values to server (10 x 30secs = 300 secs = 5 mins) 
			print("Send to server: 5 mins passed!")#send all the new data to server

			data = {0:new[i]} #sending the new value of temperature 
			r = requests.post(url, data) #sending a json object to the specified url

			data = {1:new[i]} #sending the new value of air humidity
			r = requests.post(url, data) #sending a json object to the specified url

			data = {2:new[i]} #sending the new value of ground humidity 
			r = requests.post(url, data) #sending a json object to the specified url

			data = {3:new[i]} #sending the new value of beaufort
			r = requests.post(url, data) #sending a json object to the specified url

		else:
			for i in range(4): 
				if (new[i] == 0) and (old[i] == 0): #if the previous value and the new one are 0 then continue
					continue
				elif old[i] == 0: #we can't devide a number with zero
					if new[i] > 2: #check if the new value is above 2 (10%)
						diff = new[i]
				elif new[i] == 0: #if the new value is 0 then
					if old[i] > 2: #check if the old value is above 2 (10%)
						diff = old[i]
				else:
					diff = round((abs((new[i]-old[i]))/old[i])*100,2) #calculating percentage difference
					print("Percentage difference of",names[i],":",diff) 
					
				if diff > 10: #if the new and old values differ by 10 then send the new value to server
					timer = 0
					print('Sending to server (10%)...')
					
					if(i == 0):

						data = {0:old[i]} #sending the old value
						r = requests.post(url, data)
						data = {0:new[i]} #sending the new value

					elif(i == 1):

						data = {1:old[i]} #sending the old value
						r = requests.post(url, data)
						data = {1:new[i]} #sending the new value

					elif(i == 2):

						data = {2:new[i]} #sending the old value
					
					elif(i == 3):

						data = {3:new[i]} #sending the old value
						
					r = requests.post(url, data) #sending a json object to the specified url
		
		print('\n')
							
	sleep(5) #produce data every 30 seconds
	timer+=1


	old[0]=temp #assigning to list old the old values
	old[1]=ahum
	old[2]=ghum
	old[3]=wind
	
	flag = 1