syslogサーバになっているArmbianにMQTT環境をインストールします。作業内容はこちらの記事を参考にしました。(というか、そのまま)
注)ローカルネットワーク内でのテストのため、ユーザー認証なしの状態で実施しています。
サーバー (Broker) のインストール
$ sudo apt install mosquitto
サーバー(Broker)の起動
$ sudo systemctl start mosquitto
$ sudo systemctl start mosquitto $ sudo systemctl status mosquitto ● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker Loaded: loaded (/etc/init.d/mosquitto; generated) Active: active (running) since Mon 2019-05-13 01:24:52 JST; 40s ago Docs: man:systemd-sysv-generator(8) Tasks: 1 (limit: 413) CGroup: /system.slice/mosquitto.service └─3781 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf 5月 13 01:24:51 armbian systemd[1]: Starting LSB: mosquitto MQTT v3.1 message broker... 5月 13 01:24:51 armbian mosquitto[3775]: * Starting network daemon: mosquitto 5月 13 01:24:52 armbian mosquitto[3775]: ...done. 5月 13 01:24:52 armbian systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker.
クライアントのインストール
$ sudo apt install mosquitto-clients
リスナー(Subscribe)を動かす
リスナーの起動はサーバ(Broker)の起動後に行う。下記はその後のPublishをした際の記録を含む。トピックは mqtttest としてみた。
$ mosquitto_sub -d -t mqtttest Client mosqsub|3941-armbian sending CONNECT Client mosqsub|3941-armbian received CONNACK Client mosqsub|3941-armbian sending SUBSCRIBE (Mid: 1, Topic: mqtttest, QoS: 0) Client mosqsub|3941-armbian received SUBACK Subscribed (mid: 1): 0 Client mosqsub|3941-armbian received PUBLISH (d0, q0, r0, m0, 'mqtttest', ... (18 bytes)) Hello MQTT world ! Client mosqsub|3941-armbian sending PINGREQ Client mosqsub|3941-armbian received PINGRESP Client mosqsub|3941-armbian sending PINGREQ Client mosqsub|3941-armbian received PINGRESP
今回はローカルのサーバ(Broker)に対して接続(subscribe)しているが、リモートのサーバ(Broker)に対して接続(subscribe)する場合は「-h server名」とする。
別のPCでもクライアントのみ起動してサーバー(Broker)を指定してリスナーを起動すると、Publishした瞬間に同時に両方のリスナーで表示される。
Publishを動かす
$ mosquitto_pub -d -t mqtttest -m "Hello MQTT world !" Client mosqpub|3942-armbian sending CONNECT Client mosqpub|3942-armbian received CONNACK Client mosqpub|3942-armbian sending PUBLISH (d0, q0, r0, m1, 'mqtttest', ... (18 bytes)) Client mosqpub|3942-armbian sending DISCONNECT $
今回はローカルのサーバ(Broker)に対して接続(Publish)しているが、リモートのサーバ(Broker)に対して接続(Publish)する場合は「-h server名」とする。
サーバー(Broker)を自動起動するように設定
$ sudo systemctl enable mosquitto mosquitto.service is not a native service, redirecting to systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable mosquitto $