artoo 0.5.0 → 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -2
  3. data/.yardopts +1 -1
  4. data/CONTRIBUTORS.md +16 -0
  5. data/Gemfile +10 -9
  6. data/Gemfile.lock +31 -35
  7. data/README.md +110 -19
  8. data/Rakefile +0 -1
  9. data/api/assets/javascripts/artoo/controllers/robot.js.coffee +5 -8
  10. data/api/public/core.js +7 -12
  11. data/api/public/partials/robot-detail.html +1 -1
  12. data/bin/robi +1 -1
  13. data/examples/christmas_roomba.rb +16 -19
  14. data/examples/hello_api_multiple.rb +3 -2
  15. data/examples/notifications.rb +2 -2
  16. data/examples/sphero_messages.rb +9 -3
  17. data/lib/artoo/adaptors/test.rb +28 -0
  18. data/lib/artoo/connection.rb +5 -0
  19. data/lib/artoo/delegator.rb +1 -1
  20. data/lib/artoo/device.rb +13 -0
  21. data/lib/artoo/drivers/counter.rb +28 -0
  22. data/lib/artoo/drivers/pinger.rb +8 -11
  23. data/lib/artoo/drivers/random.rb +27 -0
  24. data/lib/artoo/drivers/test.rb +23 -0
  25. data/lib/artoo/master.rb +4 -2
  26. data/lib/artoo/robot.rb +11 -103
  27. data/lib/artoo/robot_class_methods.rb +147 -0
  28. data/lib/artoo/version.rb +1 -1
  29. data/test/robot_test.rb +3 -3
  30. data/test/test_helper.rb +1 -2
  31. metadata +10 -44
  32. data/bin/sphero.sh +0 -8
  33. data/bin/sphero_linux_bind.sh +0 -25
  34. data/bin/sphero_linux_socat.sh +0 -8
  35. data/examples/sphero2.rb +0 -26
  36. data/lib/artoo/adaptors/ardrone.rb +0 -41
  37. data/lib/artoo/adaptors/ardrone_navigation.rb +0 -33
  38. data/lib/artoo/adaptors/ardrone_video.rb +0 -35
  39. data/lib/artoo/adaptors/firmata.rb +0 -33
  40. data/lib/artoo/adaptors/roomba.rb +0 -51
  41. data/lib/artoo/adaptors/sphero.rb +0 -58
  42. data/lib/artoo/drivers/ardrone.rb +0 -15
  43. data/lib/artoo/drivers/ardrone_navigation.rb +0 -25
  44. data/lib/artoo/drivers/ardrone_video.rb +0 -27
  45. data/lib/artoo/drivers/button.rb +0 -59
  46. data/lib/artoo/drivers/led.rb +0 -48
  47. data/lib/artoo/drivers/motor.rb +0 -69
  48. data/lib/artoo/drivers/pinger2.rb +0 -27
  49. data/lib/artoo/drivers/roomba.rb +0 -179
  50. data/lib/artoo/drivers/servo.rb +0 -59
  51. data/lib/artoo/drivers/sphero.rb +0 -105
  52. data/lib/artoo/drivers/wiichuck.rb +0 -61
  53. data/lib/artoo/drivers/wiiclassic.rb +0 -139
  54. data/lib/artoo/drivers/wiidriver.rb +0 -102
  55. data/test/adaptors/ardrone_test.rb +0 -24
  56. data/test/adaptors/firmata_test.rb +0 -25
  57. data/test/adaptors/sphero_test.rb +0 -24
  58. data/test/drivers/ardrone_navigation_test.rb +0 -11
  59. data/test/drivers/ardrone_test.rb +0 -11
  60. data/test/drivers/ardrone_video_test.rb +0 -11
  61. data/test/drivers/led_test.rb +0 -56
  62. data/test/drivers/motor_test.rb +0 -40
  63. data/test/drivers/roomba_test.rb +0 -87
  64. data/test/drivers/servo_test.rb +0 -45
  65. data/test/drivers/sphero_test.rb +0 -54
  66. data/test/drivers/wiichuck_test.rb +0 -11
  67. data/test/drivers/wiiclassic_test.rb +0 -11
  68. data/test/drivers/wiidriver_test.rb +0 -54
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 15f265e20932268a26b4c208c62b0fa785370f75
4
- data.tar.gz: 7a081f9e19623f18218e191bb31a53fe5becdb11
3
+ metadata.gz: 731043a8242e8887c4cbff414816cdf7eadae2af
4
+ data.tar.gz: 6b0f65cd67cefd32098bea77d87adefcf7032d60
5
5
  SHA512:
