Raspberry Pi

Smart Controller with LINE

LINEから操作できる自宅用スマートコントローラ

Bottle.pyでRaspberry PiをWebサーバにしてLINEと連携させてみた

以前の記事でRaspberry Piをスマートリモコンにすることができたので,最終的にはそれをLINEから動かせたら良いなと思い,やってみました. 要するに,LINEから自室の電気をつけたりエアコンの電源を入れたりできるようにしました,ということです. 何をするのか 具体的には以下のようなステップでLINE↔Raspberry Piの連携を行いたいです. あまり詳しくないなりに知識を絞り出して細かめにステップを分けました. LINEのBotに自分のLINEアカウントからメッセージを送信する WebhookでRaspberry Pi上のWebサーバにhttpリクエストをPOSTする Webサーバ上でhttpリクエストを受け取り,リクエストの内容に応じてローカルのシェルを実行する WebサーバからLINE messaging APIの返信用URLにhttpリクエストをPOSTする Botが自分に何をしたのか報告する 正直WebhookとかWebサーバとかなんとなくでしかわからなかったので始める前にいろいろ読みました. WebAPIについての説明 Webhookとは? それではやっていきましょう. やることは大まかに分けて Raspberry PiにWebサーバ構築 LINE Botの作成・Webサーバとの連携 です. 自分の勉強も兼ねているので以下は時間軸で書いてあります.一つ一つやっているので長くなってますが悪しからず. #用意するもの Raspberry Pi 3 model B 手元にあったのがこれなだけでほかのモデルでもOKです. Macbook (作業用PC) あれば何でもOKです.あったほうがLINE developper登録やファイルの編集がスムーズに行えると思います. RaspberryPi内の何らかのシェルスクリプト 僕の場合は以前作ったスマートリモコン操作スクリプトですが,これは何でも良いと思います.なくてもLINEの返信までは実装できます. 使ったものまとめ python 3.5.3 bottle 0.12 ngrok 2.3.25 LINE messaging API Raspberry PiにWebサーバ構築 テストサーバの作成 さて,Raspberry Pi上にWebサーバを構築する方法はこの世の中に数多に存在します. しかし,私はそのあたりの知識がまったくありません. そこで,タイトルにもあるようにBottleというPython用の軽量なWebアプリケーションフレームワークを使ってWebサーバーを作りたいと思います.どうやら簡単にWebサーバを構築できるみたいです. この記事を参考にとりあえず簡単なhttpリクエストを処理できるテストWebサーバを作ってみます.

RaspberryPiで自宅のシーリングライトに目覚まし機能をつけてみた

スマホのアラームが聞こえてるけどそのまま寝続けてしまい起きたら11時……みたいなことが最近多いです. 聴覚刺激はもう自分の体には効かなくなってしまったと悟り,違う感覚を刺激して目を覚めさせようと思いました. 触覚でも良かったのですが,簡単そうな視覚から刺激してみます.あと光で目覚めると体にいいって聞いたことある気がします.(要出典) なにをするのか 自宅にあるリモコンで操作できる照明を,時刻を指定してスイッチオンします. 具体的には, - リモコンからでる赤外線信号をRaspberryPiに覚えさせ,同じ信号を赤外LEDから発信できるようにする - 上記の操作を指定した日時に実行できるようにする といったところ. 赤外線発信器を作る とてもわかり易い記事があったので参考にさせていただきました. みなさんも 格安スマートリモコンのつくりかた を見てスマートリモコンを作り,自宅のリモコンを学習させましょう. 準備するものは,上の記事の通りのものを秋月電子通商で買いました.RaspberryPiの型だけはRaspberryPi3 ModelBを使っています. 完成したのがこちらです.赤外LEDは僕の場合は1つで十分でした. 赤外線受信モジュールにリモコンを向けて信号を送り,学習をさせます. 送信のpythonスクリプトを実行するとちゃんと部屋の電気が消えたりついたりします.部屋をハックしている感じがとても良い☺️. 次はこのスクリプトを指定時間に実行させます. 指定した時間に信号を送る これはcronというものを使えば簡単に行えます. cronとは定期的にコマンドを実行するためのデーモンプロセスのことですが,詳しくはこちらの記事を.初心者向けcronの使い方. 要は日時指定すれば勝手に実行しておいてくれるやつですね. まず,実行したいコマンドが含まれたバッチファイルを適当なディレクトリに作りましょう. for i in `seq 1 3` do python3 /home/pi/hogehoge/irrp.py -p -g17 -f /home/pi/hogehoge/codes light:on sleep 1s done 1回では失敗する可能性もあるので, 明かりをつけるコマンドを1秒おきに3回送ることにします. 相対パス指定ではcronで実行するときうまく動いてくれないみたいなので絶対パスで指定しましょう. (ここで手こずりました.) この時点でのフォルダ構成はこんな感じです. codesは赤外線受信のコードを使用するとirrp.pyと同じディレクトリに作成される赤外線データファイルです. home/ └ pi/ └ hogehoge/ ├ irrp.py ├ codes └ lightUp.sh ではcronにシェルを登録していきましょう. crontab -e でcronに登録するためのファイルが開けます.初めて起動するときに,好きなエディタを選べと言われるので好きなエディタを選びましょう. そのファイルの末尾に,用途に合わせて #毎日8時にlightUp.shを実行 00 8 * * * sh /home/pi/hogehoge/lightUp.