家族専用LINEボット
LINE本社で開催されていたハッカソンの引率をする中、自分でも家族専用のLINE-botを作ってみた。
LINEトークのメール転送
自宅では、家族のLINEグループを作っているけど、家に帰るといった連絡を親にも伝えたいことが多かった。しかし、両親そろってネット音痴でスマホを使いこなせないし、LINEを使うなんて無理。一方、我が家では、両親の居間のTVの脇に、LEDメッセンジャーを置いてあり、Raspberry-Pi をつないで家族のその日のスケジュールを表示するようにしてあった。さらに、Raspberry-Pi にメールを送ると、LEDメッセンジャーにメールのタイトル部を表示するようにしてあった。
そこで、今回、Webにあった LINE Messenger API を使った、オーム返しするボットのプログラムを参考に、特定のメッセージを、LEDメッセンジャー用のメールに転送させてみた。
実際に運用して、LINEボット経由で、LEDメッセンジャーに「今から帰る」を送ってみたけど、ちゃんとメッセージが伝わっていた。
LINE Beacon
ハッカソンでは、LINE Beacon を貸してもらえて、これも使ってみた。我が家では、お兄ちゃんが今年から大学でアパート住まいになったけど、慣れてくるとなかなか家に連絡をくれない。ママはアパートにカメラ置こうとか言うけど、それはお兄ちゃんも嫌がるよ。
ということで、大学の行き帰りぐらいが通知で送られてくるだけでも、ありがたい。LINE Beacon であれば、お兄ちゃんのアパートにBeacon を置いて Beacon の Enter イベントで LINE に push 通知すればいい。といっても、ハッカソン終了時に Beacon は返却だったので、早速 LINE Beacon を発注。
うまく活用できるようになったら、一人住まいの義母用にもう1個発注になりそう。
追記 2018/12/24 届いた
![]()
追記 2019/01/05 子供のアパートに設置
子供にも安否確認のための設置を理解してもらい、無事アパートに設置。
ただ、LINEをあまり起動しないのか、通知も少ないけど、家の出入りは確認できそう。
![]()
![]()
暑さの測定
以前購入した、Raspberry-Pi 内蔵の MZ-80C のミニチュアは、温度・湿度・気圧のセンサーを付けて、2Fのトイレに設置していたけど、WiFiが若干不安定だったので、常時サーバで記録はしていなかった。しかし、この暑さなので、エアコンの無い部屋の温度を測定したかったので、改めて設定してみた。
Raspberry-Pi の inetd の echo サーバの所に温度測定スクリプトを記載して、”/usr/bin/nc raspberry-pi 7″ で測定できるように設定し、munin 用のデータ取得スクリプトを書いて設定。このクソ暑い温度を測ってみた。
家の西側の2会のトイレに設置しているので、夕方が最高温度で、家の中でも34℃越え。湿度は、トイレのドアを開放すると、大きく変化するようだ。
cec-clientをhomebridgeから制御
今までは、iOS の HOME 機能を、linux環境で動くフリー実装の homebridge を使って、赤外線リモコンを制御していた。 しかし、AV機器のON/OFFでは、電源ボタンでON⇒OFFなのかOFF⇒ON なのか分からない。このため、ネットワーク対応の機器だし、 ping の結果に応じて 電源ボタン信号を出していた。
ただ、TVなどは、電源OFFの状態でも、EPG情報取得などのために OS が動いているため、OFF 状態の判定に失敗する。
そこで、先日見つけた HDMI 経由から制御信号を送る cec-client を試してみた。cec-client では、機器のON/OFF を判定しているので、 確実に ON/OFF できるはず。cec-client は、サーバ機では使えなかったので、 Raspberry-Pi を使ってみた。
$ echo "on 1" | cec-client -d 1 -s # 1番機器をON $ echo "standby 2" | cec-client -d 1 -s # 2番機器をOFF $ echo "scan" | cec-client -d 1 -s # 機器一覧をスキャン
device #0: TV ← REGZA address: 0.0.0.0 vendor: Toshiba osd string: TV power status: on device #1: Recorder 1 ← VARDIA address: 2.0.0.0← HDMI入力ソース番号 vendor: Toshiba osd string: RD-S502 power status: standby ← 電源状態 device #2: Recorder 2 ← Raspberry-Pi address: 1.0.0.0 vendor: Toshiba osd string: CECTester power status: o device #3: Tuner 1 ← CATV-STB address: 1.0.0.0 vendor: Panasonic osd string: Tuner 1 power status: on device #4: Playback 1 ← PS4 address: 3.0.0.0 vendor: Sony osd string: PlayStation 4 power status: standby
AVソースの切り替え
今までは、赤外線リモコン信号で、ON/OFF を制御していたので、 HDMI 連動設定をしているおかげで、ケーブルTVのチューナーON で、テレビの電源も ON となり、さらにビデオ入力も対象機器に 切り替わる。
ただ、cec-client に切り替えたら、機器の制御信号をだすのが、 別機器なので、TV電源連動や、ビデオ入力切替連動とならない。
しかたがないので、TVのビデオ入力切替信号も出してみる。
echo "tx 2f:82:10:00" | cec-client -d 1 -s # 2番のHDMIデバイス(raspberry-pi)から、 # 全デバイス宛て(f番)の信号で、 # 82 映像切替コマンドを送る。(TOSHIBA REGZAの場合) # 10:00 は、ビデオ切り替えの番号
HDMI経由で機器制御cec-client
最近は、TV操作はケーブルテレビのチューナーで 行うことが増えたけど、以前は入力切替とかが面倒だった。 でも、HDMI 経由で入力切替などの設定を行ったら、 チューナーの電源を入れるだけで、TVの電源ONや、入力切替を やってくれる。
これらの制御は、HDMI の CEC 機能らしい。 この機能を活用したら、赤外線リモコンでTV制御しているのを、 もっとスマートにできるのでは….としらべたら、 linux 環境では cec-client というのがあるらしい。
ということで、サーバのHDMI出力をTV経由で接続すれば、 その他のチューナーやレコーダを制御できるはず。
ただ、linux の グラフィック機能は、Intel のオンボード。 よくよく調べると、Intel は、"Never work"なんて記事も見つかる。
対応手段としては、Raspberry-Pi をつなげて、ラズパイのHDMI 経由で 制御ができるんじゃねぇ?
今日のところは、メモだけ。





