shaitan's blog

長文書きたいときに使う.

照明を取り替えるのにしゃいたんは何人必要か?

発端

部屋の蛍光灯が切れた。いい機会なので照明を寿命や消費電力の点で優れたLEDにしようかと思ったが、製品を比較しているうちに音声で操作する機能が気になってしまい自作した。結局、取り替えずじまいである。まあ、蛍光灯は2つあるうちの片方がまだ生きており、真っ暗になった訳ではないので良いことにする。
音声認識を利用して電化製品を操作するのは、ひらひでさん*1がやっていた*2と思ったら、四年も前のことだった。時が経つのは早いものだ。

音声認識

twitterbot*3用に購入していたRaspberry piを使うことにした。音声はZoom飲み*4のために調達していたマイク付きwebカメラ*5が転がっていたのでそれで拾う。買うとしても、価格や取り回しの良さを考えるとwebカメラではなくUSBマイクを敢えて選ぶ理由はなさそう。以下の記事を参考にしながらセットアップ。
Raspberry Pi+Juliusで音声を認識する【2019年3月】 - Qiita
Juliusの独自辞書を使って音声を認識させる - Qiita

構文

音声による命令の構文だが、[対象]+[動作] or [動作]+[対象]という形式にした。例えば「電気さん、おはよう/おやすみ」で部屋の照明が点灯/消灯するようにしている*6。on/offの命令はそれぞれ他に「こんにちは」「よろしく」と「さよなら」「バイバイ」「ありがとう」を設定しており、「ごきげんよう」をon/offのトグルにあててある*7。この辺は各人の好みで、「יהי אור」*8や「Mehr Licht !」*9、「レミーラ」や「ピカチュウ!フラッシュだ!」で電気を点けてもよろしい。

操作対象

シーリングライト

もともと赤外線リモコン操作が可能であったため、赤外線を送信してやればよい。以下を参考にRaspberry piから赤外線を送信できるようにする。
格安スマートリモコンの作り方 - Qiita

デスクライト

当初はGPIOでリレーを制御する方法を検討していたのだが、安くて便利な既製品があるなら手作りにこだわる必要はない。tp-linkのTapo P105を購入。制御にはこちらのアプリをありがたく使わせていただく。
TP-LINK TAPO P100/P105をLinux/Windowsから直接制御する – Sasapea's Lab

TV

PCのモニタとしてTVを使用している。もちろん赤外線で操作してもいいのだが、HDMIケーブル接続で操作ができるらしいのでやってみた。下のblogを参考にした。ケーブルで繋げとけば信号が届くかどうか心配しなくていいのは強みだし、on/offの状態も取得できる。ただ、赤外線より反応速度がワンテンポ遅れる気がするなあ。
RaspberryPi コマンドでテレビ電源をオンオフする(cec制御)echo 'on 0' | cec-client -s - min117の日記

PC

PCの電源ボタンを押すのも面倒である。せっかく有線でLANに繋いでいるのでWake on Lanを利用する。下記エントリのコードを利用させてもらった。
PythonでWake-on-lan
これでうまくいくかと思いきや、win10だとなんか面倒なことになってるらしく(【リモートワーク自由自在】Windows 10 Wake On LAN(WoL)入門:WoLでPCを起動(1/2 ページ) - @IT)失敗した。シャットダウン状態から復帰できないというのも気に入らないので、電気的ないし機械的な電源スイッチ操作をさせることを検討中である。

*1:ひらばやしひであき (@hira_hide_) | Twitter

*2:ただいまシステム - ブログ

*3:オチンチンペロペロキチガイ (@otipero3) | Twitter。なお、現在は一部機能を除いてHerokuに移行している。

*4:私信:幹事さんありがとうございました。

*5:USBで接続してるだけなのにwebカメラってのも変な気がするのだが、一般的な呼称に合わせる。

*6:既製品との構文の違いについて、あちらは一神教的でありこちらは多神教的、アニミズム的である、あるいはあちらは「する」言語的でありこちらは「なる」言語的である、などと安易な連想ゲームを始めるとそれっぽい文章が生成できるが、そういうのは「文化人」や「知識人」に任せておく。

*7:〈「ごきげんよう」は「おはよう」「こんにちは」「こんばんは」「元気?」「さようなら」と、いろいろな意味に使える便利な言葉です。〉今野緒雪「あとがき」『マリア様がみてる ハロー グッバイ』集英社 2009, pp. 207f.

*8:Interlinear Bible: Genesis 1:3 - Textus Receptus Bibles

*9:こちらはカーテンを開ける命令に使いたいところだ。