Skip to content

DaKaZ/bbt_ruby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Beebotte ruby gem

THIS IS ALPHA SOFTWARE - USE AT YOUR OWN PERIL

Basic Usage

Install the gem: gem install beebotte

In your ruby code:

require 'beebotte'

There are two main classes: Connector and Stream. The Connector class implements the REST API and the Stream class implements the MQTT connection to Beebotte.

Please see the Beebotte document here: https://beebotte.com/overview for more details on their implmentation.

Currently the Connector class only works with API and Secret key, Token authentication is not yet supported.

Full api examples:

b = Beebotte::Connector.new("<yourApiKey>", "<yourSecretKey>", 'api.beebotte.com', 443)

channel_name = SecureRandom.hex(8)
resource_name = SecureRandom.hex(8)
resource_name2 = SecureRandom.hex(8)

puts "\n\n---------\nadd_channels:"
channel = {"name":channel_name, "resources": [{"name":resource_name, "vtype":"any"}]}
b.add_channel(channel) {|r, code| puts "(#{code}) #{r.inspect}" }

puts "\n\n---------\nwrite:"
b.write(channel_name, resource_name, { id: rand(1000000), status:"A sample write message"})

puts "\n\n---------\npublish:"
b.publish(channel_name, resource_name, { id: rand(1000000), status:"A sample publish message"})

puts "\n\n---------\nread:"
b.read({channel: channel_name, resource: resource_name, limit: 1}) {|r, code| puts "(#{code}) #{r.inspect}"}


puts "\n\n---------\nadd_resource:"
resource2 = {"name":resource_name2, "vtype":"any"}
b.add_resource(channel_name, resource2) {|r, code| puts "(#{code}) #{r.inspect}"}

puts "\n\n---------\ndel_resource:"
b.del_resource(channel_name, resource_name2) {|r, code| puts "(#{code}) #{r.inspect}"}

puts "\n\n---------\nget_channels:"
b.get_channels {|r, code| puts "(#{code}) #{r.inspect}"}

puts "\n\n---------\nget_channel:"
b.get_channel(channel_name) {|r, code| puts "(#{code}) #{r.inspect}"}

puts "\n\n---------\nget_connections:"
b.get_connections {|r, code| puts "(#{code}) #{r.inspect}"}

puts "\n\n---------\nget_resources:"
b.get_resources(resource_name) {|r, code| puts "(#{code}) #{r.inspect}"}


puts "\n\n---------\ndel_channel:"
b.del_channel(channel_name) {|r, code| puts "(#{code}) #{r.inspect}"}




s = Beebotte::Stream.new({token: "yourChannelToken"})
s.connect()

s.subscribe("#{channel_name}/#{resource_name}")

s.publish(channel_name, resource_name, {status: 456})
 
s.write(channel_name, resource_name, {status: 789})
 
s.get { |topic, message| puts "\n\nTopic: #{topic}\nMessage: #{message}" }


TODO:

  1. Documentation
  2. Testing
  3. Token authentication for REST API
  4. Bulk API

License

The Beebotte ruby gem is licensed under the terms of the MIT license. See the file LICENSE for details.

About

This is Beebotte Ruby SDK for accessing both the REST API and providing ruby bindings to the MQTT interface

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published