agri-controller 0.0.0 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog.txt +36 -0
  3. data/LICENSE.txt +15 -0
  4. data/agri-controller.gemspec +36 -0
  5. data/gpl-2.0.txt +339 -0
  6. data/lib/agri-controller.rb +11 -33
  7. data/lib/agri-controller/bcc.rb +86 -53
  8. data/lib/agri-controller/bit.rb +158 -143
  9. data/lib/agri-controller/device.rb +7 -0
  10. data/lib/agri-controller/device/dacs.rb +148 -0
  11. data/lib/agri-controller/device/kr.rb +23 -0
  12. data/lib/agri-controller/device/ma.rb +92 -0
  13. data/lib/agri-controller/device/mch383.rb +178 -0
  14. data/lib/agri-controller/device/tr.rb +230 -0
  15. data/lib/agri-controller/device/wr1010.rb +314 -0
  16. data/lib/agri-controller/dt.rb +17 -0
  17. data/lib/agri-controller/error_caption.rb +67 -46
  18. data/lib/agri-controller/gruff.rb +7 -0
  19. data/lib/agri-controller/gruff/base.rb +88 -0
  20. data/lib/agri-controller/gruff/chdata.rb +64 -0
  21. data/lib/agri-controller/gruff/join_csv.rb +62 -0
  22. data/lib/agri-controller/gruff/rename_csv.rb +50 -0
  23. data/lib/agri-controller/{thermo_data_each_day.rb → gruff/thermo_data_each_day.rb} +67 -67
  24. data/lib/agri-controller/{thermo_gruff.rb → gruff/thermo_gruff.rb} +112 -109
  25. data/lib/agri-controller/gruff/thermo_gruff2.rb +161 -0
  26. data/lib/agri-controller/{thermo_gruff_generate.rb → gruff/thermo_gruff_generate.rb} +28 -28
  27. data/lib/agri-controller/gruff/thermo_gruff_loop.rb +42 -0
  28. data/lib/agri-controller/loger.rb +91 -51
  29. data/lib/agri-controller/main.rb +0 -0
  30. data/lib/agri-controller/main_linux.rb +282 -0
  31. data/lib/agri-controller/main_new.rb +401 -401
  32. data/lib/agri-controller/multiple_pulse_timer.rb +190 -169
  33. data/lib/agri-controller/n_dan_thermo.rb +156 -154
  34. data/lib/agri-controller/save_threads.rb +181 -172
  35. data/lib/agri-controller/setting_io.rb +53 -53
  36. data/lib/agri-controller/ttyUSB_watchdog.rb +43 -0
  37. data/lib/agri-controller/value_controller.rb +209 -167
  38. data/lib/agri-controller/version.rb +7 -5
  39. data/lib/agri-controller/web.rb +39 -39
  40. data/lib/agri-controller/webrick_test.rb +51 -46
  41. data/lib/agri-controller/wet_sensor.rb +92 -0
  42. data/test/tc_bit.rb +14 -3
  43. data/test/tc_trigger.rb +27 -0
  44. data/test/ts_agri-controller.rb +10 -10
  45. metadata +62 -202
  46. data/bin/main.bat +0 -2
  47. data/bin/main.bat /202/326/202/314/203V/203/207/201[/203g/203J/203b/203g.lnk +0 -0
  48. data/bin/main.rb +0 -23
  49. data/bin/memo.txt +0 -4
  50. data/bin/server.bat +0 -1
  51. data/bin/server.bat /202/326/202/314/203V/203/207/201[/203g/203J/203b/203g.lnk +0 -0
  52. data/bin/server.rb +0 -4
  53. data/bin/set_config.rb +0 -47
  54. data/bin/usual.rb +0 -3
  55. data/bin//203R/203}/203/223/203h /203v/203/215/203/223/203v/203g.lnk +0 -0
  56. data/lib/agri-controller/dacs.rb +0 -114
  57. data/lib/agri-controller/dircopy.rb +0 -30
  58. data/lib/agri-controller/kr.rb +0 -34
  59. data/lib/agri-controller/kr_2.rb +0 -78
  60. data/lib/agri-controller/serial.rb +0 -114
  61. data/lib/agri-controller/thermo_gruff_loop.rb +0 -35
  62. data/lib/agri-controller/wetsensor.rb +0 -119
  63. data/lib/agri-controller/wr1010.rb +0 -316
  64. data/lib/agri-controller/wr1010_2.rb +0 -0
  65. data/lib/cgi-bin/auto01.cgi +0 -0
  66. data/lib/cgi-bin/auto02.cgi +0 -0
  67. data/lib/cgi-bin/change_step.cgi +0 -42
  68. data/lib/cgi-bin/config/change_step +0 -4
  69. data/lib/cgi-bin/config/house1 +0 -20
  70. data/lib/cgi-bin/config/house2 +0 -8
  71. data/lib/cgi-bin/config/kr01_readable.txt +0 -2
  72. data/lib/cgi-bin/config/kr02_readable.txt +0 -2
  73. data/lib/cgi-bin/config/kr1_bit.txt +0 -2
  74. data/lib/cgi-bin/config/kr2_bit.txt +0 -2
  75. data/lib/cgi-bin/config/last_bit.txt +0 -1
  76. data/lib/cgi-bin/config/last_thermo_data +0 -22
  77. data/lib/cgi-bin/config/last_thermo_time +0 -2
  78. data/lib/cgi-bin/config/manual_bool01.txt +0 -2
  79. data/lib/cgi-bin/config/manual_bool02.txt +0 -2
  80. data/lib/cgi-bin/config/reload_flag +0 -2
  81. data/lib/cgi-bin/config/run_check +0 -2
  82. data/lib/cgi-bin/config/thermo_define.yml +0 -4
  83. data/lib/cgi-bin/config/time_array +0 -10
  84. data/lib/cgi-bin/config/wait_time +0 -2
  85. data/lib/cgi-bin/config/wet0 +0 -3
  86. data/lib/cgi-bin/config/wet0_drain +0 -2
  87. data/lib/cgi-bin/config/wet1 +0 -3
  88. data/lib/cgi-bin/config/wet1_drain +0 -2
  89. data/lib/cgi-bin/config/wet_input.txt +0 -1
  90. data/lib/cgi-bin/curtain_h1.cgi +0 -43
  91. data/lib/cgi-bin/curtain_h1_setting.cgi +0 -43
  92. data/lib/cgi-bin/curtain_h2.cgi +0 -43
  93. data/lib/cgi-bin/curtain_h2_setting.cgi +0 -43
  94. data/lib/cgi-bin/dacs_port.cgi +0 -43
  95. data/lib/cgi-bin/delay_time_0.cgi +0 -43
  96. data/lib/cgi-bin/delay_time_1.cgi +0 -43
  97. data/lib/cgi-bin/error_clear.cgi +0 -0
  98. data/lib/cgi-bin/house1.cgi +0 -42
  99. data/lib/cgi-bin/house1a.cgi +0 -43
  100. data/lib/cgi-bin/house2.cgi +0 -42
  101. data/lib/cgi-bin/house2b.cgi +0 -43
  102. data/lib/cgi-bin/house_n_dan_thermo1.cgi +0 -43
  103. data/lib/cgi-bin/house_n_dan_thermo2.cgi +0 -0
  104. data/lib/cgi-bin/keitai.cgi +0 -25
  105. data/lib/cgi-bin/kr01.cgi +0 -0
  106. data/lib/cgi-bin/kr01_readable.txt.cgi +0 -42
  107. data/lib/cgi-bin/kr02.cgi +0 -0
  108. data/lib/cgi-bin/kr02_readable.txt.cgi +0 -42
  109. data/lib/cgi-bin/kr1_bit.txt.cgi +0 -42
  110. data/lib/cgi-bin/kr2_bit.txt.cgi +0 -42
  111. data/lib/cgi-bin/kr_log.cgi +0 -18
  112. data/lib/cgi-bin/last_bit.txt.cgi +0 -42
  113. data/lib/cgi-bin/last_thermo_data.cgi +0 -42
  114. data/lib/cgi-bin/last_thermo_time.cgi +0 -42
  115. data/lib/cgi-bin/log.cgi +0 -19
  116. data/lib/cgi-bin/log/errors.txt +0 -1
  117. data/lib/cgi-bin/log/errors_.txt +0 -93
  118. data/lib/cgi-bin/log/kr_command_log.txt +0 -240
  119. data/lib/cgi-bin/log/log.txt +0 -441
  120. data/lib/cgi-bin/log/old_log/log_.txt +0 -15
  121. data/lib/cgi-bin/log/thermo/2010-05-22_thermo.csv +0 -1438
  122. data/lib/cgi-bin/log/thermo/2010-06-12_thermo.csv +0 -3
  123. data/lib/cgi-bin/log/thermo/2010-06-13_thermo.csv +0 -2
  124. data/lib/cgi-bin/log/thermo/2010-06-16_thermo.csv +0 -85
  125. data/lib/cgi-bin/log/thermo/2010-06-17_thermo.csv +0 -285
  126. data/lib/cgi-bin/log/thermo_data.csv +0 -643
  127. data/lib/cgi-bin/log/thermo_graph_loop.txt +0 -1
  128. data/lib/cgi-bin/main.cgi +0 -98
  129. data/lib/cgi-bin/manual_bool01.txt.cgi +0 -42
  130. data/lib/cgi-bin/manual_bool02.txt.cgi +0 -42
  131. data/lib/cgi-bin/post_change_step.cgi +0 -44
  132. data/lib/cgi-bin/post_house1.cgi +0 -44
  133. data/lib/cgi-bin/post_house2.cgi +0 -44
  134. data/lib/cgi-bin/post_kr01.cgi +0 -0
  135. data/lib/cgi-bin/post_kr01_readable.txt.cgi +0 -44
  136. data/lib/cgi-bin/post_kr02.cgi +0 -0
  137. data/lib/cgi-bin/post_kr02_readable.txt.cgi +0 -44
  138. data/lib/cgi-bin/post_kr1_bit.txt.cgi +0 -44
  139. data/lib/cgi-bin/post_kr2_bit.txt.cgi +0 -44
  140. data/lib/cgi-bin/post_last_bit.txt.cgi +0 -44
  141. data/lib/cgi-bin/post_last_thermo_data.cgi +0 -44
  142. data/lib/cgi-bin/post_last_thermo_time.cgi +0 -44
  143. data/lib/cgi-bin/post_manual_bool01.txt.cgi +0 -44
  144. data/lib/cgi-bin/post_manual_bool02.txt.cgi +0 -44
  145. data/lib/cgi-bin/post_reload_flag.cgi +0 -44
  146. data/lib/cgi-bin/post_run_check.cgi +0 -44
  147. data/lib/cgi-bin/post_thermo_define.yml.cgi +0 -44
  148. data/lib/cgi-bin/post_time_array.cgi +0 -44
  149. data/lib/cgi-bin/post_wait_time.cgi +0 -44
  150. data/lib/cgi-bin/post_wet0.cgi +0 -44
  151. data/lib/cgi-bin/post_wet0_drain.cgi +0 -44
  152. data/lib/cgi-bin/post_wet1.cgi +0 -44
  153. data/lib/cgi-bin/post_wet1_drain.cgi +0 -44
  154. data/lib/cgi-bin/post_wet_input.txt.cgi +0 -44
  155. data/lib/cgi-bin/reload_flag.cgi +0 -42
  156. data/lib/cgi-bin/reset_.cgi +0 -0
  157. data/lib/cgi-bin/run_check.cgi +0 -42
  158. data/lib/cgi-bin/set.cgi +0 -33
  159. data/lib/cgi-bin/set_post_yml_each.rb +0 -72
  160. data/lib/cgi-bin/set_yml_cgi_each.rb +0 -0
  161. data/lib/cgi-bin/setting.cgi +0 -0
  162. data/lib/cgi-bin/setting.cgi.1 +0 -0
  163. data/lib/cgi-bin/setting_io.rb +0 -53
  164. data/lib/cgi-bin/thermo_data_graphs.cgi +0 -0
  165. data/lib/cgi-bin/thermo_data_list.cgi +0 -0
  166. data/lib/cgi-bin/thermo_define.yml.cgi +0 -42
  167. data/lib/cgi-bin/thermo_graph.cgi +0 -0
  168. data/lib/cgi-bin/time_array.cgi +0 -42
  169. data/lib/cgi-bin/wait_time.cgi +0 -42
  170. data/lib/cgi-bin/web.rb +0 -39
  171. data/lib/cgi-bin/wet0.cgi +0 -42
  172. data/lib/cgi-bin/wet0_drain.cgi +0 -42
  173. data/lib/cgi-bin/wet1.cgi +0 -42
  174. data/lib/cgi-bin/wet1_drain.cgi +0 -42
  175. data/lib/cgi-bin/wet_input.txt.cgi +0 -42
  176. data/lib/htdocs/css/str.css +0 -89
  177. data/lib/htdocs/favicon.ico +0 -0
  178. data/lib/htdocs/thermo/thermo_data.jpg +0 -0
  179. data/lib/htdocs/thermo/thumb/thermo_data.jpg +0 -0
  180. data/test/tc_bit.rb.1 +0 -15
  181. data/test/tc_bit.rb.2 +0 -21
  182. data/test/ts_agri-controller.rb.1 +0 -8
@@ -1,169 +1,190 @@
1
- #require "time_module"
2
- #require "time"
3
-
4
- ##require "bit"
5
-
6
- module AgriController
7
- #module Time_module
8
- def time?(time)
9
- time <= Time.now
10
- end
11
- def timer(_from,_to)#_from="12:00:00",_to="12:00:05"]
12
- if _from.class==Time
13
- start=_from
14
- else
15
- start=Time.parse(_from)
16
- end
17
- if _to.class==Time
18
- end_time=_to
19
- else
20
- end_time=Time.parse(_to)
21
- end
22
-
23
- if time?(start)
24
- #p "time!"
25
- if time?(end_time)
26
- #"on!"
27
- #yield true if block_given
28
- #p "over"
29
- yield false if block_given?
30
- return false
31
- else
32
- #p "time!"
33
- yield true if block_given?
34
- return true
35
- end
36
- end
37
- nil
38
- end
39
- def timers(array)# timers([["12:00","12:00:10"],["13:00","18:00"]])
40
- #p array
41
- bool=false
42
- array.each do |dat|
43
- bool=bool | timer(dat[0],dat[1])
44
- end
45
- return bool#(true,false,nil)
46
- end
47
- ##
48
- # pulse_timer(["12:00:00",10]) # =>nil ,if before
49
- # pulse_timer(["12:00:00",10]) # =>true ,if time
50
- # pulse_timer(["12:00:00",10]) # =>false ,if over
51
- def pulse_timer(time)#time=[start_time,seconds] ex["12:00:00",10]
52
- if time[0].class==Time
53
- start=time[0]
54
- else
55
- start=Time.parse(time[0])
56
- end
57
- end_time=start+time[1]
58
- if time?(start)
59
- #p "time!"
60
- if time?(end_time)
61
- #"on!"
62
- #yield true if block_given
63
- #p "over"
64
- yield false if block_given?
65
- return false
66
- else
67
- #p "time!"
68
- yield true if block_given?
69
- return true
70
- end
71
- end
72
- nil
73
- end
74
- #pulse_timers([["6:00",400],["11:00",400],["14:00",400],["17:00",300]])
75
- def pulse_timers(time_array)#time_array=[["12:52:00",10],["12:52:15",3],["7:57:30",10],["6:00",400],["11:00",400],["14:00",400],["17:00",300]]
76
- bit=false#return bool
77
- bool=false
78
-
79
- time_array.each do |time|
80
- #p time#
81
- a=pulse_timer(time)
82
- bool ||= a
83
- end
84
-
85
-
86
- #p bool
87
- if bool
88
- if bit==false
89
- bit=true
90
- end
91
- end
92
- return bit
93
- end
94
- ##
95
- #multiple_pulse_timer([[sec1=3,4,5],time=["6:00"],["11:00"],["14:00"],["17:00"]],next_wait_sec=2)
96
- #returns
97
- def multiple_pulse_timer(time_array,pomp_wait_sec=nil)#time_array=[[1,2],["12:52:00"],["12:52:15"],["7:57:30"],["6:00"],["11:00"],["14:00"],["17:00"]]
98
- bit=Bit.new
99
- #time_array=[[1,2,3],["12:52:00"],["12:52:15"]]
100
- size=time_array[0].size
101
-
102
- #
103
- if pomp_wait_sec==nil or size==0
104
- z=time_array[0]
105
- else
106
- array=[]
107
- time_array[0].each do |num|
108
- array << num
109
- array << pomp_wait_sec
110
- end
111
- array.delete_at(-1)
112
- z=array
113
- end
114
- #p z
115
- i=time_array.size-1
116
- j=z.size
117
- array=time_array[1,i]
118
- result=Array.new(j)
119
-
120
- j.times do |x|
121
- result[x]=Array.new(i)
122
- end
123
- #p result
124
- #p time_array
125
- x=0
126
- last_sec=0
127
- z.each do |sec|
128
- y=0
129
- #p sec
130
- array.each do |time|
131
- #p x.to_s+","+y.to_s
132
- #p sec
133
- #plast_sec
134
- result[x][y] = [(Time.parse(time[0])+last_sec).to_s,sec]#Time.parse(time[0])
135
- #p result
136
- y+=1
137
- end
138
- x+=1
139
- last_sec+=sec
140
- end
141
- #p result
142
- x=0
143
- result.each do |time|
144
- #p time
145
- bool=pulse_timers(time)
146
- bit.boolbit(bool,x)
147
- x+=1
148
- end
149
- #p bit
150
- return bit
151
-
152
- end
153
-
154
- def _24hour
155
- y=[]
156
- 24.times do |x|
157
- z=x.to_s
158
- str=":00"
159
- if x<10
160
- str="0"+z+str
161
- else
162
- str=z+str
163
- end
164
- y << [str]
165
- end
166
- y
167
- end
168
- #end
169
- end
1
+ #!ruby
2
+ #coding:utf-8
3
+ #require "time_module"
4
+ #require "time"
5
+
6
+ ##require "bit"
7
+
8
+ module AgriController
9
+ #module Time_module
10
+ def time?(time)
11
+
12
+ time <= Time.now
13
+ end
14
+ def timer(_from,_to)#_from="12:00:00",_to="12:00:05"]
15
+ if _from.class==Time
16
+ start=_from
17
+ else
18
+ start=Time.parse(_from)
19
+ end
20
+ if _to.class==Time
21
+ end_time=_to
22
+ else
23
+ end_time=Time.parse(_to)
24
+ end
25
+
26
+ if time?(start)
27
+ #p "time!"
28
+ if time?(end_time)
29
+ #"on!"
30
+ #yield true if block_given
31
+ #p "over"
32
+ yield false if block_given?
33
+ return false
34
+ else
35
+ #p "time!"
36
+ yield true if block_given?
37
+ return true
38
+ end
39
+ end
40
+ nil
41
+ end
42
+ def timers(array)# timers([["12:00","12:00:10"],["13:00","18:00"]])
43
+ #p array
44
+ bool=false
45
+ array.each do |dat|
46
+ bool=bool | timer(dat[0],dat[1])
47
+ end
48
+ return bool#(true,false,nil)
49
+ end
50
+ ##
51
+ # pulse_timer(["12:00:00",10]) # =>nil ,if before
52
+ # pulse_timer(["12:00:00",10]) # =>true ,if time
53
+ # pulse_timer(["12:00:00",10]) # =>false ,if over
54
+ def pulse_timer(time)#time=[start_time,seconds] ex["12:00:00",10]
55
+ if time[0].class==Time
56
+ start=time[0]
57
+ else
58
+ start=Time.parse(time[0])
59
+ end
60
+ end_time=start+time[1]
61
+ if time?(start)
62
+ #p "time!"
63
+ if time?(end_time)
64
+ #"on!"
65
+ #yield true if block_given
66
+ #p "over"
67
+ yield false if block_given?
68
+ return false
69
+ else
70
+ #p "time!"
71
+ yield true if block_given?
72
+ return true
73
+ end
74
+ end
75
+ nil
76
+ end
77
+ #pulse_timers([["6:00",400],["11:00",400],["14:00",400],["17:00",300]])
78
+ def pulse_timers(time_array)#time_array=[["12:52:00",10],["12:52:15",3],["7:57:30",10],["6:00",400],["11:00",400],["14:00",400],["17:00",300]]
79
+ bit=false#return bool
80
+ bool=false
81
+
82
+ time_array.each do |time|
83
+ #p time#
84
+ a=pulse_timer(time)
85
+ bool ||= a
86
+ end
87
+
88
+
89
+ #p bool
90
+ if bool
91
+ if bit==false
92
+ bit=true
93
+ end
94
+ end
95
+ return bit
96
+ end
97
+
98
+ #next list genarate
99
+ def next_pulse(time,sec)
100
+ Time.parse(time)+sec
101
+ end
102
+
103
+ ##modified 2013.10.17
104
+ #multiple_pulse_timer([[sec1=3,4,5],time=["6:00",5],["11:00"],["14:00"],["17:00"]],next_wait_sec=2)
105
+ #returns
106
+ def multiple_pulse_timer(time_array,pomp_wait_sec=nil)#time_array=[[1,2],["12:52:00"],["12:53"],["7:57:30"],["6:00"],["11:00"],["14:00"],["17:00"]]
107
+ bit=Bit.new
108
+ #time_array=[[1,2,3],["12:52",10],["12:53"]]
109
+ t0=time_array[0]
110
+ size=t0.size
111
+
112
+ #time expantion
113
+ result=[]
114
+
115
+ #each time
116
+ (time_array.size-1).times do |i|
117
+ list=time_array[i+1]
118
+ time_table=[]
119
+ last_sec=0
120
+
121
+ #each system,and wait
122
+ size.times do |j|
123
+ time_table[i] =[] unless time_table[i]
124
+ #time_list has palse ["12:52",10]
125
+ if list[1]!=nil
126
+ #p i
127
+ #p time_table[i]
128
+ time_table[i] << [(Time.parse(list[0])+last_sec),list[1]]
129
+ last_sec+=list[1]
130
+ else#["12:52:15"]
131
+ time_table[i] << [(Time.parse(list[0])+last_sec),t0[j]]
132
+ last_sec+=t0[j]
133
+ end
134
+
135
+ if pomp_wait_sec!=nil
136
+ time_table[i] << [(Time.parse(list[0])+last_sec),pomp_wait_sec]
137
+ last_sec+=pomp_wait_sec
138
+ end
139
+ end
140
+ result << time_table[i]
141
+ end
142
+
143
+ #Array.transpose each system
144
+ result=result.transpose
145
+ result.pop
146
+ p result if $DEBUG
147
+
148
+ x=0
149
+ result.each do |time|
150
+
151
+ #p time
152
+ bool=pulse_timers(time)
153
+ bit.boolbit(bool,x)
154
+ x+=1
155
+ end
156
+ #p bit
157
+ return bit
158
+ end
159
+
160
+ def _24hour
161
+ y=[]
162
+ 24.times do |x|
163
+ z=x.to_s
164
+ str=":00",10
165
+ if x<10
166
+ str="0"+z+str
167
+ else
168
+ str=z+str
169
+ end
170
+ y << [str]
171
+ end
172
+ y
173
+ end
174
+ #end
175
+ end
176
+
177
+ if $0==__FILE__
178
+ #require "rubygems"
179
+ require "./bit"
180
+ require "time"
181
+ include AgriController
182
+ #p $DEBUG
183
+ require "pp"
184
+ #require "profile"
185
+ t=Time.now
186
+ #10.times do
187
+ pp multiple_pulse_timer([[1,2],["7:57:30",10],["9:21"]],5)
188
+ #end
189
+ p Time.now-t
190
+ end
@@ -1,154 +1,156 @@
1
- require "time"
2
- module AgriController
3
- ##
4
- #class N_dan_thermo
5
- # How to setting
6
- # Time_list=[["time",set_value], ...]
7
- # [["5:00",13],["8:29:30",20],["14:00",30],["17:00",10],["18:00",5]]
8
- #
9
- # Time_list must be order time(don't reverse).[time < time < time]
10
- #SAMPLE
11
- # green_house=N_dan_thermo.new([["5:00",15],["20:00",5]],diff=1)
12
- # # Time.now # =>6:00
13
- # # now_tempereture=10.0
14
- # gerre_house.now_set # =>15.0
15
- #
16
- # green_house.cooling?(now_tempereture) # =>false
17
- # green_house.hot?(now_tempereture) # =>false
18
- # green_house.heat?(now_tempereture) # =>false
19
- #
20
- # green_house.warming?(now_tempereture)# =>true
21
- # green_house.cool?(now_tempereture) # =>true
22
- # green_house.cold?(now_tempereture) # =>true
23
- # green_house.heating?(now_tempereture)# =>true
24
- #
25
- class N_dan_thermo
26
- attr_accessor :def,:n,:list,:bool,:dead_value
27
- attr_accessor :changed_time,:dead_time
28
- def initialize(list=[["0:00",20]],diff=4,dead_time=5,changed_time=Time.now)
29
- if list.class==Array
30
- if list.size==0
31
- list=[["0:00",15]]
32
- end
33
- else
34
- list=[["0:00",15]]
35
- end
36
- @list=list #|| [["0:00",20]]
37
- @n=list.size
38
- @diff=diff
39
- @bool=false
40
- @changed_time=changed_time
41
- @dead_time=dead_time
42
- end
43
- def save(file,dat=@list)
44
- Loger::logger(file,Time.now.to_s+","+dat.inspect)
45
- end
46
- def boolean(input,set)# =>@bool==true or false
47
- high=(input>=(set+@diff))
48
- low=(input<=set)
49
- change=@bool
50
- #judge @bool high low
51
- #if true(high value)
52
- if @bool==true and low
53
- @bool=false
54
- #if false(low value)
55
- elsif @bool==false and high
56
- @bool=true
57
- else
58
- #nothing change
59
- end
60
- if @bool !=change
61
- @changed_time=Time.now
62
- end
63
- return @bool
64
- end
65
-
66
- def dead_time?
67
- Time.now <= (@changed_time+@dead_time)
68
- end
69
- def move?
70
- !dead_time?
71
- end
72
- def set_now(now=Time.now)#(true or false)
73
- set=@list.last[1]#first_set should be last setting
74
- @list.reverse.each do |array|
75
- if now>=Time.parse(array[0])
76
- #p array
77
- set=array[1]
78
- break
79
- end
80
- end
81
- return set
82
- end
83
-
84
- def cooling?(input)
85
- boolean(input,set_now)
86
- end
87
-
88
- def warming?(input)
89
- !cooling?(input)
90
- end
91
- alias hot? cooling?
92
- alias cool? warming?
93
- alias heating? warming?
94
- alias heat? cooling?
95
- alias cold? warming?
96
-
97
- end
98
- end
99
-
100
- if $0==__FILE__
101
- include AgriController
102
- x=N_dan_thermo.new(["0:00",20])
103
-
104
- x.list=[["0:00",8]]
105
- x.list=[["5:00",13],["8:30",20],["14:00",30],["18:00",5]]
106
- #x.list=[["5:00",8],["20:30",20]]
107
-
108
- print "x.boolean(value,set)=true or false\n"
109
- [4,5,9,10,12,9,5.1,5,4].each do|i|
110
- print "x.boolean(#{i},5)="+x.boolean(i,5).to_s+"\n"
111
- end
112
-
113
- p x
114
- #p x.boolean(10,5)
115
- #Array[["time",value(integer)],,,]
116
- #x.set_now(Time.parse("23:59"))
117
- #i=x.set_now(Time.parse("14:01"))
118
- #x.set_now(Time.parse("3:59"))
119
- #x.boolean(10,i)
120
- p x.set_now#=5
121
- p x.warming?(0)
122
- p x.warming?(5)
123
- p x.warming?(7)
124
- p x.warming?(9)
125
- p x.warming?(11)
126
- p x.warming?(7)
127
- p x.warming?(5)
128
- p x.warming?(3)
129
- p x.warming?(0)
130
- p x.set_now#=5
131
- p x.cooling?(5)
132
- p x.cooling?(6)
133
- p x.cooling?(10)
134
- p x.cooling?(8)
135
- p x.cooling?(6)
136
- p x.cooling?(4)
137
- puts
138
- a=N_dan_thermo.new(list=[["0:00",20]],diff=4,dead_time=2)
139
- p a.set_now
140
- p a.cool?(10);sleep 1
141
- #p a
142
- p a.dead_time?
143
-
144
- p a.boolean(10,5);sleep 1
145
- #p a
146
- p a.dead_time?
147
-
148
- p a.boolean(5,5);sleep 1
149
- #p a
150
- p a.dead_time?
151
- p a.move?
152
- p Time.now
153
-
154
- end
1
+ #!ruby
2
+ #coding:utf-8
3
+ require "time"
4
+ module AgriController
5
+ ##
6
+ #class N_dan_thermo
7
+ # How to setting
8
+ # Time_list=[["time",set_value], ...]
9
+ # [["5:00",13],["8:29:30",20],["14:00",30],["17:00",10],["18:00",5]]
10
+ #
11
+ # Time_list must be order time(don't reverse).[time < time < time]
12
+ #SAMPLE
13
+ # green_house=N_dan_thermo.new([["5:00",15],["20:00",5]],diff=1)
14
+ # # Time.now # =>6:00
15
+ # # now_tempereture=10.0
16
+ # gerre_house.now_set # =>15.0
17
+ #
18
+ # green_house.cooling?(now_tempereture) # =>false
19
+ # green_house.hot?(now_tempereture) # =>false
20
+ # green_house.heat?(now_tempereture) # =>false
21
+ #
22
+ # green_house.warming?(now_tempereture)# =>true
23
+ # green_house.cool?(now_tempereture) # =>true
24
+ # green_house.cold?(now_tempereture) # =>true
25
+ # green_house.heating?(now_tempereture)# =>true
26
+ #
27
+ class N_dan_thermo
28
+ attr_accessor :def,:n,:list,:bool,:dead_value
29
+ attr_accessor :changed_time,:dead_time
30
+ def initialize(list=[["0:00",20]],diff=4,dead_time=5,changed_time=Time.now)
31
+ if list.class==Array
32
+ if list.size==0
33
+ list=[["0:00",15]]
34
+ end
35
+ else
36
+ list=[["0:00",15]]
37
+ end
38
+ @list=list #|| [["0:00",20]]
39
+ @n=list.size
40
+ @diff=diff
41
+ @bool=false
42
+ @changed_time=changed_time
43
+ @dead_time=dead_time
44
+ end
45
+ def save(file,dat=@list)
46
+ Loger::logger(file,Time.now.to_s+","+dat.inspect)
47
+ end
48
+ def boolean(input,set)# =>@bool==true or false
49
+ high=(input>=(set+@diff))
50
+ low=(input<=set)
51
+ change=@bool
52
+ #judge @bool high low
53
+ #if true(high value)
54
+ if @bool==true and low
55
+ @bool=false
56
+ #if false(low value)
57
+ elsif @bool==false and high
58
+ @bool=true
59
+ else
60
+ #nothing change
61
+ end
62
+ if @bool !=change
63
+ @changed_time=Time.now
64
+ end
65
+ return @bool
66
+ end
67
+
68
+ def dead_time?
69
+ Time.now <= (@changed_time+@dead_time)
70
+ end
71
+ def move?
72
+ !dead_time?
73
+ end
74
+ def set_now(now=Time.now)#(true or false)
75
+ set=@list.last[1]#first_set should be last setting
76
+ @list.reverse.each do |array|
77
+ if now>=Time.parse(array[0])
78
+ #p array
79
+ set=array[1]
80
+ break
81
+ end
82
+ end
83
+ return set
84
+ end
85
+
86
+ def cooling?(input)
87
+ boolean(input,set_now)
88
+ end
89
+
90
+ def warming?(input)
91
+ !cooling?(input)
92
+ end
93
+ alias hot? cooling?
94
+ alias cool? warming?
95
+ alias heating? warming?
96
+ alias heat? cooling?
97
+ alias cold? warming?
98
+
99
+ end
100
+ end
101
+
102
+ if $0==__FILE__
103
+ include AgriController
104
+ x=N_dan_thermo.new(["0:00",20])
105
+
106
+ x.list=[["0:00",8]]
107
+ x.list=[["5:00",13],["8:30",20],["14:00",30],["18:00",5]]
108
+ #x.list=[["5:00",8],["20:30",20]]
109
+
110
+ print "x.boolean(value,set)=true or false\n"
111
+ [4,5,9,10,12,9,5.1,5,4].each do|i|
112
+ print "x.boolean(#{i},5)="+x.boolean(i,5).to_s+"\n"
113
+ end
114
+
115
+ p x
116
+ #p x.boolean(10,5)
117
+ #Array[["time",value(integer)],,,]
118
+ #x.set_now(Time.parse("23:59"))
119
+ #i=x.set_now(Time.parse("14:01"))
120
+ #x.set_now(Time.parse("3:59"))
121
+ #x.boolean(10,i)
122
+ p x.set_now#=5
123
+ p x.warming?(0)
124
+ p x.warming?(5)
125
+ p x.warming?(7)
126
+ p x.warming?(9)
127
+ p x.warming?(11)
128
+ p x.warming?(7)
129
+ p x.warming?(5)
130
+ p x.warming?(3)
131
+ p x.warming?(0)
132
+ p x.set_now#=5
133
+ p x.cooling?(5)
134
+ p x.cooling?(6)
135
+ p x.cooling?(10)
136
+ p x.cooling?(8)
137
+ p x.cooling?(6)
138
+ p x.cooling?(4)
139
+ puts
140
+ a=N_dan_thermo.new(list=[["0:00",20]],diff=4,dead_time=2)
141
+ p a.set_now
142
+ p a.cool?(10);sleep 1
143
+ #p a
144
+ p a.dead_time?
145
+
146
+ p a.boolean(10,5);sleep 1
147
+ #p a
148
+ p a.dead_time?
149
+
150
+ p a.boolean(5,5);sleep 1
151
+ #p a
152
+ p a.dead_time?
153
+ p a.move?
154
+ p Time.now
155
+
156
+ end