当前位置: 首页 > news >正文

影刀RPA MQTT物联网自动化:传感器数据采集与设备监控

影刀RPA MQTT物联网自动化:传感器数据采集与设备监控

作者:林焱 | 适用人群:影刀RPA新手 | 难度:★★★☆☆

一、什么情况用这个

做物联网运维的兄弟,每天要盯着几十个传感器数据——温度、湿度、PM2.5、设备状态。靠人工一个个看仪表盘,不光累,而且容易漏掉异常。

MQTT是物联网领域的标准协议,大部分IoT设备都支持。但你不可能天天开着MQTT客户端盯着。

这时候就需要影刀RPA出场了:定时订阅MQTT主题 → 解析JSON数据 → 写Excel记录 → 超标自动告警。一套流程下来,你只需要在收到告警时看一眼,其余时间机器人替你盯着。

实际场景:工厂车间环境监控、冷链仓储温度记录、机房设备状态巡检。

这篇文章能解决的问题:

  • 定时从MQTT Broker拉取传感器数据
  • 自动解析JSON格式的IoT消息
  • 数据超标自动推送告警(企微/钉钉)
  • 生成每日设备运行报表

二、怎么做

2.1 准备工作

影刀中创建新流程,命名为「MQTT数据采集监控」。

首先要安装Python依赖。影刀的Python节点需要用pip安装paho-mqtt库:

# 在影刀的【执行Python代码】节点中,先确保安装了paho-mqtt# 如果环境受限,可以用pip在影刀内置Python中安装:# C:\Users\你的用户名\AppData\Local\yingdao\python\python.exe -m pip install paho-mqtt[video(video-v6OFYhUz-1783577039493)(type-csdn)(url-https://live.csdn.net/v/embed/525010)(image-https://v-blog.csdnimg.cn/asset/f4faa587144cb7070f19e8b36813806b/cover/Cover0.jpg)(title-店群矩阵自动化突破运营极限!)]

2.2 主流程设计

在影刀中,整个流程分5步:

步骤影刀操作说明
【执行Python代码】连接MQTT,订阅主题,接收消息
【执行Python代码】解析JSON数据,提取关键字段
【写入Excel】将数据追加到当天的Excel文件
【条件判断】判断数据是否超过阈值
【发送企业微信消息】超标时推送告警

2.3 核心Python代码

步骤①:连接MQTT并接收消息

在影刀中拖入【执行Python代码】节点,写入以下代码:

importpaho.mqtt.clientasmqttimportjsonimporttime# ===== 配置区域(根据实际情况修改)=====MQTT_BROKER="192.168.1.100"# MQTT服务器地址MQTT_PORT=1883# 端口,默认1883MQTT_TOPICS=[("factory/workshop1/temperature",0),# 车间1温度("factory/workshop1/humidity",0),# 车间1湿度("factory/workshop2/temperature",0),# 车间2温度]TIMEOUT=30# 等待消息的超时秒数# ===== 接收消息 =====received_messages=[]defon_connect(client,userdata,flags,rc):"""连接成功的回调"""ifrc==0:print("MQTT连接成功")fortopic,qosinMQTT_TOPICS:client.subscribe(topic,qos)else:print(f"连接失败,返回码:{rc}")defon_message(client,userdata,msg):"""收到消息的回调"""try:payload=json.loads(msg.payload.decode('utf-8'))received_messages.append({'topic':msg.topic,'value':payload.get('value'),'unit':payload.get('unit',''),'timestamp':payload.get('timestamp',time.time()),'device_id':payload.get('device_id',''),})exceptExceptionase:print(f"解析消息失败:{e},原始数据:{msg.payload}")# 创建客户端并连接client=mqtt.Client()client.on_connect=on_connect client.on_message=on_message# 如果MQTT需要用户名密码,取消下面注释:# client.username_pw_set("admin", "password")client.connect(MQTT_BROKER,MQTT_PORT,60)client.loop_start()# 等待一段时间收集消息time.sleep(TIMEOUT)client.loop_stop()client.disconnect()# 将结果存为JSON字符串,供影刀后续节点使用result=json.dumps(received_messages,ensure_ascii=False)print(f"共收到{len(received_messages)}条消息")

