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

物联网开发:MQTT与传感器数据采集

物联网开发:MQTT与传感器数据采集

大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊物联网开发这个热门话题。作为一个全栈开发者,物联网是连接物理世界和数字世界的关键技术。今天就来分享一下MQTT协议和传感器数据采集的实战经验。

什么是物联网?

物联网(IoT)是指将物理设备连接到互联网,实现数据采集和远程控制。

MQTT协议

什么是MQTT?

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,专为物联网设计。

MQTT特点

特点说明
轻量级适合资源受限设备
低带宽适合网络不稳定环境
发布/订阅灵活的消息模式
QoS支持保证消息可靠性

安装MQTT Broker

# 使用Docker安装Mosquitto docker run -d --name mosquitto \ -p 1883:1883 \ -p 9001:9001 \ eclipse-mosquitto

发布者代码

import paho.mqtt.client as mqtt import time client = mqtt.Client() client.connect("localhost", 1883, 60) while True: # 模拟传感器数据 temperature = 25 + (time.time() % 5) humidity = 60 + (time.time() % 20) client.publish("sensor/temperature", temperature) client.publish("sensor/humidity", humidity) print(f"Published: temp={temperature:.1f}C, humidity={humidity:.1f}%") time.sleep(1)

订阅者代码

import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("sensor/#") def on_message(client, userdata, msg): print(f"{msg.topic} {msg.payload.decode()}") client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("localhost", 1883, 60) client.loop_forever()

实战案例:智能家居系统

# 传感器节点 import paho.mqtt.client as mqtt import RPi.GPIO as GPIO import time client = mqtt.Client() client.connect("mqtt.example.com", 1883, 60) # 读取传感器 def read_temperature(): return 25.5 def read_humidity(): return 60.2 def read_motion(): return GPIO.input(4) == GPIO.HIGH while True: client.publish("home/bedroom/temperature", read_temperature()) client.publish("home/bedroom/humidity", read_humidity()) client.publish("home/livingroom/motion", read_motion()) time.sleep(5)
# 控制节点 import paho.mqtt.client as mqtt def on_message(client, userdata, msg): if msg.topic == "home/bedroom/light": if msg.payload.decode() == "on": turn_on_light() else: turn_off_light() client = mqtt.Client() client.on_connect = lambda client, userdata, flags, rc: client.subscribe("home/#") client.on_message = on_message client.connect("mqtt.example.com", 1883, 60) client.loop_forever()

QoS级别

# QoS 0: 最多一次 client.publish("sensor/data", "value", qos=0) # QoS 1: 至少一次 client.publish("sensor/data", "value", qos=1) # QoS 2: 恰好一次 client.publish("sensor/data", "value", qos=2)

安全性

# 使用TLS client.tls_set(ca_certs="ca.crt") client.connect("mqtt.example.com", 8883, 60) # 使用用户名密码 client.username_pw_set("user", "password")

总结

MQTT是物联网开发的基础协议,简单高效。通过MQTT,可以轻松实现传感器数据采集和设备控制。

我的鬃狮蜥Hash对物联网也有自己的理解——它总是能感知周围环境的变化,这也许就是自然界的"传感器"吧!

如果你对物联网开发感兴趣,欢迎留言交流!我是欧阳瑞,极客之路,永无止境!


技术栈:MQTT · 物联网 · 传感器

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

相关文章:

  • 昇腾CANN ops-blas Batched GEMM:多头注意力的小矩阵乘批处理实战
  • 量子自旋链模拟黑洞Page曲线的动力学研究
  • 无服务器架构:AWS Lambda与Serverless最佳实践
  • 昇腾CANN ops-math LayerNorm:数值稳定性与 Warp Reduce 优化实战
  • 【Spring AI 集成 DeepSeek 实现 AI 摘要与 RAG 问答】:从原理到落地实践
  • 嵌入簇展开(eCE)模型:破解高熵合金相图预测的维度灾难
  • Python exe反编译完整还原指南:从PE结构到字节码破译
  • 基于PDE生成时空图数据:原理、实践与GNN基准测试指南
  • 性能优化:前端加载性能优化指南
  • 基于自动微分的Backprop-4DVar:革新数据同化实现的新路径
  • 【MySQL SQL 执行全链路剖析】:执行计划、慢查询与经典场景优化指南
  • 从样本数据估计费舍尔信息矩阵:MCMC与Lanczos方法在相变探测中的应用
  • 机器学习与模拟退火算法优化TPMS结构材料力学性能
  • R包rmlnomogram:为任意机器学习模型生成可解释性列线图
  • 机器学习可解释性实战:用特征重要性与SHAP值解析鸟类飞行模式
  • Gradio模型部署全攻略:从Hugging Face Spaces到AWS EC2实战
  • 81、CAN总线基础回顾:从诞生到经典架构
  • 昇腾CANN graph-autofusion:Transformer Block 的算子融合深度解析
  • 后端性能:Node.js性能优化与调优
  • RuoYi登录三步自动化:验证码、加密密码与Cookie状态机
  • 计算材料学驱动新型硅光伏材料发现:进化算法与机器学习融合设计
  • ESG评分不确定性量化:多重插补与预测区间在金融风险建模中的应用
  • Bootstrap置信区间:量化模型评估不确定性的实用指南
  • 从Kaggle竞赛到业务落地:GBM特征重要性到底怎么看?用Python实战教你做模型可解释性分析
  • 83、CAN FD物理层核心差异:更高速率与更灵活的位时序
  • 机器翻译中的自校正方法:利用模型动态知识应对语义错位噪声
  • 统信UOS/麒麟KOS截图快捷键失灵?别慌,试试这个后台进程清理大法
  • 可解释AI在阿尔茨海默病诊断中的应用:多模态数据与统一评估框架
  • 84、CAN FD数据链路层革新:可变数据场长度与DLC编码
  • Android加壳技术五代演进:从动态加载到ELF加壳实战解析