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

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 による自動バックアップ」が実行されます。 一番条件の揃いやすいのは就寝時ですよね? つまり少なくとも寝る前に充電を開始して、朝まで放置しましょうというのがアップルの考え方。その間にバックアップしておきますよという事ですね。 さてその寝る前にあなたは何かしていますか? 私はほぼ毎日、寝る前には動作しているアプリを全て終了させています。 「 何のため? 」それは

スマホの充電

今までも時々 充電に関する話 を書いておりますが、仕事の関係でちょっと調べ物をしていて、そのまま横道に逸れて(内緒ね)人工衛星のバッテリー設計の話をちょこっと摘んできました。 その中で、「放電深度」の話があって、ちょっと面白いので簡単に紹介しようと思います。 新品のリチウムイオンバッテリーがあるとしてその容量を分かりやすく1000mA/h とします。 100%充電されていたとして、そのバッテリーから1000mAの電気を取り出した時が100%、 500mAだけ取り出した時は 50% 、そして300mAしか取り出さなければ 30% を「放電深度」と言います。 よく言われるのは「 80% から 20% まで使って、また 80% まで充電するのが最も良い」と言うものですが、これは 前のブログ で間違っているよと言いました。 80% から 20% ならば 0.6 回利用した計算だよと。 で、最終的に何回充電出来るかは決まっていると書いたのですが、これが間違っていました。 これが放電深度100%では最も回数が少なく、放電深度を50%に(つまり 100% から 50% の間で充放電を繰り返す)と回数的には3倍以上の回数、つまり寿命が3倍以上になるとの 報告 などがあります。 さらに 30% に抑えるとさらに伸びます。 色々調べるとそれが当たり前の様です。 静止衛星の場合でも1日に一回充放電を繰り返すわけですが、周回の人口衛星だと1日に数回地球を回るので、充電期間(昼間上空を通過する時)と放電期間(夜間上空を通過する時)が1日に数回あるわけです。 そんな中で設計時の放電深度は25%程度で設計されている様です。 つまり、放電期間を終了して充電開始時に 75% 以上あって、充電期間を終了する時には100% まで充電されている。 もちろんその間地球観測の観測機械がフル稼働(特に光学観測の場合は昼間が観測時間帯です)してますから、もろに充電しながら使っている状態です。 スマホで「バッテリーが 75%に減ったら、即充電器に繋いで充電しながら使う」って言ったら「バカか! バッテリーがダメになるぞ」って脅されますよね。 でも人工衛星ではそれが常識みたい。 むしろバッテリーを少しでも長持ちさせるためにはその様にすべきの様です。 確か

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 を上書きすると、全てのデ

「iCloud では全てがバックアップ出来ない」という大誤解

iOS デバイスのバックアップについて ということで以下にアップルの公式サイトがあります。 https://support.apple.com/ja-jp/HT204136 ここには 【iTunes バックアップでは、デバイスのほぼすべてのデータと設定情報がバックアップされます。】 と 【iCloud バックアップでは、デバイスに保存されているほぼすべてのデータと設定情報がバックアップされます。】 と書かれてます。 「 デバイスのほぼすべてのデータ」と「 デバイス に保存されている ほぼすべてのデータ」の違いはなんだろうってツッコミは置いておいて、その後ろにはバックアップの対象外となる物が並んでます。 iTunes では「 iTunes から同期したコンテンツ (読み込んだ MP3 や CD、ビデオ、ブック、写真など)」が同期の対象外。 iCloud では「ほかのクラウドサービス (Gmail、Exchange メールなど) で保管されているデータ」が対象外。 その他には、 「iTunes Store および App Store から入手したコンテンツ、または iBooks に直接ダウンロードした PDF (このコンテンツは iTunes で「購入した項目を転送」を使ってバックアップできます。)」 とか 「iCloud ミュージックライブラリおよび App Store のコンテンツ (すでに購入済みのコンテンツは、iTunes Store、App Store、または iBooks Store で取り扱い継続中であれば、タップして再ダウンロードできます。)」 とあって、微妙な表現の違いはありますが、まぁ実用上は同じと考えて良さそうですよね。

データを失いたくなければ。

iPhone を安全に使うという意識が薄い方が多いようなので、私なりの考え方などを書いてみたいと思います。 先ずは iPhone に限らずスマートフォンを含む小型の電子機器に使用されているメモリーですが、 SD メモリーカードなども含めそんなに丈夫なものとは思ってません。 一寸した拍子にデータを失なう事は珍しくないでしょう。 ましてや落下の衝撃とか、水没で壊したらひとたまりもありません。 SD メモリーカードならば取出せますので、何とかデータを取り出せる可能性はありますが、 100% では有りません。 良く「 iPhone には大事な子供の写真が」等と言いながら、その大事なデータを iPhone にしか保存していない人は多いですね。 幸運にもデータを失くなう事なく2年経って機種変更しようとして始めて「データは引継げますか?」って、機械なんですから一生同じ本体を使うつもりだったの? って聞きたくなります。 連絡先とか、カレンダーとかも同じ事。 機種変したらとか、壊れたらとかは考え無いのですかね? データは大事だからこそ、その保護は真面目に考えないといけないのではないでしょうか? 仕事柄データの損失事故は結構経験しています。 その毎にバックアップの必要性とありがたみを実感します。 スーパコンピューターに使用されている、高性能なデータ保護機能を備えたハードディスクでさえデータが飛んだ経験をしています。 ましてやせいぜい10万円やそこらの価格の記憶装置の信頼性なんてたかが知れていると思いませんか? ですから大事なデータは2ヶ所以上の場所に保管する事が必要です。 その手法として基本となるのが、バックアップと同期です。 この2つの異いを理解していない人も多いですね。 さて、先ずは バックアップ の話から。 iPhone のバックアップはちょっと特殊です。 iPhone の中味をひと塊としてしか扱えません。 写真だけ取り出すとかは出来ない 仕組みです。 これは私の想像でしかありませんが、著作権の保護を考えての処置かなと思っています。 音楽等を勝手に取り出して違法コピー出来ない仕組みになってますね。 で、バックアップはパソコン無しでも出来る iCloud でのバックアップとパソコンの iTunes を使用する2つの方