踩坑提醒time.sleep(TIMEOUT)的时间要合理设置。太短收不到足够的数据,太长流程会卡住。建议先在影刀外部用MQTT客户端测试消息频率,再确定超时时间。

代码执行后,result变量会传给影刀,你需要在影刀中用一个变量(比如mqtt_data)来接收。

步骤②:解析JSON提取数据

再拖入一个【执行Python代码】节点:

importjson# 从上一个节点传入的JSON字符串raw_data=mqtt_data# 影刀变量会自动注入messages=json.loads(raw_data)# 整理成结构化数据records=[]formsginmessages:# 从topic中提取位置信息topic_parts=msg['topic'].split('/')location=topic_parts[1]iflen(topic_parts)>1else'unknown'metric=topic_parts[2]iflen(topic_parts)>2else'unknown'records.append({'location':location,'metric':metric,'value':msg['value'],'unit':msg['unit'],'device_id':msg['device_id'],'timestamp':msg['timestamp'],})# 转为影刀能处理的格式——返回列表的字符串表示# 影刀可以直接用【遍历列表】指令处理output=json.dumps(records,ensure_ascii=False)

步骤③:写入Excel

用影刀的内置Excel指令:

【打开Excel文件】→ 目标文件:D:\监控数据\{日期}.xlsx 【写入行】→ 将records中的每条记录写入新行 - 列A:location(位置) - 列B:metric(指标) - 列C:value(数值) - ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2ae0a5a7e3c443e49620ab915399fb60.png#pic_center) - 列D:unit(单位) - 列E:timestamp(时间戳) 【保存并关闭】

2.4 超标告警逻辑

步骤④:条件判断

在影刀中用【条件判断】节点,遍历每条记录:

条件:value > 阈值(例如温度>35°C) → 是:执行告警流程 → 否:继续下一条

步骤⑤:发送告警

【发送企业微信消息】 → 机器人Webhook地址:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的Key → 消息内容: ⚠️ 设备告警 位置:{location} 指标:{metric} 当前值:{value}{unit} 阈值:{threshold} 时间:{timestamp}

2.5 定时执行

影刀中设置定时任务:

【定时触发器】 → 执行频率:每5分钟 → 执行流程:MQTT数据采集监控 → 执行时间:全天

三、有什么坑

坑1:MQTT Broker断连不会自动重连

paho-mqtt默认不会自动重连。如果你的MQTT服务器不稳定,加上重连逻辑:

# 替换 client.connect() 部分client=mqtt.Client()client.on_connect=on_connect client.on_message=on_message# 启用自动重连client.reconnect_delay_set(min_delay=1,max_delay=30)try:client.connect(MQTT_BROKER,MQTT_PORT,60)exceptExceptionase:print(f"初始连接失败:{e}")

坑2:Excel文件写入冲突

temu店群自动化报活动案例

如果同一个Excel文件被两个流程同时写入,影刀会报「文件被占用」的错误。

解决方案

  • 每个流程写不同的Sheet页
  • 或者用数据库(SQLite/MySQL)代替Excel,天然支持并发写入
  • 或者在文件名中加时间戳,每次写新文件

坑3:时间戳格式不统一

IoT设备的时间戳格式千奇百怪——有的用Unix时间戳(秒),有的用毫秒,有的用ISO格式字符串。

统一处理

fromdatetimeimportdatetimedefnormalize_timestamp(ts):"""统一转为 'YYYY-MM-DD HH:MM:SS' 格式"""ifisinstance(ts,(int,float)):# 判断是秒还是毫秒ifts>1e12:# 毫秒级ts=ts/1000returndatetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')elifisinstance(ts,str):# 尝试多种格式解析formats=['%Y-%m-%dT%H:%M:%S','%Y-%m-%d %H:%M:%S','%Y/%m/%d %H:%M:%S','%d-%m-%Y %H:%M:%S',]forfmtinformats:try:returndatetime.strptime(ts,fmt).strftime('%Y-%m-%d %H:%M:%S')except:continuereturnstr(ts)# 无法解析则返回原值

