QRコードリーダ(バーコードリーダ)の読み取りデータをNode-Redにあげます。
1.QRコード(バーコード)リーダの読み取りプログラムは、以下を利用します。
https://qiita.com/bb-mint/items/049d018d7e59a14f3aa9
2.上記のプログラムは、読み取り結果を標準出力するので、そのデータをshellスクリプトでjsonデータとしてcurlでpostします。
#!/bin/bash
read line
curl -X POST -H "Content-Type: application/json" -d "{\"data\" : \"${line}\"}" localhost:1880/from_qr_code
読み取って、送信は、コマンドをパイプ接続します。
sudo /path/qrcodereader /dev/input/by-id/usb-xxxxxx-kbd | /path/to_nodered.sh
適当なデーモン化については、次の最初に書いておきました。
https://qiita.com/bb-mint/items/eeb4b7571af0ca4ec43e
3.受け取り側のNode-redの設定は次の通りです。
「http in」で受け取り用のURLを作ります。
curlに設定した通り、/from_qr_code としています。メソッドはPOST。
入ってきたデータを取り出す例として、「debug」に送ることにします。
「デプロイ」して。(右上のデプロイが赤くなっているはずなので、押します。)
「デバッグ」で見てみます。(右上のテントウムシのマークです)
バーコードを読み込みました。受け取れました。
4.入力データをもとにswtchして、コマンドexec処理
入力されたデータをもとに、「switch」処理します。
入力データは、jsonで、dataというkeyに入れているので、
プロパティで、msg.payload.data とすると取り出せます。
この入力データとの比較を追加して記載できます。
処理は、順番に1番上から下に順に並んでいきます。
switch処理の結果1番から、PC上のコマンドを実行する「exec」に接続します。
コマンドを、そのまま記載します。
コマンドの出力結果を確認できるように「debug」にさらに接続します。
以上で、PCを起動するコマンド、「/home/node-red/notepc.sh」を実行して、
PCをONにします。中身は次のようなコマンドになっています。
#!/bin/sh
wakeonlan ff:4f:f0:0f:ff:ff
なお、コマンドは、次のようにSUID(Set User ID)して、rootでの実行権限を
渡しております。
$ chmod u+s notepc.sh
$ ls -al notepc.sh
-rwsr-xr-x 1 root root 38 2月 20 19:54 notepc.sh
これでPCの起動ができます。