python 使用 MQTT

 目录结构

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3014825.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

原型模式类图与代码

现要求实现一个能够自动生成求职简历的程序&#xff0c;简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同&#xff0c;并尽量减少程序中的重复代码。 采用原型模式(Prototype)来实现上述要求&#xff0c;得到如图 7.25 所示的类图。 原…

王春城:精益变革对于组织的长期发展有什么好处?

众所周知&#xff0c;精益变革不仅仅是一种管理方法的改进&#xff0c;更是一种思维方式的转变&#xff0c;旨在消除浪费、提高效率和持续改进。那么&#xff0c;精益变革对于组织的长期发展究竟有什么好处呢&#xff1f;下面天行健王春城老师将从多个方面详细阐述。 首先&…

【承装修、试电力施工许可证申报指南】广西承装(修、试)电力设施许可证资质代办流程

【承装修、试电力施工许可证申报指南】广西承装(修、试)电力设施许可证资质代办流程 广西承装(修、试)电力设施许可证资质代办流程 在广西地区&#xff0c;承装、修、试电力设施许可证的资质代办流程相对复杂&#xff0c;但遵循一定的步骤和规定&#xff0c;可以确保流程的顺利…

Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案

文章目录 一、vue中使用el-table的typeindex有时不显示序号Table 表格显示索引自定义索引报错信息解决方案 二、vue中Missing required prop: “value” 报错报错原因解决方案 三、el-table的索引值index在翻页的时候可以连续显示方法一方法二 四、vue3中Element Plus全局组件配…

男士内裤品牌哪个好?口碑最好的男士内裤汇总

许多男士选内裤可能比较随意&#xff0c;但实际上作为长时间贴合身体皮肤的贴身衣物&#xff0c;经常会出很多汗。而普通的内裤会吸附很多汗水却不易干&#xff0c;导致细菌含量超标&#xff0c;摩擦力增强&#xff0c;容易造成破皮感染从而影响健康。 但是现在的男士内裤种类和…

充电宝哪个牌子好?比较好用充电宝牌子,这些品牌别错过

作为一个资深的手机控&#xff0c;深知手机对于现代人的重要性。从早到晚&#xff0c;无论是点外卖、看剧还是处理各种事务&#xff0c;手机几乎成了我生活的必需品。然而&#xff0c;手机电量的问题总是让人头疼。在家时&#xff0c;找个插座充电自然不成问题&#xff0c;但出…

vue2后台管理项目

一:项目准备 1)拉取模板代码 远程仓库复制到本地仓库. 2)安装后的项目 路径 code 文件夹 会打开vscode的文件夹. 3)安装vetur和eslint插件可以保存时自动修改不规范的地方. 4)App内有一级路由,路由组件导入如果是layout架子,会导入的是文件夹下的index.js没有则导入index.v…

Baidu Comate:你的智能编码助手,编程效率倍增的秘密武器

Baidu Comate智能编码助手 Baidu Comate 智能编码助手简单介绍安装使用查看Comate插件功能智能代码提示使用飞浆和百度智能小程序进行智能问答使用AutoWork插件实现二次函数图像的生成引用Comate知识库存在的问题结束语 Baidu Comate 智能编码助手简单介绍 Baidu Comate&#x…

rmallox勒索病毒肆虐,如何保护网络安全?

rmallox勒索病毒与网络安全的关系可以从以下几个方面来阐述&#xff1a; 一、rmallox勒索病毒的特性 rmallox勒索病毒是一种极具破坏性的计算机病毒&#xff0c;它具有多个显著特性&#xff0c;这些特性使得该病毒对网络安全构成了严重威胁。具体来说&#xff0c;rmallox病毒具…

leetcode-缺失的第一个正整数-96

题目要求 思路 1.这里的题目要求刚好符合map和unordered_map 2.创建一个对应map把元素添加进去&#xff0c;用map.find(res)进行查找&#xff0c;如果存在返回指向该元素的迭代器&#xff0c;否则返回map::end()。 代码实现 class Solution { public:int minNumberDisappeare…

C语言例题37、输入三组数字,按照从小到大的顺序排列输出

#include<stdio.h>int main() {int num[3];printf("请输入3组数字&#xff1a;");for (int i 0; i < 3; i)scanf("%d", &num[i]);for (int i 0; i < 2; i) { //每次选出最小值放在数组前面for (int j i 1; j < 3; j) {if (num[j] …

移动硬盘无法被识别怎么办?恢复移动硬盘3个正确做法

移动硬盘已成为我们日常生活和工作中不可或缺的数据存储设备。然而当移动硬盘突然无法被电脑识别时&#xff0c;往往会让人倍感焦虑。面对这种情况我们不必过于慌张&#xff0c;下面一起来看看指南解决。 解决方法一&#xff1a;检查硬件连接与供电 检查接口连接&#xff1a…

使用免费的数据恢复软件通过简单的步骤恢复丢失的数据

犯错是人之常情&#xff01;您有时可能会意外地从PC或笔记本电脑中删除重要数据&#xff0c;旧的家庭或大学视频/照片&#xff0c;如果您面临数据丢失&#xff0c;则可以使用数据恢复软件轻松恢复丢失的数据。 奇客数据恢复软件可让您从笔记本电脑&#xff0c;PC和可移动存储设…

pytest(二):关于pytest自动化脚本编写中,初始化方式setup_class与fixture的对比

一、自动化脚本实例对比 下面是一条用例,使用pytest框架,放在一个类中,两种实现方式: 1.1 setup_class初始化方式 1. 优点: 代码结构清晰,setup_class 和 teardown_class 看起来像传统的类级别的 setup 和 teardown 方法。2. 缺点: 使用 autouse=True 的 fixture 作为…

VBA在Excel中注册登录界面的应用

Excel工作表也可以做一个小程序,登录注册后可以访问或修改。为了简便,没有做复杂的控件,能说明问题就行。可以根据需要添加更多的判断条件,控制注册和访问人数。本次操作对注册没有任何限制,只要注册后就可以根据注册的账号和密码进行访问和修改。注册登录界面截图: 操作…

吴恩达2022机器学习专项课程C2(高级学习算法)W1(神经网络):2.4 神经网络层

目录 神经网络第一层&#xff08;隐藏层&#xff09;计算过程1.输入向量2.神经元的计算2.标识不同神经元3.层输出&#xff08;激活&#xff09;向量4.神经网络分层5.标识不同层 神经网络第二层&#xff08;输出层&#xff09;计算过程1.输入向量2.层输出&#xff08;激活&#…

Vue进阶之Vue项目实战(二)

Vue项目实战 构建基础框架路由 项目&#xff08; v1.0,base-app-layer&#xff09;导航 router物料编排选型 插件化插件化平时写代码场景 配置器开发 构建基础框架 路由 路由分类&#xff1a; memoryHistory&#xff1a;内存路由&#xff0c;路由信息记录在内存中&#xff0…

【3D目标检测】常见相关指标说明

一、mAP指标 mean Average Precision&#xff08;平均精度均值&#xff09;&#xff0c;它是目标检测和信息检索等任务中的重要性能指标。mAP 通过综合考虑精度和召回率来衡量模型的总体性能。 1.1 精度&#xff08;Precision&#xff09; 表示检索到的目标中实际为正确目标…

深度学习之基于Vgg16卷积神经网络乳腺癌诊断系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于VGG16卷积神经网络的乳腺癌诊断系统项目是一个结合深度学习技术和医学图像处理的创新项目&#xff0c;旨在提高…

Golang | Leetcode Golang题解之第67题二进制求和

题目&#xff1a; 题解&#xff1a; func addBinary(a string, b string) string {ans : ""carry : 0lenA, lenB : len(a), len(b)n : max(lenA, lenB)for i : 0; i < n; i {if i < lenA {carry int(a[lenA-i-1] - 0)}if i < lenB {carry int(b[lenB-i-1…