evepi 0.2.1 → 0.2.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.
- data/lib/evepi.rb +205 -14
- metadata +39 -22
- checksums.yaml +0 -7
data/lib/evepi.rb
CHANGED
|
@@ -1,21 +1,212 @@
|
|
|
1
|
-
require 'socket'
|
|
1
|
+
require 'socket'
|
|
2
|
+
require 'rubygems'
|
|
2
3
|
require 'json'
|
|
3
4
|
|
|
5
|
+
module Evepi_Init_Mixin
|
|
6
|
+
attr_accessor :json_obj, :hostname, :port, :name
|
|
7
|
+
|
|
8
|
+
def initialize(sensor, name='fuckname')
|
|
9
|
+
json_path = open( '/etc/%s/fuckpath.md' % sensor ).read()
|
|
10
|
+
json_file = File.read(json_path)
|
|
11
|
+
@json_obj = JSON.parse(json_file)
|
|
12
|
+
@name = name
|
|
13
|
+
@hostname = @json_obj[@name][0]
|
|
14
|
+
@port = @json_obj[name][1]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
4
17
|
|
|
5
|
-
class
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def self.get_res ( name, cmd="fuck")
|
|
12
|
-
hostname = @fuck_ultrason_json[ name ][0]
|
|
13
|
-
port = @fuck_ultrason_json[ name ][1]
|
|
14
|
-
s = TCPSocket.open(hostname, port)
|
|
18
|
+
class Sensor
|
|
19
|
+
include Evepi_Init_Mixin
|
|
20
|
+
|
|
21
|
+
def get_raw_response(name=@name, cmd="fuck")
|
|
22
|
+
s = TCPSocket.open(@hostname, @port)
|
|
15
23
|
s.send cmd, 0
|
|
16
24
|
line = s.recv(1024)
|
|
17
|
-
|
|
18
|
-
s.close # 关闭 socket
|
|
25
|
+
s.close
|
|
19
26
|
return line
|
|
20
27
|
end
|
|
21
|
-
|
|
28
|
+
|
|
29
|
+
def get_response_by_key(key, name=@name, cmd="fuck")
|
|
30
|
+
json_str = get_raw_response(name, cmd)
|
|
31
|
+
json_obj = JSON.parse(json_str)
|
|
32
|
+
return json_obj[key]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
alias_method :get_response, :get_raw_response
|
|
36
|
+
|
|
37
|
+
def test_get_response()
|
|
38
|
+
result = get_response()
|
|
39
|
+
puts result
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
class ButtonSensor < Sensor
|
|
44
|
+
def get_now_response(name=@name, cmd='fuck')
|
|
45
|
+
return get_response_by_key('now_result', cmd)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def get_now_action(name=@name, cmd='fuck')
|
|
49
|
+
return get_response_by_key('action', cmd)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def get_on_off_status(name=@name, cmd='fuck')
|
|
53
|
+
return get_response_by_key('on_off_status', cmd)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
class SoundSensor < Sensor
|
|
58
|
+
def get_5ms_res(name=@name)
|
|
59
|
+
return get_response(name, 'whether').to_i
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def get_1s_res(name=@name)
|
|
63
|
+
return 100.0 - get_response(name, 'sum').to_f
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
class LCD_Screen
|
|
68
|
+
include Evepi_Init_Mixin
|
|
69
|
+
|
|
70
|
+
def _write(input_json, name)
|
|
71
|
+
socket = TCPSocket.open(@hostname, @port)
|
|
72
|
+
socket.send input_json, 0
|
|
73
|
+
line = socket.recv(1024)
|
|
74
|
+
socket.close
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def write(type, x, y, content, name=@name)
|
|
78
|
+
input_dict = {
|
|
79
|
+
:cursor_whether => type,
|
|
80
|
+
:cursor_i => x,
|
|
81
|
+
:cursor_j => y,
|
|
82
|
+
:input_string => content
|
|
83
|
+
}
|
|
84
|
+
input_json = JSON.dump(input_dict)
|
|
85
|
+
return _write(input_json, name)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
@@CURSOR_SET = 1
|
|
89
|
+
def set_cursor(x, y, name=@name)
|
|
90
|
+
input_dict = {
|
|
91
|
+
:cursor_whether => @@CURSOR_SET,
|
|
92
|
+
:cursor_i => x,
|
|
93
|
+
:cursor_j => y,
|
|
94
|
+
}
|
|
95
|
+
input_json = JSON.dump(input_dict)
|
|
96
|
+
return _write(input_json, name)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def write_at(x, y, content, name=@name)
|
|
100
|
+
input_dict = {
|
|
101
|
+
:cursor_whether => @@CURSOR_SET,
|
|
102
|
+
:cursor_i => x,
|
|
103
|
+
:cursor_j => y,
|
|
104
|
+
:input_string => content
|
|
105
|
+
}
|
|
106
|
+
input_json = JSON.dump(input_dict)
|
|
107
|
+
return _write(input_json, name)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
@@CURSOR_APPEND = 0
|
|
111
|
+
def write_after(content, name=@name)
|
|
112
|
+
input_dict = {
|
|
113
|
+
:cursor_whether => @@CURSOR_APPEND,
|
|
114
|
+
:input_string => content
|
|
115
|
+
}
|
|
116
|
+
input_json = JSON.dump(input_dict)
|
|
117
|
+
return _write(input_json, name)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
@@CURSOR_CLEAR = 2
|
|
121
|
+
def clear(name=@name)
|
|
122
|
+
return write(@@CURSOR_CLEAR, 0, 0, nil, name)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
class SensorFactory
|
|
127
|
+
def self.createUltrasonSensor(sensor_name='ultrason')
|
|
128
|
+
return Sensor.new sensor_name
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def self.createLCDScreen(sensor_name='out_01')
|
|
132
|
+
return LCD_Screen.new sensor_name
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def self.createButtonSensor(sensor_name='inp_01')
|
|
136
|
+
return ButtonSensor.new sensor_name
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def self.createInfraredSensor(sensor_name='inf_01')
|
|
140
|
+
return Sensor.new sensor_name
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def self.createHumiditySensor(sensor_name='tus_01')
|
|
144
|
+
return Sensor.new sensor_name
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def self.createAirSensor(sensor_name='air_01')
|
|
148
|
+
return Sensor.new sensor_name
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def self.createTemperatureAndHumiditySensor(sensor_name='tem_01')
|
|
152
|
+
return Sensor.new sensor_name
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def self.createSoundSensor(sensor_name='snd_01')
|
|
156
|
+
return SoundSensor.new sensor_name
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
#ultrason_sensor.test_get_response()
|
|
161
|
+
#accelerator = Sensor.new 'acc_01'
|
|
162
|
+
#accelerator.test_get_response()
|
|
163
|
+
|
|
164
|
+
# test LCD out_01
|
|
165
|
+
=begin
|
|
166
|
+
out = LCD_Screen.new 'out_01'
|
|
167
|
+
out.clear
|
|
168
|
+
out.set_cursor 0, 1
|
|
169
|
+
out.write_after 'f'
|
|
170
|
+
out.set_cursor 1, 2
|
|
171
|
+
out.write_after 'u'
|
|
172
|
+
out.set_cursor 0, 3
|
|
173
|
+
out.write_after 'c'
|
|
174
|
+
out.set_cursor 1, 4
|
|
175
|
+
out.write_after 'k'
|
|
176
|
+
out.write_at 0, 6, 'zyw'
|
|
177
|
+
|
|
178
|
+
btn = SensorFactory.createButtonSensor
|
|
179
|
+
while true
|
|
180
|
+
puts btn.get_now_response
|
|
181
|
+
puts btn.get_now_action
|
|
182
|
+
puts btn.get_on_off_status
|
|
183
|
+
sleep(0.5)
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
sensor = SensorFactory.createInfraredSensor
|
|
188
|
+
while true
|
|
189
|
+
puts sensor.get_response()
|
|
190
|
+
sleep(0.5)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
sensor = SensorFactory.createHumiditySensor
|
|
194
|
+
while true
|
|
195
|
+
puts sensor.get_response()
|
|
196
|
+
sleep(0.5)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
sensor = SensorFactory.createAirSensor
|
|
200
|
+
while true
|
|
201
|
+
puts sensor.get_response()
|
|
202
|
+
sleep(0.5)
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
sensor = SensorFactory.createSoundSensor
|
|
206
|
+
while true
|
|
207
|
+
puts sensor.get_5ms_res()
|
|
208
|
+
puts sensor.get_1s_res()
|
|
209
|
+
sleep(0.5)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
=end
|
metadata
CHANGED
|
@@ -1,45 +1,62 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: evepi
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease: false
|
|
5
|
+
segments:
|
|
6
|
+
- 0
|
|
7
|
+
- 2
|
|
8
|
+
- 2
|
|
9
|
+
version: 0.2.2
|
|
5
10
|
platform: ruby
|
|
6
|
-
authors:
|
|
11
|
+
authors:
|
|
7
12
|
- Zhang Yiwei
|
|
8
13
|
autorequire:
|
|
9
14
|
bindir: bin
|
|
10
15
|
cert_chain: []
|
|
11
|
-
|
|
16
|
+
|
|
17
|
+
date: 2015-11-15 00:00:00 +08:00
|
|
18
|
+
default_executable:
|
|
12
19
|
dependencies: []
|
|
20
|
+
|
|
13
21
|
description: evepi
|
|
14
22
|
email: Karl1991223@126.com
|
|
15
23
|
executables: []
|
|
24
|
+
|
|
16
25
|
extensions: []
|
|
26
|
+
|
|
17
27
|
extra_rdoc_files: []
|
|
18
|
-
|
|
28
|
+
|
|
29
|
+
files:
|
|
19
30
|
- lib/evepi.rb
|
|
31
|
+
has_rdoc: true
|
|
20
32
|
homepage: http://rubygems.org/gems/evepi
|
|
21
|
-
licenses:
|
|
33
|
+
licenses:
|
|
22
34
|
- MIT
|
|
23
|
-
metadata: {}
|
|
24
35
|
post_install_message:
|
|
25
36
|
rdoc_options: []
|
|
26
|
-
|
|
37
|
+
|
|
38
|
+
require_paths:
|
|
27
39
|
- lib
|
|
28
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
29
|
-
requirements:
|
|
30
|
-
- -
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
41
|
+
requirements:
|
|
42
|
+
- - ">="
|
|
43
|
+
- !ruby/object:Gem::Version
|
|
44
|
+
segments:
|
|
45
|
+
- 0
|
|
46
|
+
version: "0"
|
|
47
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
48
|
+
requirements:
|
|
49
|
+
- - ">="
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
segments:
|
|
52
|
+
- 0
|
|
53
|
+
version: "0"
|
|
54
|
+
requirements:
|
|
39
55
|
- json, v1.7.7
|
|
40
56
|
rubyforge_project:
|
|
41
|
-
rubygems_version:
|
|
57
|
+
rubygems_version: 1.3.6
|
|
42
58
|
signing_key:
|
|
43
|
-
specification_version:
|
|
59
|
+
specification_version: 3
|
|
44
60
|
summary: evepi
|
|
45
61
|
test_files: []
|
|
62
|
+
|
checksums.yaml
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
SHA1:
|
|
3
|
-
metadata.gz: 5820064a2ff3628754f63ac5f11a42ca237d819c
|
|
4
|
-
data.tar.gz: 1daf5b7255bb2afc270ecad3ef2d902b417fa6d2
|
|
5
|
-
SHA512:
|
|
6
|
-
metadata.gz: f98a8b197486bb5d8b277e40b915c9dc4904c99f3a93a08ea2de3e438327067eb07d97b7d10c3453d11dd9edaade03d9b8fb06dcb3b9a38616e171a51b86fa9e
|
|
7
|
-
data.tar.gz: 084360ceeeb73095c06de63df8b22e33430bc4ef79f1565df31be5935da57b9e946c489b9047d3b960c14efed31c2a4b4d2719408678fb774cabd1a60c7ac22f
|