いまさらながら Raspberry Piをスマート赤外線リモコン化しAlexaと連携する。
ハードウェア:
Raspberry Pi Model B+ v1.2 2014
かなり古い 32bit OSしか動きません
赤外線送受信ユニット
自作: 回路図は
赤外線LEDドライブ回路の決定版をそのまま使わせていただきました。
ソフトウェア:
Linux raspberrypi 6.12.34+rpt-rpi-v6 #1 Raspbian 1:6.12.34-1+rpt1~bookworm (2025-06-26) armv6l GNU/Linux
32bitのRaspberry Pi OS Liteを 16GBのSD cardにインストール
user piのパスワードを設定
起動したら
sudo apt uodate
sudo apt uograde -y
ip addressの固定でハマったので備忘録
nmcli connection show ethoを確認 192.168.1.81に固定します
sudo nmcli connection add type ethernet ifname eth0 con-name eth0
sudo nmcli connection modify eth0 ipv4.addresses 192.168.1.81/24
sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
PIGPIO
sudo apt install pigpio
sudo systemctl enable pigpiod
sudo systemctl start pigpiod
sudo systemctl status pigpiod で動作を確認
irrp.py
wget https://abyz.me.uk/rpi/pigpio/code/irrp_py.zip で入手
受信は
irrp.py -r -g18 -f codes.json tv_power
として tvのリモコンボタンを押します
--no-confirm オプションをつけないと、同じキーを2回押す必要があります
エアコンのリモコンだと --no-confirm が必要でした
送信は
irrp.py -p -g17 -f codes.json tv_power
今回は エアコンのオン/オフを覚えさせて ac_onと ac_offを codes.jsonに作成しておきます。
Alexaとの連携
node-redをinstall
Amazon AlexaのNode-Red連携でハマりまくったので備忘録
を参考に
node-redをport 1080で rootで起動 このとき ALEXA_PORT=80 を設定します
/lib/systemd/system/nodered.service で
ExecStart=/usr/bin/env sudo node-red-pi ALEXA_PORT=80 $NODE_OPTIONS -- $NODE_RED_OPTIONS
/root/.node-red/settings.jsを編集して
uiPort: process.env.PORT || 1080,
にしておきます。
http://192.168.1.81:1080にアクセスして
node-red-contrib-amazon-echoをパレットで登録
これはPhillipsのスマートホームハブをnode-redでシミュレートするもので
対象が電球なので、デバイスのオンオフだけができるものです
フローを作成
Amazon Echo Hubは
Port 80 **** 80 以外だと deviceを発見することができません
Process Input Process
Device discovery をcheck
Amazon echo device を
Name エアコン
とします
Function 1は コードのところを
if (msg.payload == "on") {
msg.payload = "ac_on";
} else {
msg.payload = "ac_off";
}
return msg;
Alexaに 「エアコン On」あるいは「エアコン つけて」と話しかけると
エアコンから "on"というmsg.payloadが送られてくるので、function 1で
msg.payloadを "ac_on"に変換しています
これを次の execで処理するのですが コマンドを
/usr/bin/irrp.py --play -g 17 -f /home/pi/codes.json
+引数 チェックして msg.payload
とすることで、
/usr/bin/irrp.py --play -g 17 -f /home/pi/codes.json ac_on
が実行されるという流れです
デプロイするのを忘れずに
スマホとかipadのAlexaアプリで デバイスの追加をします
照明で Phillipsの第一世代を選択すると照明として認識されます
名前が日本語だと文字化けしているので、編集して エアコン に設定します
これで、呼びかけるとコマンドが実行されます。