前回はRapiroをカスタマイズして無線LAN対応させたので

今回は実際にWebと接続して任意のクライアントからRapiroを操作できるようにします!

 

方法としてはRapiro(Raspberry Pi)を起点にPush型にするか(RapiroをWebサーバ化する)

Pull型でRapiro側からWebにデータを取りに行くかの2パターンがありますが、

今回はPull型でデータ取得先にコマンド入力のデータがあれば

シリアル経由でRapiroを操作するフローで構築してみます。

 

cron使えば言語/フレームワーク問わないのですが

入出力がプラガブルで拡張性の高いhubot使えば色々便利そうだったので今回はコレを使います。

 

hubotと言えば以前にhubot-chatterを作ったのでChatter使ってRapiroを操作してみます!

Chatterに命令文書いたらrapiroが動く感じです。

1. Node.jsをRaspberry Piにインストール

Raspberry Piでapt-getでパッケージインストールしたら、yaomanインストールあたりの

エラーでハマったのでPi用のバイナリを使ってインストールします。

2. hubotのインストール&ボット作成

まずはhubotのインストール

hubotの作成

3. hubotスクリプトの作成

こんな感じのスクリプトをscripts/test.coffeeに設置

さらに起動用のシェルファイルも作成

serialportもインストール

4. Salesforce側の設定を行う

Rapiroを動かすということで即時性が求められる為、StreamingAPIを使う方式にしました。

FeedItemは相変わらずStreamingAPIに対応していないので

FeedItemのInsertのDMLでカスタムオブジェクト(Message__c)を作成するようなトリガを組みました。

この作成先であるMessage__cをPushTopicに登録してあげればStreamingAPIへの準備はOKです。

ChatterとStreamingAPIの連携に関しては以下の記事が詳しいです↓

Force.com Streaming APIでChatterへの投稿を通知 – Appirio Japan

5. 実行

Rapiroに通電して、Raspberry Piにsshでログインし、3で作成したシェルファイルを起動します。

その後、”hubot rapiro green”とFeedに投稿すると、こんな感じでhubotが動き出します!

“hubot rapiro stop”で止まります。

余談

hubotじゃなくてCylon.jsを使っても面白いかも