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 +4 -4
- data/lib/brewer/server.rb +51 -0
- data/views/index.erb +152 -0
- metadata +46 -6
- data/Gemfile +0 -4
- data/Gemfile.lock +0 -70
- data/README.md +0 -46
- data/Rakefile +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4bf3147a086fdf3d4860d1b7fcb1065e01d412b
|
4
|
+
data.tar.gz: 18308cd46cb5373c6535efd36b5ffbb12ba398aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/views/index.erb
ADDED
@@ -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.
|
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.
|
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
data/Gemfile.lock
DELETED
@@ -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
|