6
- metadata.gz: a462b43a83b4e6bfb1330aa045f9478a3cf963ba0fbd6d7d51083a18c2667b1a749119b9eb81c25bef5cb3cf209e9d0186547861f3ff0ccb73bc591fbb1f55df
7
- data.tar.gz: 6d94a3cdc72f034cb94655deea807858e3ca4283a8a2bff1ea88a8a4fd8cb5a1a5fc485208fcc14a1b47f12480672a5ff2822c645f612b05ebede6eeba1fd861
6
+ metadata.gz: eddbdcfe51452b114468046a6e2d0fd4e3fd160ec377ab93a903fab4ce01bd60f6081b390db66e72beac6129828c4710a3ff774abef272def8220ac2cb414566
7
+ data.tar.gz: 6392e99e47cd6eaddcb69d98777afcf3cf4000a721632b42bfceb18242c2965c7fc150b3d32b87cf1d75fa19d39f2909d5f7b604c8694cefa827cdb01e08500d
@@ -2,5 +2,5 @@ language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
4
  - 1.9.3
5
- - jruby-19mode
6
- - rbx-19mode
5
+ - jruby-1.7.4
6
+ - rbx-19mode
data/.yardopts CHANGED
@@ -4,7 +4,7 @@
4
4
  --hide-void-return
5
5
 
6
6
  --markup=markdown
7
- --markup-provider=redcarpet
7
+ --markup-provider=kramdown
8
8
 
9
9
  --exclude lib/artoo/ext
10
10
  --plugin yard-sinatra
@@ -0,0 +1,16 @@
1
+ Artoo exists thanks to the work of these wonderful individuals:
2
+
3
+ - Adrian Zankich (@adzankich)
4
+ - Andrew Stewart (@stewart)
5
+ - Ari Lerner (@auser)
6
+ - Daniel Fischer (@dfischer)
7
+ - Jake Good (@whoisjake)
8
+ - Javier Cervantes (@solojavier)
9
+ - Kurtis Rainbolt-Greene (@krainboltgreene)
10
+ - Mario "Kuroir" Ricalde (@MarioRicalde)
11
+ - Mike Ford (@mikejford)
12
+ - Ron Evans (@deadprogram)
13
+
14
+ Thank you!
15
+
16
+ Please join us, we'd love your contribution too!
data/Gemfile CHANGED
@@ -3,13 +3,6 @@ source "http://rubygems.org"
3
3
  # Specify your gem's dependencies in artoo.gemspec
4
4
  gemspec
5
5
 
6
- gem "foreman"
7
-
8
- # these are for specific hardware, they have to be here for tests
9
- gem "hybridgroup-firmata", "~> 0.4.0"
10
- gem "hybridgroup-sphero", "~> 1.3.0"
11
- gem "hybridgroup-argus", "~> 0.3.0"
12
-
13
6
  # For the front end web application
14
7
  gem 'sass'
15
8
  gem 'coffee-script'
@@ -22,13 +15,21 @@ gem 'guard-sprockets'
22
15
  gem 'guard-compass'
23
16
  gem 'rb-inotify', '~> 0.8.8'
24
17
  gem 'execjs'
25
- gem 'therubyracer'
18
+
19
+ if RUBY_PLATFORM =~ /java/
20
+ gem 'therubyrhino'
21
+ else
22
+ gem 'therubyracer'
23
+ end
26
24
 
27
25
  # For documentation
28
26
  gem 'yard'
29
27
  gem 'yard-sinatra'
30
- gem 'redcarpet'
28
+ gem 'kramdown'
31
29
 
32
30
  # For tests
33
31
  gem "minitest", "~> 5.0.1"
34
32
  gem "mocha", '~> 0.14.0', :require => false
33
+
34
+ gem 'json', '~> 1.7.7'
35
+ gem "foreman"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- artoo (0.5.0)
4
+ artoo (1.0.0.pre)
5
5
  celluloid (~> 0.14.0)
