0%

Node.jsでつくるIoT - Part3: OctobluのMeshblu

Octobluは2014年に設立されたIoT事業者です。同じ年の12月にはCitrixに買収されています。IoTプラットフォームのMeshbluでは、コネクテッドデバイスと人やWebサービスをリアルタイム通信でつなぐためのプラットフォームと周辺技術の開発をオープンソースで行っています。ソースコードはMITライセンスでGitHubに公開されています。また、このプラットフォームを使ったサービスも現在ベータ版で提供を開始しています。

Pub/Subのマルチプロトコル対応

以前Skynetと呼ばれていたOctobluのプラットフォームはMeshbluに名称変更されました。MeshbluはPonteと同じように、HTTP、WebSpocket、MQTT、CoAPといったマルチプロトコルに対応したブローカーを実装しています。MQTTブローカーはMoscaなので馴染み深いです。異なるプロトコル同士でPub/Subができると、curlでpublishしてMQTT.jsでsubscribeするとかコネクテッドデバイスとのメッセージ交換が楽しくなります。

データストア

コネクテッドデバイスのセンサーデータをRedisやMongoDBにストアするAPIもあります。簡単なREST APIのクエリ文字列使って最新の5件を取得したり、期間指定もできます。ストリームにも対応しているのでビジュアライゼーションに重宝しそうです。

デバイス/ノードの識別

デバイスやサービスのノードはuuidとtokenで識別されます。登録済みのデバイスやオーナーに指定したデバイス間でのみメッセージの送受信ができます。MQTTのトピック名の扱いがちょっと特殊なので戸惑いますが、異なるプロトコルでメッセージを交換するためのよく考えられた仕様だと思います。

Node.js/JavaScriptのSDK

Node.jsやJavaScriptのライブラリが充実しています。Cylon.jsのアダプタを使うと簡単にコネクテッドデバイスからセンサーデータを収集したり、イベント駆動なアプリを動かすことができます。ロジックの多くはクラウド上でNode.jsで実装したいので、コネクテッドデバイスからセンサーデータを取得するためのコードをCylon.jsJohnny-Fiveで書けると便利です。

ただし、以前のSkynetのパッケージ名が残っていたり、複数あるライブラリによってプロパティ名が異なっていたり、最初は少し混乱します。過渡期みたいなのでもう少しすれば整理されると思います。

コミュニティ

hackster.ioコミュニティページがあるのでコネクテッドデバイスとクラウドを連携したサンプルをいろいろ試すことができます。