<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.extremist.software/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=69.181.221.252</id>
	<title>Noisebridge - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.extremist.software/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=69.181.221.252"/>
	<link rel="alternate" type="text/html" href="https://wiki.extremist.software/wiki/Special:Contributions/69.181.221.252"/>
	<updated>2026-04-05T16:11:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.extremist.software/index.php?title=User:EmbeddedLinuxGuy&amp;diff=27366</id>
		<title>User:EmbeddedLinuxGuy</title>
		<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=User:EmbeddedLinuxGuy&amp;diff=27366"/>
		<updated>2012-09-19T03:14:42Z</updated>

		<summary type="html">&lt;p&gt;69.181.221.252: /* bio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= table =&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible&amp;quot;&lt;br /&gt;
! Simple collapsible table&lt;br /&gt;
|-&lt;br /&gt;
| Lorem ipsum dolor sit amet&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= ssh public key =&lt;br /&gt;
&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxmitrXxenyJDjEhVCNeBDMtV0+yuXGVrb0qO/e9LxiB0w255JvX/iDWtLqaeu7DriwK9yiCM6UXUp3gnhUUXIDvs5cljXRDlLbm9ziq5fumh0r+AvlDMRejFwxCSNuucY0/vkaY0Ow1CzlecixFjZ77tCygbqm/az++D0+KpRavyvLyVXiSpdEbJFKpq5RTdk4ht7DpMxHKJC7h3FCoNB9N3B7H+dUGmTx3JKwAJ5uHeOpV8wKrTQco/6SlROl2zBBIsllvbniYuBZ5uhK1qWc8CFEaH6yi4MM20SB/qQpCn/G/1/RdlW1Qks8sy5uMmSXP1FA0FtaRuhAi+gSoaDw== embeddedlinuxguy@gmail.com&lt;br /&gt;
&lt;br /&gt;
= bio =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= art =&lt;br /&gt;
&lt;br /&gt;
[[Media:Stars-small.svg|Stars SVG]]&lt;br /&gt;
&lt;br /&gt;
=Stuff=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import serial&lt;br /&gt;
import urllib&lt;br /&gt;
import sys&lt;br /&gt;
if sys.version_info &amp;gt;= (3, 0):&lt;br /&gt;
	import urllib.request&lt;br /&gt;
	gui = 0 &lt;br /&gt;
else:&lt;br /&gt;
	gui = 1&lt;br /&gt;
from time import strftime, gmtime, sleep&lt;br /&gt;
&lt;br /&gt;
# mode 0=error, 1-5&lt;br /&gt;
# door 0=closed 1=open&lt;br /&gt;
# gate 0=closed 1=open&lt;br /&gt;
# laser beam 0=fine 1=interrupted&lt;br /&gt;
# wire 0=fine 1=interrupted&lt;br /&gt;
# keypad 0=nothing/1=good/2=bad password&lt;br /&gt;
# code string-of-digits (5 or more)&lt;br /&gt;
&lt;br /&gt;
PAUSE_SERIAL = 0&lt;br /&gt;
&lt;br /&gt;
if gui:&lt;br /&gt;
	import wx&lt;br /&gt;
	ID_START = wx.NewId()&lt;br /&gt;
	class Frame(wx.Frame):&lt;br /&gt;
		def __init__(self, title):&lt;br /&gt;
			wx.Frame.__init__(self, None, title=title, size=(350,200))&lt;br /&gt;
			panel = wx.Panel(self)&lt;br /&gt;
			box = wx.BoxSizer(wx.VERTICAL)&lt;br /&gt;
			m_text = wx.StaticText(panel, -1, &amp;quot;Box Shop Alarm Control&amp;quot;)&lt;br /&gt;
			m_text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))&lt;br /&gt;
			m_text.SetSize(m_text.GetBestSize())&lt;br /&gt;
			box.Add(m_text, 0, wx.ALL, 10)&lt;br /&gt;
&lt;br /&gt;
			self.m_status = wx.StaticText(panel, -1, &amp;quot;&amp;quot;)&lt;br /&gt;
			self.m_open = wx.Button(panel, ID_START, &amp;quot;Start&amp;quot;)&lt;br /&gt;
			self.m_close = wx.Button(panel, wx.ID_CLOSE, &amp;quot;Stop&amp;quot;)&lt;br /&gt;
			self.m_buzz = wx.Button(panel, wx.ID_CLOSE, &amp;quot;Buzz&amp;quot;)&lt;br /&gt;
			self.m_close.Bind(wx.EVT_BUTTON, self.OnClose)&lt;br /&gt;
			self.m_open.Bind(wx.EVT_BUTTON, self.OnStart)&lt;br /&gt;
			self.m_buzz.Bind(wx.EVT_BUTTON, self.OnBuzz)&lt;br /&gt;
			box.Add(self.m_open, 0, wx.ALL, 10)&lt;br /&gt;
			box.Add(self.m_close, 0, wx.ALL, 10)&lt;br /&gt;
			box.Add(self.m_buzz, 0, wx.ALL, 10)&lt;br /&gt;
			panel.SetSizer(box)&lt;br /&gt;
			panel.Layout()&lt;br /&gt;
			self.m_close.Disable()&lt;br /&gt;
						&lt;br /&gt;
		def OnClose(self, event):&lt;br /&gt;
			self.RUN_SERIAL = 0&lt;br /&gt;
			self.m_close.Disable()&lt;br /&gt;
			self.m_open.Enable()&lt;br /&gt;
			&lt;br /&gt;
		def OnStart(self, event):&lt;br /&gt;
			self.m_open.Disable()&lt;br /&gt;
			self.m_close.Enable()&lt;br /&gt;
			self.handleSerial()&lt;br /&gt;
			&lt;br /&gt;
		def OnBuzz(self, event):&lt;br /&gt;
			self.RUN_SERIAL = 2&lt;br /&gt;
			&lt;br /&gt;
		def handleSerial(self):&lt;br /&gt;
			self.RUN_SERIAL = 1&lt;br /&gt;
			ser = serial.Serial(2, 9600, timeout=1)&lt;br /&gt;
			outputs = {&#039;M&#039;: &#039;0&#039;, &#039;D&#039;: &#039;0&#039;, &#039;G&#039;: &#039;0&#039;, &#039;B&#039;: &#039;0&#039;, &#039;W&#039;: &#039;0&#039;, &#039;K&#039;: &#039;0&#039;, &#039;C&#039;: &#039;0&#039;}&lt;br /&gt;
			&lt;br /&gt;
			while self.RUN_SERIAL:&lt;br /&gt;
				if self.RUN_SERIAL == 2:&lt;br /&gt;
					self.m_status.SetLabel(&amp;quot;WE ARE BUZZING!!!!&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
					s = &amp;quot;.D1&amp;quot;&lt;br /&gt;
					if (s):&lt;br /&gt;
						ser.write(s)&lt;br /&gt;
										&lt;br /&gt;
					self.m_status.SetLabel(&amp;quot;We buzzed.&amp;quot;)&lt;br /&gt;
					self.RUN_SERIAL = 1&lt;br /&gt;
				else:&lt;br /&gt;
					value = ser.readline().decode(&#039;utf-8&#039;)&lt;br /&gt;
					if value:&lt;br /&gt;
						for v in value.strip(&#039;{}&#039;).split(&#039;}{&#039;):&lt;br /&gt;
							outputs[v[0]] = v[1:]&lt;br /&gt;
						url = &amp;quot;http://www.waywardengineer.com/boxshop/alarmapi.php?&amp;quot;&lt;br /&gt;
						for k, v in outputs.items():&lt;br /&gt;
							url += k + &#039;=&#039; + v + &#039;&amp;amp;&#039;&lt;br /&gt;
						outputs[&#039;K&#039;] = &#039;0&#039;&lt;br /&gt;
						outputs[&#039;C&#039;] = &#039;0&#039;&lt;br /&gt;
						self.m_status.SetLabel(url)&lt;br /&gt;
						#print(url)	&lt;br /&gt;
						try:&lt;br /&gt;
							if sys.version_info &amp;gt;= (3, 0):&lt;br /&gt;
								f = urllib.request.urlopen(url)&lt;br /&gt;
							else:&lt;br /&gt;
								f = urllib.urlopen(url)&lt;br /&gt;
							s = f.read()&lt;br /&gt;
							#print (s)&lt;br /&gt;
							if (s):&lt;br /&gt;
								ser.write(s)&lt;br /&gt;
						except Exception as inst:&lt;br /&gt;
							print(&amp;quot;Got an error contacting the web &amp;quot; + strftime(&amp;quot;%a, %d %b %Y %H:%M:%S +0000&amp;quot;, gmtime()))&lt;br /&gt;
							print(type(inst))&lt;br /&gt;
							print(inst.args)&lt;br /&gt;
							print(inst)&lt;br /&gt;
							sleep(1)&lt;br /&gt;
				wx.Yield()&lt;br /&gt;
									&lt;br /&gt;
	app = wx.App(redirect=True)&lt;br /&gt;
	top = Frame(&amp;quot;Box Shop Alarm Control&amp;quot;)&lt;br /&gt;
	top.Show()&lt;br /&gt;
	app.MainLoop()&lt;br /&gt;
else:&lt;br /&gt;
	class SerialWebBridge:&lt;br /&gt;
		def handleSerial(self):&lt;br /&gt;
			self.RUN_SERIAL = 1&lt;br /&gt;
			ser = serial.Serial(2, 9600, timeout=1)&lt;br /&gt;
			outputs = {&#039;M&#039;: &#039;0&#039;, &#039;D&#039;: &#039;0&#039;, &#039;G&#039;: &#039;0&#039;, &#039;B&#039;: &#039;0&#039;, &#039;W&#039;: &#039;0&#039;, &#039;K&#039;: &#039;0&#039;, &#039;C&#039;: &#039;0&#039;}&lt;br /&gt;
			while self.RUN_SERIAL:&lt;br /&gt;
				value = ser.readline().decode(&#039;utf-8&#039;)&lt;br /&gt;
				if value:&lt;br /&gt;
					for v in value.strip(&#039;{}&#039;).split(&#039;}{&#039;):&lt;br /&gt;
						outputs[v[0]] = v[1:]&lt;br /&gt;
					url = &amp;quot;http://www.waywardengineer.com/boxshop/alarmapi.php?&amp;quot;&lt;br /&gt;
					for k, v in outputs.items():&lt;br /&gt;
						url += k + &#039;=&#039; + v + &#039;&amp;amp;&#039;&lt;br /&gt;
					outputs[&#039;K&#039;] = &#039;0&#039;&lt;br /&gt;
					outputs[&#039;C&#039;] = &#039;0&#039;&lt;br /&gt;
					print(url)	&lt;br /&gt;
					try:&lt;br /&gt;
						if sys.version_info &amp;gt;= (3, 0):&lt;br /&gt;
							f = urllib.request.urlopen(url)&lt;br /&gt;
						else:&lt;br /&gt;
							f = urllib.urlopen(url)&lt;br /&gt;
						s = f.read()&lt;br /&gt;
						print (s)&lt;br /&gt;
						if (s):&lt;br /&gt;
							ser.write(s)&lt;br /&gt;
					except Exception as inst:&lt;br /&gt;
						print(&amp;quot;Got an error contacting the web &amp;quot; + strftime(&amp;quot;%a, %d %b %Y %H:%M:%S +0000&amp;quot;, gmtime()))&lt;br /&gt;
						print(type(inst))&lt;br /&gt;
						print(inst.args)&lt;br /&gt;
						print(inst)&lt;br /&gt;
						sleep(1)&lt;br /&gt;
&lt;br /&gt;
	bridge = SerialWebBridge()&lt;br /&gt;
	bridge.handleSerial()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>69.181.221.252</name></author>
	</entry>
</feed>