6
6
  celluloid-io (~> 0.14.0)
7
7
  multi_json (~> 1.6)
@@ -12,7 +12,7 @@ PATH
12
12
  GEM
13
13
  remote: http://rubygems.org/
14
14
  specs:
15
- bootstrap-sass (2.2.2.0)
15
+ bootstrap-sass (2.3.1.0)
16
16
  sass (~> 3.2)
17
17
  celluloid (0.14.0)
18
18
  timers (>= 1.0.0)
@@ -20,23 +20,22 @@ GEM
20
20
  celluloid (>= 0.13.0)
21
21
  nio4r (>= 0.4.5)
22
22
  certified (0.1.1)
23
- chunky_png (1.2.7)
23
+ chunky_png (1.2.8)
24
24
  coderay (1.0.9)
25
25
  coffee-script (2.2.0)
26
26
  coffee-script-source
27
27
  execjs
28
- coffee-script-source (1.4.0)
28
+ coffee-script-source (1.6.2)
29
29
  compass (0.12.2)
30
30
  chunky_png (~> 1.2)
31
31
  fssm (>= 0.2.7)
32
32
  sass (~> 3.1)
33
33
  dotenv (0.7.0)
34
- em-websocket (0.4.0)
34
+ em-websocket (0.5.0)
35
35
  eventmachine (>= 0.12.9)
36
36
  http_parser.rb (~> 0.5.3)
37
- event_spitter (0.5.0)
38
- eventmachine (1.0.0)
39
- eventmachine (1.0.0-java)
37
+ eventmachine (1.0.3)
38
+ eventmachine (1.0.3-java)
40
39
  execjs (1.4.0)
41
40
  multi_json (~> 1.0)
42
41
  ffi (1.8.1)
@@ -47,50 +46,50 @@ GEM
47
46
  foreman (0.63.0-java)
48
47
  dotenv (>= 0.7)
49
48
  thor (>= 0.13.6)
49
+ formatador (0.2.4)
50
50
  fssm (0.2.10)
51
- guard (1.6.2)
51
+ guard (1.7.0)
52
+ formatador (>= 0.2.4)
52
53
  listen (>= 0.6.0)
53
54
  lumberjack (>= 1.0.2)
54
55
  pry (>= 0.9.10)
55
- terminal-table (>= 1.4.3)
56
56
  thor (>= 0.14.6)
57
57
  guard-compass (0.0.6)
58
58
  compass (>= 0.10.5)
59
59
  guard (>= 0.2.1)
60
- guard-livereload (1.1.3)
60
+ guard-livereload (1.3.0)
61
61
  em-websocket (>= 0.2.0)
62
62
  guard (>= 1.5.0)
63
63
  multi_json (~> 1.0)
64
- guard-sprockets (0.4.2)
64
+ guard-sprockets (0.4.3)
65
65
  execjs (~> 1.0)
66
66
  guard (>= 1.1.0)
67
67
  sprockets (~> 2.0)
68
- hike (1.2.1)
68
+ hike (1.2.2)
69
69
  http (0.4.0)
70
70
  certified
71
71
  http_parser.rb
72
72
  http_parser.rb (0.5.3)
73
73
  http_parser.rb (0.5.3-java)
74
- hybridgroup-argus (0.3.0)
75
- hybridgroup-firmata (0.4.0)
76
- event_spitter
77
- hybridgroup-sphero (1.3.0)
74
+ json (1.7.7)
75
+ json (1.7.7-java)
76
+ kramdown (1.0.2)
78
77
  libv8 (3.11.8.17)
79
- listen (0.7.2)
80
- lumberjack (1.0.2)
78
+ listen (0.7.3)
79
+ lumberjack (1.0.3)
81
80
  metaclass (0.0.1)
82
81
  method_source (0.8.1)
83
82
  minitest (5.0.1)
84
83
  minitest-happy (1.0.0)
85
84
  mocha (0.14.0)
86
85
  metaclass (~> 0.0.1)
87
- multi_json (1.6.1)
86
+ multi_json (1.7.3)
88
87
  nio4r (0.4.5)
89
- pry (0.9.12)
88
+ pry (0.9.12.2)
90
89
  coderay (~> 1.0.5)
91
90
  method_source (~> 0.8)
92
91
  slop (~> 3.4)
