002-温度传感器,自动控制空调

发布时间:2026/9/27 15:49:44

002-温度传感器,自动控制空调
视频演示 https://v.douyin.com/6pkAjPMHCTM/NodeRed工作流[{id: d500fe07916bb488,type: tab,label: 02-温度传感器控制空调,disabled: false,info: ,env: []},{id: 7005f0477b947b5a,type: modbus-read,z: d500fe07916bb488,name: 读取温度传感器,topic: ,showStatusActivities: false,logIOActivities: false,showErrors: false,showWarnings: true,unitid: 1,dataType: HoldingRegister,adr: 600,quantity: 4,rate: 2,rateUnit: s,delayOnStart: false,enableDeformedMessages: false,startDelayTime: ,server: 9e84b83cd9fb6aea,useIOFile: false,ioFile: ,useIOForPayload: false,emptyMsgOnFail: false,x: 150,y: 60,wires: [[7499a01364a8131a],[]]},{id: cc476978e7fbc83b,type: debug,z: d500fe07916bb488,name: debug 1,active: true,tosidebar: true,console: false,tostatus: false,complete: false,statusVal: ,statusType: auto,x: 560,y: 60,wires: []},{id: 7499a01364a8131a,type: function,z: d500fe07916bb488,name: 解析温度值,func: // 获取Modbus返回的4个寄存器值\nconst regs msg.payload;\nif (regs.length 4) {\n msg.error \读取寄存器数量不足请检查接线和配置\;\n return msg;\n}\n\n// 解析温度CDAB格式高字在后低字在前\n// 对应说明书温度数据 第2个寄存器 第1个寄存器拼成32位大端浮点数\nconst tempRaw (regs[1] 16) | regs[0];\nconst tempBuf Buffer.alloc(4);\ntempBuf.writeUInt32BE(tempRaw, 0);\nconst temperature tempBuf.readFloatBE(0);\n\n// 解析湿度同温度格式\nconst humRaw (regs[3] 16) | regs[2];\nconst humBuf Buffer.alloc(4);\nhumBuf.writeUInt32BE(humRaw, 0);\nconst humidity humBuf.readFloatBE(0);\n\n// 保留2位小数输出结构化数据\nmsg.payload {\n temperature: Number(temperature.toFixed(2)),\n humidity: Number(humidity.toFixed(2)),\n unit: {\n temperature: \℃\,\n humidity: \%RH\\n }\n};\nmsg.topic \博为温湿度传感器数据\;\nreturn msg;,outputs: 1,timeout: 0,noerr: 0,initialize: ,finalize: ,libs: [],x: 350,y: 60,wires: [[cc476978e7fbc83b,29ba4ec7c3184af3]]},{id: 29ba4ec7c3184af3,type: switch,z: d500fe07916bb488,name: 温度判断,property: payload.temperature,propertyType: msg,rules: [{t: gte,v: 33,vt: str},{t: lte,v: 32,vt: str}],checkall: true,repair: false,outputs: 2,x: 160,y: 120,wires: [[32e7890342b79c9e],[1462adf5b582b3a8]]},{id: 32e7890342b79c9e,type: function,z: d500fe07916bb488,name: 开灯红外码,func: // airconStatus空调状态为关false时才进入if中去开空调\nif(!flow.get(\airconStatus\)) {\n // 把HEX字符串转串口需要的Buffer\n msg.payload Buffer.from(\6863000022DC08B20446D5014347454745464646464645464646464646D50143D50143D50143D50143D50143D50143D50143D5014446464646464646464943494346464646D50144D50144D50144D50143D50144D40144D40144D026E50895024B1B16\, \hex\);\n flow.set(\airconStatus\, true); // 将空调状态设置为开\n}\nreturn msg;,outputs: 1,timeout: 0,noerr: 0,initialize: ,finalize: ,libs: [],x: 400,y: 200,wires: [[eb6016fcede26454]]},{id: 1462adf5b582b3a8,type: function,z: d500fe07916bb488,name: 关灯红外码,func: // airconStatus空调状态为开true时才进入if中去关空调\nif (flow.get(\airconStatus\)) {\n // 把HEX字符串转串口需要的Buffer\n msg.payload Buffer.from(\6863000022DE08B50443D5014347454745474547454745474547454745D50143D50143D50143D60143D60143D60143D501424745D60143474547454745474547454745D501434745D50143D50143D50142D60142D50143D50143D326DD089902471616\, \hex\);\n flow.set(\airconStatus\, false); // 将空调状态设置为关\n}\nreturn msg;,outputs: 1,timeout: 0,noerr: 0,initialize: ,finalize: ,libs: [],x: 400,y: 320,wires: [[eb6016fcede26454]]},{id: eb6016fcede26454,type: serial out,z: d500fe07916bb488,name: COM7,serial: b0d421786c2f6e99,x: 590,y: 260,wires: []},{id: 8c51d683caf368e5,type: inject,z: d500fe07916bb488,name: 测试开灯,props: [{p: payload},{p: topic,vt: str}],repeat: ,crontab: ,once: false,onceDelay: 0.1,topic: ,payload: ,payloadType: date,x: 140,y: 200,wires: [[32e7890342b79c9e,535eb5a292ee28a1]]},{id: 888f378ebefbf5ed,type: inject,z: d500fe07916bb488,name: 测试关灯,props: [{p: payload},{p: topic,vt: str}],repeat: ,crontab: ,once: false,onceDelay: 0.1,topic: ,payload: ,payloadType: date,x: 140,y: 320,wires: [[1462adf5b582b3a8,6b821f2e41bd0f88]]},{id: 535eb5a292ee28a1,type: function,z: d500fe07916bb488,name: 设置状态为false,func: flow.set(\airconStatus\,false);\nreturn msg;,outputs: 1,timeout: 0,noerr: 0,initialize: ,finalize: ,libs: [],x: 180,y: 260,wires: [[]]},{id: 6b821f2e41bd0f88,type: function,z: d500fe07916bb488,name: 设置状态为true,func: flow.set(\airconStatus\,true);\nreturn msg;,outputs: 1,timeout: 0,noerr: 0,initialize: ,finalize: ,libs: [],x: 180,y: 380,wires: [[]]},{id: 9e84b83cd9fb6aea,type: modbus-client,name: COM28,clienttype: simpleser,bufferCommands: true,stateLogEnabled: false,queueLogEnabled: false,failureLogEnabled: true,tcpHost: 127.0.0.1,tcpPort: 502,tcpType: DEFAULT,serialPort: COM28,serialType: RTU-BUFFERD,serialBaudrate: 9600,serialDatabits: 8,serialStopbits: 1,serialParity: none,serialConnectionDelay: 100,serialAsciiResponseStartDelimiter: 0x3A,unit_id: 1,commandDelay: 1,clientTimeout: 1000,reconnectOnTimeout: true,reconnectTimeout: 2000,parallelUnitIdsAllowed: true,showErrors: false,showWarnings: true,showLogs: true},{id: b0d421786c2f6e99,type: serial-port,name: COM7,serialport: COM7,serialbaud: 115200,databits: 8,parity: none,stopbits: 1,waitfor: ,dtr: none,rts: none,cts: none,dsr: none,newline: 10,bin: bin,out: interbyte,addchar: ,responsetimeout: 10000},{id: cd33721e7c96b796,type: global-config,env: [],modules: {node-red-contrib-modbus: 5.45.2,node-red-node-serialport: 2.0.3}}]

