mq2raw

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

名称

mq2raw - MQTTブローカーから RAW 形式データを受信  

形式

mq2raw [-abgsD] [-t topic] [-p port] [-q qos] [-i id] [-c cafile] [-d capath] [-C certfile] [-k keyfile] [-u user] [-P pswd] host outkey shmsize [ logfile ]

mq2raw -a/-b [-gsD] [-t topic] [-p port] [-q qos] [-i id] [-c cafile] [-d capath] [-C certfile] [-k keyfile] [-u user] [-P pswd] host [ logfile ] (-a/-bを指定したときは outkeyshmsizeを省略可)

mq2rawd [-abgs] [-t topic] [-p port] [-q qos] [-i id] [-c cafile] [-d capath] [-C certfile] [-k keyfile] [-u user] [-P pswd] host outkey shmsize [ logfile ]

mq2rawd -a/-b [-gs] [-t topic] [-p port] [-q qos] [-i id] [-c cafile] [-d capath] [-C certfile] [-k keyfile] [-u user] [-P pswd] host [ logfile ] (-a/-bを指定したときは outkeyshmsizeを省略可)

 

解説

mq2raw は、ホスト host のMQTTブローカーに接続して WIN 形式データを受信 (subscribe) し、 それをキー outkey で与えられる共有メモリ・セグメントに巡回的に書き込みます。 ただしオプション-a/-bを指定した場合には出力先が 共有メモリではなく標準出力になります。 受信するMQTTメッセージのトピックはデフォルトで "win/data" です。

共有メモリ・キーは32ビットの整数値です。 outkey をもつ共有メモリ・セグメントが存在しない場合は、大きさ shmsize  (KB) の共有メモリ・セグメントが作られます。すでに存在している場合は、 そのサイズが shmsize  (KB) よりも小さいとエラーになります。 オプション-a/-bを指定した場合には outkeyshmsize は省略可能です。

ブローカーから受信された1メッセージのペイロードが 共有メモリ上の1ブロックになります。 その形式は、書き込み時刻付き・ブロック末尾のブロック長付きです。 共有メモリ上の形式については order(1W), recvt(1W) を 参照してください。

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

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

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

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

mq2raw は特定のWIN チャネル番号のデータのみを選別して受信することは できません。受信後にチャネル番号で選別するには、raw_raw(1W) 等が使えます。

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

 

オプション

-a
ASCII形式(shmdump(1W) -tq の形式)で標準出力へ書き出します。 このデータをパイプで shmx(1W) に入力することにより、 望む1つまたは複数のチャネルのリアルタイム波形表示をすることができます。 -aが指定されたとき、2つ目と3つ目の引数 outkeyshmsize は省略可能で、それらを省略した場合は logfile がさらに省略可能な2つ目の引数になります。
-b
バイナリ形式で標準出力へ書き出します。これはWINフォーマットの 波形ファイルをそのままダンプ(cat)したのと同じで形式で、 shmdump(1W) が、入力共有メモリキーとして " - " を指定されたときに 期待する形式です。したがってこのデータをパイプで shmdump(1W)に 入力して利用することができます。 -bが指定されたとき、2つ目と3つ目の引数 outkeyshmsize は省略可能で、それらを省略した場合は logfile がさらに省略可能な2つ目の引数になります。
-s
SSL/TLS化されたブローカーに接続します。
-t topic
受信するべきMQTTメッセージのトピックを topic に設定します。トピックは任意の文字列で、'/'で区切って階層化することができます。 1つまたは複数の階層をそれぞれワイルドカード '+'と'#' で表現することにより、 複数のトピックを受信指定することもできます。トピックの詳細については MQTTの資料を見てください。
-p port
MQTTブローカー host のTCPポート番号を port に指定します。デフォルトは 1883 です。ただしオプション -s で SSL/TLS化した場合のデフォルトは 8883 です。
-q qos
MQTTブローカーとの間の通信品質(QoS)を qos に設定します。設定できる値は 0,1,2 のいずれかで、デフォルトは 0 です。 QoSの意味についてはMQTTの資料を見てください。
-u user
-P pswd
MQTTブローカーがユーザー認証を必要とする場合、ユーザー名 user とパスワード pswd をそれぞれ設定します。
-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
デバッグ情報を出力します。 ここで出力されるトピック・QoS・メッセージIDは受信された 各メッセージに付いてきたものです。
 

使用例

ホスト mybroker のMQTTブローカーからWINデータを受信してキー 21 の 共有メモリ(大きさ1000KB)に書き出します。 MQTTのユーザー名user、パスワードpassです。


  mq2raw -u user -P pass mybroker 21 1000

このとき、並行してWINデータパケットをUDPポート 7000 で受信して キー 11 の共有メモリに書き出しているとします。

  recvt 7000 11 1000

これら2系統のデータを1つの共有メモリに合流させるには、 次の3つの方法があります。

(1)  sendt_raw 21 localhost 7000

     MQTT経由のデータをUDPに転送して共有メモリ 11 にまとめる。

(2)  raw2mq -u user -P pass 11 mybroker

     UDP経由のデータをMQTTに転送して共有メモリ 21 にまとめる。

(3)  rawmix 11 21 31 1000

     共有メモリ 11 と 21 のデータを別の共有メモリ 31 にまとめる。

ホスト mybroker のMQTTブローカーからWINデータを受信して、shmx(1W) で チャネル番号 9100,9102,9103 の3チャネルの波形をモニターします。


  mq2raw -a mybroker -u user -P pass | shmx 9100 9101 9102

上と同様ですが、バイナリ/ASCII変換は shmdump(1W) で行います。


  mq2raw -b mybroker -u user -P pass | shmdump -tq - 9100 9101 9102 |\
    shmx 9100 9101 9102

 

ソース

mq2raw.c
 

関連事項

raw2mq(1W), order(1W), recvt(1W), raw_raw(1W), rawmix(1W)


 

Index

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

This document was created by man2html, using the manual pages.
Time: 02:46:09 GMT, July 02, 2025