物联网信息,第三部分:测试蚊子

我们已经启动了mosquito - to MQTT消息传递代理,现在让我们对其进行测试

所以,在最后一期在本系列关于消息传递协议MQTT的文章中,我们安装了to MQTT代理。现在我们要测试一下,我们要在蚊子叮咬的那台机器上做。首先,你需要安装to client工具:

sudo apt-get安装蚊子到客户端

现在,让我们从命令行运行mosquito - to:

蚊子到1485602498:蚊子版本1.3.4(构建日期2014-08-17 03:38:31+0000)启动1485602498:使用默认配置。1485602498:在1883端口打开ipv4监听套接字。1485602498:在端口1883上打开ipv6监听套接字。

mosquito - to代理现在正在监听IPv4和IPv6 MQTT请求的标准MQTT端口1883。接下来,打开一个新的终端窗口并输入:

$ to_sub -v -t“传感器”

Mosquitto订阅者现在正在等待带有主题的消息吗传感器。没有- v订阅方仅打印有效负载,而使用它时,订阅方同时打印主题和有效负载(如果订阅此选项,则更有用)这是我们所讨论的一切话题本系列的第一部分)。也许很明显- t选项后跟一个字符串确定主题。现在,在另一个终端窗口中,输入:

mgibbs @ DEB-01:〜$ mosquitto_pub -t“传感器” -M“的helloWorld” mgibbs @ DEB-01:〜$

而第二个终端窗口会是这个样子:

mgibbs @ DEB-01:〜$ mosquitto_sub -v -t“传感器”传感器的helloWorld

哈!我们刚刚使用Mosqitto MQTT代理发送和接收了第一个消息。现在,如何设置消息生成器?最简单的方法是编写一些Python代码。假设您已经安装了Python,那么您需要安装开放源码Eclipse Paho MQTT客户机Python(其他语言也有库)

该词在英语中是一个很常用的词,我们可以用它来表示“完全地”、“完全地”、“完全地”、“完全地”、“完全地”、“完全地”的意思。完成存储目录:/Users/mgibbs/Library/Caches/pip/wheels/fa/db/fb/ b495e37057e2f404726b3c00ab26a58d17223df07成功构建paho-mqtt安装所收集的包:paho-mqtt成功安装paho-mqtt-1.2 RedQueen:mqttgen mgibbs$

请注意,Mosquitto客户和Eclipse泛美卫生组织MQTT客户机库上Raspbian也工作,所以你可以继续树莓派你Mosquitto客户端测试和开发,正如我们将在后面讨论,你甚至可以运行在树莓派的Mosquitto经纪人。

我们将使用MQTT发生器被称为mqttgen.py由...制作马里亚诺·Guerra。下面的代码:

#!/ USR / bin中/ env的python3“”“”进口SYS进口JSON进口时间导入随机进口paho.mqtt.client作为MQTT DEF生成”,其经由PAHO发送至MQTT代理的简单的传感器数据发生器”(主机,端口,用户名,密码,主题,传感器,interval_ms,详细):“””生成数据,并将其发送到一个MQTT经纪人””” mqttc = mqtt.Client()如果用户名:mqttc.username_pw_set(用户名,密码)mqttc.connect(主机,端口)键=列表(sensors.keys())interval_secs = interval_ms / 1000.0而真:sensor_id = random.choice(键)传感器=传感器[sensor_id] MIN_VAL,MAX_VAL = sensor.get(“范围”,[0,100])= VAL random.randint(MIN_VAL,MAX_VAL)数据= {“ID”:sensor_id,“值”:VAL}在[“LAT”,“经度”,“单元”键,“类型”,“描述”]:值= sensor.get(密钥)如果值不是无:数据[键] =值有效载荷= json.dumps(数据)如果冗长:打印(“%S%S”%(主题,有效载荷))mqttc.publish(主题,有效载荷)time.sleep(interval_secs)DEF毫安在(config_path):“””主入口点,负载和验证配置和呼叫生成”””尝试:用开(config_path)作为句柄:配置= json.load(手柄)mqtt_config = config.get(‘MQTT’,{})misc_config = config.get(“MISC”,{})传感器= config.get(“传感器”)interval_ms = misc_config.get(“interval_ms”,500)=冗长misc_config.get(“详细”,假)如果没有传感器:打印(“没有在配置中指定的传感器,无关”)返回主机= mqtt_config.get(“主机”,“本地主机”)端口= mqtt_config.get(“端口”,1883年)用户名= mqtt_config.get(“用户名”)密码= mqtt_config.get(“密码”)主题= mqtt_config.get(“主题”,“传感器”)生成(主机,端口,用户名,密码,主题,传感器,interval_ms,详细)除外的IOError作为error: print(“Error opening config file ‘%s’” % config_path, error) if __name__ == ‘__main__’: if len(sys.argv) == 2: main(sys.argv[1]) else: print(“usage %s config.json” % sys.argv[0])

如果您在与mosquito - to代理相同的机器上运行此生成器,则不需要配置文件,否则,您需要设置一个生成器,以至少指定目标服务器。我用的是这个:

