スキップしてメイン コンテンツに移動

Siri で家電を操作(その4) 部屋の電灯の操作

さて、なんとか部屋の電気(というより最終的には玄関先と、玄関の電気を自動的にオン・オフさせたいなと考えていますが、ひとまず荒っぽい手法で自室の部屋はなんとか動く様に出来ました。
こちらは赤外線リモコンは使っておらず、有線での配線(これもLANケーブルを流用)です。

前にもちょっと書きましたが、部屋の電気のスイッチは、押す度にオン・オフが切り替わるタイプです。
ですから、遠隔でオン・オフする為には今電気が点いているのか消えているのか判断しないと、スイッチを押して良いのかの判断が出来ません。
なので、何処かにセンサーが必要ですが、電灯そのものにセンサーをつけるとなると、これまた配線の問題が出てきます。
自室なら天井に無粋なケーブルが一本くらい走っても良いのですが、玄関外となるとどうやって屋内に引き込むかなどの問題が出てきます。

で、考えたのは「蛍スイッチ」と呼ばれるスイッチ部にLEDが入っていて状態によって点灯するタイプ。
ただ、実際に玄関にあるスイッチは、オフで緑色に点灯し、オンで赤色に点灯します。
特に昼間はドアの外で電気が点いていても判断出来ないので、赤色の点灯は必須。
夜間暗い中でもスイッチの操作が出来る様にオフの時は緑色に光るのですが、こっちはいるのかな?

とりあえず、自室のスイッチをLED付きにしましたが、これはオフの時に緑に光るだけのタイプ。
試験は条件を簡単にしないとね。

で、LEDの点灯は光スイッチを使いましたが、これはとりあえず「秋月電子」さんが扱っている光センサースイッチキットを流用しました。
これが正解。
普通に売っているセンサーは小さいもので直径が5mm。このキットに入っているセンサーは直径が少し小さい4mmです。
これを蛍機能付きのスイッチのLEDの窓の透明プラスチックを外した穴の横幅4mmにピッタリ。

見にくいですけど、こんな感じでセンサーが付きました。


青いスイッチの動作部分の左に見える、青と白の二本のケーブルがセンサーに繋がるケーブルでその先の小さな丸いのがセンサーです。
で、ひとまずは壁に直接サーボモーターを貼り付け、余っていたフラットなLANケーブルで直接 Raspberry Pi 3 とつないでいます。

Raspberry Pi 3 の左側に見えるLANケーブルがそのまま壁づたいでスイッチに繋がっています。

センサーの出力は、オンの時にアースに落ちて、そうでない時はどこにも繋がらない状態。
これを普段はプルアップで1が出力されている GPIO のピンにつなぎます。
LEDが光っている時は光センサーはオンになりますから、センサーキットからの信号はアースに落ちます。
で、 GPIO のピンは「0」を出力。
電気が点けばLEDは消灯し、センサーの出力はアースから浮き上がり、出力は不定になりますが、GPIO のピンはプルアップされているので、GPIO のピンは「1」を出力。

GPIO のピンをチェックすれば、部屋の電気の消灯中は「0」、点灯したら「1」となります。
これを Homebridge で設定してやればOKです。

実際には、「homebridge-cmdswitch2」をcインストールして、onfig.json を以下の様に設定したやります。

"platforms": [{ "platform": "cmdSwitch2",
"switches": [{
                "name": "ライト",
                "on_cmd": "sudo /home/homebridge/shell/Light_on.sh 0 27",
                "off_cmd": "sudo /home/homebridge/shell/Light_off.sh 0 27",
"state_cmd": "sudo /home/homebridge/shell/Light_status.sh 27"
         }]
}]


ここでは呼び出したシェルの引数はサーボの番号や、GPIOの引数になっています。
で、ちょっと悩んだのが、ステータスをチェックするシェル。
シェルが正常に終了すれば「オン」、失敗すれば「オフ」と判断するとのことですが、普通にエラーのリターンコードを返しても「オフ」と判断してくれません。
色々試したところ、最後の実行コマンドがエラーとなった時は「オフ」と判断する様です。
で、結局最後の1行が問題ということで、こんな変なシェルを組みました。

#!/bin/bash

if [ `gpio read $1` -eq 1 ]
then
echo "On" > /home/homebridge/data/$1_Light_status
# exit 0
else
echo "Off" > /home/homebridge/data/$1_Light_status
# exit 1
fi


cat /home/homebridge/data/$1_Light_status | grep "On"

シェルの中でステータスをテキストに書き出してやって、それを見てあげる事で、「Off」と書いてあれば、grep では何も出力出来ずにエラーと判断してくれている様です。

後は、センサーの基盤やサーボを綺麗に隠す(お客様に見られても恥ずかしくない様に)事と、玄関のスイッチまでの配線をどうするか。
エアコンでLANケーブルは手一杯なので Raspberry pi Zero をもう一台買い込むかな?


なお、ついで(?)なので、こちらのウェブサイトのAPI機能を利用して、日の出時刻や日の入り時刻を取り込んで、日の入り時刻(実際にはその15分ぐらい後が適当か?)に電気を自動でオンできる様なシェルも作って crontab と at コマンドで自動実行できる様な仕組みも作って見てます。
これならば、電気を毎日自動的にオンにするにも、季節によって日暮れの時刻を追いかけてくれますから、昼間変に暗くなって勝手に電気がついてしまうという、自動点灯装置にありがちなミスもなく。良いのではないかと。

コメント

このブログの人気の投稿

iPhone を日常使う上での注意(ちょっとした不具合を解消するには)

先日はバックアップの重要性について書きましたが、今日は日常の注意を書いて見たいと思います。
まずは充電の方法から。 皆さん、充電時にはどんなことに注意していますか?
充電は、できるだけバッテリーを使い切るぐらいまで行わず、できれば80〜90%で終了させましょう・・・・なんてやっていませんか?
以前にも充電について書きましたが、基本的には「気にする事は無い!」です。
好きな時に充電をし、好きな時に終えれば良いです。
上記の注意は「ニッケル系」のバッテリー、つまり市販の単三型などの充電式バッテリーについての注意です。昔はニッケルカドミウム、今ではニッケル水素のバッテリーですね。
これは、時々リフレッシュさせる必要があります(昔の人工衛星も年に2回ほどリフレッシュ運用というものを行っていました)。
しかし、現在携帯電話に使用しているリチウムイオン系のバッテリーでは其の様な事は必要ありません。
と言うより、ニッケル系の様なリフレッシュ運用はかえってバッテリーの寿命を縮める(充放電回数を無意味に増やす)だけです。
バッテリー一般の注意である、充電中に熱を持たない様に注意する(寝る時に布団や枕に覆われた状態で充電するなど)こと、電子機器一般の注意である日向や暖房機の前に放置しない、などを守れば十分です。
何故かは良く分かりませんが、昔の iOS では充電時のマークが、稲妻マーク(充電中)とプラグマーク(充電器に接続されているが充電はされていない:充電は終了している)に分かれていました。
今は同じ稲妻マークだけですが、ひょっとしたらプラグマークになるとあわてて充電器から外そうとする人がいるのを懸念しての仕様変更かもしれません。
基本的に「充電器に接続されている」「Wi-Fi に接続されている」「スリープ状態にある」という三つの条件を満たしていれば、1日に一回「iCloud による自動バックアップ」が実行されます。
一番条件の揃いやすいのは就寝時ですよね?
つまり少なくとも寝る前に充電を開始して、朝まで放置しましょうというのがアップルの考え方。その間にバックアップしておきますよという事ですね。

さてその寝る前にあなたは何かしていますか? 私はほぼ毎日、寝る前には動作しているアプリを全て終了させています。
「何のため?」それは
「メモリを解放するため」です。 メモリを解放するアプリ…

Apple ID の変更方法

2017/06/10 :追記

Apple ID の変更方法が変更されました。
以下の最新情報をご確認下さい。

アップルIDの変更

Apple ID をキャリアのメールアドレスなどで作成し、その後にキャリアのメールアドレスを変更してしまい、困っている方が多い様です。
皆さん Apple ID に利用しているメールアドレスを変更すれば、iPhone に使用している Apple ID のメールアドレスも自動的に変更されるものと、勘違いしている様に思います。

また、Apple ID はキャリアのものと勘違いしているのか、キャリアを変更したのだから、Apple ID もそのまま、次のキャリアメールのアドレスになると思っている方も、おられるようです。

Apple ID はあくまでもAppleが発行するIDです。
キャリアとは無関係で、キャリアにそのIDに関する情報が渡ることもありませんし、キャリアの情報がAppleに渡ることもありません。

IDに使用するメールアドレスを変更したいのであれば、自分でAppleのウェブサイトで手続きする必要があります。

https://appleid.apple.com/ja_JP

にアクセスすると、「Apple ID を管理」というボタンがあります。
そこで、現在の(あるいは勝手に変更してしまう以前の)メールアドレスでログインし、手続きをします。
ここで、新しく利用したいメールアドレスを追加すると、本人確認のメールがそのメールに届くので、メールに記載されているURLにアクセスすると、承認されます。
メールアドレスが承認されると、そのメールアドレスをIDに登録し直せます。

最終的にIDのメールアドレス変更直前に、iPhone(該当 iOS 機器やMac 全て)の iCloud と iTunes & App Store から一度ログアウトしてください。
その際に、iPhone にデータを残す必要はありません。
新しいメールアドレスの ID でログインすればまた同期されてデータが戻ります。
残してしまうと、再同期の際に間違ってマージしてしまい、データが二重登録される可能性があります。
もっとも再同期の際に間違えて、iPhone の(何もない)データで、iCloud を上書きすると、全てのデータが失われるので、それよりはマシですけど。

なお、使用…

同期とバックアップ

どうも iPhone や iPod Touch 、 iPad などで iTunes や iCloud との同期設定をきちんと行わず、バックアップなども行っていない方が多く居られる様です。
また、同期やバックアップすると、メールの設定や連絡先などのデータが無くなる、とかいうデマに振り回され、怖がっている方も多い様です。
そこで出来るだけ簡単に、その必要性とやり方を、書いておこうと思います。


まずバックアップの必要性。 これは何も言う事は無いはずです。
万が一 iPhone が故障したり、紛失したりした場合、このバックアップが無いと、全てのデータを失います。
バックアップが有れば、新しい iPhone でも、バックアップ時点の状態に戻せます。
バージョンアップ時も同じですし、新型への機種変の時も同じです。
バックアップが無ければ、初期状態から設定し直さなければいけません。
しかしバックアップを取った後に、受信したMMSメールや写真は、失います。
なので、出来るだけこまめにバックアップをする必要があります。
理想的には毎日行うことです。

次に同期。CDから iTunes に入れた音楽、逆に iPhone で購入した音楽、アプリなどは同期作業によって iPhone に入れたり iTunes にバックアップしたりします。
写真や動画なども同じです。
好きなものを持ち歩いたりするのであれば、同期は必要ですね。
同期の作業は、その始めのステップとして、バックアップを行いますから、バックアップのためにも、必要な作業となります。


現在は iCloud のサービスもあり、同期も重要項目です。
同期とは二つ以上のものを、同じ状態に保つ作業です。
現在の iPhone であれば、iCloud をその同期の中心にし、個々の機械(パソコンや iPhone )が同期を取ります。

iCloud は常に最新の状態が保たれます。
必要であれば、パソコンから iCloud のウェブサイトにアクセスして、利用することもできます。
しかしなぜか、iOS 機器からは、通常の iCloud のウェブ利用はできません。

連絡先などは、iCloud を利用する事で、グループ分けなどが簡単に出来ます。
こちらもなぜか iOS 上では、グループ分けの作業は出来ないのですが、iCloud で行ったグループ分けは利用出来ます。
ウェブサイト上で…