ルーティング時にチャリーン♪音を鳴らす

ルーティング時にチャリーン♪音を鳴らす

自分のノードを通っていくルーティングが可視化されるのは楽しい。LNDgで眺めたり、Telegrambotに通知させたり。

同じように、音でも通知させたら面白いんじゃないだろうか。

というわけで、ルーティングが発生すると、チャリーン♪となるようにしてみた。

1.前提としている環境

  • Raspberry Pi に umbrel をインストールし、ライトニングネットワークのノードを建てていること。

2.用意するもの

  • 鳴らす音。waveファイルを準備する。「マリオ コイン wav」で検索してダウンロードしてきた。好きな音でOK。
  • スピーカー。ダイソーの300円スピーカーにした。USBケーブルで給電するアンプ内蔵スピーカー。まあ、ステレオミニプラグの付いているスピーカーなら何でもよい。

3.ハードの設定

Raspberry Pi のステレオ音声出力にスピーカーをつなぐ。

ダイソースピーカーの電源入力のUSBもラズパイにつないでしまう。(電源がシビアな場合は他から取った方が良いかも。)

4.ソフトの設定

ソフトの動きは割と単純で、LNDのログを監視して、ルーティングが発生したら、waveファイルを再生。シェルスクリプトで書くことにする。

  • waveファイルをumbrelにコピー

自分のPCにダウンロードしておいて、scpコマンドでコピーしてくるのが手っ取り早いかな。

scp C:\Users\ユーザ名\Downloads\coin.wav umbrel@umbrel.local:/home/umbrel/

  • LNDのログを監視する方法

以下のサイトのスクリプトを使用。

LNDのログファイルの場所は、/home/umbrel/umbrel/app-data/lightning/data/lnd/logs/bitcoin/mainnet/lnd.log

監視する文字列は「Forwarded」。以下のログがフォワーディング発生時のログ。

2022-07-19 10:26:37.879 [INF] HSWC: Forwarded HTLC(4ea4c7f28595b8e80a7f937f37c8862175c1dae14db73d87416bd8f4125738df) of 96993910 mSAT (fee: 1000 mSAT) from IncomingChanID(743993:1402:1) to OutgoingChanID(729115:700:0)

  • 音を鳴らす方法

Raspberry Pi で手っ取り早く音を鳴らすのは、 aplayコマンド。waveファイルを鳴らせる。

/usr/bin/aplay /home/umbrel/coin.wav

出来たスクリプトはこんな感じ。ほぼ上記のQiitaの人のを流用。

※夜中にチャリーン♪なんて、と苦情が来たので時間帯の制限を追加しました。直近ルーティングが少なく、あまりデバッグ出来てないので、おかしな動きしたらごめんなさい。

#!/bin/sh
# 検出対象ログファイル
TARGET_LOG="/home/umbrel/umbrel/app-data/lightning/data/lnd/logs/bitcoin/mainnet/lnd.log"
start_time=0800
finish_time=2200

# 検出文字列
_error_conditions="Forwarded"

# ログファイルを監視する関数
hit_action() {
    while read i
    do
        now=$(TZ=UTC-9 date '+%H%M')
        echo $i | grep -q "${_error_conditions}"
        if [ $? = "0" ] && [ $now -ge $start_time ] && [ $now -lt $finish_time ]; then
            # アクション
#            echo "チャリーン♪"
            /usr/bin/aplay /home/umbrel/coin.wav
        fi
    done
}

# main
if [ ! -f ${TARGET_LOG} ]; then
    touch ${TARGET_LOG}
fi

tail -n 0 --follow=name --retry $TARGET_LOG | hit_action

これを、logchecker.shで保存。

  • プログラムを実行する

chmod a+x logchecker.sh で実行権限を与えてやる。

nohup ./logchecker.sh & で実行。ログアウトしても終了しないようにバックグラウンドで動かす。

完成。ますますルーティングの発生が楽しみになったよ!

蛇足

LNDのログを監視しているだけなので、Raspberry Pi の umbrel 以外の環境でもおそらく動く。

プログラムをシェルスクリプトで書いて、aplayで音を鳴らしているのは、umbrelの環境に何もインストールしなくてもよいから。よく分からないものを入れて、umbrelの動作が不安定になるのは避けたい。

ラズパイで動いているumbrelには、眠っている機能がいろいろある、今回の音声出力やGPIOのピンなど。使わないのはもったいないよね?

今回さらに進めてKeysendでの受け取り時にも音を鳴らそうとしたのだけど、ログの拾い方が分からず断念。詳しい方、教えてください。

Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

katana🗡 Lightning Node 運用中。03328dba4e263835416d35b14a2f0298f567c6bb5dad7e3d33d671de30d542b4c1

Share

Popular stories

charge-lnd で fee や max_htlc を自動設定[umbrel 0.5.0以降対応]

900

Lightning node の運用まとめ

464

Raspberry Pi 用の UPS(無停電電源装置) で umbrel の瞬停対策

459