Ruby KNX
Constructs KNX standard datagrams that make it easy to communicate with devices on KNX networks. It does not implement the transport layer so you can use it with native ruby, eventmachine, celluloid or the like.
You'll need a gateway. I recommend one that supports TCP/IP such as MDT Interfaces however you can use multicast groups if your network is configured to allow this.
Install the gem
Install it with RubyGems
gem install knx
or add this to your Gemfile if you use Bundler:
gem 'knx'
Usage
require 'knx'
knx = KNX.new
datagram = knx.read(byte_string)
datagram.source_address.to_s
# => '2.3.4'
datagram.destination_address.to_s
# => '3/4/5'
datagram.data # Returns a byte array
# => [1]
# ...
request = knx.action('1/2/0', true)
byte_string = request.to_binary_s
request = knx.action('1/2/3', 150)
byte_string = request.to_binary_s
# Send byte_string to KNX network to execute the request
# Supports multicast, unicast and TCP/IP tunneling (when supported)
We also support KNX BAOS devices devices:
require 'knx/object_server'
os = KNX::ObjectServer.new
datagram = os.read(byte_string)
# Can return multiple values
datagram.data.length #=> 1
# Get the item index we are reading
datagram.data[0].id
# => 12
datagram.data[0].value # Returns a binary string
# => "\x01"
# ...
request = os.action(1, true)
byte_string = request.to_binary_s
# Send byte_string to KNX BAOS server to execute the request
# This protocol was designed to be sent over TCP/IP
License and copyright
MIT