坑4:消息积压导致影刀内存溢出

如果MQTT Broker上积压了大量消息(比如断电后设备恢复,一下子推了几千条),影刀的Python节点可能内存溢出。

预防措施:限制单次接收消息数量:

MAX_MESSAGES=100# 单次最多处理100条defon_message(client,userdata,msg):iflen(received_messages)>=MAX_MESSAGES:return# 达到上限,丢弃后续消息# ... 正常处理

坑5:影刀的Python节点环境问题

paho-mqtt库在某些影刀版本中无法直接pip install。如果你遇到ModuleNotFoundError

方案A:找到影刀内置Python的路径,手动安装:

影刀安装目录\python\python.exe -m pip install paho-mqtt

方案B:如果实在装不了,换用socket原生实现(不需要第三方库),但代码会复杂很多,不推荐新手这样做。


总结:MQTT + 影刀RPA的组合,本质上是把物联网协议的实时数据流接入到RPA的定时工作流中。关键在于处理好连接稳定性、时间戳统一、以及Excel/数据库的并发写入问题。配置好之后,你只需要在钉钉/企微上等告警消息就行。

http://www.jsqmd.com/news/1156729/

相关文章:

  • Unity与Android原生通信实战:第三方登录集成与安全数据传递
  • Unity与测绘数据集成:从UDB到平面图导出的完整技术方案
  • 锂电池组主动平衡方案设计与BQ25887应用
  • 2026年7月最新亨得利官方钟表服务中心|完整官方电话和网点地址权威信息公告 - 亨得利官方
  • Unity DOTS多人游戏47ms延迟突增:Netcode指令调度与Ghost同步优化实战
  • Unity城市交通系统插件:从架构到实战的完整指南
  • STM32L162ZE与MCP3551高精度ADC硬件设计与软件实现
  • Cursor官方食谱:AI原生开发的Vibe Coding与Agent工作流实战指南
  • Unity游戏国际化:基于TextMeshPro构建多语言Emoji动态切换系统
  • Unity描边效果优化:从屏幕后处理到几何体膨胀方案详解
  • 抖音无水印视频下载工具完全指南:从零开始批量保存高清内容
  • 基于OSGEarth的海洋流场三维动态演示工程(含可运行C++源码与详细构建指南)
  • 基于STM32单片机智能厨房安全控制天然气甲烷检测火焰火灾报警321(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • YOWO 实时时空动作检测:3D-ResNext-101 + Darknet-19 双分支架构与 CFAM 模块解析
  • 软考中级系统集成 2026版:信息化5层次与6要素核心考点精析(附3年真题分布)
  • Windows Update Blocker v1.8 与 WUShowHide 对比:3大场景下的禁用策略选择
  • C++算法实战:组合计数核心方法与工程应用详解
  • TMC7300与PIC18F86J11实现高效有刷直流电机控制
  • GESP C++ 三级 2023年12月T2单位转换:3种代码实现对比与10倍效率优化
  • 孤能子视角:从全局强耦合到动态稀疏协同——大模型注意力机制演化的关系场动力学
  • Windows 11 + UE5.6 编译运行 Colosseum (AirSim 分支) 全流程与兼容性修复指南
  • CD4069 RC振荡器与4015移位寄存器:反应测试器时序电路3大关键参数设计
  • UE4 C++ TCP通信框架实战:原生Socket、线程安全与粘包处理
  • Unity3D VR成像原理与实战:从立体视觉到沉浸式开发
  • UE4蓝图流程控制:FlipFlop与DoOnce节点深度解析与实战应用
  • iOS个人开发者APP备案:无服务器、纯本地应用3个解决方案实测
  • Unity集成AI绘画模型:本地化批量生成游戏NPC角色资产实践
  • STC89C52 定时器0 PWM 控制 SG90:从 0.5ms 到 2.5ms 脉宽计算的 3 个关键点
  • Windows Copilot本质是系统代理层,非普通AI助手
  • Unity打砖块游戏模板:模块化架构与物理手感调优实战