記事広告で解決できることって?
記事広告で解決できることって?
2015.10.09

Web開発者でも簡単に扱えるマイコンボードTesselでMilkcocoaを使う(遠隔Lチカ編)

平間 清彦

Tesselの導入

以下の記事で導入からLチカまでは5分経たずに終わるかと思います。本当にすぐできます。

Web制作者にもチャレンジできるIoT入門~Tesselの基礎~ | HTML5Experts.jp

必要なものは作業用パソコンとTessel(と付属のUSBケーブル)だけというお手軽さです。
またTesselは、Raspberry Piのようにマイコンボードの中のファイルを編集するのではなく、作業用パソコンでコードを書いて実行時に転送するという仕組みになっています。開発に慣れているパソコンとエディタで開発できるのが、個人的には結構嬉しいです。

blg-20150610-milkcocoa-for-tessel-pc.jpg

Milkcocoaの導入

ここからはMilkcocoaを導入していきます。
Milkcocoaは普通のNode.js SDKとは別に、Tessel用のNode.js SDKを用意しているのでそちらをインストールします。

$ npm install milkcocoa-tessel

Milkcocoaを使う前に、TesselをWifiに繋いでおきましょう。これも簡単で、以下のコマンドを打つだけでWifiに繋いでくれます。

$ tessel wifi -n (SSID) -p (パスワード) -s wpa2

-sの暗号化規格は、WPA2ではない場合があるので、その場合は作業用パソコン側でネットワーク環境設定を見るなどして確認してください。

blg-20150610-milkcocoa-for-tessel-wifi.png

Wifiに繋いだら、Milkcocoaオブジェクト(メソッドを呼ぶための変数)を作成してAPIを使い始めます。
Milkcocoaに登録していない方は、Milkcocoaで登録をして、アプリの管理画面のapp idを控えておいてください。

// mlktest.js
var tessel = require('tessel');
var MilkCocoa = require('milkcocoa-tessel');

// {your-app-id}の部分は、Milkcocoaに(無料)登録してアプリを作成した際に生成されるアプリ固有の文字列です。
var milkcocoa = new MilkCocoa("your-app-id.mlkcca.com", {useSSL:false});

1点だけ、いつもの(初見の方はすみません……)Milkcocoaオブジェクト作成とは違うことに気づくかと思います。オプションで、useSSLをfalseにしています。これはSSL(TLS)通信を使用しないようにします。

Tessel(無印)でMilkcocoaを使うとSSL認証でエラーが出る(Tessel2では使えそう)

MilkcocoaはSSLを使って通信していますが、TesselでSSLを使うと通信に失敗してしまいました。
これは以下のTesselの問題に起因しているのではないかと思われます。以下のIssueで「俺も俺も」と同じ問題を抱えている方がちらほらいました。

SSL Validation Issue (Error -40) to deny.io · Issue #334 · tessel/t1-runtime

ただ、Tessel開発者が数日前のコメントで「Tessel2ではLinuxでも標準的に使われているSSLライブラリを使います」みたいに言っているので、Tessel2ではオプション無しで使用できるかと思います。

There were plans to replace axTLS with PolarSSL / MbedTLS when it was announced that it would be relicensed from GPL to Apache, but that version is still not available.

SSL is one of many reasons Tessel 2 runs Linux, with standard Node and OpenSSL.

引用元:SSL Validation Issue (Error -40) to deny.io · Issue #334 · tessel/t1-runtime · GitHub

要するに、「Milkcocoaは、Tessel(無印)では我慢してSSLをoffにして使って下さい。Tessel2が発売されたらSSLのままで使えますよ」ということです。