agri-controller 0.0.0 → 0.0.8

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 (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