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,30 @@
1
+ #!ruby
2
+ #coding:utf-8
3
+ $KCODE="s" if RUBY_VERSION < "1.9.0"
4
+ module AgriController
5
+ module_function
6
+ def dircopy(dir=File.dirname($0))
7
+
8
+ FileUtils.mkdir(dir) unless File.exist?(dir)
9
+ begin
10
+ lib=File.dirname(__FILE__)
11
+ unless File.exist?(dir+"/cgi-bin")
12
+ #p File.dirname(__FILE__)
13
+ FileUtils.cp_r(lib+"/../cgi-bin", dest=dir, options = {})
14
+ p "create-> /cgi-bin"
15
+ end
16
+ #rescue
17
+ #end
18
+
19
+ #begin
20
+ unless File.exist?(dir+"/htdocs")
21
+ FileUtils.cp_r(src=lib+"/../htdocs", dest=dir, options = {})
22
+ p "create-> /htdocs"
23
+ end
24
+
25
+ #FileUtils.cp_r(Dir.glob(lib+"/bin/*"), dest=dir, options = {})
26
+
27
+ #rescue
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,46 @@
1
+ module AgriController
2
+ ##
3
+ #=use block when functions must be caption if encountered error.
4
+ # record error(file)
5
+ # *error_caption(file="error_ex"){/RubyScripts/}
6
+ #
7
+ #and retry function.
8
+ #=infinite loop
9
+ #*loop{error_caption(file){/RubyScripts/}}
10
+ def error_caption(file="error_ex")
11
+ begin
12
+ #p "initialize"
13
+
14
+ #main program
15
+ yield
16
+ rescue => ex
17
+ #Error handling
18
+ x0=ex.class.to_s
19
+ x1=ex.message
20
+ x2=ex.backtrace.to_s
21
+
22
+ p x="MAIN :"+Time.now.to_s+","+x0+x1+x2
23
+ Loger::loger(file+".txt",x+"<br/>")
24
+ Loger::loger(file+"_.txt",x+"<br/>")
25
+ sleep 5
26
+ #retry
27
+ #ensure
28
+ end
29
+ end
30
+ end
31
+ ##
32
+ #�{�̂̃���
33
+ #�f�[�^�x�[�X�𗘗p����
34
+ #���i�T�[���ɂ�����
35
+ #�i�K�̕\��
36
+
37
+ if $0==__FILE__
38
+ #�g����
39
+ require "error_caption"
40
+ include AgriController
41
+ #p "error_caption"
42
+ error_caption("error"){
43
+ require "main"
44
+ }
45
+ end
46
+
@@ -0,0 +1,34 @@
1
+ #require "serial"
2
+ #require "bcc"
3
+ module AgriController
4
+ module KR
5
+ module_function
6
+ def export(command,com_port=5)
7
+ time=Time.now+10
8
+ a=Serial.new
9
+ time0=Time.now
10
+ if a.open(com_port,1,38400,8,1,0,8,10)!=-1#115200,57600,38400,19200
11
+ a.send(command)
12
+ sleep 0.4
13
+ #x=0
14
+ while time > Time.now
15
+ #x+=1
16
+ receive=a.receive
17
+ sleep 0.4
18
+ break if ((receive!=nil ))#or (receive==">"))
19
+ #p x
20
+ end
21
+ #return receive
22
+ else
23
+ receive=false
24
+ end
25
+ a.close
26
+ #p Time.now-time0
27
+ return receive
28
+ end
29
+ end
30
+ end
31
+
32
+ if $0==__FILE__
33
+ p AgriController::KR::export("%01#RCCX00000000**\r",5)# => "%01$RC020013\r"
34
+ end
@@ -0,0 +1,78 @@
1
+ #require "serial"
2
+ #require "bcc"
3
+ module AgriController
4
+ module_function
5
+
6
+ module KR_2
7
+ module_function
8
+ def export(command,com_port=5)
9
+ time=Time.now+10
10
+ a=Serial.new
11
+ time0=Time.now
12
+ if a.open(com_port,1,38400,8,1,0,8,10)!=-1#115200,57600,38400,19200
13
+ a.send(command)
14
+ sleep 0.4
15
+ #x=0
16
+ while time > Time.now
17
+ #x+=1
18
+ receive=a.receive
19
+ sleep 0.4
20
+ break if ((receive!=nil ))#or (receive==">"))
21
+ #p x
22
+ end
23
+ #return receive
24
+ else
25
+ receive=false
26
+ end
27
+ a.close
28
+ #p Time.now-time0
29
+ return receive
30
+ end
31
+ end
32
+ end
33
+ if $0==__FILE__
34
+ =begin
35
+ # p Bcc::bcc("%01#RCSX0000")
36
+ # p Bcc::bcc(">%FD0000048042")
37
+ str="%01#WCCY000000000F00**\r"
38
+ p x=KR::export(str,5)
39
+ str="%02#WCCY00000000FF00**\r"
40
+ p x=KR::export(str,5)
41
+
42
+ tim=Time.now
43
+ str="%01#RCCY00000000**\r"
44
+ #str='%01#WCCY000000000F00'
45
+ bcc=Bcc::bcc(str)
46
+ p command=str#+bcc+"\x0d"
47
+ p x=KR::export(command,5)
48
+ p x.slice(7,1).to_i(16)
49
+ p Time.now-tim
50
+ puts
51
+ str="%02#RCCY00000000**\r"
52
+ #str='%01#WCCY000000000F00'
53
+ bcc=Bcc::bcc(str)
54
+ p command=str#+bcc+"\x0d"
55
+ p x=KR::export(command,5)
56
+ p x.slice(6,2).to_i(16)
57
+ p Time.now - tim
58
+
59
+ #str='%02#WCCY00000000FF00'
60
+ str='%01#WCCY000000000500'
61
+ bcc=Bcc::bcc(str)
62
+ p command=str+bcc+"\x0d"
63
+ p KR::export(command,5)
64
+ sleep 1
65
+ str='%01#WCCY000000000000'
66
+ #str='%01#WCCY000000000F00'
67
+ bcc=Bcc::bcc(str)
68
+ p command=str+bcc+"\x0d"
69
+ p KR::export(command,5)
70
+ sleep 1
71
+ #str='%02#WCCY000000000000'
72
+ #str='%01#WCCY000000000F00'
73
+ #bcc=Bcc::bcc(str)
74
+ #p command=str+bcc+"\x0d"
75
+ #p KR::export(command,5)
76
+ =end
77
+ p KR::export("%01#RCCX00000000**\r",5)# => "%01$RC020013\r"
78
+ end
@@ -0,0 +1,51 @@
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
Binary file
@@ -0,0 +1,401 @@
1
+ #!ruby
2
+ #coding:utf-8
3
+ $KCODE="s" 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_new(log="./cgi-bin/log",config="./cgi-bin/config",docs="./htdocs/thermo",kr_port=5)
18
+ log_time=Time.now
19
+ Thread.abort_on_exception=true
20
+
21
+ #KR port
22
+ kr_response=""
23
+
24
+ #KR Queue
25
+ q=Queue.new
26
+ queue=Thread.start(q,log,config,kr_port) do |que,lo,co,kr|
27
+ while str=que.pop
28
+ #p str
29
+ res=""
30
+
31
+ #OUTPUT DATA
32
+ res=KR::export(str,kr).to_s
33
+
34
+ #LOG
35
+ dat=Time.now.to_s+","+str.chomp+","+res.chomp#+"<br/>"
36
+ Loger::loger(lo+"/kr_command_log.txt",dat)
37
+ if res.include?("R") or str.include?("R")
38
+ #p str+","+res
39
+
40
+ #response signal
41
+ begin
42
+
43
+ if res.size>8
44
+ #res="%01$RC0100**\r" (**:BCC)
45
+ p input_num=res.slice(7,1).to_i(16)# =>0..15
46
+
47
+ b=Bit.new(input_num)
48
+
49
+ #bit save
50
+ (0..1).each do |x|
51
+ if b.on?(x)
52
+ yaml_db("wet_sensor",true,co+"/wet#{x}")
53
+ yaml_db("wet_read",false,co+"/wet#{x}")
54
+ else
55
+ yaml_db("wet_sensor",false,co+"/wet#{x}")
56
+ yaml_db("wet_read",false,co+"/wet#{x}")
57
+ end
58
+ end
59
+ else
60
+ #send data lost
61
+ #retry signal
62
+ (0..1).each do |x|
63
+ yaml_db("wet_sensor",false,co+"/wet#{x}")
64
+ yaml_db("wet_read",false,co+"/wet#{x}")
65
+ end
66
+
67
+ ##
68
+ Loger::loger(co+"/wet_input.txt",dat,"w")
69
+ end
70
+ rescue
71
+ sleep 0.1
72
+ #do nothing...
73
+ end
74
+ end
75
+ sleep 0.1
76
+
77
+ if res.include?("!") or #include char
78
+ res.include?("$")!=true or#not $
79
+ res=="" or
80
+ res=="false" or
81
+ res.size < 8 or
82
+ (res.size > 9 and res.include?("%01$RC")!=true)
83
+ then
84
+ Loger::loger(lo+"/errors.txt","KR:"+dat+"<br/>")
85
+ Loger::loger(lo+"/errors_.txt","KR:"+dat+"<br/>")
86
+ end
87
+ end
88
+ end
89
+ #thermo_thread starts
90
+ yaml_file="last_thermo_data"
91
+
92
+ thermo_port=8#6
93
+ thermo_N=4
94
+ th="thermo_define.yml"
95
+ yaml_db(th,[thermo_port,thermo_N],config+"/"+th)
96
+
97
+ #thermo_loop_thread(yaml_file,thermo_port,thermo_N,sec=30)
98
+ thermo_loop_thread(yaml_file,thermo_port,thermo_N,sec=30,"./cgi-bin/config")
99
+
100
+ #thermo_logger_thread starts
101
+ thermo_data_logger_thread(thermo_N,"./cgi-bin/config","./cgi-bin/log")
102
+
103
+ #reset manual bool
104
+ yaml_db("manual_bool01.txt",nil,config+"/manual_bool01.txt")
105
+ yaml_db("manual_bool02.txt",nil,config+"/manual_bool02.txt")
106
+ sleep 0.1
107
+
108
+ loop do
109
+ catch :reset_signal do
110
+ sleep 0.2
111
+ ##
112
+ #Initialize basic DATA
113
+
114
+ #THERMO port
115
+ #wr1010 thrmo request
116
+ thermo=yaml_dbr("last_thermo_data",config+"/last_thermo_data")#WR1010::list(thermo_port,thermo_N)
117
+
118
+ #if thermo.class==Array and thermo.size==thermo_N
119
+ # yaml_db("last_thermo_data",thermo,config+"/last_thermo_data")
120
+ #else
121
+ # p thermo
122
+ #end
123
+
124
+ #BIT SETTING
125
+ kr01=Bit.new #KR#01
126
+ kr02=Bit.new #KR#02
127
+ in_bits=Bit.new ##import signal(#KR#01)
128
+
129
+ change1=false #KR#01
130
+ change2=false #KR#02
131
+ p house1_set=yaml_dbr("house1",config+"/house1")
132
+ house2_set=yaml_dbr("house2",config+"/house2")
133
+ house1=N_dan_thermo.new(house1_set,diff=1,1)
134
+ house2=N_dan_thermo.new(house2_set,diff=1,1)
135
+
136
+ a=Value_controller.new(steps=4,open_sec=5,#55
137
+ down_sec=3,#35,
138
+ sensitivity=2,set_value=20,dead_time=15)
139
+ p "house1 Starts at #{(a.up_sec*a.steps).to_s} sec later."
140
+
141
+ b=Value_controller.new(steps=4,open_sec=5,#55
142
+ down_sec=3,#35,
143
+ sensitivity=2,set_value=20,dead_time=15)
144
+ #p "house2 Starts at #{b.reset_time.to_s}(#{(b.up_sec*b.steps).to_s} sec later)."
145
+
146
+ #wet_sensor SETTING
147
+ delay0=yaml_dbr("wet0_drain",config+"/wet0_drain") || 1
148
+ delay1=yaml_dbr("wet1_drain",config+"/wet1_drain") || 1
149
+ wet0=WetSensor.new(delay0,config+"/wet0")
150
+ wet1=WetSensor.new(delay1,config+"/wet1")
151
+
152
+
153
+ #illigate Time DEFINE
154
+ time_array3=yaml_dbr("time_array",config+"/time_array")
155
+ puts "watering set:#{time_array3.inspect}"
156
+ wait_time=yaml_dbr("wait_time",config+"/wait_time")
157
+
158
+ #start
159
+ start=Time.now
160
+
161
+ #start time logging
162
+ dat="Start,"+Time.now.to_s
163
+ Loger::loger(config+"/last_bit.txt",dat+"<br/>","w")#Start,#{Time.now}<br/>
164
+ Loger::loger(log+"/log.txt",dat)
165
+
166
+ #value_controller step change initialize
167
+ change_step=[false,false]
168
+
169
+ ##
170
+ #MAIN LOOP (break if in_bit(22)==off)
171
+ run_save_flag=nil
172
+
173
+ loop do
174
+ t=Time.now
175
+ time=t.to_s
176
+ if t.min!=run_save_flag
177
+ run_save_flag=t.min
178
+ #save_run_check_time
179
+ begin
180
+ yaml_db("run_check",t,config+"/run_check")
181
+ #retry if error.
182
+ rescue
183
+ sleep 0.1
184
+ yaml_db("run_check",t,config+"/run_check")
185
+ end
186
+ end
187
+ if yaml_dbr("reload_flag",config+"/reload_flag")==true
188
+ yaml_db("reload_flag",false,config+"/reload_flag")
189
+ p dat="reload signal:"
190
+ Loger::loger(log+"/log.txt",dat)
191
+
192
+ sleep 0.1
193
+ throw :reset_signal
194
+ end
195
+
196
+ #thermo DEFINE
197
+ thermo=nil
198
+ thermo=yaml_dbr("last_thermo_data",config+"/last_thermo_data")
199
+ #last_thermo_time
200
+
201
+ #illigate Timer
202
+ x=multiple_pulse_timer(time_array3,wait_time)
203
+ #x.bit =>Integer
204
+
205
+ #wet sensor work
206
+ wet0.commander{
207
+ #p "time 0"
208
+ q.push("%01#RCCX00000000**\r")#read request when its time
209
+ }
210
+
211
+ wet1.commander{
212
+ #p "time 1"
213
+ q.push("%01#RCCX00000000**\r")#read request when its time
214
+ }
215
+
216
+
217
+ #illigating check
218
+ kr01.boolbit(wet1.run(x.on?(2)),0)#signal switch
219
+
220
+ kr01.boolbit(wet0.run(x.on?(0)),1)#illigate line1
221
+
222
+ kr01.boolbit(wet1.run(x.on?(2)),2)#illigate line2 ##
223
+
224
+ pomp = wet0.run(x.on?(0)) | wet1.run(x.on?(2))
225
+ kr01.boolbit(pomp,3)#pomp signal
226
+
227
+
228
+ #motor bit
229
+ step_str=""
230
+ if thermo.class==Array && thermo.size==thermo_N
231
+
232
+ #set_temp from N_dan_thermo
233
+ a.set_value=house1.set_now
234
+ b.set_value=house2.set_now
235
+
236
+ ##
237
+ #Controll
238
+ bit1=a.value_controll(thermo[0][0]) if thermo[0][0] != nil
239
+ bit2=!a.switch
240
+ bit3=b.value_controll(thermo[1][0]) if thermo[1][0] != nil
241
+ bit4=!b.switch
242
+ check_step=[a.now_step,b.now_step]
243
+
244
+ if check_step != change_step
245
+ string=[a.set_value,b.set_value].inspect#+check_step.inspect
246
+ #p [bit1,bit2,bit3,bit4]
247
+ #p thermo
248
+
249
+ step_str=",step:"+a.now_step.to_s+","+"step:"+b.now_step.to_s+","+string
250
+ yaml_db("change_step",check_step,config+"/change_step")
251
+
252
+ change_step=check_step.dup
253
+ end
254
+ else
255
+ #2010.4.28 changed
256
+
257
+ ##
258
+ #commonly open if thrmo error.
259
+ #house1
260
+ bit1=true #open signal
261
+ bit2=false#motor_off_trap
262
+
263
+ ##
264
+ #commonly open if thrmo error.
265
+ #house2
266
+ bit3=true #open signal
267
+ bit4=false#motor_off_trap
268
+
269
+ #dat=Time.now.to_s+":thermo_error!! open full time."+thermo.inspect
270
+ end
271
+ #house1 motor
272
+ kr02.boolbit(bit1,0)
273
+ kr02.boolbit(bit2,1)
274
+ #house2 motor
275
+ kr02.boolbit(bit3,2)
276
+ kr02.boolbit(bit4,3)
277
+
278
+ ##
279
+ #RESULT BIT OUTPUT IF CHANGED
280
+ #sum bits and check changes
281
+ #KR01 auto
282
+ #p change1
283
+
284
+ #p config+"/manual_bool01.txt"
285
+ #p yaml_dbr("manual_bool01.txt",config+"/manual_bool01.txt")
286
+ if yaml_dbr("manual_bool01.txt",config+"/manual_bool01.txt")==nil
287
+ if change1 != kr01.bit
288
+ change1=kr01.bit
289
+
290
+ str=kr01.tos(4,2)
291
+ if thermo!=nil
292
+ p data="KR01:"+str+","+time+","+
293
+ thermo[0][0].to_s+","+thermo[0][1].to_s+","+thermo[1][0].to_s+","+thermo[2][0].to_s
294
+ else
295
+ p data="KR01:"+str+" "+time
296
+ end
297
+ #logging thread
298
+ #Thread.start(data){|dat|
299
+
300
+ Loger::loger(config+"/last_bit.txt",data+"<br/>","w")
301
+ Loger::loger(log+"/log.txt",data)
302
+ #}
303
+ #str=bits.tos(24,2)
304
+ #str_size=str.size
305
+
306
+ ##
307
+ #command output
308
+ hex0=str
309
+ hex=Bit.new(hex0.to_i(2)).tos(1,16)
310
+ command="%01#WCCY000000000#{hex}00**\r"
311
+ q.push(command)
312
+ end
313
+ #KR01 manual
314
+ else
315
+ if yaml_dbr("kr01_readable.txt",config+"/kr01_readable.txt")=="OK"
316
+ p "manual KR01"
317
+ #kr1
318
+ hex=yaml_dbr("kr1_bit.txt",config+"/kr1_bit.txt").upcase
319
+ command="%01#WCCY000000000#{hex}00**\r"
320
+ q.push(command)
321
+
322
+ p data="KR01_manual:"+hex+","+time
323
+ #logging thread
324
+ #Thread.start(data) do |dat|
325
+ Loger::loger(config+"/last_bit.txt",data+"<br/>","w")
326
+ Loger::loger(log+"/log.txt",data)
327
+ #end
328
+ yaml_db("kr01_readable.txt",nil,config+"/kr01_readable.txt")
329
+ end
330
+ end
331
+ #KR02 auto
332
+ if yaml_dbr("manual_bool02.txt",config+"/manual_bool02.txt")==nil
333
+ if change2 != kr02.bit
334
+ change2=kr02.bit
335
+
336
+ str=kr02.tos(8,2)
337
+ if thermo!=nil
338
+ p data="KR02:"+str+","+time+","+thermo[0][0].to_s+","+thermo[0][1].to_s+","+thermo[1][0].to_s+","+thermo[2][0].to_s+step_str
339
+ else
340
+ p data="KR02:"+str+" "+time
341
+ end
342
+ #logging thread
343
+ #Thread.start(data){|dat|
344
+ Loger::loger(config+"/last_bit.txt",data+"<br/>","w")
345
+ Loger::loger(log+"/log.txt",data)
346
+ #}
347
+ #str=bits.tos(24,2)
348
+ #str_size=str.size
349
+
350
+ hex1=str.slice(4,4)
351
+ str
352
+ hex2=str.slice(0,4)
353
+ hex_w=Bit.new((hex2+hex1).to_i(2)).tos(2,16)
354
+ command="%02#WCCY00000000#{hex_w}00**\r"
355
+ q.push(command)
356
+ end
357
+ #manual
358
+ else
359
+ if yaml_dbr("kr02_readable.txt",config+"/kr02_readable.txt")=="OK"
360
+ p "manual KR02"
361
+
362
+ #kr2
363
+ hex_w=yaml_dbr("kr2_bit.txt",config+"/kr2_bit.txt").upcase
364
+
365
+ if hex_w.size==1
366
+ hex_w="0"+hex_w
367
+ end
368
+
369
+ command="%02#WCCY00000000#{hex_w}00**\r"
370
+ q.push(command)
371
+
372
+ p data="KR02_manual:"+hex_w+","+time
373
+ #logging thread
374
+ #Thread.start(data) do |dat|
375
+ Loger::loger(config+"/last_bit.txt",data+"<br/>","w")
376
+ Loger::loger(log+"/log.txt",data)
377
+ #end
378
+
379
+ yaml_db("kr02_readable.txt",nil,config+"/kr02_readable.txt")
380
+ end
381
+
382
+ end
383
+ if log_time.hour != t.hour
384
+ log_time=t.dup
385
+ p "watchdog:"+Time.now.to_s
386
+ end
387
+ #p Time.now-t
388
+
389
+ sleep 0.3
390
+
391
+ #p Thread.list
392
+ #raise
393
+ end #main_loop
394
+ end #catch reset_signal
395
+
396
+ end #reset_loop
397
+ q.push nil
398
+ queue.join
399
+ end
400
+ end
401
+ #AgriController::main_new