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のソースコードがあります。
コンパイルが正常になったら、openwrtの上で使用して、上はinit.dの中で自動起動を加えて、先に
mosquitto-c/etc/mosquittoConf/mosquitto.co nf
mosquittoが起動するときはmosquitto.co nf内の情報に基づいて起動し、デフォルトの傍受ポートは1883で、debug情報を開いて、匿名登録を許可する
正常起動は以下の通りです。
上のmosquitto Brokerが起動したら、コマンド
uuntuでのテストと同じように、まず購読します。
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/Makefileinclude $(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 nfuser 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_sub
とmosquitto_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}
すべてが正常であることをテストします。