IoT
IoT
マイコン同士がインターネット接続することで多種多様なことが実現可能になる。
ここでは、インターネットにデータを送信すること、また、インターネット越しにデータを取得することを扱う。
具体的には
ThingSpeakへのデータ送信
ThingSpeakからのデータ受信
LINE Notify
(IFTTT, Zapier)
Raspberry Pi上にウェブサーバの設置
を取り上げる。
ThingSpeakは開発論と共通。LINE Notifyやウェブサーバは必要に応じてチャレンジ。
ThingSpeak
開発論のテキスト(今年分がまだないため、昨年のものにリンクしています)を参照のこと。ラズパイからの外部との連携のメジャーな手段。
LINE Notify
参考:【 Python 】Line Notify の使い方解説 – メッセージ、画像を送る方法 –
ラズパイの外部端末との連携を考え始めると、スマートフォンに通知をしたくなるかもしれない。そういう時に使える手段。
ラズパイ側からLINEにメッセージを送りつけることができる。
ラズパイ側にLINEで命令をしたいなどの用途では、LINE Notifyでなく、LINE botを立てるなど別の手段が必要となる。
IFTTT, Zapier
多様なサービスを連携するためのサービス。
スマートフォンやウェブサービスを繋いでくれるが、ここにうまくラズパイも繋げば、使えるシーンは出てきそう。
興味があれば調べてみよう。
IFTTTがこのジャンルの定番だが、古くて一部のサービスが使えなくなってたりする。Zapierは新しく、今このジャンルでがんばってるが、Webhookが有料など、制約も大きい。
複数端末の連携
ここまででThingSpeakを介してラズパイへの/からの送受信は確認できたので、複数のマイコンの連携への活用を考えてみよう。
離れた場所に複数のマイコンがあり、一方で何かをセンサが検知したら、他方で何かが動く、といった連携をさせることができる。
(実際には手元にはラズパイが2台ないので、基本的には原理の理解と個別の動作のテストになる。1台のラズパイ上で2つの独立したプログラムと回路を動作させてテストしたり、ラズパイ代わりにPCと連携して動かしたり、一時的に友人のラズパイを借りて試すこともできる。)
<実験>
例えば、一方のラズパイで取得した明るさの値によって、他方のラズパイでLEDの明かるさを変える、とか。
ただしそれぞれの端末でThingSpeakにアクセスする間隔の都合上、リアルタイム性に欠ける(数分待てばいいので、そんなもんだと思えばそれでよい)
ラズパイにウェブサーバを立てる
(以下はやりたい人がやればよい)
グローバルに公開するには推奨しない手段だが、LAN内でのテストであれば、ラズパイにウェブサーバを立ててしまう手がある。
ラズパイ上のデータを、ThingSpeakに送るのではなく、自らウェブ経由で公開する。他の端末からは、ThingSpeakを介することなく、直接ラズパイにデータを聞きに行くことができる。
(Apacheかnginxかはお好みで)
ラズパイをウェブサーバにして、自ら作成したプログラムで出力したファイルを、ウェブ公開フォルダに置く。
すると外部からそのファイルにHTTP経由でアクセス可能になる。
いろいろやりようはあるが、最もシンプルには、自分で決めておいたファイル名のテキストファイルにデータを保存しておく。
技術的には、Pythonからファイルの読み書きができればOK(そこはぐぐって。例えば「Pythonでファイルの読み込み、書き込み(作成・追記)」)
渡すデータをファイルに保存しておいて、決まったURLを読めばデータが得られるという形→これがAPIということ!(どんなURLにアクセスすると、どんな形式で、どんなデータを得られるかを定めたもの)
APIを汎用性を持って、他人にも使えるように、となるとちゃんとしないといけない。ひとまず今は自分がわかればいいことにする。
ここまでで、ThingSpeakを使わずにラズパイの状態を別の端末(ラズパイやPC)から取り出せる状態になる。
<実験>
先にThingSpeakを使って行った明かりの調整を、ThingSpeakを使わずにやってみよう。
ミニミニプロジェクト
複数端末の連携のアイディアを考えてみよう。
ある端末でこれを検知したら、もう一方の端末でこれをする、など。ひとまず現段階で実際のセンサやデバイスで実現できなくてもいいので、アイディアを考えて、一部は他の簡潔な手段で代替して構わないので、何か企画をデモできるものを作成してみよう。
※ただしこれは発表会などは行わない。
個人課題として作成して、その記録をレポートにまとめる。