모드버스 cli 코드 통합

This commit is contained in:
RubyOn 2025-04-25 09:58:43 +09:00
parent e53449e001
commit d9ad314b62
4 changed files with 36 additions and 32 deletions

View File

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

21
modbus.rb Normal file
View File

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

View File

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

View File

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