From d9ad314b623cf93c5e5f4299195e4ec67645191b Mon Sep 17 00:00:00 2001 From: RubyOn Date: Fri, 25 Apr 2025 09:58:43 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AA=A8=EB=93=9C=EB=B2=84=EC=8A=A4=20cli=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/modbus/polling_service.rb | 21 +++++++++++++++------ modbus.rb | 21 +++++++++++++++++++++ on_off.rb | 13 ------------- serial.rb | 13 ------------- 4 files changed, 36 insertions(+), 32 deletions(-) create mode 100644 modbus.rb delete mode 100644 on_off.rb delete mode 100644 serial.rb diff --git a/app/services/modbus/polling_service.rb b/app/services/modbus/polling_service.rb index 6a3d7db..3083672 100644 --- a/app/services/modbus/polling_service.rb +++ b/app/services/modbus/polling_service.rb @@ -22,22 +22,31 @@ module Modbus private def apply_schedule(schedule) if schedule.is_active - run_script("on_off.rb", "#{schedule.controller.station_id}", "0", "[Schedule] #{schedule.controller.name} ON") + run_script( + "power", + "#{schedule.controller.station_id}", + "0", + "[Schedule] #{schedule.controller.name} ON" + ) sleep 2 run_script( - "serial.rb", + "temp", "#{schedule.controller.station_id}", (schedule.temperature * 10).to_i.to_s, "[Schedule] #{schedule.controller.name} #{format('%02d:%02d', schedule.hour, schedule.minute)} → #{schedule.temperature}°C" ) else - run_script("on_off.rb", "#{schedule.controller.station_id}", "1", "[Schedule] #{schedule.controller.name} OFF") + run_script( + "power", + "#{schedule.controller.station_id}", + "1", + "[Schedule] #{schedule.controller.name} OFF" + ) end end - def run_script(file, controller_id, value, success_msg) - path = Rails.root.join(file) - if system("ruby", path.to_s, controller_id, value) + def run_script(mode, controller_id, value, success_msg) + if system("ruby", "modbus.rb", mode, controller_id, value) puts success_msg Rails.logger.info success_msg else diff --git a/modbus.rb b/modbus.rb new file mode 100644 index 0000000..a4ff827 --- /dev/null +++ b/modbus.rb @@ -0,0 +1,21 @@ +require "rmodbus" +require "ccutrer-serialport" + +mode = ARGV[0].strip +controller_id = ARGV[1].to_i +value = ARGV[2].to_i + +ModBus::RTUClient.new("/dev/ttyUSB0", 9600) do |cl| + cl.with_slave(controller_id) do |slave| + regs = slave.holding_registers + case mode + when "temp" + regs[2] = value + when "power" + regs[22] = value + else + # type code here + end + sleep 0.1 + end +end diff --git a/on_off.rb b/on_off.rb deleted file mode 100644 index 998757f..0000000 --- a/on_off.rb +++ /dev/null @@ -1,13 +0,0 @@ -require "rmodbus" -require "ccutrer-serialport" - -controller_id = ARGV[0]&.to_i -value = ARGV[1]&.to_i - -ModBus::RTUClient.new("/dev/ttyUSB0", 9600) do |cl| - cl.with_slave(controller_id) do |slave| - regs = slave.holding_registers - regs[22] = value - sleep 0.1 - end -end diff --git a/serial.rb b/serial.rb deleted file mode 100644 index dd9d4a9..0000000 --- a/serial.rb +++ /dev/null @@ -1,13 +0,0 @@ -require "rmodbus" -require "ccutrer-serialport" - -controller_id = ARGV[0]&.to_i -value = ARGV[1]&.to_i - -ModBus::RTUClient.new("/dev/ttyUSB0", 9600) do |cl| - cl.with_slave(controller_id) do |slave| - regs = slave.holding_registers - regs[2] = value - sleep 0.1 - end -end