相关新闻

001-使用串口控制红外设备

001-使用串口控制红外设备

2026/9/27 15:49:44

视频演示: https://v.douyin.com/XDJCvNu2h5k/NodeRed工程流:[{"id": "b6590f52b7e68ea9","type": "tab","label": "01-串口,控制红外灯","disabled": true,"in…

Java面试通关⑰:设计模式全集

Java面试通关⑰:设计模式全集

2026/8/23 1:07:47

📖 前言导读 设计模式是代码架构思维、框架源码设计、高质量代码必备能力,大厂面试高频问模式原理、落地场景、源码应用。多数开发者只会CRUD,代码冗余、耦合严重、扩展性差,不懂设计模式思想,无法写出高复用、高扩展、…

条件拉丁超立方采样 (cLHS) 实战:基于 Python 的 7 维土壤数据空间采样案例

条件拉丁超立方采样 (cLHS) 实战:基于 Python 的 7 维土壤数据空间采样案例

2026/8/23 1:07:46

条件拉丁超立方采样 (cLHS) 实战:基于 Python 的 7 维土壤数据空间采样案例在环境科学和地质工程领域,如何高效获取具有代表性的土壤样本一直是个难题。传统随机采样往往需要大量样本才能准确反映污染分布,而网格化采样又可能遗漏关键热点区域…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/26 19:14:12

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/27 1:30:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/27 1:30:37

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/27 1:30:35

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/27 1:30:34

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/26 16:36:51

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/26 14:29:04

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/26 13:57:22

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/26 23:35:16

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…