Skip to content

Instantly share code, notes, and snippets.

@ymakino
Last active December 1, 2023 05:54
Show Gist options
  • Save ymakino/f9c7573f2e133b1cef2b to your computer and use it in GitHub Desktop.
Save ymakino/f9c7573f2e133b1cef2b to your computer and use it in GitHub Desktop.
#!/usr/bin/env -S jruby -I .
require 'echowand.jar'
java_import 'echowand.service.Core'
java_import 'echowand.service.Service'
java_import 'echowand.net.InetNodeInfo'
java_import 'echowand.common.EOJ'
java_import 'echowand.common.EPC'
if ARGV.empty?
puts "Usage: #{__FILE__} hostname..."
exit 0
end
def doGets(service, hosts, eojs, epcs)
hosts.map do |host|
eojs.map do |eoj|
doGet(service, host, eoj, epcs)
end
end.flatten
end
def doGet(service, host, eoj, epcs)
addr = java.net.InetAddress.getByName(host)
nodeInfo = InetNodeInfo.new(addr)
eoj = EOJ.new(eoj)
service.doGet(nodeInfo, eoj, epcs, 1000)
end
def data2num(data)
if data.epc == EPC.xE0
case data.eoj.getClassEOJ.to_s
when "0011", "002d" then
return eval("0x#{data.actual_data.to_s} / 10.0")
when "0012", "001b" then
return eval("0x#{data.actual_data.to_s}")
else
return eval("0x#{data.actual_data.to_s}")
end
else
return "0x#{data.actual_data.to_s}"
end
end
core = Core.new
core.startService()
service = Service.new(core)
results = doGets(service, ARGV, ["001101", "001102", "001201", "001b01", "002d01"], [EPC.x80, EPC.xE0])
results.each { |r| r.join }
data_list = results.map { |r| r.getDataList }.flatten
data_list.each do |data|
puts "#{data.node} #{data.eoj} #{data.epc} #{data2num(data)}"
end
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment