ソラコムサマーインターンシップ YoutubeLiveに出演しました!
ソラコムサマーインターンシップ YoutubeLiveに出演決定しました!!!
先々週からひとりで盛り上がって作ってたIoTデバイス「HAGUKUMU」が評価され、ソラコムさんからファイナリストに選んでいただきました! わーパチパチパチ
こちらで見れるそうなので、ぜひ見てやってください!
「HAGUKUMU」サービスまとめ記事
「HAGUKUMU」についてまとめました
たくさんの記事があって、何を読んだらいいかわからないと思うのでまとめ記事を作りました。見ていってくれよな!
記事まとめ一覧
⑧各種機能編 ~写真をGoogleドライブにアップロードする~
⑫完成
番外編①LINE通知機能
番外編②ライト操作機能
そのほか
「HAGUKUMU」構想資料
最終成果物としての「HAGUKUMU」
以下は完成までと番外編を合わせて、最終的にどのようなものが出来上がったのかをまとめたものである。
まずはちりやちゃんをフォローしてやってください
「HAGUKUMU」の外観
「HAGUKUMU」の全貌はこんな感じだ!(ドン)
めちゃくちゃメカニカルですね...。デザインに割く時間がなかったので許して。
ちなみに、図の中にあるモノリスのような黒い物体はカメラマウントです。そして、カメラで撮影する高さを本で調節しています。
各種機能紹介
続いて「HAGUKUMU」の機能について説明していきたいと思う。「HAGUKUMU」には大きく分けて以下の6つの機能がある。
- 自動水やり機能
- 画像撮影機能
- 植物の高さ取得機能
- 様々な環境情報を集約して、ツイートを行う機能
- LINE通知機能
- ライトON/OFF機能
詳しい機能の説明や動作についてはこれまでの記事に書いてあるので、動画を交えつつ概観だけ述べていくことにする。
1.自動水やり機能
1時間おきに水をやってくれる。便利
2.画像撮影機能
写真を撮ってGoogleドライブにアップしてくれる。すごい
ちなみに画像がいくつか貯まればPillowライブラリを使ってGIF画像も作ってくれるので、ちりやちゃんが植物のタイムラプスGIF動画をアップしてくれる。
3.高さ取得機能
高さをはかってくれる。かっこいい。
測定した高さはちりやちゃんが報告してくれる。
4.自動ツイート機能
スプレッドシートにある内容から自動でツイートしてくれる。ツイートの時刻などもスプレッドシート側で変更できる。やばい。
5.LINE通知機能
LINEで植物の情報を通知してくれる。すげー
数値がおかしい場合はエラー通知もしてくれるよ。
6.ライトON/OFF機能
ライトをLINEで操作できる。きれい!
おわり
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:番外編②ライト操作機能
あれ、なんかIoTっぽいことしてなくない?(2回目)
なんかこう、IoTってスマホやパソコンから指示を出したらその結果が通知されたり、家電が動いたりするっていうイメージがあるじゃないですか?(あるよね?)
友達に聞いたところ、水耕栽培ではLEDを証明に使って栽培するイメージがあるようで、ライトの実装をすることにした。
そこで番外編②では、IoTっぽくスマホからライトを操作して植物に光を与える作業を行うことにする。
実装
早速実装する。まずはLINEからスプレッドシートに書き込む処理を行う。 参考記事
こうすることでLINEからスプレッドシートに値が書き込まれるようになるので、あとはラズパイ側からon/offを読み取って動かしてあげればいける。
main.py
light.py
gspread.py
結果
成功。最初の起動に時間がかかっているのは10秒おきにon/offを判断するためなので問題なし。
前回:番外編①LINE通知機能
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:番外編①LINE通知機能
あれ、なんかIoTっぽいことしてなくない?
なんかこう、IoTってスマホやパソコンから指示を出したらその結果が通知されたり、家電が動いたりするっていうイメージがあるじゃないですか?(あると思います)
「HAGUKUMU」ではその辺の機能ってないなーと思ったので、番外編①では、LINE Notifyを使って水耕栽培の現在の状況を知らせる機能を作る。
実装してみる
実装に当たって必要なのはLINE Notifyの登録とGASでプログラムすること。
まあ大体のやり方はここの記事にあるのでそれを見ながら実装する。
こんなかんじ。
それではご覧いただこう
できた。
ちなみに高さが計測できていない場合は
このようにエラー通知してくれる。
前回:⑫完成
次回:番外編②ライト操作機能
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑫完成
言うは易く行うは難し
いろいろアイデアを出す段階ではノリノリだったものの、いざ最後までつくってみるとこれがまた大変。今もどこか遠い目をしながら記事を書いている。もちろんすごく楽しかったが。
というわけで、今回が一応最終回。「HAGUKUMU」のサービス概要とその機能をお見せしよう。
「HAGUKUMU」の外観
「HAGUKUMU」の全貌はこんな感じだ!(ドン)
めちゃくちゃメカニカルですね...。デザインに割く時間がなかったので許して。
ちなみに、図の中にあるモノリスのような黒い物体はカメラマウントです。そして、カメラで撮影する高さを本で調節しています。
高さ調節につかっている本は僕のおすすめの本たちです。お近くの書店へGO。
各種機能紹介
続いて「HAGUKUMU」の機能について説明していきたいと思う。「HAGUKUMU」には大きく分けて以下の4つの機能がある。
- 自動水やり機能
- 画像撮影機能
- 植物の高さ取得機能
- 様々な環境情報を集約して、ツイートを行う機能
詳しい機能の説明や動作についてはこれまでの記事に書いてあるので、動画を交えつつ概観だけ述べていくことにする。
1.自動水やり機能
1時間おきに水をやってくれる。便利
2.画像撮影機能
写真を撮ってGoogleドライブにアップしてくれる。すごい
3.高さ取得機能
高さを図ってくれる。かっこいい。
4.自動ツイート機能
スプレッドシートにある内容から自動でツイートしてくれる。ツイートの時刻などもスプレッドシート側で変更できる。やばい。
といったところ。以上で今回一連の記事をいちおう終わりにしようと思う。
最後に、我らが美少女川上ちりやちゃんの可愛い画像で記事を締めくくることにする。
おわり。
「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑪各種機能編 ~定期実行編~
人間は習慣の生き物である。機械は?
第十一回目は、cronやスプレッドシートの定期実行機能で今まで作ったものを定期的に実行させてとりあえず完成させてしまうことにする。昨日は半日かけて10記事くらいを投稿したのだが、気が付いたら床で寝てしまっていた。腰が痛い。
cronでラズパイを定期実行させよう
そもそもcronってなんだ→こちらの記事をよろしく
今までの記事の中では以下の機能を実装してきた。
- 自動水やり機能
- 高さ情報取得機能&高さ情報送信機能
- 画像撮影機能&画像送信機能
なので、これらの情報が定期的に実行するようにしよう。
crontabに設定する
以下のように設定する。設定の仕方はこちらを参照されたい
これで1時間おきに実行されるようになる。やったーこれで完成だー。と思いきや、こちらのリンクにあるようにはプログラムコードのパス指定で絶対パスを求められるので、だいたい初回設定時にはうまく動いてくれない。
しかもcronは我々の見えないところで定期的に実行してしまうので、どんなエラーが出たのかもさっぱりわからない。
先ほどの記事の下部にあるcronのログの設定を確認しながらエラーログを確認して、ひとつひとつつぶしていこう。だいたいno such file or directoryエラーが出ている。
あとラズパイ3Bの場合はMTAエラーが出てしまうので、こちらの記事で確認しよう。
スプレッドシートの定期実行機能を設定する。おすすめはこちらの記事
こちらのほうについては大変豊富に記事があるので若干割愛。
今までの記事で取り扱っていないものもあるが、「HAGUKUMU」では以下の情報をスプレッドシートに取得している。
- 現在時刻(Date関数から取得)
- 気温・湿度(SORACOMGPSマルチユニットからAPI経由で取得)
- GPSマルチユニットのバッテリー残量(同じくソラコムAPIから取得)
- 天気(OpenweathermapAPIから取得:記事にしていない)
- 日の出・日の入・月齢(おはこん番地わAPIから取得:記事にしていない)
- 植物写真,Gif写真のパス(ラズパイからGoogleドライブ経由で取得)
- 植物の高さ情報(ラズパイからdoGetで取得)
こんな感じである。
スプレッドシートのほうが有効に動いているようで、ちりやちゃんのほうも問題なくつぶやいている。かわいい。すき。
さて、次回は最終回。最終的にできたプロダクトの動作と反省点などを述べていこうと思う。とは言っているが、開発の途中で実装したくなった機能などもあるので番外編も設けようと思う。もうちょっとだけ続くんじゃ。
前回:⑩各種機能編 ~Googleスプレッドシートとツイート~
次回:⑫完成