ホーム » 「赤外線リモコン」タグがついた投稿

タグアーカイブ: 赤外線リモコン

システム

最近の投稿

アーカイブ

カテゴリー

homebridge-gsh と cec-client

homebridge-gshで、google-homeからHomeKit(homebridge)を制御

自宅で homebridge-config-ui-x で、家電制御の設定が楽になり、homebridge-gsh にて、Google Home から Apple の HomeKit の制御を呼び出せるようにしてみた。今までは赤外線リモコンベースなので、テレビのON/OFFがトグル動作で怪しかったが、HomeKit 経由だと、TVにつなげた HDMI 接続のRaspberry-Pi から HDMI 接続の他の機器に、ON/OFF を明示的に制御ができるようになる。

cec-client で 電源ON/OFF ができなくなった

無事、homebridge-gsh が動き出したのに、CATVSTB の電源が ON/OFF できない。入力切替は正しく動いているのに…
cec-client の動作状況を表示させながらうごかすと、定番の 「echo “on 1” | cec-client -s」で動かない。メッセージを見ると、対象機器がうまく選べないのが原因みたい。
CEC では、物理機器番号と論理機器番号で管理されていて、物理機器番号が決まらないのに on はできない…といったのが原因みたい。cec-client のバージョンがあがり、その辺がいいかげんなコマンドが送れないようになったようだ。

しかたがないので、CEC-O-MATIC のページにて、他の方法を試すと、以下のコマンドなら、正しく電源のON/OFFができた。

$ echo "tx 26:36"    | cec-client -s   # チューナーをけす Recording2 → Tuner2 standby
$ echo "tx 26:44:6C" | cec-client -s   # Recording2 → Tuner2 User Control Pressed Power Off
$ echo "tx 26:44:6D" | cec-client -s   # Recording2 → Tuner2 User Control Pressed Power On

ということで、cec-client を呼び出す処理を、上記のコマンドを使うようにして、無事 google-home から HomeKit 呼び出しに成功。

google-home に、”NHK をつける” と話しかけると、homebridge-gsh 経由で homebridgeが呼び出され、「地デジ切替と1チャンネルの赤外線信号」をだすし、”チューナーを消す”と言えば、cec-client 経由でtx 26:44:6c を送ってチューナーの電源が切れる。超便利。

(追記)

“tx 2X:44:6D” による電源ONは、HDMIの電源連動機能が動かないみたい。”on Y” だと、(TVで連動ON設定が必要だけど)チューナーの電源を入れれば、TVも連動してONになっていた。しかし、”tx 2X:44:6D”ではテレビがつかない。TV側の連動機能を知らないうちにOFFにしたのかと思ったけど、リモコンでチューナーをつければテレビ付くし。

ということで、cec-client を使って電源操作するシェルスクリプトに、TVの電源ON動作を行う機能を追加しておいた。

homebridge-config-ui-x を入れる

Appleの家電制御のためのHomeKitと互換性のあるソフト homebridge だけど、以前より家電の赤外線リモコンで活用しているが、google home との連携もさせたくって、homebridge-gsh を入れようとしたが、nodejs のバージョンが古く、インストールに失敗していた。

Google Home Mini で家電を制御するために、iPhone に eRemote 用のアプリを入れて、制御もしているけど、テレビなどの電源ボタンがトグル動作で、ON/OFF を正しく認識しないので、操作性が悪い。homebridge では、テレビにつけた Raspberry-Pi から、cec-client を使って、電源操作や入力切替操作が行えるので、基本は homebridge ベースに切り替えたい。

インストール

今回、nodejs のリポジトリを nodejs の本家を使うように設定して、nodejs を最新の 12.x に上げる。合わせて、設定ユーザインタフェースが便利な、homebridge-config-ui-x を入れてみた。

# リポジトリを登録
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
$ sudo aptitude update ; sudo aptitude safe-upgrade