{“mqtt”:{“用户名”:“”,“密码”:“”,“主机”:“192.168.0.50”,“港”:1883年,“主题”:“传感器”},“misc”: {“interval_ms”: 1000年,“详细”:假},“传感器”:{"传感器129 ":{“范围”:[0,100]},“传感器229”:{“范围”:[0,100]},“传感器329”:{“范围”:[0,100]},“传感器429”:{“范围”:[0,100]},“传感器529”:{“范围”:[0,100]}}}

如您所见,配置文件是一个简单的JSON规范。可以通过更改值来设置生成消息的速率interval_ms正如你需要添加为传感器部分的许多项目。该范围值,这是在这里[0,100)将导致将0到100之间的随机值分配给消息,同样,您可以根据自己的需求调整范围。要启动发电机,请输入:

RedQueen:mqttgen mgibbs$ python mqttgen.py config50.json

......除非你设定的值详细的在配置文件中真正的时,终端窗口将不会有任何输出。另一方面,这是你会在蚊子到用户终端窗口看到的:

mgibbs @ DEB-01:〜$ mosquitto_sub -v -t“传感器”传感器的helloWorld传感器{”id”: “Sensor 529”, “value”: 91} sensors {”id”: “Sensor 429”, “value”: 47} sensors {”id”: “Sensor 429”, “value”: 72} sensors {”id”: “Sensor 129”, “value”: 20} sensors {”id”: “Sensor 329”, “value”: 97} sensors {”id”: “Sensor 429”, “value”: 43} sensors {”id”: “Sensor 529”, “value”: 46} sensors {”id”: “Sensor 529”, “value”: 4} sensors {”id”: “Sensor 529”, “value”: 50} sensors {”id”: “Sensor 229”, “value”: 11} sensors {”id”: “Sensor 529”, “value”: 49} sensors {”id”: “Sensor 329”, “value”: 57} sensors {”id”: “Sensor 429”, “value”: 31} sensors {”id”: “Sensor 429”, “value”: 26} sensors {”id”: “Sensor 229”, “value”: 89} sensors {”id”: “Sensor 329”, “value”: 78}

这是开始探索和测试MQTT和to的好地方,但是如果您想在监视MQTT流量方面变得更加复杂,则需要安装MQTTmqtt-spy

MQTT间谍 mqtt-spy.org

mqtt-spy GUI控制台

mqtt-spy是一个基于gui的"JavaFX应用程序,因此理论上应该在安装了适当版本的Java 8的任何操作系统上工作。”也可以安装mqtt-spy-demon这与GUI无关,因此您可以完全从命令行驱动应用程序。mqtt-spy是一个非常棒的工具,它不仅允许您执行简单的订阅和发布操作;它还可以使用JavaScript脚本生成消息并与消息交互。在许多其他特性中,mqtt-spy还记录消息流量、解码和重新格式化内容、重播记录的消息、图表流量,并支持多个代理连接。对于严肃的MQTT工程来说,这是一个很棒的工具包。

早些时候我提到过让蚊子在树莓派上充当中间人,我推荐如下把蚊子放在树莓派上,博客文章由Jan-皮特男士,但请注意,使用树莓派作为经纪人,其中信息传递业务量低就只能是有益的。

rabbitmq RabbitMQ

RabbitMQ web控制台

Tobias Abarbanell的一篇文章讨论他如何使用另一个MQTT代理,RabbitMQ(这是比蚊子更复杂,有一个伟大的GUI前端),在树莓派和注意:

如果你让一个出版商与一个简单的“hello world”消息在一个循环中运行1000次,开始一个用户队列在同一时间,你会看到1000条消息飞过你的小兔子π在13秒,每秒50多个消息!

您还会注意到,几乎没有发布者和用户之间的任何并发,所以当发布变得空闲消息只被消耗。这是相反的是我看到了桌面Linux系统中始终是用户“赢”,并保持队列是空的,而发布减慢到用户的步伐上。

另一方面,尽管存在性能限制,但在现场通信受限且消息量不太大的情况下,使用RPi作为一个小型物联网设备子组的本地集线器可能是一个不错的架构选择。

顺便说一下,Mens也负责创作智能手机应用程序OwnTracks,一个非常有趣的工具:

...让您跟踪自己的位置。你可以建立自己的私人日记的位置或与您的家人和朋友分享。OwnTracks是开源和用于通信的开放协议,所以你可以确保您的数据能够保证安全和私密性。

OwnTracks消息处理和路由是一个伟大的使用情况的MQTT经纪人如Mosquitto,我打算盖OwnTracks在未来的岗位。

如果你使用的是蚊蝇,无论是用于物联网目的还是其他方面,如果你对物联网信息有任何问题或想法,请告诉我。

评论?想法吗?写信给我跟着我推特脸谱网。报名参加我的新通讯

加入网络世界社区吧有个足球雷竞技app脸谱网LinkedIn对大家最关心的话题发表评论。
有关:

版权所有©2017年Raybet2

工资调查:结果是