python 使用 MQTT

 目录结构

1、py代码

offRelay12-yixing.py

# _*_ coding: utf-8 _*_
# 须用到第三方库:paho-mqtt
# 安装命令 python3 -m pip install paho-mqtt

import time
import json
import paho.mqtt.client as mqtt

# 函数:关闭所有房间的12路继电器模块上指定的一个灯光
# 参数:rlyindex 1-12
def CloseOneRelayAllRoom(rlyindex:int):
    # 遍历字典[],list_netcode
    for netway in list_netway:
        net_code_temp = netway['net_code']
        if(len(net_code_temp) <= 0):
            print ("name:", netway['name'],",","net_code为空, 跳过") 
            
        else:
            # print ("name:", netway['name'],",","net_code:",netway['net_code'])   
            # 关继电器命令       
            offReleyJson = {
                "put": {
                    "relay_id": 1,
                    "relay_value": "OFF",
                    "relay_devID": 48,
                    "relay_order": rlyindex
                }
            }
            # json格式化输出成字符串
            offReleyStr = json.dumps(offReleyJson)
            sendTopic = "HTPW100"+net_code_temp
            # print("mqtt发布:",offReleyStr,",topic=",sendTopic)
            mqttc.publish(sendTopic, offReleyStr, qos=0)                     


# 函数: 连接Mqtt服务器成功后的回调函数  
def on_connect(client, userdata, flags, reason_code, properties):
    print("mqtt connect server",BROKER_ADDRESS,"seccesed !")
    global isMqttConnected  
    isMqttConnected = True


print ("功能:时时关闭所有房间12路继电器的灯光。")
filejson = open('net-code.json','r') # 打开json文件
filejson_text = filejson.read() # 读取json文件内容
list_netway = json.loads(filejson_text) # 转成python字典[],list_netway

BROKER_ADDRESS = "hotekey.cn"  # MQTT服务器地址  
BROKER_PORT = 1883  # MQTT服务器端口
# 创建MQTT客户端实例,用api版本2  
mqttc = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2)   
# 指定connect成功之后的回调函数          
mqttc.on_connect = on_connect
# 连接到MQTT代理  
mqttc.connect(BROKER_ADDRESS, BROKER_PORT, 60)  
# 开始MQTT客户端的网络循环--异步运行mqtt  
mqttc.loop_start() 
print ("MQTT 初始化完成,开始进入主循环 while true:")  
# 标志mqtt是否连接成功
isMqttConnected = False

# 主循环
while True:
    if isMqttConnected == True:   # mqtt正确连接     
        for relayNum in  range (1,12+1):
            print ("所有房间,关闭12路继器的回路",relayNum)
            CloseOneRelayAllRoom(relayNum)
            time.sleep(1/4) # 回路之间延时

        print() # 空行        
        time.sleep(10) # 一个完整循环延时

    else: # mqtt未连接
        time.sleep(1)
        print("run ... waiting mqtt connected")        
        
        

2、使用到的文件

net-code.json

[
  {
    "net_code": "3373413436373417413432",
    "name": "Net-qin"
  },
  {
    "net_code": "964547463439330C353137",
    "name": "Net-ye"
  },
  {
    "net_code": "1222222222222222222221",
    "name": "988"
  }
]

3、启动命令

python3  offRelay12-yixing.py

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python使用MQTT可以通过以下步骤进行: 1. 导入paho-mqtt:首先需要使用pip安装paho-mqtt。可以通过运行以下命令来安装:`pip install paho-mqtt` 2. 创建MQTT客户端:使用paho-mqtt创建一个MQTT客户端对象,可以指定客户端ID和其他参数。 3. 连接到MQTT Broker:使用客户端对象连接到MQTT Broker,需要提供Broker的地址和端口号。 4. 订阅主题:使用客户端对象订阅感兴趣的主题,可以使用通配符来订阅多个主题。 5. 发布消息:使用客户端对象发布消息到指定的主题。 6. 处理消息:使用回调函数处理接收到的消息,可以在回调函数中定义消息到达后的逻辑处理。 下面是一个使用Python实现MQTT连接和发布订阅的示例代码: ```python import paho.mqtt.client as mqtt # MQTT Broker的地址和端口号 broker = 'broker.emqx.io' port = 1883 # 客户端ID client_id = f'python-mqtt-{random.randint(0, 1000)}' # 连接到MQTT Broker的回调函数 def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT Broker") else: print("Failed to connect, return code %d\n", rc) # 发布消息的回调函数 def on_publish(client, userdata, mid): print("Message published") # 创建MQTT客户端 client = mqtt.Client(client_id) # 设置回调函数 client.on_connect = on_connect client.on_publish = on_publish # 连接到MQTT Broker client.connect(broker, port) # 订阅主题 client.subscribe("/python/mqtt") # 发布消息 client.publish("/python/mqtt", "Hello MQTT") # 循环监听消息 client.loop_forever() ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值