# Node.js のインストール
$ sudo aptitude install -y nodejs
$ sudo npm install -g npm

# homebridge-config-ui-x のインストール 
$ sudo npm install -g homebridge-config-ui-x

config-ui-x を使えば、config.json の編集機能があるし、その編集も各モジュール単位で編集もできるので便利。一部のモジュールは、config.json で触る必要があって、その切り分けで手間取った。

この Web-UI では、スイッチの操作で時間のかかる処理のコマンドで、一部動きがおかしいのもあるけど、スマホ版だと問題なく動くようなので、この画面はあくまで設定用かな。

EPG番組表とリモコンの連動

ちょいと、お遊び。cablegate の番組表情報から現時点の電子番組表(EPG)を取得し、その番組名をクリックすると、該当するチャンネルに替えるリモコン信号を送るようにプログラムを作ってみた。

本当は、好きな番組を適当に選んで、チャンネル替えたいけど。

画面構成の修正

タップしたチャンネル情報を保存して好きな番組を学習させられないかと、妄想を始めたけど サーバ側は PHP の方が書きやすいので、EPG番組表を PHP でObjectiveに書き直し。でも適当に書いているから、public だらけのクラスが汚いな。

起床用の照明制御

寝室の蛍光灯がつかなくなって、交換しようとしたらプラスチック劣化で部品が壊れた。他の照明もLEDに切り替えてきたので、これを契機に寝室もLED照明に取り換えた。

リモコン制御でめざまし

赤外線リモコンが目の前に増えると、早々にリモコン制御に登録。以前の蛍光灯もリモコンついていたけど、感度が悪くて制御しづらかったけど、新しいリモコンは感度よく、うまく制御できる。しかも、ON/OFFを交互にしか制御できないトグル型だと、つけたのか消したのかが区別できないけど、新しいリモコンは全点灯と常夜灯のボタンがOFF状態でも使える。

ということで、先日ママが寝坊して「5分で出社」という荒業を使っていたので、平日朝に徐々に明るく点灯させてみる。
# 朝イチに明るさ30%点灯、30分後に全点灯&オフタイマーで1時間後に消灯。

設定初日は、crontab の書き間違いで失敗したけど、明日からは大丈夫だろう。

cec-clientのデバイス番号とアドレス番号

自宅では、テレビやケーブルテレビチューナーやレコーダを赤外線リモコンで制御できるようにしているが、電源はトグル動作でON→OFFかOFF→ONという制御ができない。そこで、HDMI端子経由のチャンネル制御を行っている。

この際に、デバイス番号とcecのアドレス番号を使うが、デバイス番号が時々変化している。

しかたがないので、cecのscan処理でデバイス番号とアドレス番号の対応情報を保存するようにしてみた。

#!/usr/bin/perl

my $cec = "/usr/bin/cec-client -d 1 -s" ;

open( my $fd , "/bin/echo 'scan' | $cec |" )
    || die( "Can't open $cec\n" ) ;
open( my $ft , "> /home/xxxxxxxx/lib/cec-table.sh" )
    || die( "Can't open cec-table.sh\n" ) ;

my $device  = "" ;
my $dev_str = "" ;
my $address = "" ;
my $osd_str = "" ;

print $ft "#!/bin/bash\n" ;

while( my $line = <$fd> ) {
    if ( $line =~ /^device\s+#(\d+):\s+(.*?)$/ ) {
        $device  = $1 ;
        $dev_str = $2 ;
    } elsif ( $line =~ /^address:\s+(\d+)\.0\.0\.0$/ ) {
        $address = $1 ;
    } elsif ( $line =~ /^osd\s+string:\s+(.*?)$/ ) {
        $osd_str = $1 ;

        print $ft "DEV[$address]=$device\n" ;
        print $ft "OSD[$address]=\"$osd_str\"\n" ;
    }
}
close( $fd ) ;
close( $ft ) ;

eRemote mini ファームウェア更新

