目录结构
1、py代码
offRelay12-yixing.py
# _*_ coding: utf-8 _*_
# 须用到第三方库:paho-mqtt
# 安装命令 python3 -m pip install paho-mqttimport time
import json
import paho.mqtt.client as mqtt# 函数:关闭所有房间的12路继电器模块上指定的一个灯光
# 参数:rlyindex 1-12
def CloseOneRelayAllRoom(rlyindex:int):# 遍历字典[],list_netcodefor 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 = Trueprint ("功能:时时关闭所有房间12路继电器的灯光。")
filejson = open('net-code.json','r') # 打开json文件
filejson_text = filejson.read() # 读取json文件内容
list_netway = json.loads(filejson_text) # 转成python字典[],list_netwayBROKER_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