brewer-server 0.0.01 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53e96f537223e39c6744346ae72f5cb415de4642
4
- data.tar.gz: ed8875e3b6d9050822baa2fca6649d83b52bc400
3
+ metadata.gz: f4bf3147a086fdf3d4860d1b7fcb1065e01d412b
4
+ data.tar.gz: 18308cd46cb5373c6535efd36b5ffbb12ba398aa
5
5
  SHA512:
6
- metadata.gz: ab75d4a830a8f11e0586f0050b3443609688308104a07806d9edb7de11f05c95a68bdf46bf63129f1db58c164be9164fed92002cfbe46bdd3d6e947972464835
7
- data.tar.gz: 1ccc22442ed4843fd94e9816a56f3a70b35559e35babdf70124c0b6e4b42ed163c91b9ae627b36956398cae740151cb3374c9c0e0151b114521c267ecf6629a8
6
+ metadata.gz: 76c4cb9aac7e26c44efcb855fb1e3394a7a107a22d9ce4715956d613b131c61984831a76966967eb033d465fd438a2ec05c9c330dbbb8a5f7a26b43f21640ee6
7
+ data.tar.gz: 6ab838e2a4ca214aefd8a87d56884ac1c4b944be95e01023a1011cf2af92f585fe683a4ad984e3f0a3b87974141e395137f17e3378fdb536f074e67bd0b8c982
@@ -0,0 +1,51 @@
1
+ require 'sinatra/base'
2
+ require "sinatra/sse"
3
+ require 'rack/flash'
4
+ require 'brewer'
5
+ require 'wannabe_bool'
6
+
7
+ module Brewer
8
+ class Server < Sinatra::Base
9
+ # SSE Mixin
10
+ include Sinatra::SSE
11
+
12
+ configure do
13
+
14
+ use Rack::Flash
15
+
16
+ set :sessions, true
17
+ set :bind, "0.0.0.0"
18
+ set :port, 8080
19
+ set :views, Proc.new { File.join(File.expand_path("../..", __dir__), "views") }
20
+ enable :sessions
21
+
22
+ $controller = Brewer::Controller.new
23
+ end
24
+
25
+ get '/' do
26
+ erb :index
27
+ end
28
+
29
+ get '/pid' do
30
+ sse_stream do |out|
31
+ EM.add_periodic_timer(2) do
32
+ out.push :event => "pid_status", :data => $controller.pid_to_web.to_json
33
+ end
34
+ end
35
+ end
36
+
37
+ get '/relays' do
38
+ sse_stream do |out|
39
+ EM.add_periodic_timer(2) do
40
+ out.push :event => "relays_status", :data => $controller.relays_status_to_web.to_json
41
+ end
42
+ end
43
+ end
44
+
45
+ get '/rspec-testing' do
46
+ 'tests are passing!'
47
+ end
48
+
49
+ run! if app_file == $0
50
+ end
51
+ end
@@ -0,0 +1,152 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Test Homepage</title>
8
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
9
+ <link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
10
+ <script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
11
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.bundle.js"></script>
12
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
13
+ </head>
14
+ <style>
15
+ body {
16
+ text-align: center;
17
+ }
18
+
19
+ .mdl_card {
20
+ max-width: 500px;
21
+ text-align: center;
22
+ margin: auto;
23
+ }
24
+
25
+ #result {
26
+ text-align: center;
27
+ }
28
+
29
+ .mdl-card__supporting-text {
30
+ color: #333;
31
+ }
32
+ </style>
33
+
34
+ <body>
35
+ <div class="mdl-grid">
36
+
37
+ <div id="result" class="mdl-cell mdl-cell--6-col">
38
+ <div class="mdl_card mdl-shadow--4dp">
39
+ <div class="mdl-card__supporting-text">
40
+ <div id="pidSpinner" class="mdl-spinner mdl-js-spinner is-active"></div>
41
+ <div id="pidInfo">
42
+ <h3 id="pid">PID STATUS: Loading...</h3>
43
+ <h3 id="sv">SV: Loading...</h3>
44
+ <h3 id="pv">PV: Loading...</h3>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+
50
+ <div id="result" class="mdl-cell mdl-cell--6-col">
51
+ <div class="mdl_card mdl-shadow--4dp">
52
+ <div class="mdl-card__supporting-text">
53
+ <div id="relaySpinner" class="mdl-spinner mdl-js-spinner is-active"></div>
54
+ <div id="relayInfo">
55
+ <h3 id="hltToMash">hltToMash: Loading...</h3>
56
+ <h3 id="hlt">hlt: Loading...</h3>
57
+ <h3 id="rimsToMash">rimsToMash: Loading...</h3>
58
+ <h3 id="pump">pump: Loading...</h3>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+
64
+ <div class="mdl-cell mdl-cell--12-col" style="height: 500px;">
65
+ <canvas id="pvChart"></canvas>
66
+ </div>
67
+
68
+ </div>
69
+ </body>
70
+ <script type="text/javascript">
71
+ var labels = [];
72
+ var data = [];
73
+
74
+ pidInfo.style.display = "none";
75
+ relayInfo.style.display = "none";
76
+
77
+
78
+ var pidsource = new EventSource("/pid");
79
+ pidsource.addEventListener('pid_status', function (event) {
80
+ var result = JSON.parse(event.data);
81
+ console.log(data);
82
+ pid.innerText = "PID: " + (result.pid_running ? 'on' : 'off');
83
+ sv.innerText = "SV: " + result.sv + ' \u00B0F';
84
+ pv.innerText = "PV: " + result.pv + ' \u00B0F';
85
+ data.push(result.pv);
86
+ labels.push(moment().format());
87
+ if (data.length > 20) {
88
+ data.shift();
89
+ labels.shift();
90
+ }
91
+ myChart.update();
92
+ pidSpinner.style.display = "none";
93
+ pidInfo.style.display = "initial";
94
+ }, false);
95
+
96
+ var relaysource = new EventSource("/relays");
97
+ relaysource.addEventListener('relays_status', function (event) {
98
+ var data = JSON.parse(event.data);
99
+ console.log(data);
100
+ hltToMash.innerText = "HLT → " + (Boolean(data.hltToMash) ? 'mash' : 'boil');
101
+ hlt.innerText = "HLT: " + (Boolean(data.hlt) ? 'open' : 'closed');
102
+ rimsToMash.innerText = "RIMS → " + (Boolean(data.rimsToMash) ? 'mash' : 'boil');
103
+ pump.innerText = "PUMP: " + (Boolean(data.pump) ? 'on' : 'off');
104
+ relaySpinner.style.display = "none";
105
+ relayInfo.style.display = "initial";
106
+ }, false);
107
+
108
+ var ctx = document.getElementById("pvChart").getContext('2d');
109
+ var myChart = new Chart(ctx, {
110
+ type: 'line',
111
+ data: {
112
+ labels: labels,
113
+ datasets: [{
114
+ label: "PV",
115
+ tension: 0,
116
+ fill: true,
117
+ backgroundColor: "rgba(0, 0, 0, 0.5)",
118
+ borderColor: "#333",
119
+ data: data,
120
+ }]
121
+ },
122
+ options: {
123
+ maintainAspectRatio: false,
124
+ scales: {
125
+ xAxes: [{
126
+ type: "time",
127
+ time: {
128
+ format: 'HH:mm:ss',
129
+ tooltipFormat: 'HH:mm:ss'
130
+ },
131
+ ticks: {
132
+ autoSkip: true,
133
+ maxTicksLimit: 10
134
+ },
135
+ scaleLabel: {
136
+ display: true,
137
+ labelString: 'Time'
138
+ }
139
+ },],
140
+ yAxes: [{
141
+ scaleLabel: {
142
+ display: true,
143
+ labelString: 'PV Value'
144
+ }
145
+ }]
146
+ }
147
+ }
148
+ });
149
+
150
+ </script>
151
+
152
+ </html>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brewer-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.01
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Sweeney
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: brewer-stats
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: wannabe_bool
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -53,6 +67,20 @@ dependencies:
53
67
  - - ">="