eRemote mini の更新トラブル

部屋の赤外線リモコンでの家電制御のために買っていた、LinkJapan さんの eRemote mini だけど、ファームウェア更新(v55)が出ていたので、更新作業。ただ、更新を始めても、更新されない状態が続いていた。メーカー側の対応が終わったのか、ようやく更新に成功。

{CAPTION}

LED照明のON/OFF

LinkJapan のスマホアプリの eHome や、自宅サーバからの制御に登録をしてみた。

ただ、LED照明は、リモコンの POWER ボタンを押す度に、ON→常夜灯→OFF→ON と変化する。このため、「照明を消す」を登録しても常夜灯に変化し、もう一度「照明をつける」とOFFになる。サーバ制御であれば、「照明をつける」にPOWER✕1回、「照明を消す」にPOWER✕2回で登録すれば、ひとまずは騙せるけど…

google-home → IFTTT → サーバでON/OFF の場合、発話の自由度が低いので eHome に照明として登録した方が、操作は楽。

また、ベッドの照明のリモコンも eHome に登録したけど、これは eHome 設置場所と照明間の距離があって、動かなかった。(x_x;;

自室のLED照明

2F居室にLED照明

自室の蛍光灯が劣化し暗くなってきた。子供部屋はすでにLED照明に切り替え済みだけど、これを契機に居室もLED照明に変えた。明るさや色調を変えたりON/OFFのできる赤外線リモコン付きなので、早々に学習リモコン eremote RM mini に記憶させる。

Google Homeで照明ON/OFF

ここまでくると、Web でのリモコン機能に追加し、さらに Google Home から IFTTT を経由した音声での照明 ON/OFF まで設定してみた。

ただ、単純な”照明”という単語は、Google Home で特別扱いされるので、”LED照明をつける/けす” で音声を登録した。ただし、これでも音声認識の精度が低く、失敗することも多い。うーむ。

朝の自動めざましじゃんけんを停止

朝の「めざましじゃんけん」でサーバから赤外線リモコン信号を送ることで、自動で青・赤・緑・黄のボタンを押すプログラムを動かしていた。でも、最近は朝起きた子供が、見たくないニュースやってるとチャンネルを替えるので、機能していないし、週末の応募操作を面倒で忘れるので、自動「めざましじゃんけん」機能を止めた。

一時期は、毎週応募していたけど、最終的に1度もあたらんかったなぁ….

USB赤外線リモコンの方向だったか

自宅サーバには、Tira-2 というUSB接続の赤外線リモコンが 付けてあり、毎朝のTV起動やめざましTVのじゃんけんなどの 処理を行っている。

しかし、この2週ほど、TVはついているのに チャンネル制御などが正しく動いていない。 めざましじゃんけんは、数日で応募ポイントに達していたのに、 最近は、週末でやっと。

TVは付いているので、TV起動直後だけ反応が悪いのかと 思っていたけど、夜中にふと目覚め確認していたら、 どうもリモコン発光部の方向場所の問題だった様子。 TV電源だけは他のボタンより感度が良いのかな….

TVのリモコン受光部の真横に付けていたけど、 真上だと普通のリモコンが動かなくなるし、 受光部の前のTV台に張り付けたら動くようになった。

間違って赤外線リモコンドライバ消してた…

自宅のWindowsパソコンだけど、赤外線リモコンがついているんだけど、 久々に使おうとしたら動かない。 リモコンを何らかの下敷きにしてしまってバッテリー切れと思われた。 んで、CR2032×2個の電池の入れ替えをした。 だけど、相変わらず動かない。

そこでふと気づいた。先日、訳の分からないソフト消したよな… DELLのサポートでIRドライバを探すとそれらしいものが見つかりインストール。 "Nuvoton CIRツールキット"もう少し、赤外線ってわかる名前にしろよ…

Google 検索

My Google   Yahoo

Microsoft

ファンサイト