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.
Files changed (3) hide show
  1. data/lib/evepi.rb +205 -14
  2. metadata +39 -22
  3. checksums.yaml +0 -7
data/lib/evepi.rb CHANGED
@@ -1,21 +1,212 @@
1
- require 'socket' # Sockets 是标准库
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 Ultrason
6
-
7
- fuck_json_path = open( "/etc/ultrason/fuckpath.md" ).read()
8
- fuck_json_file = File.read( fuck_json_path )
9
- @fuck_ultrason_json = JSON.parse( fuck_json_file )
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
- puts line
18
- s.close # 关闭 socket
25
+ s.close
19
26
  return line
20
27
  end
21
- end
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
- version: 0.2.1
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
- date: 2015-11-15 00:00:00.000000000 Z
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
- files:
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
- require_paths:
37
+
38
+ require_paths:
27
39
  - lib
28
- required_ruby_version: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- required_rubygems_version: !ruby/object:Gem::Requirement
34
- requirements:
35
- - - '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- requirements:
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: 2.0.14
57
+ rubygems_version: 1.3.6
42
58
  signing_key:
43
- specification_version: 4
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