컨트롤러 2개 조절
This commit is contained in:
@@ -14,47 +14,34 @@ module Modbus
|
||||
now = Time.now
|
||||
current_time = format("%02d:%02d", now.hour, now.min)
|
||||
puts "# current time: #{current_time}.#{now.sec}"
|
||||
schedule = Schedule.find_by(hour: now.hour, minute: now.min)
|
||||
apply_schedule(schedule) if schedule
|
||||
schedules = Schedule.where(hour: now.hour, minute: now.min)
|
||||
schedules.each { |schedule| apply_schedule(schedule) }
|
||||
end
|
||||
end
|
||||
|
||||
def stop
|
||||
if defined?(@scheduler)
|
||||
@scheduler.shutdown(:kill)
|
||||
@scheduler = nil
|
||||
puts "[#{Time.now}] Modbus polling service 중지됨"
|
||||
else
|
||||
puts "[#{Time.now}] Scheduler 인스턴스 없음"
|
||||
end
|
||||
end
|
||||
|
||||
def running?
|
||||
@scheduler
|
||||
end
|
||||
|
||||
private
|
||||
def apply_schedule(schedule)
|
||||
if schedule.is_active
|
||||
run_script("on_off.rb", "0", "[Schedule] ON")
|
||||
run_script("on_off.rb", "#{schedule.controller.station_id}", "0", "[Schedule] ON")
|
||||
sleep 2
|
||||
run_script(
|
||||
"serial.rb",
|
||||
"#{schedule.controller.station_id}",
|
||||
(schedule.temperature * 10).to_i.to_s,
|
||||
"[Schedule] #{format('%02d:%02d', schedule.hour, schedule.minute)} → #{schedule.temperature}°C"
|
||||
)
|
||||
else
|
||||
run_script("on_off.rb", "1", "[Schedule] OFF")
|
||||
run_script("on_off.rb", "#{schedule.controller.station_id}", "1", "[Schedule] OFF")
|
||||
end
|
||||
end
|
||||
|
||||
def run_script(file, arg, success_msg)
|
||||
def run_script(file, controller_id, value, success_msg)
|
||||
path = Rails.root.join(file)
|
||||
if system("ruby", path.to_s, arg)
|
||||
if system("ruby", path.to_s, controller_id, value)
|
||||
puts success_msg
|
||||
Rails.logger.info success_msg
|
||||
else
|
||||
error_message = "[#{Time.now}] #{file} 실행 실패 (args: #{arg})"
|
||||
error_message = "[#{Time.now}] #{file} 실행 실패 (value: #{value})"
|
||||
puts error_message
|
||||
Rails.logger.error error_message
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user