Nefry Advent Calendar 2017の4日目の記事です!
こんにちは、岩手で大学4年生やってます白田です
最近IoT分野に興味が出てきた程度の知識なので、誤った知識が含まれるかもしれません。
間違いなどありましたらコメントでお知らせしてもらえると助かります。
コードは自分のgithubにて公開してます!
https://github.com/ShirataHikaru/Kotatsu
よろしくお願いします👍
#外出時のこたつ消し忘れ問題を解決したい
冬の相棒、こたつ。寒冷地岩手に住む自分は毎年お世話になってます。こたつがないと死活問題です。
しかし、日常に溶け込みすぎるが故に外出時こたつを消し忘れることが多く、電気代を無駄にしたり、火災の危険があるのでなんとかしたいと思ってました。
最近NefryBTを持て余していたので、この問題をNefryBTを使って解決したいと思います。
#材料
- サポート体制が手厚いNefry BT ×1
- サーボモーター SG92R ×1
- ジャンパーワイヤー ×3
- サーボモーター電源タップに固定するための何か(角材、プラスチックなんでもどうぞ)
- 今回はそこらへんに落ちてた廃材を使いました(L字金具、ボルト、ナット、土台用木材)
#こたつ消してくれるくん(直球)
完成したものがこちら👇 初っ端の完成予定図とは全く異なる感じですが、やってることは同じですので見逃してください
サーボモーターが動くことで電源タップのスイッチを切ります。
家のこたつがすごく古い型だったので、こたつ自体のスイッチを切るのにサーボモーターじゃ力不足でした。
またNefryBTの電源を取る関係や使いやすさの観点から、今回は電源タップのスイッチを切ることでこたつを消すことにしました。
- スマホアプリ上からオンオフをDatabaseに格納
- NefryBTでDatabaseのオンオフ読み取り
- NefryBTからIFTTTにリクエストを投げる
- IFTTTからLINEに通知する
- NefryBTのSWボタンでオンオフ切り替え
###機能紹介
- iPhone上からスイッチでオンオフ(メインの使い方です)
- NefryのSWボタンでオンオフ切り替え
- 家に帰ってきたときに、即こたつをつけるにはアプリ上から操作するより直接押した方が早いと思うので、NefryBTの物理ボタンから切り替えられるようにしました
- こたつがオン/オフになったとき、LINE Notifyで通知する
##実際の動作です
シンプルなUIで素敵なアプリになったと思います(テキトー)
#課題
##NefryライブラリのNefryFireBase.read()が正常に動かない問題(?)
NefryFireBase.read()の返り値がString型だと思い、Stringクラスの文字列比較メソッドのequals()を使ったが、NefryがFirebaseから取得した"on"と自分が手で入力した"on"が別物と判定されてしまった。"off"も然り
String::equals()の方がおかしい?詳しくわかりませんが、おそらく自分が何か見落としてます(オシエテクレー)
"on\n"も試してみましたが、どれもequals()ダメでした
前回とこたつの状態が変わった時に、こたつのオンオフをやる部分です
〜原因調査中〜
##SWボタンで割り込みができてない
SWボタンを押したときに、外部割り込みでこたつのオンオフを切り替えた方がスマートだと思います。できませんでしたけど
Fireabseにアクセスする回数を減らしたい...
欲を言えば、NefryFirebaseライブラリにdatabaseが変更された時に発火するイベントリスナー?みたいなの欲しい
##セキュリティ=ガバリティ
Firebaseのルールの設定が未だにめんどくさくてサボっている
実際に運用する際は外部の人から自分の家のこたつを操作されたくないので認証を挟む必要がある(と思ってる)
これは今後ぽちぽち気が向いたらやりたいと思います〜
#作ってみた所感、まとめ
IoT面白すぎた😂😂😂
3日くらい実際に運用してみましたが、帰宅前にこたつを温めておけるのが一番便利でした。
作ってる過程で、こたつを消し忘れて家を出ることがなくなりました。
IoTこたつのパイオニアになりたい
以上ありがとうございました!