Do ButtonでRaspberry Piを操作する
この記事はおうちハック Advent Calendar 2016の19日目の記事です。
目的
エアコンをプログラマブルに操作したい、という動機のもとに「任意のタイミングでRaspberry Piを手軽に操作する」ことを実現します。このtipsは下記のような目的にも使えます。
・任意のタイミングでRaspberry Piに命令を出したい
・ユーザが指示したときに特定サービス、コマンドを実行したい
必要なもの
・Raspberry Pi か 常時起動可能なPC
(Apache HTTP Serverが動けばよいので、WindowsでもLinuxでも可能)
・グローバルIPアドレス
(ルーターのポートフォワード等の機能で外部からRaspberry Piにアクセスできるようにしておく)
・iOS端末もしくはAndroid端末
実装方式概要
・Do ButtonからHTTPリクエストをRaspberry Piに送信
・ApacheにてDo Buttonからのリクエストを受け付け、ApacheのSSI機能を用いてRaspberry Pi上でコマンド実行
設定方法
設定は下記の2つに対して必要です。
・Do Button
・Apache HTTP Server
Do Buttonの設定
IFTTT(iOS)(Android) をインストールの上、下記の通りに設定。
下記はiOS ver3.1.1にて確認
参考:IFTTT Help center
■設定一覧
This:Button widget
That:Maker
URL:http://[RaspberryPiのグローバルIPアドレス]/filename.shtml
Method:GET
Content Type:text/plain
Apache HTTP Serverの設定
下記の設定手順、ファイルの変更内容を参考に設定を入れ、SSI機能を有効にする。
下記はRaspbian Jessie(Debian8)、Apache 2.4.10にて確認
参考:Apache チュートリアル: Server Side Includes 入門
①Apache HTTP Serverをインストールする
$ apt-get install apache2
②SSI機能を有効にするために設定ファイルを編集する(下記参考)
$ vi /etc/apache2/apache2.conf
③SSI機能の有効化
$ a2enmod include; a2enmod cgid
④Raspberry Piに実行させたい内容をコマンドとしてshtmlファイルに記載(下記参考)
$ vi /var/www/html/filename.shtml
⑤Apache HTTP Serverを再起動する
$ systemctl restart apache2
<Directory /var/www/>
(~~省略~~)
Options +Includes # この行を追加
</Directory>
<!--#exec cmd=“/path/to/cmd (any option)" -->
デモ動画
Raspberry PiからIRKitに連携し、エアコンを操作するデモ動画です。
右下の青色のLEDがIRKitです。
https://www.youtube.com/watch?v=YiEAQL1TJ2Y
補足
・ボタンを押してからの遅延は5秒程度です。(ちなみにDo ButtonのパケットはアメリカのAWSから来ます)
・暗号化も何もしていないので、このままでは途中経路でパケットをのぞき見されたら誰でもあなたの家のRaspberry Piにあらかじめ設定した操作を実行できます。気になる場合はオレオレ証明書を作成してhttpsリクエストを受けることで回避可能です。
・Do Buttonから送信したHTTPリクエストのステータスコードがエラーだとIFTTTから"エラーが起きました"メールが来ます。
Author And Source
この問題について(Do ButtonでRaspberry Piを操作する), 我々は、より多くの情報をここで見つけました https://qiita.com/reo0408/items/44418ef2d5c7172b9b7d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .