Raspberry Pi Zero WHでスマートリモコン
By Patineboot
赤外線スマートリモコンを作成!
RaspPi Z WHとRPZ-IR-Sensorを組み合わせてハードウェアを組み立て、自作ソフトウェアHomeRemoteをハードウェアで動かす。スマートリモコンを作成した!
Raspberry Pi Zero WHを感じる
Raspberry Pi Zero WHが気になる。スモールサイズで使う赤外線HATにピッタリ合うサイズ。
Zero WHを実際に見てから買う!秋葉原へ向かう。
電車を降りると、ランチをしたい。つけめん屋がオープンしたばかり、トンカツと迷う。しばらく歩いて、焼き肉が良いかと思い、ステーキプレートの期間限定に惹かれるお店にする。ローストビーフは、うすく柔らかい。一枚食べる。美味しい。チーズとローストビーフで柔らかく優しい味。
Zero WHを購入しに、いつものお店、千石電商に向かい、展示Zero WHを見る。スモール!レインボーケースも良いかと思う。触ってみると、とてもミニサイズ。 秋月に移動し、ケース付きのRaspberry PI Zero WHを発見! 純正のケース、良い。白と赤のいろ、HATの穴がある。満足して購入する。
Raspberry PI Zero WHをセットアップ
-
USBケーブルを接続し、起動を確認!
Raspberry Piを起動する過去記事を見て。
-
WiFiでSSHログインするよ。
Raspberry Piの設定する過去記事を見て。
-
CyberduckでSFTPで接続確認をする。
アヒルが接続に変わる。SSHログイン情報の一部はキーチェーンに格納はやめよう!
Homebrdigeをセットアップ
-
非公式のNode.jsを使おう!
nodejsのunofficial-buildsプロジェクトを読むと、linux-armv6lは、“Experimental” statusと解る。
BASE_URLで非公式のビルドバイナリを格納するURLを指示する。
curl -sL install-node.now.sh/lts -o node.sh chmod +x node.sh sudo BASE_URL=https://unofficial-builds.nodejs.org/download/release ./node.sh
インストールできたかな?
-
赤外線デバイス「RPZ-IR-Sensor」とHomebrdigeをセットアップは過去の手順と一緒だよ♪
Raspberry PiでHomeRemoteの事前準備を見てね。
HomeRemoteをインストール
HomeRemoteはPatinebootが、つくりだしたInfraredを送信するソフトウェアだよ。 みんなに使ってほしい。願いを込めて公開している。使ってね!

純正ケースに収まるRaspberry Pi Zero WH
インストール手順は、Raspberry PiでHomeRemoteの開発ソフトウェア「HomeRemote」を見てね。
Homebridge-Hueをインストール
過去のウェブログ、deCONZでIKEAをON!を見てね♫
付け足します!
Homebridge-Hueのコンフィグにあるuserを未定義にすると、Linkボタンを押下を依頼するテキストをHomebridgeログに出す。
Phoscon AppにあるLinkボタン押下すると、userに設定する値をHomebridgeログに出す。
Raspberry Pi Zero WHでdeCONZはCPU使用率が高い。
deCONZ-WIFI2.shが5%ぐらいCPU利用率を占める。
deCONZ-WIFI2.shはPhoscon AppでWIFIを使用するスクリプト。 使わないサービスです、止めちゃいましょう! ついでに、deCONZアップデートもいらないかな。
-
エディタnanoを起動
sudo nano /lib/systemd/system/deconz.service
-
deconz.serviceを書き換え
Wants=deconz-init.service deconz-update.service ↓ # Wants=deconz-init.service deconz-update.service
-
wifi, updateサービスを停止
sudo systemctl stop deconz-wifi sudo systemctl disable deconz-wifi sudo systemctl stop deconz-update sudo systemctl disable deconz-update
これでスッキリ!
トライアンドエラー
CPU使用率が高い
Homebridge UIがCPU負荷が高いと思った。
top
コマンドでCPU使用率を見ると、pigpiod
が5.9%と高い!
RPZ-IR-Sensorがインストールを指示するサービスだよ。
%CPU %MEM TIME+ COMMAND
5.9 0.1 0:08.04 pigpiod
pigpiod
サービスの起動パラメータを変更するよ。
pigpiod
サービスユニットファイルに起動パラメータ -m
を追加。
/lib/systemd/system/pigpiod.service
をnano
で開く
ExecStart=/usr/bin/pigpiod -l # 変更前
↓
ExecStart=/usr/bin/pigpiod -l -m # 変更後
Pythonの起動が重い
公知だけど、Pythonの起動時にimportでモジュールを読み込む。import処理が遅く、Siriの応答が無いので、高速化してみたよ。
Python起動時のimport時間を測定する手法
python3 --check-hash-based-pycs always -X importtime
失敗例かな?
pyinstallerで単一実行ファイルの作成!
pip3 install pyinstaller
残念!ARM6向けのバイナリは作成できない😖
Pythonで記述したソースコードをコンパイル!
python3 -OO -m compileall *.py
python3 --check-hash-based-pycs always -X importtime /var/opt/homeremote/infrared_device.py Get BrightLight ColorTemperature 2> log_get.txt
importは早くなったけど、まだ遅い。
Cmd4のキャッシュ機能を使う!
Cmd4へ完全にポーリングする指示をする。
"Cmd4_Mode": "FullyPolled",
全てのデバイスを65535秒毎にポーリングで確認すると、Cmd4に教える。 ポーリング周期を長い間隔、65535秒、とすることで、ポーリングのPython起動を動作させないようにする。 ポーリング外のPython起動のみを実行する。
最終的に、Python起動は、ごく少なく、CPU負荷はざっくりと、30% -> 5%に大幅に削減した。
最後に電力測定だよ
Raspberry Pi Zeroの電源コネクタへ繋げたケーブルを測ってみたよ。USB Type-Cの電流、電圧測定ジグを使ったよ。
結果は、【電圧5V】【電流0.2A】でした!😊