subduino 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +26 -0
- data/Rakefile +76 -0
- data/Readme.textile +46 -0
- data/VERSION +1 -0
- data/bin/subduino +34 -0
- data/bin/subduino-cli +65 -0
- data/duino/.gitignore +2 -0
- data/duino/Makefile +401 -0
- data/duino/duino.pde +17 -0
- data/duino/duino.rb +16 -0
- data/duino/methods.pde +5 -0
- data/lib/subduino/ard_io.rb +60 -0
- data/lib/subduino/ard_ps.rb +38 -0
- data/lib/subduino/arduino.rb +30 -0
- data/lib/subduino/parse.rb +61 -0
- data/lib/subduino/scaffold/Makefile +401 -0
- data/lib/subduino/scaffold/Makefile2 +247 -0
- data/lib/subduino/scaffold/generator.rb +29 -0
- data/lib/subduino/scaffold/scaffold.pde +17 -0
- data/lib/subduino/scaffold/scaffold.rb +16 -0
- data/lib/subduino/store.rb +65 -0
- data/lib/subduino.rb +48 -0
- data/node/arduinode.js +68 -0
- data/node/server.js +45 -0
- data/node/vendor/faye.js +1925 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/subduino/ard_io_spec.rb +9 -0
- data/spec/subduino/parse_spec.rb +21 -0
- data/spec/subduino/store_spec.rb +17 -0
- data/spec/subduino_spec.rb +20 -0
- data/subduino.gemspec +239 -0
- data/webapp/Gemfile +8 -0
- data/webapp/Gemfile.lock +14 -0
- data/webapp/Rakefile +49 -0
- data/webapp/Readme.textile +45 -0
- data/webapp/VERSION +1 -0
- data/webapp/lib/app.rb +103 -0
- data/webapp/lib/duino.rb +213 -0
- data/webapp/lib/environment.rb +36 -0
- data/webapp/lib/messenger.rb +16 -0
- data/webapp/public/app.css +119 -0
- data/webapp/public/app.js +34 -0
- data/webapp/public/faye.js +1 -0
- data/webapp/public/icons/alarm-clock-blue.png +0 -0
- data/webapp/public/icons/alarm-clock.png +0 -0
- data/webapp/public/icons/balloon-left.png +0 -0
- data/webapp/public/icons/bandaid.png +0 -0
- data/webapp/public/icons/bell-disable.png +0 -0
- data/webapp/public/icons/bell.png +0 -0
- data/webapp/public/icons/big_icon.png +0 -0
- data/webapp/public/icons/bomb.png +0 -0
- data/webapp/public/icons/bookmark.png +0 -0
- data/webapp/public/icons/box-label.png +0 -0
- data/webapp/public/icons/brightness-control-up.png +0 -0
- data/webapp/public/icons/brightness-control.png +0 -0
- data/webapp/public/icons/brightness-small.png +0 -0
- data/webapp/public/icons/broom.png +0 -0
- data/webapp/public/icons/bug.png +0 -0
- data/webapp/public/icons/calculator.png +0 -0
- data/webapp/public/icons/calendar-day.png +0 -0
- data/webapp/public/icons/camera.png +0 -0
- data/webapp/public/icons/cards-address.png +0 -0
- data/webapp/public/icons/chart.png +0 -0
- data/webapp/public/icons/clock-select.png +0 -0
- data/webapp/public/icons/color.png +0 -0
- data/webapp/public/icons/compass.png +0 -0
- data/webapp/public/icons/control-power-small.png +0 -0
- data/webapp/public/icons/control-power.png +0 -0
- data/webapp/public/icons/control-record-small.png +0 -0
- data/webapp/public/icons/cpus.png +0 -0
- data/webapp/public/icons/credit-card.png +0 -0
- data/webapp/public/icons/cross-small.png +0 -0
- data/webapp/public/icons/dashboard.png +0 -0
- data/webapp/public/icons/database.png +0 -0
- data/webapp/public/icons/databases.png +0 -0
- data/webapp/public/icons/door-open-in.png +0 -0
- data/webapp/public/icons/door-open-out.png +0 -0
- data/webapp/public/icons/door-open.png +0 -0
- data/webapp/public/icons/door.png +0 -0
- data/webapp/public/icons/drive-globe.png +0 -0
- data/webapp/public/icons/equalizer.png +0 -0
- data/webapp/public/icons/exclamation-diamond.png +0 -0
- data/webapp/public/icons/exclamation.png +0 -0
- data/webapp/public/icons/eye-disable.png +0 -0
- data/webapp/public/icons/eye.png +0 -0
- data/webapp/public/icons/false.png +0 -0
- data/webapp/public/icons/gear-small.png +0 -0
- data/webapp/public/icons/gear.png +0 -0
- data/webapp/public/icons/groups.png +0 -0
- data/webapp/public/icons/heart.png +0 -0
- data/webapp/public/icons/heart_empty.png +0 -0
- data/webapp/public/icons/info.png +0 -0
- data/webapp/public/icons/key.png +0 -0
- data/webapp/public/icons/lightbulb.png +0 -0
- data/webapp/public/icons/lightbulb_off.png +0 -0
- data/webapp/public/icons/lightning-disable.png +0 -0
- data/webapp/public/icons/lightning-small.png +0 -0
- data/webapp/public/icons/lightning.png +0 -0
- data/webapp/public/icons/lock-unlock.png +0 -0
- data/webapp/public/icons/lock.png +0 -0
- data/webapp/public/icons/marker.png +0 -0
- data/webapp/public/icons/media-player-phone.png +0 -0
- data/webapp/public/icons/megaphone.png +0 -0
- data/webapp/public/icons/mem.png +0 -0
- data/webapp/public/icons/microphone.png +0 -0
- data/webapp/public/icons/monitor.png +0 -0
- data/webapp/public/icons/navigation.png +0 -0
- data/webapp/public/icons/off.png +0 -0
- data/webapp/public/icons/on.png +0 -0
- data/webapp/public/icons/pin.png +0 -0
- data/webapp/public/icons/plug--exclamation.png +0 -0
- data/webapp/public/icons/plug-disable.png +0 -0
- data/webapp/public/icons/plug.png +0 -0
- data/webapp/public/icons/restart.png +0 -0
- data/webapp/public/icons/ruby.png +0 -0
- data/webapp/public/icons/server.png +0 -0
- data/webapp/public/icons/shield-disable.png +0 -0
- data/webapp/public/icons/shield.png +0 -0
- data/webapp/public/icons/socket--exclamation.png +0 -0
- data/webapp/public/icons/socket-disable.png +0 -0
- data/webapp/public/icons/socket.png +0 -0
- data/webapp/public/icons/start.png +0 -0
- data/webapp/public/icons/stop.png +0 -0
- data/webapp/public/icons/switch--exclamation.png +0 -0
- data/webapp/public/icons/switch-disable.png +0 -0
- data/webapp/public/icons/switch-small.png +0 -0
- data/webapp/public/icons/switch.png +0 -0
- data/webapp/public/icons/target.png +0 -0
- data/webapp/public/icons/television-off.png +0 -0
- data/webapp/public/icons/television.png +0 -0
- data/webapp/public/icons/terminal.png +0 -0
- data/webapp/public/icons/tick-small.png +0 -0
- data/webapp/public/icons/traffic-light-off.png +0 -0
- data/webapp/public/icons/traffic-light.png +0 -0
- data/webapp/public/icons/traffic.png +0 -0
- data/webapp/public/icons/true.png +0 -0
- data/webapp/public/icons/umbrella.png +0 -0
- data/webapp/public/icons/unmonitor.png +0 -0
- data/webapp/public/icons/unmonitored.png +0 -0
- data/webapp/public/icons/users.png +0 -0
- data/webapp/public/icons/vcard.png +0 -0
- data/webapp/public/icons/wall.png +0 -0
- data/webapp/public/icons/wall_brick.png +0 -0
- data/webapp/public/icons/wall_disable.png +0 -0
- data/webapp/public/icons/wand-disable.png +0 -0
- data/webapp/public/icons/wand.png +0 -0
- data/webapp/public/icons/warn.png +0 -0
- data/webapp/public/icons/weather_clouds.png +0 -0
- data/webapp/public/icons/weather_cloudy.png +0 -0
- data/webapp/public/icons/weather_lightning.png +0 -0
- data/webapp/public/icons/weather_rain.png +0 -0
- data/webapp/public/icons/weather_snow.png +0 -0
- data/webapp/public/icons/weather_sun.png +0 -0
- data/webapp/public/icons/wrench-screwdriver.png +0 -0
- data/webapp/public/icons/wrench.png +0 -0
- data/webapp/public/iui/backButton.png +0 -0
- data/webapp/public/iui/blueButton.png +0 -0
- data/webapp/public/iui/cancel.png +0 -0
- data/webapp/public/iui/grayButton.png +0 -0
- data/webapp/public/iui/greenButton.png +0 -0
- data/webapp/public/iui/iui-logo-touch-icon.png +0 -0
- data/webapp/public/iui/iui.css +396 -0
- data/webapp/public/iui/iui.js +511 -0
- data/webapp/public/iui/iuix.css +1 -0
- data/webapp/public/iui/iuix.js +1 -0
- data/webapp/public/iui/listArrow.png +0 -0
- data/webapp/public/iui/listArrowSel.png +0 -0
- data/webapp/public/iui/listGroup.png +0 -0
- data/webapp/public/iui/loading.gif +0 -0
- data/webapp/public/iui/pinstripes.png +0 -0
- data/webapp/public/iui/redButton.png +0 -0
- data/webapp/public/iui/selection.png +0 -0
- data/webapp/public/iui/thumb.png +0 -0
- data/webapp/public/iui/toggle.png +0 -0
- data/webapp/public/iui/toggleOn.png +0 -0
- data/webapp/public/iui/toolButton.png +0 -0
- data/webapp/public/iui/toolbar.png +0 -0
- data/webapp/public/iui/whiteButton.png +0 -0
- data/webapp/public/iui/yellowButton.png +0 -0
- data/webapp/public/jquery.js +154 -0
- data/webapp/public/layout.css +33 -0
- data/webapp/public/right.js +9 -0
- data/webapp/public/rt.js +7 -0
- data/webapp/public/sparkline.js +85 -0
- data/webapp/spec/duino_spec.rb +8 -0
- data/webapp/spec/spec_helper.rb +10 -0
- data/webapp/views/command.haml +4 -0
- data/webapp/views/icon.haml +6 -0
- data/webapp/views/index.haml +51 -0
- data/webapp/views/layout.haml +17 -0
- data/webapp/views/mobile.haml +21 -0
- data/webapp/views/switch.haml +56 -0
- data/webapp/views/top.haml +4 -0
- data/webapp/views/watch.haml +26 -0
- metadata +277 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Parse do
|
4
|
+
include Parse
|
5
|
+
|
6
|
+
it "should parse digital" do
|
7
|
+
d = DigParser.new(8)
|
8
|
+
d.should be_digital
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should parse digital" do
|
12
|
+
d = Bool.new(8)
|
13
|
+
d.to_s.should eql("ON")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should parse analog ratio" do
|
17
|
+
d = Knob.new(1023)
|
18
|
+
d.ratio.should eql(100)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Store" do
|
4
|
+
|
5
|
+
it "should write things" do
|
6
|
+
Store.flush
|
7
|
+
Store.write(:temp, 18)
|
8
|
+
Store.count.should eql(2)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should read" do
|
12
|
+
Store.read(:temp).should eql("18")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should read array"
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Subduino" do
|
4
|
+
|
5
|
+
it "should be a module" do
|
6
|
+
Subduino.should be_a Module
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should have io" do
|
10
|
+
Subduino.should be_const_defined :ArdIO
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have pubsub" do
|
14
|
+
Subduino.should be_const_defined :ArdPS
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should autostart redis"
|
18
|
+
|
19
|
+
|
20
|
+
end
|
data/subduino.gemspec
ADDED
@@ -0,0 +1,239 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{subduino}
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Marcos Piccinini"]
|
12
|
+
s.date = %q{2010-09-11}
|
13
|
+
s.description = %q{Interface, compile, upload, play with arduino/ruby}
|
14
|
+
s.email = %q{x@nofxx.com}
|
15
|
+
s.executables = ["subduino-cli", "subduino"]
|
16
|
+
s.files = [
|
17
|
+
".document",
|
18
|
+
".gitignore",
|
19
|
+
"Rakefile",
|
20
|
+
"Readme.textile",
|
21
|
+
"VERSION",
|
22
|
+
"bin/subduino",
|
23
|
+
"bin/subduino-cli",
|
24
|
+
"duino/.gitignore",
|
25
|
+
"duino/Makefile",
|
26
|
+
"duino/duino.pde",
|
27
|
+
"duino/duino.rb",
|
28
|
+
"duino/methods.pde",
|
29
|
+
"lib/subduino.rb",
|
30
|
+
"lib/subduino/ard_io.rb",
|
31
|
+
"lib/subduino/ard_ps.rb",
|
32
|
+
"lib/subduino/arduino.rb",
|
33
|
+
"lib/subduino/parse.rb",
|
34
|
+
"lib/subduino/scaffold/Makefile",
|
35
|
+
"lib/subduino/scaffold/Makefile2",
|
36
|
+
"lib/subduino/scaffold/generator.rb",
|
37
|
+
"lib/subduino/scaffold/scaffold.pde",
|
38
|
+
"lib/subduino/scaffold/scaffold.rb",
|
39
|
+
"lib/subduino/store.rb",
|
40
|
+
"node/arduinode.js",
|
41
|
+
"node/server.js",
|
42
|
+
"node/vendor/faye.js",
|
43
|
+
"spec/spec_helper.rb",
|
44
|
+
"spec/subduino/ard_io_spec.rb",
|
45
|
+
"spec/subduino/parse_spec.rb",
|
46
|
+
"spec/subduino/store_spec.rb",
|
47
|
+
"spec/subduino_spec.rb",
|
48
|
+
"subduino.gemspec",
|
49
|
+
"webapp/Gemfile",
|
50
|
+
"webapp/Gemfile.lock",
|
51
|
+
"webapp/Rakefile",
|
52
|
+
"webapp/Readme.textile",
|
53
|
+
"webapp/VERSION",
|
54
|
+
"webapp/lib/app.rb",
|
55
|
+
"webapp/lib/duino.rb",
|
56
|
+
"webapp/lib/environment.rb",
|
57
|
+
"webapp/lib/messenger.rb",
|
58
|
+
"webapp/public/app.css",
|
59
|
+
"webapp/public/app.js",
|
60
|
+
"webapp/public/faye.js",
|
61
|
+
"webapp/public/icons/alarm-clock-blue.png",
|
62
|
+
"webapp/public/icons/alarm-clock.png",
|
63
|
+
"webapp/public/icons/balloon-left.png",
|
64
|
+
"webapp/public/icons/bandaid.png",
|
65
|
+
"webapp/public/icons/bell-disable.png",
|
66
|
+
"webapp/public/icons/bell.png",
|
67
|
+
"webapp/public/icons/big_icon.png",
|
68
|
+
"webapp/public/icons/bomb.png",
|
69
|
+
"webapp/public/icons/bookmark.png",
|
70
|
+
"webapp/public/icons/box-label.png",
|
71
|
+
"webapp/public/icons/brightness-control-up.png",
|
72
|
+
"webapp/public/icons/brightness-control.png",
|
73
|
+
"webapp/public/icons/brightness-small.png",
|
74
|
+
"webapp/public/icons/broom.png",
|
75
|
+
"webapp/public/icons/bug.png",
|
76
|
+
"webapp/public/icons/calculator.png",
|
77
|
+
"webapp/public/icons/calendar-day.png",
|
78
|
+
"webapp/public/icons/camera.png",
|
79
|
+
"webapp/public/icons/cards-address.png",
|
80
|
+
"webapp/public/icons/chart.png",
|
81
|
+
"webapp/public/icons/clock-select.png",
|
82
|
+
"webapp/public/icons/color.png",
|
83
|
+
"webapp/public/icons/compass.png",
|
84
|
+
"webapp/public/icons/control-power-small.png",
|
85
|
+
"webapp/public/icons/control-power.png",
|
86
|
+
"webapp/public/icons/control-record-small.png",
|
87
|
+
"webapp/public/icons/cpus.png",
|
88
|
+
"webapp/public/icons/credit-card.png",
|
89
|
+
"webapp/public/icons/cross-small.png",
|
90
|
+
"webapp/public/icons/dashboard.png",
|
91
|
+
"webapp/public/icons/database.png",
|
92
|
+
"webapp/public/icons/databases.png",
|
93
|
+
"webapp/public/icons/door-open-in.png",
|
94
|
+
"webapp/public/icons/door-open-out.png",
|
95
|
+
"webapp/public/icons/door-open.png",
|
96
|
+
"webapp/public/icons/door.png",
|
97
|
+
"webapp/public/icons/drive-globe.png",
|
98
|
+
"webapp/public/icons/equalizer.png",
|
99
|
+
"webapp/public/icons/exclamation-diamond.png",
|
100
|
+
"webapp/public/icons/exclamation.png",
|
101
|
+
"webapp/public/icons/eye-disable.png",
|
102
|
+
"webapp/public/icons/eye.png",
|
103
|
+
"webapp/public/icons/false.png",
|
104
|
+
"webapp/public/icons/gear-small.png",
|
105
|
+
"webapp/public/icons/gear.png",
|
106
|
+
"webapp/public/icons/groups.png",
|
107
|
+
"webapp/public/icons/heart.png",
|
108
|
+
"webapp/public/icons/heart_empty.png",
|
109
|
+
"webapp/public/icons/info.png",
|
110
|
+
"webapp/public/icons/key.png",
|
111
|
+
"webapp/public/icons/lightbulb.png",
|
112
|
+
"webapp/public/icons/lightbulb_off.png",
|
113
|
+
"webapp/public/icons/lightning-disable.png",
|
114
|
+
"webapp/public/icons/lightning-small.png",
|
115
|
+
"webapp/public/icons/lightning.png",
|
116
|
+
"webapp/public/icons/lock-unlock.png",
|
117
|
+
"webapp/public/icons/lock.png",
|
118
|
+
"webapp/public/icons/marker.png",
|
119
|
+
"webapp/public/icons/media-player-phone.png",
|
120
|
+
"webapp/public/icons/megaphone.png",
|
121
|
+
"webapp/public/icons/mem.png",
|
122
|
+
"webapp/public/icons/microphone.png",
|
123
|
+
"webapp/public/icons/monitor.png",
|
124
|
+
"webapp/public/icons/navigation.png",
|
125
|
+
"webapp/public/icons/off.png",
|
126
|
+
"webapp/public/icons/on.png",
|
127
|
+
"webapp/public/icons/pin.png",
|
128
|
+
"webapp/public/icons/plug--exclamation.png",
|
129
|
+
"webapp/public/icons/plug-disable.png",
|
130
|
+
"webapp/public/icons/plug.png",
|
131
|
+
"webapp/public/icons/restart.png",
|
132
|
+
"webapp/public/icons/ruby.png",
|
133
|
+
"webapp/public/icons/server.png",
|
134
|
+
"webapp/public/icons/shield-disable.png",
|
135
|
+
"webapp/public/icons/shield.png",
|
136
|
+
"webapp/public/icons/socket--exclamation.png",
|
137
|
+
"webapp/public/icons/socket-disable.png",
|
138
|
+
"webapp/public/icons/socket.png",
|
139
|
+
"webapp/public/icons/start.png",
|
140
|
+
"webapp/public/icons/stop.png",
|
141
|
+
"webapp/public/icons/switch--exclamation.png",
|
142
|
+
"webapp/public/icons/switch-disable.png",
|
143
|
+
"webapp/public/icons/switch-small.png",
|
144
|
+
"webapp/public/icons/switch.png",
|
145
|
+
"webapp/public/icons/target.png",
|
146
|
+
"webapp/public/icons/television-off.png",
|
147
|
+
"webapp/public/icons/television.png",
|
148
|
+
"webapp/public/icons/terminal.png",
|
149
|
+
"webapp/public/icons/tick-small.png",
|
150
|
+
"webapp/public/icons/traffic-light-off.png",
|
151
|
+
"webapp/public/icons/traffic-light.png",
|
152
|
+
"webapp/public/icons/traffic.png",
|
153
|
+
"webapp/public/icons/true.png",
|
154
|
+
"webapp/public/icons/umbrella.png",
|
155
|
+
"webapp/public/icons/unmonitor.png",
|
156
|
+
"webapp/public/icons/unmonitored.png",
|
157
|
+
"webapp/public/icons/users.png",
|
158
|
+
"webapp/public/icons/vcard.png",
|
159
|
+
"webapp/public/icons/wall.png",
|
160
|
+
"webapp/public/icons/wall_brick.png",
|
161
|
+
"webapp/public/icons/wall_disable.png",
|
162
|
+
"webapp/public/icons/wand-disable.png",
|
163
|
+
"webapp/public/icons/wand.png",
|
164
|
+
"webapp/public/icons/warn.png",
|
165
|
+
"webapp/public/icons/weather_clouds.png",
|
166
|
+
"webapp/public/icons/weather_cloudy.png",
|
167
|
+
"webapp/public/icons/weather_lightning.png",
|
168
|
+
"webapp/public/icons/weather_rain.png",
|
169
|
+
"webapp/public/icons/weather_snow.png",
|
170
|
+
"webapp/public/icons/weather_sun.png",
|
171
|
+
"webapp/public/icons/wrench-screwdriver.png",
|
172
|
+
"webapp/public/icons/wrench.png",
|
173
|
+
"webapp/public/iui/backButton.png",
|
174
|
+
"webapp/public/iui/blueButton.png",
|
175
|
+
"webapp/public/iui/cancel.png",
|
176
|
+
"webapp/public/iui/grayButton.png",
|
177
|
+
"webapp/public/iui/greenButton.png",
|
178
|
+
"webapp/public/iui/iui-logo-touch-icon.png",
|
179
|
+
"webapp/public/iui/iui.css",
|
180
|
+
"webapp/public/iui/iui.js",
|
181
|
+
"webapp/public/iui/iuix.css",
|
182
|
+
"webapp/public/iui/iuix.js",
|
183
|
+
"webapp/public/iui/listArrow.png",
|
184
|
+
"webapp/public/iui/listArrowSel.png",
|
185
|
+
"webapp/public/iui/listGroup.png",
|
186
|
+
"webapp/public/iui/loading.gif",
|
187
|
+
"webapp/public/iui/pinstripes.png",
|
188
|
+
"webapp/public/iui/redButton.png",
|
189
|
+
"webapp/public/iui/selection.png",
|
190
|
+
"webapp/public/iui/thumb.png",
|
191
|
+
"webapp/public/iui/toggle.png",
|
192
|
+
"webapp/public/iui/toggleOn.png",
|
193
|
+
"webapp/public/iui/toolButton.png",
|
194
|
+
"webapp/public/iui/toolbar.png",
|
195
|
+
"webapp/public/iui/whiteButton.png",
|
196
|
+
"webapp/public/iui/yellowButton.png",
|
197
|
+
"webapp/public/jquery.js",
|
198
|
+
"webapp/public/layout.css",
|
199
|
+
"webapp/public/right.js",
|
200
|
+
"webapp/public/rt.js",
|
201
|
+
"webapp/public/sparkline.js",
|
202
|
+
"webapp/spec/duino_spec.rb",
|
203
|
+
"webapp/spec/spec_helper.rb",
|
204
|
+
"webapp/views/command.haml",
|
205
|
+
"webapp/views/icon.haml",
|
206
|
+
"webapp/views/index.haml",
|
207
|
+
"webapp/views/layout.haml",
|
208
|
+
"webapp/views/mobile.haml",
|
209
|
+
"webapp/views/switch.haml",
|
210
|
+
"webapp/views/top.haml",
|
211
|
+
"webapp/views/watch.haml"
|
212
|
+
]
|
213
|
+
s.homepage = %q{http://github.com/nofxx/subduino}
|
214
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
215
|
+
s.require_paths = ["lib"]
|
216
|
+
s.rubygems_version = %q{1.3.7}
|
217
|
+
s.summary = %q{Arduino Ruby Helpers}
|
218
|
+
s.test_files = [
|
219
|
+
"spec/subduino_spec.rb",
|
220
|
+
"spec/spec_helper.rb",
|
221
|
+
"spec/subduino/ard_io_spec.rb",
|
222
|
+
"spec/subduino/parse_spec.rb",
|
223
|
+
"spec/subduino/store_spec.rb"
|
224
|
+
]
|
225
|
+
|
226
|
+
if s.respond_to? :specification_version then
|
227
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
228
|
+
s.specification_version = 3
|
229
|
+
|
230
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
231
|
+
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
232
|
+
else
|
233
|
+
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
234
|
+
end
|
235
|
+
else
|
236
|
+
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
data/webapp/Gemfile
ADDED
data/webapp/Gemfile.lock
ADDED
data/webapp/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "duino"
|
8
|
+
gem.summary = "Web UI for Arduino"
|
9
|
+
gem.description = "Friendly sinatra web UI for Arduino"
|
10
|
+
gem.email = "see@github.com"
|
11
|
+
gem.homepage = "http://github.com/nofxx/duino"
|
12
|
+
gem.authors = ["Marcos Piccinini"]
|
13
|
+
gem.add_dependency "sinatra"
|
14
|
+
gem.add_development_dependency "rspec"
|
15
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
|
+
end
|
17
|
+
rescue LoadError
|
18
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'spec/rake/spectask'
|
22
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
23
|
+
spec.libs << 'lib' << 'spec'
|
24
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
25
|
+
end
|
26
|
+
|
27
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
28
|
+
spec.libs << 'lib' << 'spec'
|
29
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
30
|
+
spec.rcov = true
|
31
|
+
end
|
32
|
+
|
33
|
+
task :spec => :check_dependencies
|
34
|
+
|
35
|
+
task :default => :spec
|
36
|
+
|
37
|
+
require 'rake/rdoctask'
|
38
|
+
Rake::RDocTask.new do |rdoc|
|
39
|
+
if File.exist?('VERSION')
|
40
|
+
version = File.read('VERSION')
|
41
|
+
else
|
42
|
+
version = ""
|
43
|
+
end
|
44
|
+
|
45
|
+
rdoc.rdoc_dir = 'rdoc'
|
46
|
+
rdoc.title = "duino #{version}"
|
47
|
+
rdoc.rdoc_files.include('README*')
|
48
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
49
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
h2. Description
|
2
|
+
|
3
|
+
Friendly web "Arduino":http://arduino.cc
|
4
|
+
|
5
|
+
h2. Screenshots
|
6
|
+
|
7
|
+
|
8
|
+
h3. Requirements
|
9
|
+
|
10
|
+
* "Sinatra":http://sinatrarb.com/
|
11
|
+
|
12
|
+
h3. Install
|
13
|
+
|
14
|
+
|
15
|
+
gem install duino
|
16
|
+
|
17
|
+
h2. Usage
|
18
|
+
|
19
|
+
username: foo
|
20
|
+
</pre>
|
21
|
+
|
22
|
+
h2. Contributing
|
23
|
+
|
24
|
+
duino uses "ditz":http://ditz.rubyforge.org for issue tracking. Fork
|
25
|
+
duino, clone your copy and then run:
|
26
|
+
|
27
|
+
@ditz todo@
|
28
|
+
|
29
|
+
For more details on a specific issue:
|
30
|
+
|
31
|
+
@ditz show duino-1@
|
32
|
+
|
33
|
+
Make your changes that fix a bug, then resolve it.
|
34
|
+
|
35
|
+
@ditz close duino-1@
|
36
|
+
|
37
|
+
Commit, push your changes to GitHub, then send a pull request!
|
38
|
+
|
39
|
+
h3. Author
|
40
|
+
|
41
|
+
nofxx
|
42
|
+
|
43
|
+
h3. License
|
44
|
+
|
45
|
+
"WTFPL":http://sam.zoy.org/wtfpl/
|
data/webapp/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/webapp/lib/app.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
|
2
|
+
helpers do
|
3
|
+
|
4
|
+
def get_layout
|
5
|
+
return false if request.env['HTTP_XHR']
|
6
|
+
case request.env['HTTP_USER_AGENT']
|
7
|
+
when /iPhone|iPod/ then :mobile
|
8
|
+
when /Android|Nokia/ then :mobile
|
9
|
+
else true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end # helpers
|
14
|
+
|
15
|
+
before do
|
16
|
+
unless (DUINO_CONFIG['username'].nil? && DUINO_CONFIG['password'].nil?) || self.request.path_info == '/heartbeat'
|
17
|
+
use Rack::Auth::Basic do |user, pass|
|
18
|
+
[user, pass] == [DUINO_CONFIG['username'], DUINO_CONFIG['password']]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
# DUINO.ping
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
set :haml, {:format => :html5 }
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
get '/' do
|
32
|
+
@statuses = DUINO.status
|
33
|
+
@watches = []
|
34
|
+
# @statuses.each do |watch, status|
|
35
|
+
# @watches << watch.to_s
|
36
|
+
# end
|
37
|
+
# @watches = @watches.group_by { |w| @statuses[w][:state].to_s }
|
38
|
+
@sensors = DUINO.sensors
|
39
|
+
@host = `hostname`
|
40
|
+
@stats = Duino.cpu_status
|
41
|
+
@footer = "Subduino www v0.0.1 - #{@host}"
|
42
|
+
show(:index, @host)
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
get '/o' do
|
47
|
+
@commands = %w{ false false }
|
48
|
+
@watch = :all
|
49
|
+
show(:switch, "Pins Switch")
|
50
|
+
end
|
51
|
+
|
52
|
+
get '/i' do
|
53
|
+
@text = `hostname`
|
54
|
+
show(:icon)
|
55
|
+
end
|
56
|
+
|
57
|
+
get '/t' do
|
58
|
+
@text = `top -Hibn 1`.gsub("top - ", "")
|
59
|
+
show(:top)
|
60
|
+
end
|
61
|
+
|
62
|
+
get '/heartbeat' do
|
63
|
+
@statuses = DUINO.status
|
64
|
+
'OK'
|
65
|
+
end
|
66
|
+
|
67
|
+
get '/w/:watch' do
|
68
|
+
@watch = params["watch"]
|
69
|
+
@status = DUINO.status[@watch][:state]
|
70
|
+
@commands = Duino.possible_statuses(@status)
|
71
|
+
@log = DUINO.last_log(@watch)
|
72
|
+
show(:switch, @watch)
|
73
|
+
end
|
74
|
+
|
75
|
+
get '/w/:watch/:command' do
|
76
|
+
@watch = params["watch"]
|
77
|
+
@command = params["command"]
|
78
|
+
@success = DUINO.switch(@watch, @command)
|
79
|
+
# @success = false if @success == []
|
80
|
+
@log = DUINO.last_log(@watch)
|
81
|
+
show(:command, "#{@command}ing #{@watch}")
|
82
|
+
end
|
83
|
+
|
84
|
+
get '/g/:sensor' do
|
85
|
+
@watch = params["sensor"]
|
86
|
+
@name, @sensor = *DUINO.sensors(@watch).to_a[0]
|
87
|
+
@name = @name.capitalize
|
88
|
+
@log = DUINO.log @watch
|
89
|
+
# @child = DUINO.status.keys.each.select { |k| DUINO.status[k][:sensor] == @sensor } #.select { |w| w["sensor"] = @sensor }
|
90
|
+
# @child.map!{ |c| [c, DUINO.status[c][:state]]}
|
91
|
+
# @status = nil
|
92
|
+
# @commands = Duino.possible_statuses(@status)
|
93
|
+
show(:watch, "#{@name} #{@sensor} [sensor]")
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
private
|
98
|
+
|
99
|
+
def show(template, title = 'Duino')
|
100
|
+
@title = title
|
101
|
+
p request.env['HTTP_XHR']
|
102
|
+
haml(template, :layout => get_layout)
|
103
|
+
end
|