Class: Gom::SensorPort
Constant Summary collapse
- Log =
GOM default Logger instance
Gom::Logger.new
- Defaults =
{ :interface => '0.0.0.0', :port => 44470, :mode => :udp, :verbose => false, }
Instance Method Summary collapse
- #dispatch_sensor_message(line, source = nil) ⇒ Object
-
#find_gom_node(path) ⇒ Object
TODO: temporarily here from gom-script.
-
#initialize(path, options = {}) ⇒ SensorPort
constructor
A new instance of SensorPort.
- #listen ⇒ Object
- #listen_tcp ⇒ Object
- #listen_udp ⇒ Object
- #verbose? ⇒ Boolean
Constructor Details
#initialize(path, options = {}) ⇒ SensorPort
Returns a new instance of SensorPort.
21 22 23 24 25 26 27 28 |
# File 'lib/gom/sensor_port.rb', line 21 def initialize path, = {} @path = path = Defaults.merge(find_gom_node @path).merge() #puts " -- new sensor port: #{self.inspect}" verbose? and (Log.level = ::Logger::DEBUG) Log.info "new sensor port: #{self.inspect}" end |
Instance Method Details
#dispatch_sensor_message(line, source = nil) ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/gom/sensor_port.rb', line 55 def line, source = nil line.strip! Log.debug "-->#{line}<-- #{source.inspect}" key, value = (line.split /\s*[:=]\s*/) value.nil? or value.strip! # TODO: val might need type conversion Gom::Remote.connection.write "#{@path}:raw", line Gom::Remote.connection.write "#{@path}/values:#{key}", value end |
#find_gom_node(path) ⇒ Object
TODO: temporarily here from gom-script
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/gom/sensor_port.rb', line 66 def find_gom_node path json = (Gom::Remote.connection.read "#{path}.json") (JSON.parse json)["node"]["entries"].select do |entry| # 1. select attribute entries entry.has_key? "attribute" end.inject({}) do |h, a| # 2. make it a key, value list h[a["attribute"]["name"].to_sym] = a["attribute"]["value"] h end end |
#listen ⇒ Object
34 35 36 37 38 |
# File 'lib/gom/sensor_port.rb', line 34 def listen #puts " -- listen: #{self.inspect}" Log.info "listen: #{self.inspect}" self.send "listen_#{mode}" end |
#listen_tcp ⇒ Object
51 52 53 |
# File 'lib/gom/sensor_port.rb', line 51 def listen_tcp raise "not yet implemented" end |
#listen_udp ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/gom/sensor_port.rb', line 40 def listen_udp socket = UDPSocket.new socket.bind(interface, port) loop do line, source = socket.recvfrom(1024) line, source end ensure socket.close rescue nil end |
#verbose? ⇒ Boolean
30 31 32 |
# File 'lib/gom/sensor_port.rb', line 30 def verbose? [:verbose] || [:v] end |