Holiday lights: Difference between revisions
No edit summary |
(Undo revision 14097 by 58.186.113.96 (Talk)) |
||
(11 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 | 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. | 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. | 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. | 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 [http://github.com/jbm9/batshitlights github] | |||
Basic info: | Basic info: | ||
Line 21: | Line 20: | ||
/home/lights/sequence | /home/lights/sequence | ||
The file read by filelooop.py that defines the light | The text file read by filelooop.py that defines the light | ||
sequence currently active. The first line of this file | sequence currently active. The first line of this file | ||
defines how long (in milliseconds) we | defines how long (in milliseconds) we wait before | ||
advancing to the next state. The rest of the file is a | advancing to the next state. The rest of the file is a | ||
list of states to iterate through. For example: | list of states to iterate through. For example: | ||
Line 38: | Line 37: | ||
We sleep for 1 second (1000 milliseconds) between states. | 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 | In the first state, the first light is on, and the rest | ||
are off. In the second state, the second light is on, and | are off. In the second state, the second light is on, and | ||
the rest are off. In the third state, the third light is | the rest are off. In the third state, the third light is | ||
on, and the rest are off. etc. | on, and the rest are off. etc. | ||
/home/lights/*.seq | /home/lights/*.seq | ||
Line 70: | Line 65: | ||
back to / (the directory listing) after a few seconds, | back to / (the directory listing) after a few seconds, | ||
or something. | or something. | ||
=Direct Line= | |||
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 |
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...