Skip to content

shotantan/mruby-mqtt

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#mruby-mqtt Build Status

MQTT protocol library.

MQTT is a lightweight M2M,IoT protocol publish/subscribe messaging. The mruby-mqtt is implemented as wrapper of Paho C library

##Installing

Write in /mruby/build_config.rb

MRuby::Build.new do |conf|

  conf.gem :github => 'ksss/mruby-singleton', :branch => 'master'
  conf.gem :github => 'hiroeorz/mruby-mqtt', :branch => 'master'

  conf.linker do |linker|
    #linker.link_options = "%{flags} -o %{outfile} %{objs} %{libs}"
    linker.link_options = "%{flags} -o %{outfile} %{objs} %{libs} -lpthread -Wl -lm"
  end

end

##Examples

###Setup

MQTTClient.connect("tcp://test.mosquitto.org:1883", "mruby") do |c|
  c.clean_session = false   # default: true
  c.reconnect_interval = 10 # default: 5

  c.on_connect   = -> { c.subscribe("/temp/shimane")}
  c.on_subscribe = -> { puts "subscribe success"}
  c.on_publish   = -> { puts "publish success"}
end

The default QoS of subscribe request is 0.

You can add QoS value as labeled arguments.

  c.subscribe("/temp/shimane", qos:1)

callbacks

  • on_connect = -> { ... }
  • on_subscribe = -> { ... }
  • on_publish = -> { ... }
  • on_disconnect = -> { ... }
  • on_connlost = -> { ... } # default reconnect after @reconnect_interval
  • on_connect_failure = -> { ... } # default reconnect after @reconnect_interval
  • on_subscribe_failure = -> { ... }
  • on_connlost = -> { ... }
  • on_message = -> (message) { ... }

params

  • clean_session: true or false
  • reconnect_interval: integer

on_message callback receive one argument, that is instance of MQTTMessage.

MQTTClient.connect("tcp://test.mosquitto.org:1883", "mruby") do |c|

  ...

  c.on_message = -> (message) {
    puts message.topic
    puts message.payload
  }
end

###Publish

mqtt = MQTTClient.instance
mqtt.publish("/mytopic", "mydata")
  • The default value of QoS is 0.
  • The default value of Reain is false.

You can add QoS or Retain value as labeled arguments.

mqtt = MQTTClient.instance
mqtt.publish("/mytopic", "mydata", qos:1, retain:true)

###Disconnect

mqtt = MQTTClient.instance
mqtt.on_disconnect = -> { puts "disconnected." }
mqtt.disconnect

##Limitations

Only one MQTTClient instance created per one os process. This means that only one connection created to the broker per os process.

m1 = MQTTClient.connect("tcp://test.mosquitto.org:1883", "mruby")
 #=> #<MQTTClient:0x7fbbd981c8b0>

m2 = MQTTClient.connect("tcp://test.mosquitto.org:1883", "mruby")
Error: MQTT Already connected (MQTTAlreadyConnectedError)

m1.disconnect #=> true

m2 = MQTTClient.connect("tcp://test.mosquitto.org:1883", "mruby") 
 #=> #<MQTTClient:0x7fbbd981c8b0>

##License See source code files.

About

MQTT protocol library.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.6%
  • Ruby 1.4%