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

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

mbedJSをインターネットで共有するサービスを作った

mbedを使ったネットワーク電子工作サービスの第一弾として、mbedJS(エェェェェンベッドJS)をインターネットで安全に共有するためのWebServiceを作りました。

追記 2014/10/09

サーバの確保ができましたので、サービスを復旧しました。
ご迷惑をおかけしました。

f:id:nyatla:20140912191420p:plain
MiMic Internet gateway

Webブラウザから簡単にmbedJSをインターネット越しに共有できます。

Getting Started

機材の準備

まずはmbedJSをセットアップしたmbedを用意してください。
mbedにはイーサネットケーブルを接続して、ブラウザからアクセスできるようにしておいてください。
mbedJS - a mercurial repository | mbed

既にmbedJSをセットアップしてあるなら、特に更新の必要はありません。


f:id:nyatla:20140912212456p:plain


共有サービスのWebサイトを開く

MiMic Internet gatewayを開きます。
注意書きの内容で大丈夫そうならmbedJSの共有を始める押してください。

f:id:nyatla:20140912191420p:plain


接続情報の入力

mbedJSのIPアドレスローカルアドレス)を入力して共有を開始を押してください。
f:id:nyatla:20140912205141p:plain

共有の開始

共有システムに接続すると、シェアURLが発行されます。
シェアURLはインターネットからあなたのmbedに接続するための一時的なアドレスです。


f:id:nyatla:20140912205259p:plain

シェアURLは、共有サービスのWebページを閉じるまで(共有システムから切断されるまで)です。使用中はページを閉じないように気を付けてください。


クライアントからの接続

mbedJSのプログラムのMcuインスタンスのaddress引数にシェアURLを設定して実行すると、共有システムを経由してmbedを操作することができます。

f:id:nyatla:20140912210134p:plain
画像はprocessingの例ですが、JavascriptJavaについても同様に指定ができます。



リモートAPI対応のためクライアントを更新しましたので、最新のクライアントをGithubからダウンロードしてください。

JavascriptAPIについては、http://nyatla.jp/mimic/js/current/mbedJS.all.jsを使用してください。(mbedJS同梱のAPIは対応していません。)




対応しているバージョンは以下の通りです。

共有の終了

Webブラウザを閉じるか、共有を終了ボタンを押してください。
なお、再度共有を開始した場合はシェアURLが再発行されることに注意してください。


サービスはテスト中&さくらのレンタルサーバお試し期間中のため、予告なく停止することがあります。止まってるのを発見したらTwitterの@nyatlaまでお知らせください。

遊び方

mbedJsIGSは以下の様な遊びを想定したシステムです。

  1. インターネット越しに安全にmbedJSを操作する。
  2. 他人の所有するmbedをネットワーク経由で借りる。
  3. Ustreamなどと併用してデバッグをリモートから手伝ってもらう。
  4. 人命に関わったり、損害が出ても泣かない程度のシステムを操作する。


以下の様な遊び方は想定していません。

  1. 長時間(1日以上)同じセッションを使い続ける。
  2. 多人数で1つのmbedを操作する。
  3. 人命に関わるシステム、停止するとまずいシステムでの使用。


この辺はWebService次第なので、別途必要な場合はご相談ください。



仕組み

どうやって動いてるのかとか、技術のお話です。


mbedJSはWebベースのシステムなので、全て既存のWeb技術のみで構成されています。共有システムの本体はレンタルサーバで動いてます。これは単純なWebsocketサーバです。mbedJSもWebsocketサーバなので、ブラウザを使ってWebsocketパケットを中継させます。

f:id:nyatla:20140912221306p:plain

共有システムでは、コントロールポイント、インターネット、エンドポイントの3つのネットワークを跨ぎますが、全てインターネットの方向に接続されるので、mbedJSをそのままインターネットに接続するよりも安全です。また、レンタルサーバを使用することで安価にインターネットの攻撃からシステムを守ることができます。

mbedJSの制御プログラムはブラウザで実行されるので、エンドポイントでmbedJSを公開するときにサーバから動的にダウンロードします。mbedJSのファームウェアを書き換える必要はありません。

サーバはコントロールポイントから見るとローカルのmbedJSと全く同一に見えます。そのため、接続先のアドレスを変えるだけで全く同じプログラムを利用することができます。


セキュリティについては、「ブラウザを落とせばきれいさっぱり全部なくなる」仕様なので、一時的にmbedをネットに公開するだけならとても安全です。

インターネットを跨ぐので通信速度はさすがに遅くなりますが、100Hz程度のRPCを実行することができます。


mbed NXP LPC1768

mbed NXP LPC1768

Seeeduino Arch〈 mbed 〉

Seeeduino Arch〈 mbed 〉

mbed用イーサネット接続キット

mbed用イーサネット接続キット