0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Piで赤外線送受信しAlexaと連携する その1

Last updated at Posted at 2025-08-07

いまさらながら Raspberry Piをスマート赤外線リモコン化しAlexaと連携する。

ハードウェア: 
 Raspberry Pi Model B+ v1.2 2014
   かなり古い 32bit OSしか動きません
赤外線送受信ユニット
  自作: 回路図はimage.png
赤外線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でシミュレートするもので
 対象が電球なので、デバイスのオンオフだけができるものです

フローを作成

image.png

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の第一世代を選択すると照明として認識されます
名前が日本語だと文字化けしているので、編集して エアコン に設定します
これで、呼びかけるとコマンドが実行されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?