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
@@ -0,0 +1,161 @@
1
+ #coding:utf-8
2
+ require 'rubygems'
3
+ require 'gruff'
4
+ require "date"
5
+ require "time"
6
+ require "rubygems"
7
+ require "agri-controller"
8
+ require "agri-controller/gruff"
9
+ module AgriController
10
+ #thrmo datas to jpg graph
11
+ def thermo_gruff2(output_filename="thermo_data.jpg",input_csv_data="thermo_data.csv",range=[1.0,1.0/3,1.0/100],legend=["degree","humidty(1/3)","ppm(1/100)"],view="640x480")
12
+ #data ini
13
+ data=File.read(input_csv_data)
14
+ #delete "#" comments
15
+ res=""
16
+ i=0
17
+ ##
18
+ #day_data
19
+ data.each_line do |str|
20
+ i+=1
21
+ unless (str =~ /\s*#/)==0
22
+ #p str
23
+ unless str=="\n"
24
+ #p str
25
+ res+=str
26
+ end
27
+ end
28
+ end
29
+
30
+ #list delete if many
31
+ n2=view.split("x")[0].to_i
32
+ x=i/n2+2
33
+ x=1 if i<n2
34
+ data=res
35
+ thermo_data_hash={}
36
+
37
+ result=[]
38
+ range.size.times{|i| result[i]=[]}
39
+
40
+ title_day=""
41
+ line=0
42
+ title=0
43
+ label={}
44
+ hour=0
45
+ day=0
46
+ data.each_line do |str|
47
+ line+=1
48
+ if line%x==0
49
+ dat=str.chomp.split(",")
50
+ #delete if many array
51
+ while dat.size > range.size+1
52
+ dat.pop
53
+ end
54
+ #p dat[0]
55
+ begin
56
+
57
+ begin
58
+ time=Time.parse(dat[0]).localtime#DateTime
59
+ rescue
60
+ time=Time.iso8601(dat[0]).localtime#DateTime
61
+ end
62
+ #dat[0].inspect+","+time.to_s
63
+ title=title+1
64
+ rescue
65
+ line=line-1
66
+ next
67
+ end
68
+
69
+ #title_day
70
+ if title==1
71
+ title_day=time.year.to_s+"/"+time.month.to_s+"/"+time.day.to_s
72
+ end
73
+
74
+ #line if day change
75
+ time.hour
76
+ if time.day!=day #(day change)
77
+ day=time.day
78
+ label[line]=":"#time.month.to_s+"/"+day.to_s
79
+ elsif time.hour!=hour
80
+ hour=time.hour
81
+ label[title]="|"+hour.to_s
82
+ if time.hour==12
83
+ label[title]="|12"
84
+ end
85
+ else
86
+ end
87
+ p dat
88
+ dat.delete_at(0)
89
+ dat.each_index{|i|
90
+ begin
91
+ result[i] << dat[i].to_f
92
+ rescue
93
+ result[i] << 0
94
+ end
95
+ }
96
+ end
97
+
98
+ end
99
+
100
+ #p label
101
+ result.each_index{|i| result[i]=[ legend[i],result[i].map!{|x|
102
+ # x*range[i]
103
+ begin
104
+ if x > -50
105
+ x*range[i]
106
+ else
107
+ nil
108
+ end
109
+ rescue
110
+ nil
111
+ end
112
+ } ]}
113
+
114
+ # result.each_index{|i| result[i]=[ legend[i],result[i].map!{|x| x*range[i] rescue nil} ]}
115
+ #delete no_need data
116
+ legend.each_index do |i|
117
+ unless range[i]
118
+ result.delete_at(i)
119
+ #p "delete #{i}."
120
+ end
121
+ end
122
+ p result
123
+ #p result[0]
124
+ #p thermo_num
125
+ #=begin
126
+ #p label
127
+ #gruff main
128
+ g = Gruff::Line.new(view)
129
+ g.font = "/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf"
130
+ g.title="環境データ "+title_day
131
+ #g.title_font_size =24
132
+ g.theme_37signals
133
+ g.maximum_value = 40
134
+ g.minimum_value = 0
135
+ g.y_axis_increment =2
136
+
137
+ #g.baseline_value=9
138
+ #g.increment=5
139
+ #dataset
140
+ result.each do |data|
141
+ g.data(*data)
142
+ end
143
+ g.labels =label
144
+ # Default theme
145
+ #p g
146
+ g.write(output_filename)
147
+ #=end
148
+ end
149
+ end
150
+
151
+ if $0==__FILE__
152
+ #require "profile"
153
+ include AgriController
154
+ #p Dir.pwd
155
+ input_csv_data=ARGV[0] || "./cat.csv"
156
+ #if File.readable?(input_csv_data)
157
+ thermo_gruff2(output_filename="./thermo_data/thermo_data.jpg",input_csv_data, range=[1.0,nil,1.0/100],legend=["温度",nil,"CO2濃度ppm(1/100)"],view="480x480")
158
+ #thermo_gruff2(output_filename="./thermo_data/thermo_data.jpg",input_csv_data,range=[1.0,1.0/3,1.0,nil,1.0,nil,1.0,nil,1.0,nil],legend=["degree","humidty(1/3)","degree","humidty(1/3)","degree","humidty(1/3)","degree","humidty(1/3)","degree","humidty(1/3)"])
159
+ #p Time.now
160
+ #end
161
+ end
@@ -1,28 +1,28 @@
1
- #!ruby
2
- #coding:utf-8
3
- module AgriController
4
-
5
- def thermo_gruff_generate(dir_to="./htdocs/thermo",dir_from="./cgi-bin/log/thermo",num=3)
6
- dir=dir_from+"/*_thermo.csv"
7
- list=Dir.glob(dir)
8
-
9
- list.each do |file|
10
- #p file
11
- name=File.basename(file).split(/_/)[0]
12
- new_name=dir_to+"/"+name+".jpg"
13
-
14
- #p name
15
- #p new_name
16
-
17
- unless File.exist?(new_name)
18
- thermo_gruff(new_name,file,thermo_num=num,"480x420")
19
- end
20
-
21
- new_name=dir_to+"/thumb/"+name+"_s.jpg"
22
- unless File.exist?(new_name)
23
- thermo_gruff(new_name,file,thermo_num=num,"240x320")
24
- end
25
- #p Time.now
26
- end
27
- end
28
- end
1
+ #!ruby
2
+ #coding:utf-8
3
+ module AgriController
4
+
5
+ def thermo_gruff_generate(dir_to="./htdocs/thermo",dir_from="./cgi-bin/log/thermo",num=5)
6
+ dir=dir_from+"/*_thermo.csv"
7
+ list=Dir.glob(dir)
8
+
9
+ list.each do |file|
10
+ #p file
11
+ name=File.basename(file).split(/_/)[0]
12
+ new_name=dir_to+"/"+name+".jpg"
13
+
14
+ #p name
15
+ #p new_name
16
+
17
+ unless File.exist?(new_name)
18
+ thermo_gruff(new_name,file,thermo_num=num,"480x420")
19
+ end
20
+
21
+ new_name=dir_to+"/thumb/"+name+"_s.jpg"
22
+ unless File.exist?(new_name)
23
+ thermo_gruff(new_name,file,thermo_num=num,"240x320")
24
+ end
25
+ #p Time.now
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,42 @@
1
+ #!ruby
2
+ #coding:utf-8
3
+
4
+ #require "thermo_gruff"
5
+ #require "thermo_gruff_generate"
6
+ module AgriController
7
+ module_function
8
+ def thermo_gruff_loop(verbose=false,dir_to="./htdocs/thermo",dir_from="./cgi-bin/log",num=4,size1="480x420",size2="220x250",sec=120)
9
+
10
+ p "gruf_start:"+Time.now.iso8601 if verbose
11
+
12
+ p input_csv_data=dir_from+"/thermo_data.csv"#"data.tmp"
13
+ p output_filename=dir_to+"/thermo_data.jpg"
14
+
15
+ loop do
16
+
17
+ #bool=File.readable?(input_csv_data)
18
+ #p "thermo_data_readable:"+bool.inspect
19
+ #if bool
20
+
21
+ #p input_csv_data
22
+
23
+ thermo_gruff(output_filename,input_csv_data,num,size1)
24
+ thermo_gruff(dir_to+"/thumb/thermo_data.jpg",input_csv_data,num,size2)
25
+
26
+ Loger::loger(dir_from+"/thermo_graph_loop.txt",Time.now.iso8601,"w")
27
+ #end
28
+
29
+ #check 1day thermo_data and generate gruff(and small gruff) below
30
+ thermo_gruff_generate("./htdocs/thermo","./cgi-bin/log/thermo",num)
31
+ sleep sec
32
+ p "gruff_loop:"+Time.now.iso8601 if verbose
33
+ end
34
+ end
35
+ end
36
+ if $0==__FILE__
37
+ require "thermo_gruff"
38
+ require "thermo_gruff_generate"
39
+ include AgriController
40
+
41
+ thermo_gruff_loop
42
+ end
@@ -1,51 +1,91 @@
1
- #!ruby -Ku
2
- #coding:utf-8
3
- module AgriController
4
- module Loger
5
- module_function
6
- def loger(log_file,data,mode="a",file_size=50000,log_dir2="./cgi-bin/log/old_log")
7
- #add data to log_file
8
- old_log_dir="/old_log"
9
- dir = File.dirname(log_file)+old_log_dir
10
- Dir.mkdir(dir) unless File.exist?(dir)
11
- begin
12
- x=open(log_file,mode) do |io|
13
- io.puts data
14
- end
15
-
16
- #rename log_file if size too big
17
- if File.size?(log_file)>=file_size
18
- i=1
19
- bool=true
20
- while bool
21
- dir=File.dirname(log_file)
22
- name=File.basename(log_file,".*")
23
- ext=File.extname(log_file)
24
- new_name=dir+old_log_dir+"/"+name+i.to_s+ext
25
- unless File.exist?(new_name)
26
- File.rename(log_file,new_name)
27
- bool=false
28
- end
29
- i+=1
30
- end
31
- end
32
- rescue => ex
33
- str=ex.inspect
34
- str2=$@.inspect
35
- p "loger:error,#{str}"
36
- open(log_dir2+"/log_error.txt","a"){|io|
37
- io.print Time.now.to_s+"|"
38
- io.print log_file.to_s+"|"
39
- io.print data.to_s+"|"
40
- io.print mode.to_s+"|"
41
- io.print file_size.to_s+"|"
42
- io.print str+str2+"\n"
43
- }
44
- false
45
- return
46
- end
47
- nil
48
- end
49
- alias logger loger
50
- end
51
- end
1
+ require "logger"
2
+ #!ruby -Ku
3
+ #coding:utf-8
4
+ module AgriController
5
+ module Loger
6
+ module_function
7
+ def loger(log_file,data,mode="a",file_size=50000,log_dir2="./cgi-bin/log/old_log")
8
+ #add data to log_file
9
+ logger=Logger.new(log_file,'daily')
10
+ logger.formatter=proc{|severity,datetime,progname,msg| "#{msg}\n"}
11
+ begin
12
+ # x=open(log_file,mode) do |io|
13
+ # io.puts data
14
+ # end
15
+ logger.info(data)
16
+ #rename log_file if size too big
17
+ # if File.size?(log_file)>=file_size
18
+ # i=1
19
+ # bool=true
20
+ rescue => ex
21
+ str=ex.inspect
22
+ str2=$@.inspect
23
+ p "loger:error,#{str}"
24
+ #open(log_dir2+"/log_error.txt","a"){|io|
25
+ logger.error(Time.now.to_s+"|"+
26
+ log_file.to_s+"|"+
27
+ data.to_s+"|"+
28
+ mode.to_s+"|"+
29
+ file_size.to_s+"|"+
30
+ str+str2+"\n"
31
+ )
32
+ #}
33
+ false
34
+ return
35
+ end
36
+ nil
37
+ end
38
+ # alias logger loger
39
+ end
40
+ end
41
+ =begin
42
+ module AgriController
43
+ module Loger
44
+ module_function
45
+ def loger(log_file,data,mode="a",file_size=50000,log_dir2="./cgi-bin/log/old_log")
46
+ #add data to log_file
47
+ old_log_dir="/old_log"
48
+ dir = File.dirname(log_file)+old_log_dir
49
+ Dir.mkdir(dir) unless File.exist?(dir)
50
+ begin
51
+ x=open(log_file,mode) do |io|
52
+ io.puts data
53
+ end
54
+
55
+ #rename log_file if size too big
56
+ if File.size?(log_file)>=file_size
57
+ i=1
58
+ bool=true
59
+ while bool
60
+ dir=File.dirname(log_file)
61
+ name=File.basename(log_file,".*")
62
+ ext=File.extname(log_file)
63
+ new_name=dir+old_log_dir+"/"+name+i.to_s+ext
64
+ unless File.exist?(new_name)
65
+ File.rename(log_file,new_name)
66
+ bool=false
67
+ end
68
+ i+=1
69
+ end
70
+ end
71
+ rescue => ex
72
+ str=ex.inspect
73
+ str2=$@.inspect
74
+ p "loger:error,#{str}"
75
+ open(log_dir2+"/log_error.txt","a"){|io|
76
+ io.print Time.now.to_s+"|"
77
+ io.print log_file.to_s+"|"
78
+ io.print data.to_s+"|"
79
+ io.print mode.to_s+"|"
80
+ io.print file_size.to_s+"|"
81
+ io.print str+str2+"\n"
82
+ }
83
+ false
84
+ return
85
+ end
86
+ nil
87
+ end
88
+ # alias logger loger
89
+ end
90
+ end
91
+ =end
Binary file
@@ -0,0 +1,282 @@
1
+ #!ruby
2
+ #coding:utf-8
3
+ #$KCODE="u" if RUBY_VERSION < "1.9.0"
4
+ require "thread"
5
+ module AgriController
6
+ module_function
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
+ rescue
12
+ nil
13
+ end
14
+ end
15
+
16
+ #main_for_proto_house
17
+ def main_linux(log="./cgi-bin/log",config="./cgi-bin/config",docs="./htdocs/thermo",dacs_port="/dev/ttyUSB0")
18
+ log_time=Time.now
19
+ Thread.abort_on_exception=true
20
+ #dacs port
21
+ dacs_port="/dev/ttyUSB1"
22
+
23
+ #WR1010
24
+ #thermo_thread starts
25
+ yaml_file="last_thermo_data"
26
+ wr_port="/dev/ttyUSB0"
27
+ thermo_port=wr_port#8#6
28
+ thermo_N=4
29
+
30
+ th="thermo_define.yml"
31
+ yaml_db(th,[thermo_port,thermo_N],config+"/"+th)
32
+
33
+ #thermo_loop_thread(yaml_file,thermo_port,thermo_N,sec=30)
34
+ thermo_loop_thread(yaml_file,thermo_port,thermo_N,sec=30,"./cgi-bin/config")
35
+
36
+ #thermo_logger_thread starts
37
+ thermo_data_logger_thread(thermo_N,"./cgi-bin/config","./cgi-bin/log")
38
+
39
+ #reset manual bool
40
+ yaml_db("manual_bool01.txt",nil,config+"/manual_bool01.txt")
41
+ yaml_db("manual_bool02.txt",nil,config+"/manual_bool02.txt")
42
+ sleep 0.1
43
+
44
+ loop do
45
+ catch :reset_signal do
46
+ sleep 0.2
47
+ ##
48
+ #Initialize basic DATA
49
+ manual_config =Bit.new(0)#15 & 9 => 9 (AND)
50
+ manual_bit=Bit.new(0)#15 | 9 => 15 (OR)
51
+
52
+ dacs=Serial.new("W0000000\r",dacs_port)
53
+ dacs.time_out=2
54
+ dacs.set
55
+ res=dacs.serial
56
+ unless res
57
+ res=dacs.serial
58
+ end
59
+ res_i=Dacs::toi(res)
60
+
61
+ wr=Serial.new(WR1010::send_sample,wr_port,9600,5)
62
+ wr.set
63
+ #thermo=toa(wr.serial)
64
+ #THERMO port
65
+ #wr1010 thrmo request
66
+ thermo=yaml_dbr("last_thermo_data",config+"/last_thermo_data")#WR1010::list(thermo_port,thermo_N)
67
+
68
+ #BIT SETTING
69
+
70
+ dacs_bit=Bit.new
71
+ in_bits=Bit.new(res_i) ##import signal(dacs)
72
+ change1=false
73
+ p house1_set=yaml_dbr("house1",config+"/house1")
74
+ house2_set=yaml_dbr("house2",config+"/house2")
75
+ house1=N_dan_thermo.new(house1_set,diff=1,1)
76
+ house2=N_dan_thermo.new(house2_set,diff=1,1)
77
+
78
+ a=Value_controller.new(steps=4,open_sec=5,#55
79
+ down_sec=3,#35,
80
+ sensitivity=2,set_value=20,dead_time=15)
81
+ p "house1 Starts at #{(a.up_sec*a.steps).to_s} sec later."
82
+
83
+ b=Value_controller.new(steps=4,open_sec=5,#55
84
+ down_sec=3,#35,
85
+ sensitivity=2,set_value=20,dead_time=15)
86
+ #p "house2 Starts at #{b.reset_time.to_s}(#{(b.up_sec*b.steps).to_s} sec later)."
87
+
88
+ #wet_sensor SETTING
89
+ line1=Wet_sensor.new
90
+
91
+ #illigate Time DEFINE[[10,7,6,3],["17:42"],["17:43"],["18:00"]]
92
+ time_array3=yaml_dbr("time_array",config+"/time_array")
93
+ puts "watering set:#{time_array3.inspect}"
94
+ wait_time=yaml_dbr("wait_time",config+"/wait_time")
95
+
96
+ #start
97
+ start=Time.now
98
+
99
+ #start time logging
100
+ dat="Start,"+Time.now.iso8601
101
+ Loger::loger(config+"/last_bit.txt",dat+"<br/>","w")#Start,#{Time.now}<br/>
102
+ Loger::loger(log+"/log.txt",dat)
103
+
104
+ #value_controller step change initialize
105
+ change_step=[false,false]
106
+
107
+ ##
108
+ #MAIN LOOP (break if in_bit(22)==off)
109
+ run_save_flag=nil
110
+
111
+ loop do
112
+ t=Time.now
113
+ time=t.iso8601
114
+ if t.min!=run_save_flag
115
+ run_save_flag=t.min
116
+ #save_run_check_time
117
+ begin
118
+ yaml_db("run_check",t,config+"/run_check")
119
+ #retry if error.
120
+ rescue
121
+ sleep 0.1
122
+ yaml_db("run_check",t,config+"/run_check")
123
+ end
124
+ end
125
+ if yaml_dbr("reload_flag",config+"/reload_flag")==true
126
+ yaml_db("reload_flag",false,config+"/reload_flag")
127
+ p dat="reload signal:"
128
+ Loger::loger(log+"/log.txt",dat)
129
+
130
+ sleep 0.1
131
+ throw :reset_signal
132
+ end
133
+
134
+ #thermo DEFINE
135
+ thermo=nil
136
+ thermo=yaml_dbr("last_thermo_data",config+"/last_thermo_data")
137
+ #last_thermo_time
138
+
139
+ #illigate Timer
140
+ x=multiple_pulse_timer(time_array3,wait_time)
141
+ #p x
142
+ #x.bit =>Integer
143
+
144
+ #wet sensor work
145
+
146
+ #illigating check
147
+ dacs_bit.boolbit(x.on?(2),0)#signal switch
148
+
149
+ dacs_bit.boolbit(x.on?(0),1)#illigate line1
150
+
151
+ dacs_bit.boolbit(x.on?(2),2)#illigate line2 ##
152
+ dacs_bit.boolbit(x.on?(4),3)#illigate line3
153
+
154
+ dacs_bit.boolbit(x.on?(6),4)#illigate line4 ##
155
+
156
+ pomp = (x.on?(0)) | (x.on?(2)) | x.on?(4) | x.on?(6)#x.on?(0) | x.on?(2)
157
+ dacs_bit.boolbit(pomp,5)#pomp signal
158
+
159
+
160
+ #motor bit
161
+ step_str=""
162
+ if thermo.class==Array && thermo.size==thermo_N
163
+
164
+ #set_temp from N_dan_thermo
165
+ a.set_value=house1.set_now
166
+ b.set_value=house2.set_now
167
+
168
+ ##
169
+ #Controll
170
+ bit1=a.value_controll(thermo[0][0]) if thermo[0][0] != nil
171
+ bit2=!a.switch
172
+ bit3=b.value_controll(thermo[1][0]) if thermo[1][0] != nil
173
+ bit4=!b.switch
174
+ check_step=[a.now_step,b.now_step]
175
+
176
+ if check_step != change_step
177
+ string=[a.set_value,b.set_value].inspect#+check_step.inspect
178
+ #p [bit1,bit2,bit3,bit4]
179
+ #p thermo
180
+
181
+ step_str=",step:"+a.now_step.to_s+","+"step:"+b.now_step.to_s+","+string
182
+ yaml_db("change_step",check_step,config+"/change_step")
183
+
184
+ change_step=check_step.dup
185
+ end
186
+ else
187
+ #2010.4.28 changed
188
+
189
+ ##
190
+ #commonly open if thrmo error.
191
+ #house1
192
+ bit1=true #open signal
193
+ bit2=false#motor_off_trap
194
+
195
+ ##
196
+ #commonly open if thrmo error.
197
+ #house2
198
+ bit3=true #open signal
199
+ bit4=false#motor_off_trap
200
+
201
+ #dat=Time.now.to_s+":thermo_error!! open full time."+thermo.inspect
202
+ end
203
+ #house1 motor
204
+ dacs_bit.boolbit(bit1,19)
205
+ dacs_bit.boolbit(bit2,20)
206
+ #house2 motor
207
+ dacs_bit.boolbit(bit3,21)
208
+ dacs_bit.boolbit(bit4,22)
209
+
210
+ ##
211
+ #RESULT BIT OUTPUT IF CHANGED
212
+ #sum bits and check changes
213
+ #dacs_bit auto
214
+ #p change1
215
+
216
+ #p config+"/manual_bool01.txt"
217
+ #p yaml_dbr("manual_bool01.txt",config+"/manual_bool01.txt")
218
+ if yaml_dbr("manual_bool01.txt",config+"/manual_bool01.txt")==nil
219
+
220
+ (0..23).each do |x|
221
+ dacs_bit.bool_bit(manual_bit.on?,x) if manual_config.on?(x)
222
+ end
223
+
224
+ if change1 != dacs_bit.bit
225
+ change1=dacs_bit.bit
226
+ #p time
227
+ str=dacs_bit.tos(24,2)
228
+ if thermo!=nil
229
+ p data=str+","+time+","+
230
+ thermo[0][0].to_s+","+thermo[0][1].to_s+","+thermo[1][0].to_s+","+thermo[2][0].to_s
231
+ else
232
+ p data=str+" "+time
233
+ end
234
+ #logging thread
235
+ #Thread.start(data){|dat|
236
+
237
+ Loger::loger(config+"/last_bit.txt",data+"<br/>","w")
238
+ Loger::loger(log+"/log.txt",data)
239
+ #}
240
+ #str=bits.tos(24,2)
241
+ #str_size=str.size
242
+
243
+ ##
244
+ #command output
245
+ hex0=str
246
+ hex=Bit.new(hex0.to_i(2)).tos(6,16)
247
+
248
+ command="W0"+hex+"\r"
249
+ dacs.command = (command)
250
+
251
+ res=nil
252
+ xx=0
253
+ 10.times do
254
+ res=dacs.serial
255
+ break if res
256
+ if xx==9
257
+ raise "main_linux.rb __Dacs Fatal error__"
258
+ end
259
+ xx+=1
260
+ end
261
+ #p res
262
+ end
263
+ end
264
+ if log_time.hour != t.hour
265
+ log_time=t.dup
266
+ p "watchdog:"+time
267
+ end
268
+
269
+ sleep 0.8
270
+ #p Time.now-t
271
+
272
+ #p Thread.list
273
+ #raise
274
+ end #main_loop
275
+ end #catch reset_signal
276
+
277
+ end #reset_loop
278
+ #q.push nil
279
+ #queue.join
280
+ end
281
+ end
282
+ #AgriController::main_new