LoginSignup
0
2

More than 1 year has passed since last update.

QRコードリーダ(バーコードリーダ)の読み取りデータをNode-Redに飛ばす

Last updated at Posted at 2022-04-09

QRコードリーダ(バーコードリーダ)の読み取りデータをNode-Redにあげます。

node-red画面0.jpg

1.QRコード(バーコード)リーダの読み取りプログラムは、以下を利用します。
  https://qiita.com/bb-mint/items/049d018d7e59a14f3aa9

2.上記のプログラムは、読み取り結果を標準出力するので、そのデータをshellスクリプトでjsonデータとしてcurlでpostします。

to_nodered.sh
#!/bin/bash
read line
curl -X POST -H "Content-Type: application/json" -d "{\"data\" :  \"${line}\"}" localhost:1880/from_qr_code

読み取って、送信は、コマンドをパイプ接続します。

QRコード・バーコードリーダのデータ読み取りをパイプする
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。
node-red画面1.jpg

入ってきたデータを取り出す例として、「debug」に送ることにします。
node-red画面2.jpg

「デプロイ」して。(右上のデプロイが赤くなっているはずなので、押します。)
node-red画面3.jpg

「デバッグ」で見てみます。(右上のテントウムシのマークです)
node-red画面4.jpg

バーコードを読み込みました。受け取れました。


4.入力データをもとにswtchして、コマンドexec処理

 入力されたデータをもとに、「switch」処理します。

node-red画面5.jpg

 入力データは、jsonで、dataというkeyに入れているので、
 プロパティで、msg.payload.data とすると取り出せます。
 この入力データとの比較を追加して記載できます。
 処理は、順番に1番上から下に順に並んでいきます。

node-red画面6.jpg

 switch処理の結果1番から、PC上のコマンドを実行する「exec」に接続します。
 コマンドを、そのまま記載します。

node-red画面7.jpg

 コマンドの出力結果を確認できるように「debug」にさらに接続します。

node-red画面8.jpg

以上で、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の起動ができます。

node-red画面9.jpg

0
2
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
2