読者です 読者をやめる 読者になる 読者になる

元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

WoTなモーター、Webmo の雑感

Webデザイナが使うWebofThingsなモーター"Webmo"が公開されていました。

Webmo: ウェブエンジニアとデザイナのためのモーター

このシステム、以前開発したmbedJSとよく似ています。

mbedJSも似たコンセプトで目指していましたが、途中で企画倒れというか、プロダクトのレベルまでは到達できませんでした。
反省の意味も込めて、mbedJSと比較しながら雑感を書いていこうと思います。

※購入レポートではありませんのでご了承ください。


webmoという製品

こちらのページで紹介している通り、Web技術の延長でフィジカルコンピューティングができる製品です。
制御にはWebAPIを使うので、Webプログラミングの知識があれば使えます。

Webmo: ウェブエンジニアとデザイナのためのモーター

ハードウェア

ハードウェアは、”モーター”と”エンコーダ”と"Linuxマシン"(edison)の組み合わせです。組立済、ファームウェアセットアップ済なので、電源をつなげばすぐに使える点はお手軽です。
モーターとエンコーダの組み合わせは、ウェブデザインには無いインプットとアウトプットで、(物理的に)動く点がとても良いです。モーターにも結構なパワーがありそうな感じです。

ネットワークはWiFiアドホックモード/インフラストラクチャーモードに対応していて、他にWiFiアクセスポイントを用意しなくても動かせます。

ソフトウェア

主要なソフトウェア構成は、edison用のLinux+ウェブサーバ(nodeJSかな?)、Bonjour(mdns)のデーモン(Avahiかな?)を組み合わせたものだと思います。

ゼロコンフィギュレーション技術を使っているので、(1台だけなら)ネットワーク接続の設定も不要だと思います。複数台を同じネットワークで同時に使うときは、デバイスの名前などを調整する必要がありそうです。

MacOSでならSafariからデバイスの探索ができると思いますが、httpサービスのポート番号が80っぽいので、OSのバージョンによってはセキュリティに引っかかって見つからないかもしれません。

Windowsで使うときはBonjur for Windowsの使用を推奨していますが、Windows版のBonjurはデバイス名解決に失敗することがあるので、ちょっと心配です。

セキュリティについては、安全な場所で使ってくださいということでしたが、Linuxサーバなのでグローバルネットワークにつなぐのは難しいですよね。

WebAPI

WebAPIはREST/Websocketに対応しているとのことです。
無線AP+WebAPIなので、応答時間は1呼び出し当たり10~50ms程度だと思います。
この制限は同一ネットワークを使う全てのデバイスで共有されるので、サービスを設計するときは毎秒50回程度のAPIコールで収まるような使い方をしないといけません。

動画を見る限りでは、Webmoのウェブサーバにコンテンツが置けるようにも見えます。
これができるなら、内蔵コンテンツとオンラインサービスが連携できるので、結構面白いことができると思います。


mbedJSと比較してみる

以前開発していたmbedJSと比較してみます。

セットアップについて

Webmoは買ってきて電源を繋ぐところまで準備されており、mbedJSのようにファームウェアの書き込みやら電源のお膳立てやらが必要なく、優れています。mbedJSは使うまでのハードルが高すぎました。

実装例については、Webmoの”物理的な動き”は素晴らしいです。mbedJSではLEDの点灯くらいしか無く、大変つまらないものでした。
Webmoはモーター、mbedJSはMCUボードを操作ターゲットにしていたので、その差が分かりやすさに繋がったように思います。

mbedJSも、何か形があれば、もう少しわかりやすく提供できたかもしれません。

ハードウェアについて

Webmoはmbedを使うmbedJSと比べてハイパワーなedisonを使っている分、頑丈さに欠ける気がします。電源投入からの起動時間が短かかったり、急な電源断があるシステムでは不安があります。
ただ、やはり無線LANを使えるWebmoは圧倒的で、ちょっと繋いで作ってみるにはとても便利です。

mbedJSはLANコネクタを使わないといけないのが面倒で、そこで挫折することがよくあります。

ソフトウェアについて

WebmoはLinux+webserverなので、比較的web技術に近い知識で改造ができます(保証はなくなりますが)
対してmbedJSはmbedなので、mbedを勉強して、JavascriptC++でガリガリ書かないといけません。

ゼロコンフィギュレーションについては、mbedJSのほうが少しだけ便利です。mbedJSは、Bonjurのhttpクラス、UPnPにも対応しているので、WindowsSafariのFinderからも見つけることができます。
ネットワークに接続しているmbedJSを探す方法 - nyatla@hatena blog



でもIPv6の話をされると、Webmoのほうがきちんと対応しているはずです。(mbedJSはIPv6を扱えない)

WebAPIについて

WebmoのAPIはモータとエンコーダに特化している分、APIの作りが良さそうに見えます。mbedJSはMCU本体に対してAPIを作ったため、ウェブ技術の他にmbedの知識が必要になる問題がありました。

ただ、応答性能と確実性については、有線を使うmbedJSの方が優れている点もあるかなと。
mbedJSは有線なので、APIコール1回の遅延は1~10msです。対してWebmoは最低でも10ms以上はかかると思います。また、無線なので電波状況によっては操作が遅れることがあります。
…でもこれ、WebmoにLANコネクタつければ解決するきがしますね。

内蔵webサーバへのコンテンツ配置については、Webmoでもたぶんできると思います。これができると、Webmoをブラウザのセキュリティ機能を使って、外部サービスと安全に連携できます。
もし無ければ是非つけて欲しい機能です。

なお、mbedJSではアプリケーションボードのテストプログラムが外部コンテンツ連携で実装されていたりします。
mbedJSで使えるmbedアプリケーションボードのテストページを公開しました。 - nyatla@hatena blog



まとめ

Webmo、購入の予定はありませんが大変面白い製品だと思います。
mbedJSでやりたかった無線化、物理的な動作が凝縮されていているところがとても素敵です。
予算がある方は、是非買ってみてください。WebOfThingsはとても楽しいです!


予算がない方は引き続きmbedJSを宜しくお願いいたします。
nyatla.hatenadiary.jp


融けるデザイン ―ハード×ソフト×ネット時代の新たな設計論

融けるデザイン ―ハード×ソフト×ネット時代の新たな設計論

mbed NXP LPC1768

mbed NXP LPC1768