おはようございます!!
先日、こちら↓の記事を書かせていただきました。
スマートリモコンの学習キットの「sLab-Remo2」ですね!!
前回は【クラウド利用①-5編】ということで、人感センサーの検出をトリガーにして、赤外線リモコン動作とメール通知ができるようになりました!!
・・・いや~まさか5回まで長引くとは!
でも、のんびり着実に進めていきたいと思います!!・・・そろそろ1年ですが(大汗)
今回は新しいところ(最近続きばかりで・・・)で、屋外からのプッシュ通知ですね!!
目次
スマートリモコン「sLab-Remo2」(エスラボリモ2)【Scratch・Arduino対応】環境センサ・カメラ付《IoT電子工作・AI学習・プログラミング》
こちらです!
4,290円でこれだけ遊べたら安いものです。(・・・と奧さんに言われています)
ちなみに、本キットの心臓部ESP32-DevKitCですが、Amazonさんで1,500円ぐらいで普通に買えますね。
Espressif社純正 ESP-WROOM-32D開発ボード ESP32-DevKitC-32D
壊してしまったら一大事!と思ってましたが・・・昼ごはん1回我慢すれば買えます(泣)
では、スタートします。
sLab-Remo2【クラウド利用編】
公式メニューのクラウド利用に入ります!(こちら)
これまでは自宅内での学習実験でしたが、ここからはネットに出ていくわけですね。
クラウド利用する電子工作について説明します。
クラウドを利用することで「メール通知」や「屋外から家電制御」、「AIスピーカ連携」など多くのことができるようになります。
仕組みについて以下に説明します。5-1.人を検知してリモコン制御とメール送信 (IFTTT)
5-2.屋外からの通信(プッシュ通知)
5-3.AIスピーカ連携/屋外スマホ/GPS連携
5-1は前回で終わりましたので、今回からは5-2です。
5-2.屋外からの通信(プッシュ通知)
こちらですね。
IoT端末をクラウドに接続する通信プロトコルはMQTT、HTTP、WebSocket などいくつか利用されていますが、今回はMQTTを用いてクラウドに接続する電子工作を行います。
MQTTでクラウドに常時接続することで屋外からの通信を可能にします。
利用するクラウドについては無料で一定量まで利用できMQTT機能だけでなくHTTPでもアクセスできるREST-API機能を有している「Beebotte」を利用します。REST-API機能はHTTP通信で容易に連携できるため多くのシステムで用いられています。また、Beebotteは1日に50,000メッセージを無料で利用できますので、学習などの利用なら問題なく利用できます。構成イメージを以下に示します。
いきなり専門用語が山ほど出てきました!!
まずは、何をやるのか?理解しておく必要がありそうです。
MQTTとは?
ググってみると・・・なんのことやらサッパリわかりません。
一番わかり易かったのはこちらですね。
・IoT開発未経験者向け! IoTで注目を浴びるプロトコル、MQTTとは?
MQTTとはMessage Queue Telemetry Transportの略で、publish/subscribeモデルという仕組みに基づいてつくられた軽量なメッセージプロトコルです。ネットワークが不安定な場所や、性能が低いデバイスでも動くように軽量化されているのが特徴で、TCP/IP ネットワークをベースに作られています。
電子メールに対してのショートメール(SMS)みたいなイメージでしょうか?(無理矢理・・・)
今回のような小規模なシステムが扱うのには最適みたいです。
MQTTTの仕様についてはリンク先のこちらがわかりやすかったです。
・MQTT の仕様
Publisher は、メッセージを MQTT Server へ送るとき、送ったメッセージがどの Subscriber に届くのか、何台の Subscriber に届くのかなど、一切関知しません。一方、Subscriber は、メッセージがどの Publisher から送られて来るのかを知ることなく、欲しいメッセージを受け取ります。このお互いを知らない Publisher と Subscribe を繋ぐのが MQTT Server です。
メールというよりは、出版でしょうか?
荷札(Topic)に必要な情報(メッセージ)を書いておけば、それを必要な人が読める!みたいな??
・MQTTではデータの送受信をPublisher(送信者)、
Subscriber(受信者)の2つの役割にわけて行います。
・PublisherはMQTTブローカーにデータを送信します。
・SubscriberはMQTTブローカーにデータを受信しに行きます。
なんとなくイメージだけは・・・こんなのもありますね。
なかなか・・・そしてWebブラウザで使っているhttp通信との比較表がありました。
MQTTは非同期なので、サーバー側の障害によって送信できなかったデータを復帰後に再送信することができます。データ量のイメージとしては、HTTPがトラックなら、MQTTはバイクという感じでしょうか。
トラック!バイク!!・・・なんとなく小回りが効くというイメージがわかりました。
REST-API機能とは?
これは・・・こちらですね。
・0からREST APIについて調べてみた
RESTful API(REST API)とは、Webシステムを外部から利用するためのプログラムの呼び出し規約(API)の種類の一つで、RESTと呼ばれる設計原則に従って策定されたもの。RESTそのものは適用範囲の広い抽象的なモデルだが、一般的にはRESTの考え方をWeb APIに適用したものをRESTful APIと呼んでいる。
はい・・・さっぱりわかりません。
RESTful APIでは、URL/URIですべてのリソースを一意に識別し、セッション管理や状態管理などを行わない(ステートレス)。同じURLに対する呼び出しには常に同じ結果が返されることが期待される。
う~ん・・・
RESTなものとそうでないもの。これは比較しないと・・・と思ったら、ありました!
上記の処理では、ユーザ情報の作成・取得・更新・削除に対して一つの「/UserInfo」をURLに対応づけしている。
ユーザID等は「/UserInfo」ともにURLに含んでシステム側に渡している。
作成・取得・更新・削除についてはHTTPの一般的なリクエストメソッドを使用し、「GET」なら取得、「POST」なら作成、「PUT」なら更新、「DELETE」なら削除のように処理を決定する。
HTTPの一般的なリクエストメソッドを使用することもRESTなAPIである一つの要因である。
なんとなくイメージが掴めました。なんとなくですが・・・
Beebotteとは?
こちらですね!
IFTTTのようなWebサービスでしょうか?
ただでさえ専門用語でわからないのに、英語なのはキツイですね。
こちらに詳しく書いてありました!
・ Beebotteとは?
BeebotteはMQTTブローカ+REST API+Web Socketを提供するサービス。 無料アカウントでは50000メッセージ/日まで使える。
まさに上の2つの機能をWeb上で実現するサービスだったんですね!!繋がりました!!
そして、この後に実際の使い方が書いてありました!素晴らしい!!
まとめ
申し訳ありません。
今回は基礎知識を集めただけでタイムアップです!!
次回は屋外からの通信(プッシュ通知)の続きでBeebotteの利用設定を行います。
以上です!!
まるで知らない国を旅行しているようで辛いです。
そういえば、昔の電子工作って日本のデバイスやシステム(日本語マニュアルあり)で完結してましたし、インターネットに出ることもなかったんですね。
英語はほとんど必要ありませんでした。
今は英語を熟知していないと厳しいですね・・・いや、厳密には英語と中国語かも?
(おわり)