agri-controller 0.0.0

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 (158) hide show
  1. data/bin/main.bat +2 -0
  2. data/bin/main.bat /202/326/202/314/203V/203/207/201[/203g/203J/203b/203g.lnk +0 -0
  3. data/bin/main.rb +23 -0
  4. data/bin/memo.txt +4 -0
  5. data/bin/server.bat +1 -0
  6. data/bin/server.bat /202/326/202/314/203V/203/207/201[/203g/203J/203b/203g.lnk +0 -0
  7. data/bin/server.rb +4 -0
  8. data/bin/set_config.rb +47 -0
  9. data/bin/usual.rb +3 -0
  10. data/bin//203R/203}/203/223/203h /203v/203/215/203/223/203v/203g.lnk +0 -0
  11. data/lib/agri-controller.rb +33 -0
  12. data/lib/agri-controller/bcc.rb +53 -0
  13. data/lib/agri-controller/bit.rb +143 -0
  14. data/lib/agri-controller/dacs.rb +114 -0
  15. data/lib/agri-controller/dircopy.rb +30 -0
  16. data/lib/agri-controller/error_caption.rb +46 -0
  17. data/lib/agri-controller/kr.rb +34 -0
  18. data/lib/agri-controller/kr_2.rb +78 -0
  19. data/lib/agri-controller/loger.rb +51 -0
  20. data/lib/agri-controller/main.rb +0 -0
  21. data/lib/agri-controller/main_new.rb +401 -0
  22. data/lib/agri-controller/multiple_pulse_timer.rb +169 -0
  23. data/lib/agri-controller/n_dan_thermo.rb +154 -0
  24. data/lib/agri-controller/save_threads.rb +172 -0
  25. data/lib/agri-controller/serial.rb +114 -0
  26. data/lib/agri-controller/setting_io.rb +53 -0
  27. data/lib/agri-controller/thermo_data_each_day.rb +67 -0
  28. data/lib/agri-controller/thermo_gruff.rb +109 -0
  29. data/lib/agri-controller/thermo_gruff_generate.rb +28 -0
  30. data/lib/agri-controller/thermo_gruff_loop.rb +35 -0
  31. data/lib/agri-controller/value_controller.rb +167 -0
  32. data/lib/agri-controller/version.rb +5 -0
  33. data/lib/agri-controller/web.rb +39 -0
  34. data/lib/agri-controller/webrick_test.rb +46 -0
  35. data/lib/agri-controller/wetsensor.rb +119 -0
  36. data/lib/agri-controller/wr1010.rb +316 -0
  37. data/lib/agri-controller/wr1010_2.rb +0 -0
  38. data/lib/cgi-bin/auto01.cgi +0 -0
  39. data/lib/cgi-bin/auto02.cgi +0 -0
  40. data/lib/cgi-bin/change_step.cgi +42 -0
  41. data/lib/cgi-bin/config/change_step +4 -0
  42. data/lib/cgi-bin/config/house1 +20 -0
  43. data/lib/cgi-bin/config/house2 +8 -0
  44. data/lib/cgi-bin/config/kr01_readable.txt +2 -0
  45. data/lib/cgi-bin/config/kr02_readable.txt +2 -0
  46. data/lib/cgi-bin/config/kr1_bit.txt +2 -0
  47. data/lib/cgi-bin/config/kr2_bit.txt +2 -0
  48. data/lib/cgi-bin/config/last_bit.txt +1 -0
  49. data/lib/cgi-bin/config/last_thermo_data +22 -0
  50. data/lib/cgi-bin/config/last_thermo_time +2 -0
  51. data/lib/cgi-bin/config/manual_bool01.txt +2 -0
  52. data/lib/cgi-bin/config/manual_bool02.txt +2 -0
  53. data/lib/cgi-bin/config/reload_flag +2 -0
  54. data/lib/cgi-bin/config/run_check +2 -0
  55. data/lib/cgi-bin/config/thermo_define.yml +4 -0
  56. data/lib/cgi-bin/config/time_array +10 -0
  57. data/lib/cgi-bin/config/wait_time +2 -0
  58. data/lib/cgi-bin/config/wet0 +3 -0
  59. data/lib/cgi-bin/config/wet0_drain +2 -0
  60. data/lib/cgi-bin/config/wet1 +3 -0
  61. data/lib/cgi-bin/config/wet1_drain +2 -0
  62. data/lib/cgi-bin/config/wet_input.txt +1 -0
  63. data/lib/cgi-bin/curtain_h1.cgi +43 -0
  64. data/lib/cgi-bin/curtain_h1_setting.cgi +43 -0
  65. data/lib/cgi-bin/curtain_h2.cgi +43 -0
  66. data/lib/cgi-bin/curtain_h2_setting.cgi +43 -0
  67. data/lib/cgi-bin/dacs_port.cgi +43 -0
  68. data/lib/cgi-bin/delay_time_0.cgi +43 -0
  69. data/lib/cgi-bin/delay_time_1.cgi +43 -0
  70. data/lib/cgi-bin/error_clear.cgi +0 -0
  71. data/lib/cgi-bin/house1.cgi +42 -0
  72. data/lib/cgi-bin/house1a.cgi +43 -0
  73. data/lib/cgi-bin/house2.cgi +42 -0
  74. data/lib/cgi-bin/house2b.cgi +43 -0
  75. data/lib/cgi-bin/house_n_dan_thermo1.cgi +43 -0
  76. data/lib/cgi-bin/house_n_dan_thermo2.cgi +0 -0
  77. data/lib/cgi-bin/keitai.cgi +25 -0
  78. data/lib/cgi-bin/kr01.cgi +0 -0
  79. data/lib/cgi-bin/kr01_readable.txt.cgi +42 -0
  80. data/lib/cgi-bin/kr02.cgi +0 -0
  81. data/lib/cgi-bin/kr02_readable.txt.cgi +42 -0
  82. data/lib/cgi-bin/kr1_bit.txt.cgi +42 -0
  83. data/lib/cgi-bin/kr2_bit.txt.cgi +42 -0
  84. data/lib/cgi-bin/kr_log.cgi +18 -0
  85. data/lib/cgi-bin/last_bit.txt.cgi +42 -0
  86. data/lib/cgi-bin/last_thermo_data.cgi +42 -0
  87. data/lib/cgi-bin/last_thermo_time.cgi +42 -0
  88. data/lib/cgi-bin/log.cgi +19 -0
  89. data/lib/cgi-bin/log/errors.txt +1 -0
  90. data/lib/cgi-bin/log/errors_.txt +93 -0
  91. data/lib/cgi-bin/log/kr_command_log.txt +240 -0
  92. data/lib/cgi-bin/log/log.txt +441 -0
  93. data/lib/cgi-bin/log/old_log/log_.txt +15 -0
  94. data/lib/cgi-bin/log/thermo/2010-05-22_thermo.csv +1438 -0
  95. data/lib/cgi-bin/log/thermo/2010-06-12_thermo.csv +3 -0
  96. data/lib/cgi-bin/log/thermo/2010-06-13_thermo.csv +2 -0
  97. data/lib/cgi-bin/log/thermo/2010-06-16_thermo.csv +85 -0
  98. data/lib/cgi-bin/log/thermo/2010-06-17_thermo.csv +285 -0
  99. data/lib/cgi-bin/log/thermo_data.csv +643 -0
  100. data/lib/cgi-bin/log/thermo_graph_loop.txt +1 -0
  101. data/lib/cgi-bin/main.cgi +98 -0
  102. data/lib/cgi-bin/manual_bool01.txt.cgi +42 -0
  103. data/lib/cgi-bin/manual_bool02.txt.cgi +42 -0
  104. data/lib/cgi-bin/post_change_step.cgi +44 -0
  105. data/lib/cgi-bin/post_house1.cgi +44 -0
  106. data/lib/cgi-bin/post_house2.cgi +44 -0
  107. data/lib/cgi-bin/post_kr01.cgi +0 -0
  108. data/lib/cgi-bin/post_kr01_readable.txt.cgi +44 -0
  109. data/lib/cgi-bin/post_kr02.cgi +0 -0
  110. data/lib/cgi-bin/post_kr02_readable.txt.cgi +44 -0
  111. data/lib/cgi-bin/post_kr1_bit.txt.cgi +44 -0
  112. data/lib/cgi-bin/post_kr2_bit.txt.cgi +44 -0
  113. data/lib/cgi-bin/post_last_bit.txt.cgi +44 -0
  114. data/lib/cgi-bin/post_last_thermo_data.cgi +44 -0
  115. data/lib/cgi-bin/post_last_thermo_time.cgi +44 -0
  116. data/lib/cgi-bin/post_manual_bool01.txt.cgi +44 -0
  117. data/lib/cgi-bin/post_manual_bool02.txt.cgi +44 -0
  118. data/lib/cgi-bin/post_reload_flag.cgi +44 -0
  119. data/lib/cgi-bin/post_run_check.cgi +44 -0
  120. data/lib/cgi-bin/post_thermo_define.yml.cgi +44 -0
  121. data/lib/cgi-bin/post_time_array.cgi +44 -0
  122. data/lib/cgi-bin/post_wait_time.cgi +44 -0
  123. data/lib/cgi-bin/post_wet0.cgi +44 -0
  124. data/lib/cgi-bin/post_wet0_drain.cgi +44 -0
  125. data/lib/cgi-bin/post_wet1.cgi +44 -0
  126. data/lib/cgi-bin/post_wet1_drain.cgi +44 -0
  127. data/lib/cgi-bin/post_wet_input.txt.cgi +44 -0
  128. data/lib/cgi-bin/reload_flag.cgi +42 -0
  129. data/lib/cgi-bin/reset_.cgi +0 -0
  130. data/lib/cgi-bin/run_check.cgi +42 -0
  131. data/lib/cgi-bin/set.cgi +33 -0
  132. data/lib/cgi-bin/set_post_yml_each.rb +72 -0
  133. data/lib/cgi-bin/set_yml_cgi_each.rb +0 -0
  134. data/lib/cgi-bin/setting.cgi +0 -0
  135. data/lib/cgi-bin/setting.cgi.1 +0 -0
  136. data/lib/cgi-bin/setting_io.rb +53 -0
  137. data/lib/cgi-bin/thermo_data_graphs.cgi +0 -0
  138. data/lib/cgi-bin/thermo_data_list.cgi +0 -0
  139. data/lib/cgi-bin/thermo_define.yml.cgi +42 -0
  140. data/lib/cgi-bin/thermo_graph.cgi +0 -0
  141. data/lib/cgi-bin/time_array.cgi +42 -0
  142. data/lib/cgi-bin/wait_time.cgi +42 -0
  143. data/lib/cgi-bin/web.rb +39 -0
  144. data/lib/cgi-bin/wet0.cgi +42 -0
  145. data/lib/cgi-bin/wet0_drain.cgi +42 -0
  146. data/lib/cgi-bin/wet1.cgi +42 -0
  147. data/lib/cgi-bin/wet1_drain.cgi +42 -0
  148. data/lib/cgi-bin/wet_input.txt.cgi +42 -0
  149. data/lib/htdocs/css/str.css +89 -0
  150. data/lib/htdocs/favicon.ico +0 -0
  151. data/lib/htdocs/thermo/thermo_data.jpg +0 -0
  152. data/lib/htdocs/thermo/thumb/thermo_data.jpg +0 -0
  153. data/test/tc_bit.rb +15 -0
  154. data/test/tc_bit.rb.1 +15 -0
  155. data/test/tc_bit.rb.2 +21 -0
  156. data/test/ts_agri-controller.rb +10 -0
  157. data/test/ts_agri-controller.rb.1 +8 -0
  158. metadata +229 -0
@@ -0,0 +1,169 @@
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
@@ -0,0 +1,154 @@
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
@@ -0,0 +1,172 @@
1
+ #!ruby
2
+ #coding:utf-8
3
+ require "open-uri"
4
+ module AgriController
5
+ module_function
6
+ #ネット上のデータをサーモデータとして利用する
7
+ def thermo_read(ref="http://maru.selfip.com/cgi-bin/thermo.rb")
8
+ begin
9
+ uri=URI(ref)
10
+ dat=uri.read("Accept-Language" => "ja")
11
+ return dat
12
+ rescue
13
+ nil
14
+ end
15
+ end
16
+
17
+ #WRの温度データを、logdirにyaml形式でN_secごとに記録する
18
+ def thermo_loop_thread(yaml_file,thermo_port,thermo_N,sec=3,logdir="./cgi-bin/config")
19
+ Thread.start(yaml_file,thermo_port,thermo_N,sec,logdir) do |name,port,n,s,lo|
20
+ #p "start N:"+n.to_s
21
+
22
+ loop do
23
+ thermo=nil
24
+ #load thermo DATA par :sec
25
+ x=0
26
+
27
+ 10.times do |x|
28
+
29
+ begin
30
+ #res=thermo_read()
31
+ #thermo=eval(res) if res!=nil
32
+
33
+ thermo=WR1010::list(port,n,0.3+x*0.1)#import WR1010 data
34
+ rescue
35
+ thermo=nil
36
+ end
37
+
38
+ break if (thermo.class==Array && thermo.size>=n)
39
+ sleep 1
40
+ end
41
+
42
+ #read error
43
+ if thermo.class==Array && thermo.size>n
44
+ thermo=thermo[0..n-1]
45
+ end
46
+
47
+ yaml_db(name,thermo,lo+"/"+name)#save last data
48
+
49
+ #judge right thermo data
50
+ if thermo.class==Array && thermo.size==n
51
+ #p thermo
52
+ yaml_db("last_thermo_time",Time.now,lo+"/last_thermo_time")
53
+ else
54
+ #p "else"
55
+
56
+ #error save and next_try after sleep
57
+ dat=Time.now.to_s+" |thermo_thread| "+thermo.inspect+"<br/>"
58
+ Loger::loger(lo+"/../log/errors.txt",dat)
59
+ Loger::loger(lo+"/../log/errors_.txt",dat)
60
+ sleep 600
61
+ end
62
+ sleep s
63
+ end
64
+ end
65
+ end
66
+ require "time"
67
+ def thermo_data_logger_thread(thermo_N=3,config="./cgi-bin/config",log="./cgi-bin/log")
68
+
69
+ Thread.start(thermo_N,config,log) do |n,c,l|
70
+ #thermo number DEFINE
71
+
72
+ #begin
73
+ #mainloop
74
+ before=nil
75
+ day_before=Time.now.day
76
+ loop do
77
+ t=Time.now
78
+ min=t.min
79
+ if min!=before
80
+ before=min
81
+
82
+ t2=t.to_a
83
+ t2[0]=0
84
+ tt=Time.parse(t2[2].to_s+":"+t2[1].to_s+":"+t2[0].to_s)
85
+ #p tt
86
+ ##
87
+ #save DATA LOGGER(default,each o'clock)
88
+ thermo=yaml_dbr("last_thermo_data",c+"/last_thermo_data")
89
+ word=tt.to_s+","
90
+
91
+ if thermo.class==Array && thermo.size >= n
92
+ n.times do |a|
93
+ word=word+thermo[a][0].to_s+","+thermo[a][1].to_s+","
94
+ end
95
+
96
+ else
97
+ #nil data define ['c,%]=[0,false]
98
+ n.times do |a|
99
+ word=word+"0"+","+"false"+","
100
+ end
101
+ end
102
+ #seve data each minute.
103
+ str=word.chop+"\n"
104
+ Loger::loger(l+"/thermo_data.csv",str,"a",150000)
105
+ #thermo_gruff
106
+ #yesterday = (Date.today-1).to_s
107
+ #load yesterday_data
108
+ #filename=l+"/"+yesterday+"_thermo.csv"
109
+ # if File.exist?(filename)
110
+ # yesterday_data=File.read(filename)
111
+ # else
112
+ # yesterday_data=""
113
+ # end
114
+ #load today_data
115
+ # filename=l+"/thermo_data.csv"
116
+ # if File.exist?(filename)
117
+ # today_data=File.read(filename)
118
+ # else
119
+ # today_data=""
120
+ # end
121
+
122
+ # dat=yesterday_data+today_data
123
+ # open(l+"/data.tmp","w"){|io| io.print dat}
124
+ end
125
+
126
+ sleep 0.3
127
+ day=t.day
128
+ if day_before!=day
129
+ day_before=day
130
+ sleep 5
131
+ Thread.start(l) do |ll|
132
+ last_day=(Date.today-1).to_s
133
+ #thermo_gruff(g+'/'+today+'.jpg',l+"/thermo_data.csv",n,"480x420")
134
+ #p l+'/thermo/'+last_day+"_thermo.csv"
135
+
136
+ #save data every day if needed.
137
+ #__HERE!!__
138
+
139
+ #
140
+ File.rename(ll+"/thermo_data.csv",ll+'/thermo/'+last_day+"_thermo.csv")
141
+ open(ll+"/thermo_data.csv","w"){|io| io.print("")}
142
+ end
143
+ sleep 1
144
+ end
145
+ #p Time.now
146
+ end
147
+ sleep 10
148
+ end
149
+ end
150
+ end
151
+
152
+ if $0==__FILE__
153
+ require "wr1010"
154
+ require "serial"
155
+ require "setting_io"
156
+ require "loger"
157
+ require "bit"
158
+ include AgriController
159
+ Dir_cgi ="./cgi-bin"
160
+ Dir_ht ="./htdocs"
161
+
162
+ Dir_log =Dir_cgi+"/log"
163
+ Dir_config =Dir_cgi+"/config"
164
+ Dir_thermo_data =Dir_cgi+"/thermo_data"
165
+
166
+ Dir_gruff =Dir_ht+"/thermo"
167
+ Dir_gruff_small =Dir_gruff+"/thumb"
168
+ t1=thermo_loop_thread(yaml_file="last_thermo_data",thermo_port=8,thermo_N=4,sec=3)
169
+ t2=thermo_data_logger_thread
170
+ t1.join
171
+ t2.join
172
+ end