「IFTTT」タグアーカイブ

さくらのIoTモジュールで郵便ポスト検知 〜ユー・ガット・メール〜

すき 0
0

我が家はポストのある階とよく出入りする入り口の階が違うので郵便物や不在届を何日も放置してしまいます。。。 🙁 

そこで郵便物が届くとスマホに通知がくるシステムを構築しました!構築と言ってもいつもの手作り丸出しハンドメイドで安く解決です(*´ω`*)!

概要

通信にはさくらのIoTプラットフォーム(β版)を使用しました。郵便ポストが空くことで光が入るのでCdSセルで検知します。光を検知するとさくらのIoT通信モジュールでプラットフォームにデータ送信します。Node-REDでプラットフォームのデータを受信してIFTTTにスマホ通知のリクエストをしています。

↓こんな感じ

 

ユー・ガッタ・メール #さくらのIoT #ifttt

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

構成

マイコンでCdSセルの電圧を測り光を検知します。CdSセルは光が当たると抵抗値が小さくなり、暗くなると抵抗値が大きくなります。CdSセルと抵抗(10kohm)で電圧(1.8V)を分圧しているので、明るくなるとCdSセルの電圧が下がり、暗くなると電圧が上がります。

マイコンとさくらのIoTモジュールはI2Cで通信します。

部品

  • マイコンAdafruit Pro Trinket – 5V 16MHz

  • レベルシフタ

  • CdSセル

  • 抵抗(10kohm)

  • モバイルバッテリー
    ON/OFFボタンがついていて負荷がなくてもスリープしないので便利です。

  • さくらの通信モジュール(LTE)β版 ブレイクアウトボード


さくらのIoT Platform β版

α版でも利用していたさくらの通信モジュールのβ版 を使用しました。β版でも通信料は無料でLTE通信を使用しています。

以下はさくらの通信モジュール用ブレイクアウトボードのピン配列図です。

さくらの通信モジュールβ版のロジックI/Oピンは1.8V系のためマイコンとモジュールのI2C通信線の間にはレベルシフタモジュールを挿入しています。ハイレベル(マイコン)側の電源は5V、ローレベル(さくらの通信モジュール)の側の電源はLDO_OUT(1.8V)としました。

WAKE_INピンをGNDに落とすとモジュールがスリープモードに入り省エネなのですが残念ながらβ版では機能しません。。
2017/4/18の正式版サービス開始にともない、ファームウェアアップデートでスリープモードが使えるようになりました!詳細は追記で!

Arduino IDE環境の設定

さくらの通信モジュールに接続したマイコンをArduino IDEでプログラミングします。専用ライブラリはArduino IDEのライブラリマネージャからインストールできます。

IDEメニュー [スケッチ] -> [ライブラリをインクルード] -> [ライブラリを管理…] -> “sakuraio”検索 -> [インストール]

ファームウェア更新

ファームウェアを最新のバージョンにアップデートします。マイコンとIoTモジュールをつないで(I2C or SPI)、プログラム例のFirmwareUpdate.inoをマイコンに書き込んでシリアルモニタ起動で自動的に更新の有無確認とアップデート実施がなされます。

Arduino IDEプログラム

CdSセルの電圧をマイコンのアナログピン(A0)で読んで前後の値変化で光を検知してデータ送信します。

WebSocket通信設定

さくらのIoT Platformの開発者向けページでデータ取得するための設定をします。

コントロールパネルにログインして使用のモジュールを登録し、通信サービスにWedSocketを選択します。手順の詳細は以下の通りです。
 https://iot.sakura.ad.jp/developer/pdf/iot_platform_manual_beta.pdf

以下は登録したWebSocketサービスの画面です。モジュールから送信されたデータを確認できます。

WebSocketのURL(wss://〜)は後ほど使用しますので控えておきます。

IFTTTの設定

IFTTTとはif this then thatの略で各種Webサービス同士を連携して自分好みのWebサービス(アプレット)を生成することができます。ここではthis(トリガ)にwebにリクエストを受信できるMaker Webhooksを使用しthat(アクション)にスマホに通知を送るNotificationsを使用しました。

Maker Webhooksのイベント名は”Post”としました。以下をリクエストすると”ユー・ガット・メール”とスマホに通知が来ます。

https://maker.ifttt.com/trigger/Post/with/key/"MakerWebhook-key" 

“MakerWebhook-key”にはMakerWebhookサービス登録時に得られる認証キーを入力します。

Node-REDの設定

Node-REDとはグラフィック化されたwebサービスや機能を線でつないで自分好みのアプリケーションを作成するオープンソースソフトウェアです。私のようにweb通信などに全く精通していない人間にとっては夢のツールです!いままではこの辺の通信関連はお母ちゃんに丸投げでしたから。。。。

Node-REDの導入

以下のサイトの事前準備の節の通りです!!!ありがたい 😀 
IBMが提供するクラウドサービスのBluemix内でNode-REDアプリを作成・動作させます。Bluemixは初期登録から30日間完全無料で使用できます。

アプリケーション作成

さくらの通信モジュールからのWedSocketデータを受けてIFTTTにリクエストするアプリを作成します。

以下のノードを上の図のようにつなぐだけです。めっちゃ簡単だった 😛 !
深緑色のノード(msg.payload)はデバッグ用で接続したノードのメッセージ内容を右側のデバッグウィンドウで確認できます。

  1. websocket inノード

    URLに先程さくらのIoT WebSocketサービスで取得したwss://〜を入力します。
  2. Jsonノード
    受信したデータをObjectに変換します。
  3. switchノード

    さくらのWebSocketのJSONはモジュールからの送信されるchannelsメッセージの他に接続の維持を確認するため、サーバーから定期的にkeepaliveメッセージが送信されます。そこでswitchノードでchannelsメッセージだけ通過させます。
  4. http requestノード

    URLにIFTTTで作成したアプレットのリクエストURLを記載します。

Node-RED 参考

ポストに実装!

CdSセル以外を100均で買ったケースにいれて

ポストに設置!

これでポストに郵便物がくるとスマホに通知が来ます!

課題

通信モジュールのスリープ機能が現状使用できないのでバッテリーは2日ほどしか持ちません。。。ファームやサービスのバージョンアップを待ちます 🙂 

あとはBluemixの無料期間が終了する前にNode-REDを自前のラズパイサーバに導入して完全無料環境にしないと。。。お母ちゃん宜しくーw

追記(2017/4/18)

ついに正式版サービスが開始されました!名前も「さくらのIoT Platform β版」から、「sakura.io」へ。

月額60円で毎月10,000回通信できるポイントが付与(ポイントは追加購入可能)!!ゲロ出るほど安い 😯 !!

しかもβ版モジュールは2018年3月まで無料で さらには100万ポイントまでいただけました!ひゃー

しかもしかも正式版開始に伴いファームウェアアップデートでWAKE_INピンによるスリープモードが使えるようになってました!

WAKE_IN:Highで通常動作
WAKE_IN:LowでDeep Sleepモードに入ります。

構成修正

マイコンPro Trinketのデジタル5ピンをレベルシフタ介してWAKE_INに接続してスリープモードのON/OFFを制御します。

Arduino IDEプログラム修正

光検知で通信モジュールのスリープを解除してサーバーとの接続後にデータ送信してスマホに通知します。その後はスリープモードに入ります。

ポスト投函で光検知からスマホ通知まで数分ほどかかりますが さほどリアルタイム性は必要でなく長期運用が重視される案件ですので今回の修正でどれほど省電力化されたか要ウォッチしたいと思います!

さくらのIoTモジュールでGPSリアルタイムトラッキング(完成編)

0
0

さくらのIoTモジュールでGPSリアルタイムトラッキング を行いまして、長女ちゃんの登下で実用していたのですが、今回IFTTTで帰宅時に家に近づくとスマホに通知が来るようにしましたので完結編としてまとめます。

概要

さくらのIoTモジュールでGPS情報を送り、Web上のマップでリアルタイムに位置情報を表示します。
家に近づいたらIFTTTでスマホに通知を送ります。

さくらのIoTモジュール+GPSの設定

詳細は以下のとおりでマイコンにはArduino Nano互換機を使用しています。

さくらのIoT Platform α版 準備編その4


安すぎるー!

Arduino IDE用コード

マイコンで5秒毎にGPSモジュールの情報(緯度、軽度、受信衛星数)を受けて、緯度経度から自宅からの距離を計算します。距離の概算には以下を参考にさせていただきました。

通学・帰宅を判断するために距離ステータスを設け、家から300m以上離れると1を代入し帰宅時に200m以内に入ると2、100m以内で3、50m以内で4としています。

以上のデータをGPS受信衛星数が4以上の時にIoT通信モジュールにI2Cで転送し、3G回線でプラットフォームに通信しています。

IFTTTの設定

IoT通信モジュールからの距離ステータスをうけて長女ちゃんが家に近づいたらスマホに通知が来るようにIFTTTを利用しました。

IFTTTとは

if this then thatの略で各種Webサービス同士を連携して自分好みのWebサービス(レシピ)を生成することができます。ここではthis(トリガ)にwebに値(3つまで)を送信(GETまたはPOST)できるMakerチャンネルを使用しthat(アクション)にスマホに通知を送るIF Notificationsチャンネルを使用しました。

レシピ生成

Makerチャンネルを使用して、スマホに通知を送る方法は以下に詳細が記載せれており非常に参考になります。

  • Makerチャンネルを作成

シークレットキーは後で使用するので控えておく。

  • レシピを作成
    新しいレシピを作成してthisにMakerチャンネルをthatにIF Notificationsチャンネルを選択します。

イベント名は”sakuraGPS”としました。

通知内容は
長女ちゃん家まであと {{Value1}} m 
としValue1には家からの距離が代入されるようにします。

以下でサーバーからGET(またはPOST)すると通知が来ます。

Webサーバーの設定

「さくらのIoT Platform α版」では、下記のサービスが提供されています。

  • Outgoing WebHook:モジュール→サーバー
  • WebSocket:双方向
  • Incoming Webhook:サーバー→モジュール

今回は、このブログを動かしている Raspberry Pi 2 サーバーに、「Outgoing WebHook」から値を受信し、処理しています。

Nginx の設定

/sakura/ ディレクトリに Basic 認証を付けています。

下記を追加

※ 設定の詳細はこちらの記事に記載しております。
ラズパイサーバー ★ Nginx 追加設定

PHP

  1. Outgoing WebHook を受信し、/sakura/gps.txt に書き出す
  2. channel 4 の statusが2以上に切り替わった時、IFFTに距離を送信する

/sakura/index.php

何故か高頻度で空の値が入ってくるので、(PHP側の原因なのか?データなのか?原因究明できていません)null チェックをしています。

gps.txt

緯度、経度、衛星数、距離、ステータスが書き出されます。

HTML ( OpenStreetMap … JavaScript)

地図(OpenStreetMap)でリアルタイムトラッキングさせる記述です。

このような感じで、地図上に現在地のアイコンが表示されます。

※ 動作の様子はこちらの記事に記載しております。
さくらのIOTモジュールでGPSリアルタイムトラッキング

動作

無事に通知が来ることを確認できました 🙂 

これで家の鍵をもたせてない長女ちゃんがいつ帰ってきても安心だね!