長期連載(?)だったこのシリーズも6回めとなりました。不定期連載で気分刊行だから気は楽なのですが、週間連載やら新聞の連続小説やらのお仕事をお持ちの職業作家さんはさぞ大変だろうと思います。このブログだとよく読者の方に「今日は疲れてるんだ……」とかそういう感想を頂きますが、少年ジャンプを読みながら「この漫画家は今週疲れていたんだろうか」という感想は抱かないでしょうし、ましてや新聞の連続小説を読んで作家の体調を慮ることは少ないでしょう。なるほど、プロは体調を崩してはいけない、というか体調の変化を悟られてはいけないのでしょうか。どういう業界でも仕事をしているのは人間ですから、生身の鮭を放置すると痛むように、仕事仲間のメンテナンスを疎かにしてはいけないのですね。
さて、今日はソフトウェアを触っていきましょう。現状でも、たまたま今はグローバルIPアドレスがもらえているので、ルーターのポートを開放して、宅外から自宅のRaspberry PiにSSHで接続し、コマンドを叩くことで炊飯器を動かすことは「可能」です。ところが、退勤切ってさあ帰るぞという時にスマホでSSHのクライアントを立ち上げて数十文字のコマンドを必死こいて打つ気力はあるでしょうか。ないですね。どうせならワンボタンで風呂が沸くと良いのですが、こちらは水栓やら給湯器やら水位センサ/流量計やら大掛かりなシステムが必要となりそうなので、要検討として次回以降考えることにしましょう。
ところが、筆者はLinuxやらPythonやらに明るくありません。10年ぐらい前にVine LinuxをGUIベースで「触った」ことがある程度です。なので、Linux上でバチバチとプログラミングをするのは最低限にしましょう。
そこで、今回はBlynkというアプリを使いましょう。参考にした記事を貼ります。
このアプリは、無料で、しかもその上に外部の、Blynkのサーバを経由させてくれるので、Raspberry Piが設置されている場所にグローバルIPアドレスが必須ではないというのが非常にありがたいです。当初の図で解説すると次のようになります。
実際に動いている動画がこちら。
LTE回線経由でリレーを動作させ、任意のタイミングで炊飯ボタンを押すことができるようになりました。
それでは、記事がいくつもに別れてしまっているので、まとめておきます。
<ゴール>炊飯ボタンを任意のタイミングで自宅外から操作する
1.Raspberry Pi(B+)を用意し、Raspbianをインストールする。
で、Raspbianが動いたらこちらの記事を参考に、アップデートを当てましょう。Raspberry Piは小さなパソコンです。脆弱性をほっとくとなんかマズいことになったりするかもしれませんし。
とりあえずノートがわりに書いてます » Raspberry Pi たまにはrpi-updateもしてみてね
この記事で
# apt-get update
# apt-get upgrade
# rpi-update
とありますが、先頭の#というのはいわゆるスーパーユーザー、あるいはrootとも呼ばれる管理者権限で行ってねという意味です。Linuxに慣れていないとわかりづらいですね。
最初にログインするとこういう画面になります。いま、キーボードから入力すると文字が現れるのは一番下の緑色のカーソル部分です。そのカーソルの直前は"$"になっていますね。これは(よく分からんけど)rootじゃないユーザーなうですよ、という意味でしょう(たぶん)。
で、この状態で、
$ sudo passwd root
と入力して、エンターを押します。最初のドルマークは既に表示されてるので打ち込まないでくださいね。すると、新たにいま設定するrootのパスワードを2回要求されますので、一度入力してエンター、もう一回入力してエンターとやります。
そうしたら、次は
$ su
と入力してエンターを押します。そしたらさっき設定したrootのパスワードを要求されますので、入力してエンターを押すと、
このように、カーソルの直前が$から#に変わります。これは、管理者権限rootで実行中ですよという意味だと思います(たぶん)。
さっきの記事では
# apt-get update
# apt-get upgrade
# rpi-update
となっていますので、上記のように、rootのパスワードを設定してからsuコマンドでrootに入ってアップデートをするか、あるいは、よくわからないけれど一般ユーザーのまま一時的に管理者権限を借りられそうなsudoコマンドを使って
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update
とやっても良いでしょう(たぶん)。なんだか、suだのrootだのとAndroidスマホっぽくなってきました。根っこがLinuxとして同じものですから、似ていて然るべきなのかもしれません。
2.次に肝心のリレー周りの家内制手工業。これについては、かつて私も電子工作初心者でしたので、言い切りたいと思います。中級者が回路定数書いてない参考回路を載せてあって大混乱したかつての初心者がいま万年初心者となった立場から言い切ります。「私の記事と同じ抵抗と5 Vのリレーとトランジスタとダイオード使えば動きます」って断言しておきます。「トランジスタはなんでもいいです」とか「ダイオードは適当に手元にあるものを」とか、そういうファジィな記述は初心者を混乱に陥れますからやりません。
・トランジスタはルネサスの2SC1213Aで動作確認ができています。
・ダイオードは本当に整流用ならなんでも良いんですけど、秋月で売ってる1N4007で間違いなく良いです。10D1とかの1 A流せる整流用って書いてあるやつならOKです。いざとなったらお店で「リレーのコイルの逆起電力を吸収させるために使うダイオード」と言えば大丈夫です。
・抵抗は1/4 Wのカーボン抵抗(いわゆる普通の抵抗器)で33 kΩと1 kΩを使いました。この数値ならOKですし、多少雑でも動きますからそんなに心配しないでください。
・リレーも5 Vのやつで1回路入っていればいいです。
ここに載ってる60円の946H-1C-5Dでいいです。
・炊飯器から炊飯ボタンを引っ張り出す方法や、リレーじゃなくてサーボモーターを繋いで炊飯器を無改造にする応用は、さすがに各自で考えてください。
3.最後にソフトウェアのヒント。
・SSHで接続して、Blynkを黒い画面から立ち上げると、電源を切る動作ができなくなります(Blynkサーバからの接続待ちになってしまう)が、SSHのクライアントは複数の画面で開けますから、慌てずにもうひとつPuTTyの窓を立ち上げて、そこから
$ sudo shutdown -h now
と打ってエンターを押すとRaspberry Piの電源が落ちます。
・SSHで接続して、Blynkを
$ sudo blynk-library/linux/blynk --token=[アクセストークン、英数字の羅列、めっちゃ長い、Blynkを入れたスマホから確認してください]
で立ち上げるとスマホからリレーが動かせるようになりますが、この黒い画面を閉じるとせっかく立ち上げたblynkも落ちてしまってリレーが動かなくなります。黒い画面を閉じてもRaspberry Pi上でblynkが動き続けるように、
$ nohup blynk-library/linux/blynk --token=[アクセストークン、英数字の羅列、めっちゃ長い、Blynkを入れたスマホから確認してください]
と打ってやると、黒い画面を閉じてもスマホからリレーを動かすことができます。
・Raspberry Piの起動と同時に
$ nohup blynk-library/linux/blynk --token=[アクセストークン、英数字の羅列、めっちゃ長い、Blynkを入れたスマホから確認してください]
って打ち込んでエンター押したのと同じ効果を発揮させたいんだけどうまくいかないなぁ……