SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Raspberry Pi Zeroではじめよう! おうちで楽しむIoTレシピ

Raspberry Pi Zero WとAzureで、Webから操作できるIoTクリスマスツリーを作ってみよう

Raspberry Pi Zeroではじめよう! おうちで楽しむIoTレシピ 第4回


Web Appの作成と設定

 MQTT PublisherとなるWebアプリはPHPで実装されていますので、こちらをAzureのサービスであるAzure App Serviceで簡単にセットアップして、動作させてみましょう。

 まずは、Azureポータルを開き、「全てのリソース」→「+追加」ボタンを押してWeb Appを新規で追加します。

 次に、アプリ一覧ページでマイクロソフト公式の「Web App」を選択します。アイコンが表示されない場合は、検索バーで「Web App」と入力し、検索します。

 以下の情報でDockerコンテナーを作成します。

  • アプリ名:ユニーク(一意)となるアプリ名
  • リソースグループ:新規作成
  • OS:Linux
  • ランタイムスタック:PHP5.6

注意

 アプリ名は、「http://アプリ名.azurewebsites.net/」のようにサブドメインのURLとして使用されるため、ユニーク(一意)である必要があります。

 作成ボタンを押した後、数分程度でDockerコンテナー環境がデプロイされます。

料金プランについて

 Web Apps のデプロイ時、料金プランはデフォルトの「S1 Standard」が適用されています。必要に応じて変更して下さい。

 今回は最安価の「B1 Basic」プランを適用することをおすすめします。適用方法については、「App Service」→ 「スケールアップ」→「価格レベルを選択」で適用したい価格レベルを選択し、「選択」ボタンをクリックします。

Web SSHの起動

 Dockerコンテナーへ簡単にアクセスするために、WebブラウザーからSSHができるツール「Web SSH」を使います。「App Service」→「開発ツール」→「SSH」を選択し、移動をクリックします。

 Webブラウザー上からSSHできるようになります。

 SSHのサポートの詳細については、公式ドキュメントをご確認ください

Gitのインストール

 今回作成したWeb Appの、Dockerコンテナーで動作しているLinuxのOSはUbuntuのため、apt-getコマンドを使ってパッケージリストの更新を行います。その後、Gitをインストールします。

# apt-get update
# apt-get install git

 gitコマンドでWebアプリ用のプログラムをコピーします。そのとき、デフォルトのドキュメントルートとして指定されている/var/www/html配下にコンテンツが格納されるように、コピー先のディレクトリ名を指定します。

 その際、/var/www/htmlにデフォルトで用意されているページhostingstart.htmlを削除してから作業します。

# rm /var/www/html/hostingstart.html
# git clone https://github.com/manami-taira/mqtt-xmas-tree-webapp.git /var/www/html

 /var/www/htmlのディレクトリに以下のファイルが配置されていたら成功です。

# ls -1 /var/www/html
LICENSE
README.md
buttons.css
index.php
phpMQTT.php
test_publisher.php
title.png

 MQTT Brokerについては、今回はEclipse Foundationが無償で公開しているSandboxを使用します。そのため、サンプルプログラムindex.phpの、MQTT Brokerとして指定されているURLをSandboxのURLに変更します。

 viコマンドでindex.phpを開き、URLをSandboxのURLであるiot.eclipse.orgに変更します。

# vi /var/www/html/index.php
$mqtt = new phpMQTT("example.com", 1883, "Xmas Tree WebApp");
↓
$mqtt = new phpMQTT("iot.eclipse.org", 1883, "Xmas Tree WebApp");

Sandbox使用時の注意点

 今回は「まずは動かしてみる」観点からSandboxを使用しています。SandboxのURLであるiot.eclipse.orgは、あくまでもテスト目的のためのMQTT Brokerです。もしテスト利用ではなく、恒久的に使用したい場合、Active MQなどのMQTT Brokerを別途準備してください。

 Sandboxを使用するとき、指定したtopicが他のユーザーと同一で、かつ同一タイミングで実行すると、メッセージの送受信に失敗する恐れがあります。そのためtopic名は必要に応じて変更してください。今回、topic名はtreeにしています。こちらを適宜変更して下さい。

 また、今回使用したEclipseのMQTT Brokerの詳細については以下をご覧下さい(Sandboxを無償で提供している性質上、予告なくメンテナンスが入り繋がらなくなることがありますのでご注意ください)。

次のページ
Subscriberの設定

この記事は参考になりましたか?

Raspberry Pi Zeroではじめよう! おうちで楽しむIoTレシピ連載記事一覧

もっと読む

この記事の著者

平 愛美(タイラ マナミ)

 熊本県出身のITエンジニア。2児の母で、趣味は写真とグルメ。最近はRaspberry Pi、Arduinoを使った家庭内IoTについて日々研究するIT系母ちゃんとして活躍中。主な著書は、『改訂3版 Linuxエンジニア養成読本』(寄稿、技術評論社 刊)、『Linuxシステム管理標準教科書』(共著、LPI-Japan)など。 ブログ:Mana Blog Next Twitter:@mana_cat

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10596 2018/01/15 20:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー