使用EMQX模拟生成数据流

EMQX的安装与使用

一、安装篇

系统配置

ubuntu 20.04

链接:https://docs.emqx.cn/broker/v4.2/getting-started/install.html

二、使用篇

2.1 配置文件路径
描述使用 ZIP 压缩包安装使用二进制包安装
可执行文件目录./bin/usr/lib/emqx/bin
数据文件./data/var/lib/emqx/data
Erlang 虚拟机文件./erts-*/usr/lib/emqx/erts-*
配置文件目录./etc/etc/emqx/etc
依赖项目录./lib/usr/lib/emqx/lib
日志文件./log/var/log/emqx
启动相关的脚本、schema 文件./releases/usr/lib/emqx/releases
2.2 安全性设置
2.2.1. 非匿名登录

路径: /etc/emqx/emqx.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2SeoSdEm-1616941149877)(C:\Users\孔方\AppData\Roaming\Typora\typora-user-images\image-20210328220202314.png)]

2.2.2. 设置用户与密码

路径:/etc/emqx/plugins/emqx_auth_username.conf

在这里插入图片描述

auth.user.1.username = test
auth.user.1.password = test
auth.user.2.username = lot
auth.user.2.password = lot
2.2.3 在Dashboard中开启服务

在这里插入图片描述

2.3 测试应用

需要下载MQTTX 链接:https://mqttx.app/cn/

在这里插入图片描述

2.4 Python模拟生成流数据发布到EMQX
# 测试读取csv文件 转变为流消息
import csv
import json
import time
import paho.mqtt.client as mqtt

# Configuration Parameters.
CSV_FILE_NAME = "D:\platform\mqtt_python\data\energy.csv"
MQTT_TOPIC = "/sensor/data"
MQTT_PORT = 1883
MQTT_BROKER = "192.168.218.130"
username = "lot"
password = "lot"

# Global variables.
data_value = {}
key_values = []
key_value_count = 0

# On connect MQTT Callback.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code : "+str(rc))
    if rc == 0:
        print("Connected to MQTT Broker!")
    else:
        print("Failed to connect, return code %d\n", rc)

# on publish MQTT Callback.
def on_publish(client, userdata, mid):
    print("Message Published.")


# Reading the csv file to extract the data.
with open(CSV_FILE_NAME, mode='r') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            key_values = row
            key_value_count = len(key_values)
            line_count +=1
        else:
            temp_val = {}
            data_val = row
            count = 0
            for value in key_values:
                temp_val[value] = data_val[count]
                count +=1
            data_value[line_count] = temp_val
            line_count +=1

# Connecting to MQTT for publishing.
client = mqtt.Client()
client.username_pw_set(username, password)
client.on_connect = on_connect # On Connect Callback.
client.on_publish = on_publish # On Publish Callback.
client.connect(MQTT_BROKER, MQTT_PORT, 60) # Connecting to the MQTT Broker.

while 1:
    for value in data_value:
        temp_data_val = str(data_value[value]).replace("'", '"')
        try:
            client.publish(MQTT_TOPIC, temp_data_val)
            time.sleep(5)
        except:
            print("Publish Failed.")

运行样例:

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值