agri-controller 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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