2014年12月15日月曜日

MQTT ハンズオンに参加しました。

MQTT ハンズオン http://connpass.com/event/9765/ に参加してきました。

会場はクラウド会計ソフトを開発されている freee さんでした。しゃれおつなオフィスでした。卓球台とダーツがありました。(GTUG Girlsの勉強会でも使えるといいな)

講師の @r_rudi さん、@voluntas さんありがとうございました。

MQTT については時雨堂さんの解説を読むのがいいと思います。


ハンズオンでは大きく分けて2つのことをやりました。
  • mqttcli を使ってみる
  • いろんな言語で MQTT クライアントを作ってみる
当日はハンズオン用のHost(Brokerともいう)が用意されていましたが、復習したい場合は sango の無料プランで試すのがおすすめです。 githubアカウントでログインできるので簡単。


■ mqttcli を使ってみる

mqttcliはシェルスクリプト用の MQTT クライアントです。
インストール方法は mqttcli のページを見てください。

MQTTサーバーに接続するための設定を指定する方法が4つあります。
  • ~/.mqttcli.cfg に設定を書く
  • --conf で設定ファイルを指定する
  • --host, --port, --user, --password で指定する
  • $MQTT_HOST, $MQTT_POST, $MQTT_USERNAME, $MQTT_PASSWORD を設定する
~/.mqttcli.cfg に設定を書くのが簡単です。

こんな感じの JSON を書きます。
  1. {  
  2.   "host""localhost",  
  3.   "port": 1883,  
  4.   "username""yanzm",  
  5.   "password""hogehoge"  
  6. }  

sango だとこんな感じ
  1. {  
  2.   "host""lite.mqtt.shiguredo.jp",  
  3.   "port": 1883,  
  4.   "username""yanzm@github",  
  5.   "password""hogehoge"  
  6. }  
*追記: port は int なので " で囲わないのが正しいそうです。

コンソールを2つ開いて

片方(subscribe側)で
  1. $ mqttcli sub -t 'yanzm@github/say'  
*-t でトピックを指定します。sangoではアクセス先トピックがユーザー毎に分かれています。

もう片方(publish側)で
  1. $ mqttcli pub -t 'yanzm@github/say' -m 'hello'  
とすると、subscribe側に hello と表示されます。

当日は subscribe したメッセージを say コマンドに流すPCが用意されていて、参加者がそこに publish して楽しみました。

自分のPCでやるには、

日本語の Voice がダウンロードされていないと、say コマンドで日本語を読んでくれないので、
[System Preferences...] → [Dictation & Speech] → [Text to Speech] タブ → [System Voice:] → [Customize...] → Kyoko と Otoya をチェックしてOK
で日本語の Voice をダウンロードしておきます。
ダウンロードが終ったら、[System Voice:] を Kyoko か Otoya にしておきます。

  1. $ mqttcli sub -t 'yanzm@github/say' | while read line ; do echo $line | say ; done  
とすると、publish するたびにメッセージを読み上げてくれます。楽しい!


■ いろんな言語で MQTT クライアントを作ってみる

Sango MQTT ドキュメント の中から好きな言語でクライアントを作って、pub/sub して遊びました。


■ Github の MQTT publish に挑戦

Github のリポジトリの設定に Webhooks & Services がありますが、Services に MQTT publish が用意されています。これを使うと、commit や push があったときに publish されるようなのですが、自分のリポジトリで試してもうまくいきませんでした。。。なぜだろう。。。



1 件のコメント:

  1. はじめまして、kyokomiと申します。

    Github の MQTT publish がうまくいかずこのブログにたどりつき、原因がわかったので共有させていただきます。

    結果として、sangoさんのサービスで無料で利用可能なデータサイズ(6144byte)を超えていることが原因のようです。

    新規リポジトリを作成して、適当にcommitやpushをしたところ最初の時点で5974byteほどでPullRequestの作成やマージを行うとデータサイズが6144byteを超えたためかsubできなくなりました。

    あとtopicの指定が若干ハマったのでこちらが参考になるかと思います。

    http://qiita.com/Hexa/items/78b977014726e8c6af7e

    返信削除