raw2mq

Section: WIN SYSTEM (1W)
Updated: 2025.4.21
Index Return to Main Contents
 

名称

raw2mq - RAW 形式データをMQTTブローカーへ送信  

形式

raw2mq [-agjnsD] [-t topic] [-p port] [-q qos] [-i id] [-c cafile] [-d capath] [-C certfile] [-k keyfile] [-u user] [-P pswd] [-l/-L chfile] inkey host [ logfile ]

raw2mqd [-agjs] [-t topic] [-p port] [-q qos] [-i id] [-c cafile] [-d capath] [-C certfile] [-k keyfile] [-u user] [-P pswd] [-l/-L chfile] inkey host [ logfile ]

 

解説

raw2mq はホスト  host のMQTTブローカーに接続し、キー  inkey の共有メモリ・セグメントに巡回的に書き込まれている WIN 形式のデータを送信 (publish) します。 MQTTメッセージのトピックはデフォルトで "win/data" です。

共有メモリ  inkey 上の形式は、時間順整列の有無・書き込み時刻の有無・ ブロック末尾のブロック長の有無、のいずれも問いません。 共有メモリ上の形式については order(1W), recvt(1W) を 参照してください。

共有メモリ上の1ブロックからブロック長情報と書き込み時刻情報を 除いた部分 (すなわち通常はタイムスタンプと波形データからなる1秒分)が 1つのMQTTメッセージのペイロードとして送信されます (ただしオプション -a または -j が指定された場合は下記参照)。

raw2mqd は daemon モードで起動します。

ログファイル名  logfile を指定すると、ここに動作ログがとられ、指定しないとログ情報は標準出力に 送られます(ただし、daemon モードで動いている時は syslogd(8) に送られます)。 ログファイルは書き込みのたび毎にオープン/クローズされます。

raw2mq は、HUPシグナルを受けると ログファイル  logfile に流量情報を書き出します。これには起動時、 または前回HUPシグナルを受けたときからの、

  メッセージ数、バイト数、毎秒メッセージ数、毎秒バイト数
が含まれます。

raw2mq は特定のWIN チャネル番号のデータのみを選別して送信することは できません(ただしオプション -a または -j-l または -Lと同時に指定された場合は下記参照)。 送信前にチャネル番号で選別するには、raw_raw(1W) 等が使えます。

raw2mq は、引数なしで起動すると簡単な使用法を表示します。

 

オプション

-s
SSL/TLS化されたブローカーに接続します。
-t topic
送信するMQTTメッセージのトピックを topic に設定します。トピックは任意の文字列で、'/'で区切って階層化することができます。 トピックの詳細についてはMQTTの資料を見てください。
-p port
MQTTブローカー host のTCPポート番号を port に指定します。デフォルトは 1883 です。ただしオプション -s で SSL/TLS化した場合のデフォルトは 8883 です。
-q qos
MQTTブローカーとの間の通信品質(QoS)を qos に設定します。設定できる値は 0,1,2 のいずれかで、デフォルトは 0 です。 QoSの意味についてはMQTTの資料を見てください。
-a
ASCII形式で出力します。このときデータは1秒×1チャネル毎のMQTTメッセージとして、 チャネル毎に別々のトピック名がついて、 shmdump(1W) -tq の形式で出力されます。 このデータをMQTTクライアントで受信(subscript)してパイプで shmx(1W) に入力することにより、 望む1つまたは複数のチャネルのリアルタイム波形表示をすることができます。 このときのトピック名は topic ではなく、topic/a/CHID (CHIDは16進数4桁のチャネル番号) になります。この場合に限り、 topic は空文字列("")または空白(" ")でもよく、そのときトピック名は a/CHID になります。 -aオプションは-jオプションと同時に指定することができます。
-j
JSON形式で出力します。 このときデータは1秒分×1チャネル毎のMQTTメッセージとして、 チャネル毎に別々のトピック名を持ち、 winmonitor.js / smoothie.js によるリアルタイム波形表示システムで受信(subscript) 表示することができるJSON形式です。 このときのトピック名は topic ではなく、topic/j/CHID (CHIDは16進数4桁のチャネル番号)になります。この場合に限り、 topic は空文字列("")または空白(" ")でもよく、そのときトピック名は j/CHID になります。 -jオプションは-aオプションと同時に指定することができます。
-u user
-P pswd
MQTTブローカーがユーザー認証を必要とする場合、ユーザー名 user とパスワード pswd をそれぞれ設定します。
-l chfile
-jまたは-aオプションと共に指定されたとき、 WIN形式のチャネル表ファイル chfile を読んで、その中にあるチャネルだけを出力します。 チャネル表ファイルの形式については win(1W) を参照してください。 出力の際のトピック名はチャネル毎に topic/j/STN/CMP または topic/a/STN/CMP 等になり(STNはチャネル表から得た観測点コード、CMPは同じく成分名)、 データ中のCHID部分も同様にSTN/CMPになります。
-L chfile
オプション-lとほぼ同じですが、 出力されるのはチャネル表に従って物理量に変換された後の値です。 またトピック名はチャネル毎に topic/J/STN/CMP または topic/A/STN/CMP 等になり、データ中のCHID部分も同様にSTN/CMPになります。
-n
オプション-lまたは-Lが指定されている場合でも、トピック名の STN/CMP の部分を CHID にします。
-c cafile
-d capath
SSL/TLS対応のブローカーの場合、CA(認証局)証明書である PEM形式のファイル cafile またはそれを内容として持つディレクトリ capath のいずれかを指定します。 デフォルトでそれぞれ /etc/ssl/certs と /etc/ssl/cert.pem が使用され (試され)ますが、これらがいずれもが有効ではない場合は指定が必要です。
-C certfile
-k keyfile
SSL/TLS対応のブローカーがクライアント認証を必要とする場合、 PEM形式の証明書ファイル certfile と PEM形式の秘密鍵ファイル keyfile の2つをそれぞれ指定します。
-D
daemon モードで起動します。
-g
デバッグ情報を出力します。
 

使用例

キー11の共有メモリに流れているデータを、ASCII形式で、 チャネルごとに別々のトピックで、ホスト host のMQTTブローカーへ 送信(publish)します。トピックとして "" を指定したので、 トピック名は a/CHID になります。MQTTのユーザー名user、パスワードpassです。


  raw2mq -aj -t "" -u user -P pass 11 host

送信されたデータのうち 9100,9101,9102の3チャネルをMQTTクライアントで受信 (subscript)して、shmx(1W) でリアルタイム波形表示します。

  mosquitto_sub -h host -u user -P pass -t a/9100 -t a/9101 -t a/9102 |\
    shmx 9100 9101 9102

webブラウザで下のようなURLをアクセスするとwinmonitor.js/smoothie.jsによる チャネル9100のリアルタイム波形表示が見えるかもしれません。

  http://host/winmonitor.html?CH=9100&FPS=0&SEC=10&COL=1&WIDTH=1000&HEIGHT=200

 

ソース

raw2mq.c
 

関連事項

mq2raw(1W), order(1W), recvt(1W), raw_raw(1W), shmx(1W), win(1W)


 

Index

名称
形式
解説
オプション
使用例
ソース
関連事項

This document was created by man2html, using the manual pages.
Time: 14:01:48 GMT, December 16, 2025