Merge remote-tracking branch 'origin/main' into develop_mh
This commit is contained in:
commit
0047ed9587
|
|
@ -22,22 +22,31 @@ module Modbus
|
||||||
private
|
private
|
||||||
def apply_schedule(schedule)
|
def apply_schedule(schedule)
|
||||||
if schedule.is_active
|
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
|
sleep 2
|
||||||
run_script(
|
run_script(
|
||||||
"serial.rb",
|
"temp",
|
||||||
"#{schedule.controller.station_id}",
|
"#{schedule.controller.station_id}",
|
||||||
(schedule.temperature * 10).to_i.to_s,
|
(schedule.temperature * 10).to_i.to_s,
|
||||||
"[Schedule] #{schedule.controller.name} #{format('%02d:%02d', schedule.hour, schedule.minute)} → #{schedule.temperature}°C"
|
"[Schedule] #{schedule.controller.name} #{format('%02d:%02d', schedule.hour, schedule.minute)} → #{schedule.temperature}°C"
|
||||||
)
|
)
|
||||||
else
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
def run_script(file, controller_id, value, success_msg)
|
def run_script(mode, controller_id, value, success_msg)
|
||||||
path = Rails.root.join(file)
|
if system("ruby", "modbus.rb", mode, controller_id, value)
|
||||||
if system("ruby", path.to_s, controller_id, value)
|
|
||||||
puts success_msg
|
puts success_msg
|
||||||
Rails.logger.info success_msg
|
Rails.logger.info success_msg
|
||||||
else
|
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