farmitry_hvac/modbus.rb

35 lines
706 B
Ruby

require "rmodbus"
require "ccutrer-serialport"
require './sms/sms'
mode = ARGV[0]&.strip
controller_id = ARGV[1]&.to_i
value = ARGV[2]&.to_i
begin
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
rescue
error_message = "[#{Time.now}] #{mode} 실행 실패 (station_id: #{controller_id}, value: #{value})"
res = Sms.send_one(
{
to: '01062619801',
from: '01062619801',
text: error_message
}
)
puts res
end