PiとIBMのBluemixを接続し、Watsonのサービスを利用して遊んでみることにしました。※本記事は2016年6月17日に掲載した記事の翻訳を一部更新したものです。執筆時点の情報をベースにしており、最新ではない可能性があります。3を発送し、IoT開発者たちを熱狂の渦に巻き込みました。Watsonをずっと試してみたいと思っていたので、今回ちょうど良いきっかけになりました。3を入手できた非常にラッキーな開発者の1人として、そして、新しい技術が登場した際にいつもしているように、今回も色々試してみた体験をシェアすることにしました。Watson、Bluemixと組み合わせて使う方法を解説する連載の1回目です。PiをIBMのクラウドサービスに接続するさまざまな方法に着目し、実際にうまくいかなかったときに見つけたテクニックも紹介していきます。Piが眠ったままになっている人には強くおすすめします。Pi上で次のコマンドを実行します。IoTプラットフォームのインストーラーをダウンロードします。https://github.com/ibm-messaging/iot-raspberrypi/releases/download/1.0.2.1/iot_1.0-2_armhf.deb次に、このコマンドを実行してインストールします。IoTプラットフォームサービスが自動的に実行されます。Piが起動するたびに、このサービスが自動的に実行されます。本当に動いているか確認したい場合は、次のコマンドを実行します。status以下のようなレスポンスが返ってくるはずです。Piデータをこの段階で見られます。データを見たい場合は、以下を入力します。PiのIDと閲覧先のURLが返ってきます。PiのCPU温度やその他のクラウドの統計を確認できます。違う方法でデータを扱えるIBMのBluemixを設定しましょう。Bluemixログインページに進んで、Bluemixにログインします。アカウントを持っていなければ、このページでIBMのIDとBluemixの登録ができます。Bluemixが読み込まれたら、右上のアカウントアイコンをクリックして「region」を選択します。Bluemixがregion内にスペースの作成をリクエストしてきたら、それに従います。ここではスペース名を「dev」としました。APIs」をクリックして、アプリケーションに最適な初期サービスを見つけます。Platform」サービスを見つける必要があります。Platform」と入力して検索します。どちらでも結構ですが、見つかったらアプリケーションに必要なこのサービスを選択します。次の画面で「Create」をクリックします。Name」を修正したい場合は変更できます。Service」など好きな名前を付けられます。Dashboard」を選択します。Piを新しいサービスに追加できます。type」をクリックします。新しい画面が表示され、デバイスタイプの作成かゲートウェイタイプの作成かを問われます。ここではデバイスタイプを作成します。最後に、デバイスタイプに名前をつけます。はじめの項目はAPIなどで使うデバイスタイプ名ですので、たとえば「my-pis」や「iot-sample-devices」のようにダッシュで区切った小文字で名前をつけます。その下の項目で、詳細を記入できます。Pi)ごとに項目に記入し、各端末の特徴を定義します。デバイスタイプでどの端末データを記録したいかなど、好きなように設定します。デフォルトのモデルタイプを設定します。B」がこのデバイステンプレートのメインモデルになるよう設定しました。JSON形式で自身のカスタムメタデータも追加できますが、今回は簡単に進めるため、説明は割愛します。Device」の画面に戻りましょう。今度は新しいデバイスタイプを選択します。Device」が選択されていることを確認して「Next」をクリックします。Pi用の個別のデバイス情報をBluemixにセットアップします。デバイスに(システム内で重複しないように)固有のIDをつけます。「PiBrain」などです(自由に名前を付けるか、図中の名前をそのまま使っても構いません!)。モデルは先ほど設定したものがデフォルトになっています。違うモデルに変更したい場合は、変更してください。すべて正しく入力できたら「Next」をクリックします。デバイスに格納したい特定のデータがなければ、メタデータ関係はスキップできます。次に認証トークンを設定します。認証トークンは好みのようにカスタマイズして定義することも、ブランクのままにしてシステムで自動生成することもできます。認証トークンをカスタマイズしたい場合には、次のガイドラインに従ってください。(ハイフン、下線、ピリオドのみ)を合わせたもの。トークンは重複、辞書のワード、ユーザー名、その他定義済みの数列は避けることヒント:トークンのカスタマイズを考えているなら、LastPassのようなランダムパスワード生成プログラムが便利です。私の場合は、システムに自動生成してもらいました。詳細を確認して正しければ「Add」をクリックします。最後の画面では、生成された(またはカスタマイズした)認証トークンを含む、デバイスの詳細情報がすべて表示されます。Piにアクセスしないと確認できないので、保存場所をしっかり覚えておいてください。すべての詳細情報をしっかりと保存したら(正しくできましたね?)ポップアップウィンドウを閉じます。PiをBluemixに設定したばかりのデバイスに接続しましょう。serviceを止める必要があります。configファイル(まだ閉じていない場合は、ファイルを保存するときに作成されます)を開きます。/etc/iotsample-raspberrypi/device.cfg先ほど保存した詳細情報は以下のようになっています。YOURTOKENWOULDBEHEREこの詳細情報をconfigファイルに以下の形式で入力します。file簡単なテキストエディターに記入してコピー後、「Ctrl+V」でBluemixに貼り付けるのが一番簡単な方法かもしれません。「Ctrl+X」で変更を保存し、「修正したバッファを保存」するかを問われたら「Y」を入力します。ファイル名は変更せずに同じファイル名(/etc/iotsample-raspberrypi/device.cfg)のままにしてください。正しいファイル名が表示されたらenterを押してください。PiにNode-Redを設定するNode-REDをインストールして、さらに進みましょう。Node-Redは、複雑なコーディングをせずにデバイスとデータに接続して作業できる環境です。Piに以下を入力してすべてを最新バージョンにします。IoTで提供されていますが、正しく動作させるには一度すべてを更新することが重要です。update続けて、次も実行します。dist-upgradeを実行する必要があります。私はこれを実行するまで表示されませんでした。Piなら、標準で提供されているはずなのでNode-REDのインストールは必要ありません(最後のコマンドの実行時に最新バージョンに更新されます)。Raspbianが最新バージョンでなければ、Node-Redのインストールが必要になります。関係があるすべての周辺プログラムをインストールしてから、Node-Redをインストールします。python-rpi.gpio続いてnpmを使ってNode-Red自体をインストールします。IoTのノードにアクセスします。node-red-contrib-ibm-watson-iot(上のコマンドは、私が実行したときには動かず、スクリプトがnodejsではなくnodeを参照してエラーになり失敗しました。PiのローカルIPアドレスが必要になります。以下を使って見つられます。-Iもっと詳細情報が知りたければ、次のコマンドを実行します。PiでNode-REDを起動できます。node-red実行すると、次のように出力されます。Pi上でhttp://127.0.0.1:1880に接続するか、同じネットワークにあるコンピューターからhttp://{your-pi-ip-address}:1880に接続すると、Node-REDがスタンバイしています。インターフェイスで確認してみましょう。IoTが表示されています。Piのコマンド待ちの状態です。PiをBluemixに接続することです。IBMはインポートするだけでクイックテストができるサンプルのノードセットを提供しています!IBMからクリップボードにJSONをコピーしてください。以下のような感じで始まっています。Node-REDのClipboardの順に進みます。JSONデータをテキスト領域にペーストして、OKをクリックします。インポートしたノードはマウスカーソルについていくので、Node-Red上の適切な場所でクリックしてください。Piに接続できるようNode-REDを設定します。続いて、ポップアップで表示される「Registered」をクリックし、「Credentials」の並びにある編集アイコンをクリックします。Piのdevice.cfgファイルで入力したように、詳細情報を入力します(Nameは任意)。入力できたら「Add」をクリックします。それから「OK」をクリックします。右上にある「Deploy」をクリックします。deployed」のメッセージが表示されます。右上の「Debug」タブをクリックして、ノードからの出力を確認します。2つの形式(ストリングとJSONオブジェクト)で温度を示すデバッグのコンソールメッセージが表示されます。serviceを終了します。Piの情報が完全に取り込まれているか確認するには、次のページに接続します。https://{YOURORGANISATIONID}.internetofthings.ibmcloud.com/dashboard/#/overviewここから、左側のメニューの「Devices」オプション(上から2番目のメニュー)をクリックします。Piデバイスはここにリストされているので、クリックして詳細を開きます。データのストリーミングが完了しました!Node-Redフローを調節する各ノードの設定を編集して、Node-REDフローをどうやって実行するかを調節します。timestampノードをダブルクリックすると、このノードが実行する頻度を変更できます。実行の頻度を高くしたり、低くしたりと間隔を変更できます。次のように間隔を30秒に変更しました。「Deploy」をもう一度クリックして変更を適用し、少し実行をゆっくりにします。Piを接続できるようになりました。Node-REDを使うと、クラウドとさまざまなAPIを結びつけ、多くの特徴と機能性を持つプログラムを構築できます。次の記事では、さらに突っ込んで、クラウドとBluemixのメリットを生かす特色ある方法を続けて紹介する予定です。Diner」のファウンダー。SitePointではHTML/CSSチャンネルのエディターであり、インターネット関連情報、仮想/拡張現実などに関しての寄稿者です。PremiumとO'Reillyのインストラクター、メタ・パイオニア、そしてテックデモで新しいことを試すのが大好きなフリーランスのWeb開発者と広く活動しています。