93
- pry (0.9.12-java)
92
+ pry (0.9.12.2-java)
94
93
  coderay (~> 1.0.5)
95
94
  method_source (~> 0.8)
96
95
  slop (~> 3.4)
@@ -99,28 +98,27 @@ GEM
99
98
  rake (10.0.4)
100
99
  rb-inotify (0.8.8)
101
100
  ffi (>= 0.5.0)
102
- redcarpet (2.2.2)
103
101
  reel (0.4.0.pre)
104
102
  celluloid-io (>= 0.8.0)
105
103
  http (>= 0.2.0)
106
104
  http_parser.rb (>= 0.5.3)
107
105
  rack (>= 1.4.0)
108
106
  websocket_parser (>= 0.1.2)
109
- ref (1.0.4)
110
- sass (3.2.5)
111
- slop (3.4.3)
112
- spoon (0.0.1)
113
- sprockets (2.8.2)
107
+ ref (1.0.5)
108
+ sass (3.2.9)
109
+ slop (3.4.5)
110
+ spoon (0.0.4)
111
+ ffi
112
+ sprockets (2.9.3)
114
113
  hike (~> 1.2)
115
114
  multi_json (~> 1.0)
116
115
  rack (~> 1.0)
117
116
  tilt (~> 1.1, != 1.3.0)
118
- terminal-table (1.4.5)
119
117
  therubyracer (0.11.4)
120
118
  libv8 (~> 3.11.8.12)
121
119
  ref
122
- thor (0.17.0)
123
- tilt (1.3.3)
120
+ thor (0.18.1)
121
+ tilt (1.4.1)
124
122
  timers (1.1.0)
125
123
  websocket_parser (0.1.2)
126
124
  http
@@ -143,14 +141,12 @@ DEPENDENCIES
143
141
  guard-compass
144
142
  guard-livereload
145
143
  guard-sprockets
146
- hybridgroup-argus (~> 0.3.0)
147
- hybridgroup-firmata (~> 0.4.0)
148
- hybridgroup-sphero (~> 1.3.0)
144
+ json (~> 1.7.7)
145
+ kramdown
149
146
  minitest (~> 5.0.1)
150
147
  minitest-happy
151
148
  mocha (~> 0.14.0)
152
149
  rb-inotify (~> 0.8.8)
153
- redcarpet
154
150
  sass
155
151
  sprockets
156
152
  therubyracer
data/README.md CHANGED
@@ -12,7 +12,7 @@ Artoo provides a simple, yet powerful domain-specific language (DSL) for robotic
12
12
 
13
13
  ### Basic
14
14
 
15
- Arduino with an LED and a button, using the Firmata protocol.
15
+ #### Arduino with an LED and a button, using the Firmata protocol.
16
16
 
17
17
  ```ruby
18
18
  require 'artoo'
@@ -26,7 +26,7 @@ work do
26
26
  end
27
27
  ```
28
28
 
29
- Parrot ARDrone 2.0
29
+ #### Parrot ARDrone 2.0
30
30
 
31
31
  ```ruby
32
32
  require 'artoo'
@@ -45,6 +45,8 @@ end
45
45
 
46
46
  ### Modular
47
47
 
48
+ You can also write more modular class-oriented code, that allows you to control swarms of robots:
49
+
48
50
  ```ruby
49
51
  require 'artoo/robot'
50
52
 
