4-Openwrt MQTT braker使用

5644 ワード

mosquittはMQTTとしてLinuxプラットフォームで応用されている比較的に広範なオープンソースソフトウェアであり、サービス端末brook erを含み、libライブラリをclientに提供しています。
1.mosquittoダウンロードコンパイル
ホームページに必要なバージョンをダウンロードします。http://mosquitto.org/files/source/
openwrtの下にmosquitto packageを追加します。
filesの下にスクリプトとconfの配置ファイルを置いて、Makefileの中で情報をコンパイルします。srcの下には公式サイトでダウンロードしたmosquittoのソースコードがあります。
mosquitto/
├── files
│   ├── mosquittoConf
│   │   └── mosquitto.conf
│   └── mosquitto.init
├── Makefile
└── src
    ├── about.html
    ├── aclfile.example
    ├── ChangeLog.txt
    ├── client

mosquitto/Makefile
include $(TOPDIR)/rules.mk

PKG_NAME:=mosquitto
PKG_VERSION:=1.5
PKG_RELEASE:=20191126

PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk

define Package/$(PKG_NAME)
  SECTION:=net
  CATEGORY:=Network
  TITLE:=mosuqitto
  PKGARCH:=all
  SUBMENU:=net
  URL:= http://mosquitto.org/files/source/mosquitto-1.5.tar.gz
  DEPENDS:= +libopenssl +librt +libuuid
endef

define Package/$(PKG_NAME)/description
 mosquitto
endef

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/InstallDev
    $(INSTALL_DIR) $(1)/usr/include
    $(CP) $(PKG_BUILD_DIR)/lib/mosquitto.h $(1)/usr/include
    $(INSTALL_DIR) $(1)/usr/lib
    $(CP) $(PKG_BUILD_DIR)/lib/libmosquitto.so.1 $(1)/usr/lib/
    $(LN) libmosquitto.so.1 $(1)/usr/lib/libmosquitto.so
endef

define Package/$(PKG_NAME)/install
    $(INSTALL_DIR) $(1)/usr/lib
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/libmosquitto.so.1 $(1)/usr/lib/
    $(LN) libmosquitto.so.1 $(1)/usr/lib/libmosquitto.so
    $(INSTALL_DIR) $(1)/usr/sbin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mosquitto $(1)/usr/sbin/mosquitto
    $(INSTALL_DIR) $(1)/etc/mosquittoConf
    $(CP) ./files/mosquittoConf/* $(1)/etc/mosquittoConf/
    $(INSTALL_DIR) $(1)/etc/init.d
    $(INSTALL_BIN) ./files/mosquitto.init $(1)/etc/init.d/mosquitto
endef

$(eval $(call BuildPackage,$(PKG_NAME)))
mosquitto/files/mosquitto.init
!/bin/sh /etc/rc.common
# Basic init script for mosquitto
# April 2012, OpenWrt.org
# Provides support for the luci-app-mosquitto package, if installed

START=80
USE_PROCD=1

CONF=/etc/mosquittoConf/mosquitto.conf

start_service() {
    procd_open_instance
    procd_set_param command mosquitto
    procd_append_param command -c $CONF
    procd_set_param respawn
    [ -e /proc/sys/kernel/core_pattern ] && {
        procd_set_param limits core="unlimited"
    }   
    procd_close_instance
}

mosquitto/files/mosquittoConf/mosquitto.com nf
user root

listener 1883

log_type error
log_type warning
log_type notice
log_type information
log_type debug

allow_anonymous true
上のファイルを全部添付してください。configでmosquittoを選択してコンパイルします。
CONFIG_PACKAGE_mosquitto=y
2.mosquitto配置起動
コンパイルが正常になったら、openwrtの上で使用して、上はinit.dの中で自動起動を加えて、先に/etc/init.d/mosquitto stopは手動起動に停止します。
mosquitto-c/etc/mosquittoConf/mosquitto.co nf
mosquittoが起動するときはmosquitto.co nf内の情報に基づいて起動し、デフォルトの傍受ポートは1883で、debug情報を開いて、匿名登録を許可するallow_anonymous true
正常起動は以下の通りです。
root@openwrt:/# mosquitto -c /etc/mosquittoConf/mosquitto.conf 
1593326317: mosquitto version 1.5 starting
1593326317: Config loaded from /etc/mosquittoConf/mosquitto.conf.
1593326317: Opening ipv6 listen socket on port 1883.
1593326317: Warning: Address family not supported by protocol
1593326317: Opening ipv4 listen socket on port 1883.
1593326317: Warning: Mosquitto should not be run as root/administrator.
3.コマンドラインによる購読テストの発行
上のmosquitto Brokerが起動したら、コマンドmosquitto_submosquitto_pubでテストができます。正常ですか?
uuntuでのテストと同じように、まず購読します。
root@zihome:/# mosquitto_sub -t "local/test" -h 127.0.0.1 -p 1883 -d -i ubuntu_client1
Client ubuntu_client1 sending CONNECT
Client ubuntu_client1 received CONNACK (0)
Client ubuntu_client1 sending SUBSCRIBE (Mid: 1, Topic: local/test, QoS: 0)
Client ubuntu_client1 received SUBACK
Subscribed (mid: 1): 0
この時もBrokerの上のロゴが見えます。設備が追加されました。
1593326374: New connection from 127.0.0.1 on port 1883.
1593326374: New client connected from 127.0.0.1 as ubuntu_client1 (c1, k60).
1593326374: No will message specified.
1593326374: Sending CONNACK to ubuntu_client1 (0, 0)
1593326374: Received SUBSCRIBE from ubuntu_client1
1593326374:     local/test (QoS 0)
1593326374: Sending SUBACK to ubuntu_client1
もう一つの端末を開けて、テーマを発表します。
root@zihome:/# mosquitto_pub -t "local/test" -m "{test:111}" -h 127.0.0.1 -p 1883 -d -i ubuntu_client2
Client ubuntu_client2 sending CONNECT
Client ubuntu_client2 received CONNACK (0)
Client ubuntu_client2 sending PUBLISH (d0, q0, r0, m1, 'local/test', ... (10 bytes))
Client ubuntu_client2 sending DISCONNECT
Brokerがclient 2のメッセージを受け取った後、client 1に転送することができます。
1593326497: New client connected from 127.0.0.1 as ubuntu_client2 (c1, k60).
1593326497: No will message specified.
1593326497: Sending CONNACK to ubuntu_client2 (0, 0)
1593326497: Received PUBLISH from ubuntu_client2 (d0, q0, r0, m0, 'local/test', ... (10 bytes))
1593326497: Sending PUBLISH to ubuntu_client1 (d0, q0, r0, m0, 'local/test', ... (10 bytes))
1593326497: Received DISCONNECT from ubuntu_client2
1593326497: Client ubuntu_client2 disconnected.
client 1はBroker転送のデータを受け取ります。
Client ubuntu_client1 received PINGRESP
Client ubuntu_client1 received PUBLISH (d0, q0, r0, m0, 'local/test', ... (10 bytes))
{test:111}
すべてが正常であることをテストします。