使って適当に工作したメモを残していきます。Pi上でNode-REDが動きました。ここまでが母艦側になります。今回は母艦からコントロールされるエッジ側の準備です。余談ですが、、、ちょっと前までのIoT分野ではデータ収集がメインだったので「エッジ」→「ゲートウェイ」→「サーバ」という名前の付け方が多かったように思います。今回のように母艦が複数のエッジデバイスを制御するような場合、サーバ/クライアントモデルとかデータフローがあまり関係ないので「サーバ」とか「ゲートウェイ」という名付け方は不適切に感じます。呼び方がよく分からないので、ここでは制御の頭脳側を「母艦」と呼ぶことにします。母艦から制御されるデバイス側を「エッジ」と呼ぶことにします。エッジ側は複数のデバイスそれぞれに対応させる必要があります。最終的にはルンバを動かしたいのですが、実はルンバの赤外線は結構面倒だということがわかったので、まずはテレビを動かしてみようと思います。今回のやり方ではルンバは動きません。PiではなくArduinoを使います。Piで赤外線を使うためにRaspbianにlirdをインストールします。私が試した範囲では普通に使えています。使い方に若干クセがあるようにも思いますがさほど問題ないように思います。lirc続いて、/boot/config.txtを編集します。古いバージョンだと別の設定ファイルだったり、書き方が異なっていたりして混乱の元になっています。「#dtoverlay=lirc-rpi」という行を探して書き換えます。赤外線受信モジュールのセンサピンを繋ぐピン番号です。赤外線LEDのアノード側。モジュールを使う場合は当然、入力ピンです。Piのピンアサインはここに書かれています。書くのは、ピン番号ではなくてGPIO番号です。端から連番ではありません。ちなみに、基板の半田付けする部分が1個だけ正方形になっていて、そこが3.3Vピンです。次に、元々置かれている設定ファイルを読み込まないようにします。デフォルトの設定は送信に対応していないようで、消し忘れると後々面倒なことになります。ついてググると「hardware.conf」に関する設定が出てくることがあります。現在では必要ないようです。modprobeも必要ありません。デバイスが出来ていればとりあえずOKです。赤外線受信モジュールを接続する赤外線受信モジュールと送信モジュールを図のように接続します。基板に「-」と書いてあるピンがGND、何も書いていないピン(真ん中)が3.3Vです。「S」と書いてあるピンがGPIOの入出力。Piから見れば入力センサなのでIN側のピン、つまりGPIO24に繋ぎます。Piの出力なのでOUT側(GPIO25)です。Piを起動し、mode2コマンドでlirc0デバイスを呼ぶと読み込み待ちになります。この状態でテレビのリモコンを赤外線受信モジュールに向けてボタンを押します。/dev/lirc0」と表示されると思います。コマンドが終了してプロンプトが返ってくれば成功。Piをリモコン化する準備が整いました。リモコンコードを読み込ませるツールが整っているので簡単にリモコン化できます。recording){以下、ボタンごとに繰り返し。TV.lircd.confカレントディレクトリに「TV.lircd.conf」というファイルが出来上がります。このファイルを/etc/lirc/lircd.conf.d/に移動します。/etc/lirc/lircd.conf.d/この状態で、lircdを起動。start設定が読まれているか確認します。:では、実際にテレビに向かって送信してみます。onこれでテレビが反応すれば成功です。次のようなメッセージが出た場合はlircの最初の設定で「devinput.conf」を消し忘れている可能性が高いです。errorこのエラーはググっても全く情報がなくてかなりハマりました。この状態に陥ると、後から「devinput.conf」を消してもダメです。呼ばれてしまっています。テレビを制御できるようになりました。結合して、ついにAlexaからテレビを動かします。