from lxml import html
import requests
import serial
import time
import sys

#request magnet until N
#play standby tone
#request button until Y
#get windspeed from website
#send frequency to speaker
#until magnet reads Y

def sendToneFreq(freq):
	freqStr = "{:04.0f}".format(freq)
	print (freqStr)
	ser.write('S')
	time.sleep(.02)
	ser.write(freqStr[0])
	time.sleep(.02)
	ser.write(freqStr[1])
	time.sleep(.02)
	ser.write(freqStr[2])
	time.sleep(.02)
	ser.write(freqStr[3])
	time.sleep(.02)	
	
def main():
	print('Start Main')
	ser.write('M')
	ser.flush()
	while (ser.read(1) == 'Y'):
		time.sleep(.1)
		ser.write('M')
		ser.flush()

	print('magnet removed')
	
	sendToneFreq(440.0)
	
	print('looking for button press')

	ser.write('B')
	ser.flush()
	while (ser.read(1) == 'N'):
		time.sleep(.1)
		ser.write('B')
		ser.flush()
		
	print('button pressed')
	
	widnspeed = getSolarWindSpeed()
	print(widnspeed)
	sendToneFreq(widnspeed*10)

	print('waiting for magnet')

	ser.write('M')
	ser.flush()
	while (ser.read(1) == 'N'):
		time.sleep(.1)
		ser.write('M')
		ser.flush()
	print('magnet found')
	sendToneFreq(1.0)
	


def getSolarWindSpeed():
	page = requests.get('http://services.swpc.noaa.gov/text/ace-swepam.txt')
	n = 18
	lines = page.text.splitlines()
	latestUpdatLine = lines[n]
	windSpeedText = latestUpdatLine[52:60].strip()
	windSpeed = float(windSpeedText)
	while (windSpeed < 0):
		n += 1
		latestUpdatLine = lines[n]
		windSpeedText = latestUpdatLine[52:60].strip()
		windSpeed = float(windSpeedText)
	return windSpeed



#
#  check command line arguments
#
if (len(sys.argv) != 2):
   print "command line: webScrape.py serial_port"
   sys.exit()
port = sys.argv[1]
#
# open serial port
#
ser = serial.Serial(port,9600)
ser.setDTR()

sendToneFreq(1.0)

while(1):
	main()