54
68
  - !ruby/object:Gem::Version
55
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: thin
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
56
84
  - !ruby/object:Gem::Dependency
57
85
  name: sinatra
58
86
  requirement: !ruby/object:Gem::Requirement
@@ -67,6 +95,20 @@ dependencies:
67
95
  - - ">="
68
96
  - !ruby/object:Gem::Version
69
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: sinatra-sse
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
70
112
  - !ruby/object:Gem::Dependency
71
113
  name: rack-flash3
72
114
  requirement: !ruby/object:Gem::Requirement
@@ -210,13 +252,11 @@ executables:
210
252
  extensions: []
211
253
  extra_rdoc_files: []
212
254
  files:
213
- - Gemfile
214
- - Gemfile.lock
215
- - README.md
216
- - Rakefile
217
255
  - bin/brewer-server
256
+ - lib/brewer/server.rb
218
257
  - spec/server_spec.rb
219
258
  - spec/spec_helper.rb
259
+ - views/index.erb
220
260
  homepage: https://rubygems.org/gems/brewer-server
221
261
  licenses:
222
262
  - MIT
@@ -238,7 +278,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
238
278
  version: '0'
239
279
  requirements: []
240
280
  rubyforge_project:
241
- rubygems_version: 2.2.2
281
+ rubygems_version: 2.6.12
242
282
  signing_key:
243
283
  specification_version: 4
244
284
  summary: A web interface for llamicron/brewer
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in brewer-server.gemspec
4
- gemspec
@@ -1,70 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- brewer-server (0.0.01)
5
- rack-flash3
6
- rack-test
7
- require_all
8
- sinatra
9
- wannabe_bool
10
-
11
- GEM
12
- remote: https://rubygems.org/
13
- specs:
14
- addressable (2.5.1)
15
- public_suffix (~> 2.0, >= 2.0.2)
16
- diff-lcs (1.3)
17
- docile (1.1.5)
18
- json (2.1.0)
19
- launchy (2.4.3)
20
- addressable (~> 2.3)
21
- public_suffix (2.0.5)
22
- rack (1.6.5)
23
- rack-flash3 (1.0.5)
24
- rack
25
- rack-protection (1.5.3)
26
- rack
27
- rack-test (0.6.3)
28
- rack (>= 1.0)
29
- rake (12.0.0)
30
- rdoc (5.1.0)
31
- require_all (1.4.0)
32
- rspec (3.5.0)
33
- rspec-core (~> 3.5.0)
34
- rspec-expectations (~> 3.5.0)
35
- rspec-mocks (~> 3.5.0)
36
- rspec-core (3.5.4)
37
- rspec-support (~> 3.5.0)
38
- rspec-expectations (3.5.0)
39
- diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.5.0)
41
- rspec-mocks (3.5.0)
42
- diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.5.0)
44
- rspec-support (3.5.0)
45
- simplecov (0.13.0)
46
- docile (~> 1.1.0)
47
- json (>= 1.8, < 3)
48
- simplecov-html (~> 0.10.0)
49
- simplecov-html (0.10.0)
50
- sinatra (1.4.8)
51
- rack (~> 1.5)
52
- rack-protection (~> 1.4)
53
- tilt (>= 1.3, < 3)
54
- tilt (2.0.7)
55
- wannabe_bool (0.6.0)
56
-
57
- PLATFORMS
58
- ruby
59
-
60
- DEPENDENCIES
61
- brewer-server!
62
- launchy (~> 2.4, >= 2.4.0)
63
- rake (~> 12.0, >= 12.0.0)
64
- rdoc (~> 5.1, >= 5.1.0)
65
- rspec (~> 3.5.0, >= 3.5.0)
66
- simplecov (~> 0.13.0)
67
- simplecov-html (~> 0.10.0)
68
-
69
- BUNDLED WITH
70
- 1.14.6
data/README.md DELETED
@@ -1,46 +0,0 @@
1
- # Brewer::Server
2
-
3
- This gem is a web interface for [llamicron/brewer](http://github.com/llamicron/brewer)
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- ```ruby
10
- gem 'brewer-server'
11
- ```
12
-
13
- And then execute:
14
-
15
- ```shell
16
- $ bundle
17
- ```
18
-
19
- Or install it yourself as:
20
-
21
- ```shell
22
- $ gem install brewer-server
23
- ```
24
-
25
- ## Usage
26
- Run
27
-
28
- ```shell
29
- $ brewer-server -p [port]
30
- ```
31
-
32
- replacing, `[port]` with a port of your choosing. Ports under 1024 will need sudo.
33
-
34
- Visit `localhost:[port]`
35
-
36
- If you're working on a raspberry pi as is intended, replace localhost with the ip of the pi, eg. `192.168.0.224:8080`
37
-
38
- ## Contributing
39
-
40
- Bug reports and pull requests are welcome on [GitHub](https://github.com/llamicron/brewer-server).
41
-
42
- ## License
43
-
44
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
45
-
46
- Luke Sweeney, 2017
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec