Rpi4とVolumio 2.729をインストールしました。キーボードボタンを押したときにTriggerhappyを使用してnode.jsスクリプトを実行します。このスクリプトは、対応するインターネットラジオ局を再生します。
module.paths.push('/lib/node_modules');
var io=require('socket.io-client');
var socket= io.connect('http://127.0.0.1:3000');
socket.on('connect',function(){
socket.emit('replaceAndPlay', {"service":"webradio","uri":"http://185.85.28.148:8000"});
});
また、ボタンと「M」キーを同時に押すと、Triggerhappyは現在再生中のステーションをボタンにバインドする.jsスクリプトを実行します。これは、ボリュームの状態を取得し、.jsスクリプトのURIを置き換える方法で機能します(上記の例では)ボタンにバインドされています。fs.writeFile().
私の問題は、Triggerhappyが.jsファイルを上書きできないことです。端末でこのスクリプトを手動で実行すると、正常に実行されます。
Triggerhappyをrootとして実行しましたが、役に立ちませんでした。 Triggerhappyにファイルを上書きするにはどうすればよいですか?それとも、よりエレガントなソリューションはありますか?
編集:これは出力ですsudo systemctl 状態 Triggerhappy.service -l
● triggerhappy.service - LSB: triggerhappy hotkey daemon
Loaded: loaded (/etc/init.d/triggerhappy)
Active: active (running) since Thu 2020-04-16 19:58:25 CEST; 4min 44s ago
Process: 640 ExecStart=/etc/init.d/triggerhappy start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/triggerhappy.service
├─ 698 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
├─2415 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
├─2416 sh -c node /home/volumio/node-stream/play_uri_1-node.js
├─2417 node /home/volumio/node-stream/play_uri_1-node.js
├─2636 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile /var/run/thd.pid --user volumio /dev/input/event*
├─2637 sh -c node /home/volumio/node-stream/play_uri_2-node.js
└─2638 node /home/volumio/node-stream/play_uri_2-node.js
play_uri_x-node.jsに作成されたスクリプトであるmemory.jsのエントリはありません。
答え1
デフォルトtriggerhappy
で実行する必要がありますnobody
。 1つの回避策は、nobody
sudoファイルを編集して特定のコマンドを呼び出す権限を付与することです。ただし、rootを使用する必要はなく、通常のユーザーがスクリプトを実行できるだけで十分です。
Triggerhappy設定でスクリプトへの完全修飾パスがあることを確認してください。
最後に、ログファイル(syslog
と/var/log
。