Holiday lights: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
(New page: We put up some holiday lights in the Mission Street windows. (We call them Holiday Lights both as an ecumenical gesture of goodwill as well as to annoy the "War on Christmas" wingnuts.) ...)
 
(Undo revision 14097 by 58.186.113.96 (Talk))
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
We put up some holiday lights in the Mission Street windows. (We call them Holiday Lights both as a gesture of ecumenical goodwill and to annoy the "War on Christmas" wingnuts.)


We put up some holiday lights in the Mission Street windows. (We call them Holiday Lights both as an ecumenical gesture of goodwill as well as to annoy the "War on Christmas" wingnuts.)
Naturally, you can control them on the web using the bare-bones interface at URL: http://lights.noisebridge.net/


Naturally, you can control them on the web using the bare-bones interface at URL: http://lights.netisland.net:8080/
This is served by a pure Python webserver running on a Fit-PC Ubuntu micro-PC. Lights are switched with a 8-channel serial-controlled relay board.
Each of the four windows has two strings of LEDs, white and colored. Facing Mission St, the  white LEDs on the leftmost window are on channel 0, the colored ones on channel 1. The next window over has white on channel 2 and so forth.


This is served by a pure Python webserver running on a Fit-PC Ubuntu micro-PC.  
You can find the code in [http://github.com/jbm9/batshitlights github]


Basic info:
Basic info:
<nowiki>
/home/lights/server/filelooop.py


This is the script that runs forever, and does the Actual
  /home/lights/server/filelooop.py
Work of switching the lights on and off. It reads the
file /home/lights/sequence, which defines the light
sequence, and then uses the RelayControl class to
communicate with the external relay bank.


/home/lights/sequence
This is the script that runs forever, and does the Actual
Work of switching the lights on and off.  It reads the
file /home/lights/sequence, which defines the light
sequence, and then uses the RelayControl class to
communicate with the external relay bank.


The file read by filelooop.py that defines the light
/home/lights/sequence
sequence currently active.  The first line of this file
defines how long (in milliseconds) we should sleep before
advancing to the next state.  The rest of the file is a
list of states to iterate through.  For example:


1000
The text file read by filelooop.py that defines the light
10000000
sequence currently active.  The first line of this file
01000000
defines how long (in milliseconds) we wait before
00100000
advancing to the next state.  The rest of the file is a
00010000
list of states to iterate through.  For example:
00001000
00000100
00000010
00000001


We sleep for 1 second (1000 milliseconds) between states.
1000
In the first state, the first light is on, and the rest
10000000
are off. In the second state, the second light is on, and
01000000
the rest are off. In the third state, the third light is
00100000
on, and the rest are off. etc.
00010000
00001000
  00000100
  00000010
  00000001


(There's code in place in filelooop.py to also support
We sleep for 1 second (1000 milliseconds) between states.
state lines in the syntax of "<state> <delay>", to sleep
Each line of 8 digits controls the relays, one char per channel.  
for an amount of time different than the "global delay",
In the first state, the first light is on, and the rest
but I haven't actually tested this behavior yet.)
are off.  In the second state, the second light is on, and
the rest are off.  In the third state, the third light is
on, and the rest are off.  etc.


/home/lights/*.seq
/home/lights/*.seq


A list of pre-programed sequences.
A list of pre-programed sequences.


/home/lights/server/webserver.py
/home/lights/server/webserver.py


A full webserver/framework implementation, currently
A full webserver/framework implementation, currently
configured to listen on port 8080.  When you request "/",
configured to listen on port 8080.  When you request "/",
it returns a list of hyperlinks to each of the *.seq files
it returns a list of hyperlinks to each of the *.seq files
in lights's home directory.  If you click on one of those
in lights's home directory.  If you click on one of those
links, it copies the contents from the *.seq file to
links, it copies the contents from the *.seq file to
/home/lights/sequence, so filelooop.py will start
/home/lights/sequence, so filelooop.py will start
processing it instead of whatever it was previously
processing it instead of whatever it was previously
processing.
processing.


/home/lights/set.html
/home/lights/set.html


When you use webserver.py to request a *.seq file, it
When you use webserver.py to request a *.seq file, it
returns the contents of /home/lights/set.html to the
<nowiki>"<h1>Thanks!</h1>"</nowiki>.  We should make it look pretty, and
browser.  Right now, this file contains just
probably also have a meta refresh to redirect the user
"<h1>Thanks!</h1>".  We should make it look pretty, and
back to / (the directory listing) after a few seconds,
probably also have a meta refresh to redirect the user
or something.
back to / (the directory listing) after a few seconds,
or something.


If we want to get fancy, we should also look into using
=Direct Line=
one of the python templating libraries, so we can have a
There's a really fun "direct line" into the control of the lights:
static index.html page independent of the code, and then
 
make that index.html file look pretty, too. We just need
: http://lights.noisebridge.net/run_one?delay=1000&seq=0102040810204080
to find out how to interpolate a list of files to display
: http://lights.noisebridge.net/run_one?delay=500&seq=B56F9BE6
in he the directory listing.
: etc
</nowiki>
 
Hint: hex works
 
A message...
 
: http://lights.noisebridge.net/run_one?delay=500&seq=22882288220802802088a2a82a8aa2a82a0a0200000080a0a82a8aa2a82a8aa2a82a0a0280a0a82a8aa2a82a0a028020882288a2a82a8aa2a82a8a228822080200000080a0a82a8a228822882288a2a82a0a02000000802088a2a82a0a02802088a2a82a8a2288220802802088a2a82a8a22882208020000008020882288a2a82a0a02802088a2a82a8a220802000000802088a2a82a8a228822080280208822080280a0a82a8aa2a82a8a2208028020882288228822080280a0a82a0a02000000802088a2a82a0a02802088a2a82a8a2208028020080200000080a0a82a8a2288228822080280200802802088a2a82a8a228822080280a0a82a8aa2a82a8aa2a82a0a0280a0a82a8a22080280a0a82a8aa2a82a8a22080200000080a0a82a0a0280a0a82a8aa2a82a8aa2a82a0a020000008020882288a2a82a0a02802088228822080280a0a82a8a2288a2a82a8a2288a2a82a8aa2a82a0a0200000080a0a82a8a228822882288a2a82a0a020000008020882288a2a82a0a02000000802088a2a82a0a02802088a2a82a8a2208028020080200000080a0a82a8aa2a82a8aa2a82a0a0280a0a82a8a22080200000080a0a82a0a028020882288228822080280200802000000802088a2a82a8aa2a82a0a02802088a2a82a0a0280a0a82a8a2288a2a82a8aa2a82a0a0200000080a0a82a0a0280a0a82a8aa2a82a8aa2a82a0a0200000080a0a82a8a228822080280200802802088228822080280a0a82a0a02802088a2a82a8a2208028020882288a2a82a0a0280a0a82a8a2288a2a82a8a22080280a0a82a0a0280208822080280a0a82a8aa2a82a8aa2a82a0a0280a0a82a8a22080200000080a0a82a8a228822882288a2a82a0a020000008020882288a2a82a0a0200000080208822882288220802802088a2a82a0a0280208822882288a2a82a0a028020080200000080a0a82a8a22080200000080a0a82a8a2288a2a82a8a22080280208822882288220802802088a2a82a0a0280a0a82a8a22080280a0a82a8a2288a2a82a8a2208028020080200000080a0a82a0a0280a0a82a8aa2a82a8aa2a82a0a0200000080208822882208028020882288a2a82a0a02802088a2a82a8a22080280208822882288a2a82a0a0280208822080280208822882288a2a82a0a028020080200000080a0a82a8aa2a82a0a02802088a2a82a0a0280a0a82a8a2288a2a82a0a02802008020000008020882288a2a82a0a02802088a2a82a8a22080200000080a0a82a0a0280208822080280a0a82a8aa2a82a0a028020080200000080a0a82a8a228822882288a2a82a0a0200000080208822882288220802802088a2a82a0a0200000080208822882288220802802088a2a82a0a0200000080208822882288220802802088a2a82a0a0200000080208822882288220802802088a2a82a0a02000000802088a2a82a8a2288a2a82a8a220802000000000000000000000000802088

Latest revision as of 23:57, 18 November 2010

We put up some holiday lights in the Mission Street windows. (We call them Holiday Lights both as a gesture of ecumenical goodwill and to annoy the "War on Christmas" wingnuts.)

Naturally, you can control them on the web using the bare-bones interface at URL: http://lights.noisebridge.net/

This is served by a pure Python webserver running on a Fit-PC Ubuntu micro-PC. Lights are switched with a 8-channel serial-controlled relay board. Each of the four windows has two strings of LEDs, white and colored. Facing Mission St, the white LEDs on the leftmost window are on channel 0, the colored ones on channel 1. The next window over has white on channel 2 and so forth.

You can find the code in github

Basic info:

/home/lights/server/filelooop.py

This is the script that runs forever, and does the Actual Work of switching the lights on and off. It reads the file /home/lights/sequence, which defines the light sequence, and then uses the RelayControl class to communicate with the external relay bank.

/home/lights/sequence

The text file read by filelooop.py that defines the light sequence currently active. The first line of this file defines how long (in milliseconds) we wait before advancing to the next state. The rest of the file is a list of states to iterate through. For example:

1000
10000000
01000000
00100000
00010000
00001000
00000100
00000010
00000001

We sleep for 1 second (1000 milliseconds) between states. Each line of 8 digits controls the relays, one char per channel. In the first state, the first light is on, and the rest are off. In the second state, the second light is on, and the rest are off. In the third state, the third light is on, and the rest are off. etc.

/home/lights/*.seq

A list of pre-programed sequences.

/home/lights/server/webserver.py

A full webserver/framework implementation, currently configured to listen on port 8080. When you request "/", it returns a list of hyperlinks to each of the *.seq files in lights's home directory. If you click on one of those links, it copies the contents from the *.seq file to /home/lights/sequence, so filelooop.py will start processing it instead of whatever it was previously processing.

/home/lights/set.html

When you use webserver.py to request a *.seq file, it "<h1>Thanks!</h1>". We should make it look pretty, and probably also have a meta refresh to redirect the user back to / (the directory listing) after a few seconds, or something.

Direct Line[edit]

There's a really fun "direct line" into the control of the lights:

http://lights.noisebridge.net/run_one?delay=1000&seq=0102040810204080
http://lights.noisebridge.net/run_one?delay=500&seq=B56F9BE6
etc

Hint: hex works

A message...

http://lights.noisebridge.net/run_one?delay=500&seq=22882288220802802088a2a82a8aa2a82a0a0200000080a0a82a8aa2a82a8aa2a82a0a0280a0a82a8aa2a82a0a028020882288a2a82a8aa2a82a8a228822080200000080a0a82a8a228822882288a2a82a0a02000000802088a2a82a0a02802088a2a82a8a2288220802802088a2a82a8a22882208020000008020882288a2a82a0a02802088a2a82a8a220802000000802088a2a82a8a228822080280208822080280a0a82a8aa2a82a8a2208028020882288228822080280a0a82a0a02000000802088a2a82a0a02802088a2a82a8a2208028020080200000080a0a82a8a2288228822080280200802802088a2a82a8a228822080280a0a82a8aa2a82a8aa2a82a0a0280a0a82a8a22080280a0a82a8aa2a82a8a22080200000080a0a82a0a0280a0a82a8aa2a82a8aa2a82a0a020000008020882288a2a82a0a02802088228822080280a0a82a8a2288a2a82a8a2288a2a82a8aa2a82a0a0200000080a0a82a8a228822882288a2a82a0a020000008020882288a2a82a0a02000000802088a2a82a0a02802088a2a82a8a2208028020080200000080a0a82a8aa2a82a8aa2a82a0a0280a0a82a8a22080200000080a0a82a0a028020882288228822080280200802000000802088a2a82a8aa2a82a0a02802088a2a82a0a0280a0a82a8a2288a2a82a8aa2a82a0a0200000080a0a82a0a0280a0a82a8aa2a82a8aa2a82a0a0200000080a0a82a8a228822080280200802802088228822080280a0a82a0a02802088a2a82a8a2208028020882288a2a82a0a0280a0a82a8a2288a2a82a8a22080280a0a82a0a0280208822080280a0a82a8aa2a82a8aa2a82a0a0280a0a82a8a22080200000080a0a82a8a228822882288a2a82a0a020000008020882288a2a82a0a0200000080208822882288220802802088a2a82a0a0280208822882288a2a82a0a028020080200000080a0a82a8a22080200000080a0a82a8a2288a2a82a8a22080280208822882288220802802088a2a82a0a0280a0a82a8a22080280a0a82a8a2288a2a82a8a2208028020080200000080a0a82a0a0280a0a82a8aa2a82a8aa2a82a0a0200000080208822882208028020882288a2a82a0a02802088a2a82a8a22080280208822882288a2a82a0a0280208822080280208822882288a2a82a0a028020080200000080a0a82a8aa2a82a0a02802088a2a82a0a0280a0a82a8a2288a2a82a0a02802008020000008020882288a2a82a0a02802088a2a82a8a22080200000080a0a82a0a0280208822080280a0a82a8aa2a82a0a028020080200000080a0a82a8a228822882288a2a82a0a0200000080208822882288220802802088a2a82a0a0200000080208822882288220802802088a2a82a0a0200000080208822882288220802802088a2a82a0a0200000080208822882288220802802088a2a82a0a02000000802088a2a82a8a2288a2a82a8a220802000000000000000000000000802088