@@ -71,7 +73,7 @@ SPHEROS.each {|p|
71
73
  SpheroRobot.work!(robots)
72
74
  ```
73
75
 
74
- Ruby versions supported: Ruby 2.0, Ruby 1.9.3, JRuby 1.7.2, and Rubinius 2.0-rc1
76
+ Ruby versions supported: Ruby 2.0, Ruby 1.9.3, JRuby 1.7.4, and Rubinius 2.0-rc1
75
77
 
76
78
 
77
79
  Artoo is conceptualy influenced by Sinatra (https://github.com/sinatra/sinatra) as well as borrowing some code from it.
@@ -80,6 +82,19 @@ Artoo provides a robust actor-based messaging architecture, that can support ful
80
82
 
81
83
  To a large extent, this is due to being built on top of Celluloid (https://github.com/celluloid/celluloid), Celluloid::IO (https://github.com/celluloid/celluloid-io), and Reel (https://github.com/celluloid/reel).
82
84
 
85
+ ## Hardware support:
86
+
87
+ Artoo has a extensible system for connecting to hardware devices. The following robotics and physical computing platforms are currently supported:
88
+
89
+ - Arduino (http://www.arduino.cc/) adaptor (https://github.com/hybridgroup/artoo-arduino)
90
+ - ARDrone (http://ardrone2.parrot.com/) adaptor (https://github.com/hybridgroup/artoo-ardrone)
91
+ - Roomba (http://www.irobot.com/us/robots/Educators/Create.aspx) adaptor (https://github.com/hybridgroup/artoo-roomba)
92
+ - Sphero (http://www.gosphero.com/) adaptor (https://github.com/hybridgroup/artoo-sphero)
93
+
94
+ More platforms are coming soon!
95
+
96
+ Do you have some hardware that is not yet supported by Artoo? We want to help you, help us, help them! Get in touch...
97
+
83
98
  ## API:
84
99
 
85
100
  Artoo includes a RESTful API to query the status of any robot running within a group, including the connection and device status, and device streaming data via websockets.
@@ -100,38 +115,112 @@ end
100
115
 
101
116
  Once the robot or group is working, you can view the main API page at the host and port specified.
102
117
 
118
+ ## Test-Driven Robotics:
119
+
120
+ Artoo makes it easy to do Test Driven Development (TDD) of your robotic devices using your favorite Ruby test and mocking frameworks.
121
+
122
+ Here is an example that uses Minitest and Mocha:
123
+
124
+ ```ruby
125
+ describe 'sphero' do
126
+ let(:robot) { Artoo::MainRobot.new }
127
+
128
+ it 'has work to do every 3 seconds' do
129
+ robot.work
130
+
131
+ robot.has_work?(:every, 3.seconds).wont_be_nil
132
+ end
133
+
134
+ it 'must roll every 3 seconds' do
135
+ robot.sphero.expects(:roll).twice
136
+
137
+ robot.work
138
+ sleep 6.1
139
+ end
140
+
141
+ it 'receives collision event' do
142
+ robot.expects(:contact)
143
+
144
+ robot.work
145
+ robot.sphero.publish("collision", "clunk")
146
+ sleep 0.1
147
+ end
148
+ end
149
+ ```
150
+ to describe the following Sphero robot:
151
+
152
+ ```ruby
153
+ require 'artoo'
154
+
155
+ connection :sphero, :adaptor => :sphero, :port => '127.0.0.1:4560'
156
+ device :sphero, :driver => :sphero
157
+
158
+ def contact(*args)
159
+ @contacts ||= 0
160
+ @contacts += 1
161
+ puts "Contact #{@contacts}"
162
+ end
163
+
164
+ work do
165
+ on sphero, :collision => :contact
166
+
167
+ every(3.seconds) do
168
+ puts "Rolling..."
169
+ sphero.roll 90, rand(360)
170
+ end
171
+ end
172
+ ```
173
+
103
174
  ## Console:
104
175
 
105
176
  Artoo includes Robi, a console based on Pry (http://pryrepl.org/) to allow you to interactively debug and control your robot.
106
177
 
107
178
  ```
108
- robi ./examples/hello.rb
109
- I, [2013-03-16T18:14:22.281462 #61513] INFO -- : Registering connection 'loop'...
110
- I, [2013-03-16T18:14:22.283027 #61513] INFO -- : Preparing work...
111
- [1] pry(main)> start
112
- I, [2013-03-16T18:14:23.836523 #61513] INFO -- : Initializing connection loop...
113
- I, [2013-03-16T18:14:23.842265 #61513] INFO -- : Starting work...
114
- I, [2013-03-16T18:14:23.842879 #61513] INFO -- : Connecting to 'loop' on port '#<Artoo::Port:0xe3c0>'...
115
- [2] pry(main)> list
116
- #<Artoo::MainRobot:0xe5e4>
117
- [3] pry(main)> exit
179
+ $ robi ./examples/hello.rb
180
+ I, [2013-05-21T18:09:05.179630 #8752] INFO -- : Registering connection 'loop'...
181
+ I, [2013-05-21T18:09:05.180681 #8752] INFO -- : Preparing work...
182
+ robi> start
183
+ Starting main robot...
184
+ I, [2013-05-21T18:09:37.086550 #8752] INFO -- : Initializing connection loop...
185
+ I, [2013-05-21T18:09:37.092231 #8752] INFO -- : Starting work...
186
+ I, [2013-05-21T18:09:37.092691 #8752] INFO -- : Connecting to 'loop' on port '#<Artoo::Port:0x104e4>'...
187
+ robi> hello
188
+ hello
189
+ robi> stop
190
+ Stopping robots...
191
+ robi> exit
192
+ D, [2013-05-21T18:09:53.507709 #8752] DEBUG -- : Terminating 7 actors...
193
+ D, [2013-05-21T18:09:53.508622 #8752] DEBUG -- : Shutdown completed cleanly
118
194
  ```
119
195
 
120
- ## Installing:
196
+ ## Getting Started:
197
+
198
+ ### Installation
121
199
 
122
200
  ```ruby
123
201
  gem install artoo
124
202
  ```
125
203
 
126
- Then install the gems required by your specific supported hardware:
204
+ Then install the gems required by the hardware you want to use. For example, if you wanted to integrate a Wiiclassic controller connected to an Arduino to fly your ARDrone:
127
205
 
128
206
  ```ruby
129
- gem install hybridgroup-firmata
130
- gem install hybridgroup-argus
131
- gem install hybridgroup-sphero
207
+ gem install artoo-arduino
208
+ gem install artoo-ardrone
132
209
  ```
133
210
 
134
- ## Running:
211
+ If you will be using socket to serial commuication (required if you will use JRuby or Rubinius), you are ready to start programming your hardware.
212
+
213
+ If you want to connect via serial port directly, and are using MRI, install the hybridgroup-serialport gem:
214
+
215
+ ```ruby
216
+ gem install hybridgroup-serialport
217
+ ```
218
+
219
+ ### Writing your robot code:
220
+
221
+ Now you are ready to write your own code. Take a look at the examples directory for a whole bunch of code you can use to help get started. We recommend using TDR (Test-Driven Robotics) with your preferred test frameworks.
222
+
223
+ ### Running your robot:
135
224
 
136
225
  ```ruby
137
226
  ruby myrobot.rb
@@ -140,3 +229,5 @@ ruby myrobot.rb
140
229
  ## Wiki
141
230
 
142
231
  Check out our [wiki](https://github.com/hybridgroup/artoo/wiki) for more docs
232
+
233
+ (c) 2012-2013 The Hybrid Group
data/Rakefile CHANGED
@@ -6,7 +6,6 @@ require 'rake/testtask'
6
6
 
7
7
  Rake::TestTask.new do |t|
8
8
  t.pattern = "test/**/*_test.rb"
9
- ENV["ARTOO_TEST"] = 'true'
10
9
  end
11
10
 
12
11
  task :default => :test
@@ -1,5 +1,3 @@
1
- window.driversWithOutput = ["Pinger", "Pinger2", "ardrone_navigation", "wiiclassic"]
2
-
3
1
  @RobotIndexCtrl = ($scope, $http, $location, $route) ->
4
2
  $http.get('/robots').success (data)->
5
3
  $scope.robots = data
@@ -21,15 +19,14 @@ window.driversWithOutput = ["Pinger", "Pinger2", "ardrone_navigation", "wiiclass
21
19
  $http.post('/robots/' + $scope.robot.name + "/devices/" + deviceId + "/commands/" + command, post_params).success (data)->
22
20
  true
23
21
 
24
- $scope.driverHasOutput = (driverId)->
25
- true if $.inArray(driverId, window.driversWithOutput) != -1
26
-
27
22
  device = console: ->
28
- window.ws.close() if window.ws
23
+ if window.ws
24
+ window.ws.onmessage = null
25
+ window.ws.close()
26
+ $(".console code").empty()
29
27
  wspath = "ws://" + location.host + "/robots/"
30
28
  window.ws = new WebSocket(wspath + $scope.robot.name + "/devices/" + $scope.deviceDetail.name + "/events")
31
- $(".console code").empty()
32
- ws.onmessage = (evt)->
29
+ window.ws.onmessage = (evt)->
33
30
  $(".console code").prepend(evt.data + "\n")
34
31
 
35
32
  $scope.isConnected = (connection) ->