모드버스 cli 코드 통합
This commit is contained in:
parent
e53449e001
commit
d9ad314b62
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
13
on_off.rb
13
on_off.rb
|
|
@ -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
|
||||
Loading…
Reference in New Issue