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