User:EmbeddedLinuxGuy

From Noisebridge
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

table

Simple collapsible table
Lorem ipsum dolor sit amet

ssh public key

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxmitrXxenyJDjEhVCNeBDMtV0+yuXGVrb0qO/e9LxiB0w255JvX/iDWtLqaeu7DriwK9yiCM6UXUp3gnhUUXIDvs5cljXRDlLbm9ziq5fumh0r+AvlDMRejFwxCSNuucY0/vkaY0Ow1CzlecixFjZ77tCygbqm/az++D0+KpRavyvLyVXiSpdEbJFKpq5RTdk4ht7DpMxHKJC7h3FCoNB9N3B7H+dUGmTx3JKwAJ5uHeOpV8wKrTQco/6SlROl2zBBIsllvbniYuBZ5uhK1qWc8CFEaH6yi4MM20SB/qQpCn/G/1/RdlW1Qks8sy5uMmSXP1FA0FtaRuhAi+gSoaDw== embeddedlinuxguy@gmail.com

bio

I mostly do programming for Linux and the Web, but also like to tinker with an Arduino and soldering iron when I have the chance.

art

Stars SVG

Stuff

import serial
import urllib
import sys
if sys.version_info >= (3, 0):
	import urllib.request
	gui = 0 
else:
	gui = 1
from time import strftime, gmtime, sleep

# mode 0=error, 1-5
# door 0=closed 1=open
# gate 0=closed 1=open
# laser beam 0=fine 1=interrupted
# wire 0=fine 1=interrupted
# keypad 0=nothing/1=good/2=bad password
# code string-of-digits (5 or more)

PAUSE_SERIAL = 0

if gui:
	import wx
	ID_START = wx.NewId()
	class Frame(wx.Frame):
		def __init__(self, title):
			wx.Frame.__init__(self, None, title=title, size=(350,200))
			panel = wx.Panel(self)
			box = wx.BoxSizer(wx.VERTICAL)
			m_text = wx.StaticText(panel, -1, "Box Shop Alarm Control")
			m_text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
			m_text.SetSize(m_text.GetBestSize())
			box.Add(m_text, 0, wx.ALL, 10)

			self.m_status = wx.StaticText(panel, -1, "")
			self.m_open = wx.Button(panel, ID_START, "Start")
			self.m_close = wx.Button(panel, wx.ID_CLOSE, "Stop")
			self.m_buzz = wx.Button(panel, wx.ID_CLOSE, "Buzz")
			self.m_close.Bind(wx.EVT_BUTTON, self.OnClose)
			self.m_open.Bind(wx.EVT_BUTTON, self.OnStart)
			self.m_buzz.Bind(wx.EVT_BUTTON, self.OnBuzz)
			box.Add(self.m_open, 0, wx.ALL, 10)
			box.Add(self.m_close, 0, wx.ALL, 10)
			box.Add(self.m_buzz, 0, wx.ALL, 10)
			panel.SetSizer(box)
			panel.Layout()
			self.m_close.Disable()
						
		def OnClose(self, event):
			self.RUN_SERIAL = 0
			self.m_close.Disable()
			self.m_open.Enable()
			
		def OnStart(self, event):
			self.m_open.Disable()
			self.m_close.Enable()
			self.handleSerial()
			
		def OnBuzz(self, event):
			self.RUN_SERIAL = 2
			
		def handleSerial(self):
			self.RUN_SERIAL = 1
			ser = serial.Serial(2, 9600, timeout=1)
			outputs = {'M': '0', 'D': '0', 'G': '0', 'B': '0', 'W': '0', 'K': '0', 'C': '0'}
			
			while self.RUN_SERIAL:
				if self.RUN_SERIAL == 2:
					self.m_status.SetLabel("WE ARE BUZZING!!!!")
	
					s = ".D1"
					if (s):
						ser.write(s)
										
					self.m_status.SetLabel("We buzzed.")
					self.RUN_SERIAL = 1
				else:
					value = ser.readline().decode('utf-8')
					if value:
						for v in value.strip('{}').split('}{'):
							outputs[v[0]] = v[1:]
						url = "http://www.waywardengineer.com/boxshop/alarmapi.php?"
						for k, v in outputs.items():
							url += k + '=' + v + '&'
						outputs['K'] = '0'
						outputs['C'] = '0'
						self.m_status.SetLabel(url)
						#print(url)	
						try:
							if sys.version_info >= (3, 0):
								f = urllib.request.urlopen(url)
							else:
								f = urllib.urlopen(url)
							s = f.read()
							#print (s)
							if (s):
								ser.write(s)
						except Exception as inst:
							print("Got an error contacting the web " + strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()))
							print(type(inst))
							print(inst.args)
							print(inst)
							sleep(1)
				wx.Yield()
									
	app = wx.App(redirect=True)
	top = Frame("Box Shop Alarm Control")
	top.Show()
	app.MainLoop()
else:
	class SerialWebBridge:
		def handleSerial(self):
			self.RUN_SERIAL = 1
			ser = serial.Serial(2, 9600, timeout=1)
			outputs = {'M': '0', 'D': '0', 'G': '0', 'B': '0', 'W': '0', 'K': '0', 'C': '0'}
			while self.RUN_SERIAL:
				value = ser.readline().decode('utf-8')
				if value:
					for v in value.strip('{}').split('}{'):
						outputs[v[0]] = v[1:]
					url = "http://www.waywardengineer.com/boxshop/alarmapi.php?"
					for k, v in outputs.items():
						url += k + '=' + v + '&'
					outputs['K'] = '0'
					outputs['C'] = '0'
					print(url)	
					try:
						if sys.version_info >= (3, 0):
							f = urllib.request.urlopen(url)
						else:
							f = urllib.urlopen(url)
						s = f.read()
						print (s)
						if (s):
							ser.write(s)
					except Exception as inst:
						print("Got an error contacting the web " + strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()))
						print(type(inst))
						print(inst.args)
						print(inst)
						sleep(1)

	bridge = SerialWebBridge()
	bridge.handleSerial()