Heroku MQTT server

Rails

  • アプリケーション作成

Heroku

  • アプリケーション作成
  • cloudmqtt アドオン追加
// アドオン追加
heroku addons:create cloudmqtt

// URL確認(このURLをRailsに設定する)
heroku config:get CLOUDMQTT_URL

// 開発環境で動くように設定
heroku config -s | grep CLOUDMQTT_URL >> .env
more .env

Rails

rakeファイル作成

配置場所: lib > tasks
* publish.rake
* subscribe.rake

各コード

subscribe.rb

task :mqtt_publish do
  # Create a hash with the connection parameters from the URL
  uri = URI.parse ENV['CLOUDMQTT_URL'] || '{MQTT URL設定}'
  conn_opts = {
    remote_host: uri.host,
    remote_port: uri.port,
    username: uri.user,
    password: uri.password,
  }

  MQTT::Client.connect(conn_opts) do |c|
    # publish a message to the topic 'test'
    c.publish('test', 'Hello World')
    sleep 1
  end
end

publish.rb

task :mqtt_subscribe do

  # Create a hash with the connection parameters from the URL
  uri = URI.parse ENV['CLOUDMQTT_URL'] || '{MQTT URL設定}'
  conn_opts = {
    remote_host: uri.host,
    remote_port: uri.port,
    username: uri.user,
    password: uri.password,
  }

  MQTT::Client.connect(conn_opts) do |c|
    # The block will be called when you messages arrive to the topic
    loop do
      c.get('test') do |topic, message|
        puts "#{topic}: #{message}"
      end
    end
  end

end

実行

以下2つを別々のターミナルで実行

// subscribe実行
rake subscribe

// 送信 (送信内容を確認できる)
rake publish

参考

  • Heroku
    https://devcenter.heroku.com/articles/cloudmqtt

  • 参考ブログ
    http://kakakikikeke.blogspot.jp/2015/02/cloudmqtt.html