Google Cloud IoT Core技术咨询:温感设备如何接入设备注册表(毕设新手)
连接温度传感器到Google Cloud IoT Core的实操指南
Hey there! 作为刚上手GCP做毕设的新手,肯定会对IoT Core的设备连接有点懵,我来给你一步步捋清楚怎么把温度传感器连到设备注册表:
1. 先把前期准备搞定
- 确保你已经有GCP账号,并且在控制台里开通了Cloud IoT Core服务(直接搜就能找到入口)
- 准备好你的温度传感器(比如常见的DS18B20、DHT11),还有一个能联网的边缘设备(比如树莓派、ESP32——毕竟大部分传感器自己没法直接连互联网)
- 装好必要工具:比如Python(如果用脚本开发)、MQTT客户端库
paho-mqtt,或者对应开发板的SDK
2. 创建你的设备注册表
先在GCP控制台操作:
- 打开Cloud IoT Core控制台,选好你的毕设项目
- 点击「创建注册表」,填个好记的名称,选离你设备近的区域(减少延迟)
- 协议选MQTT就行——对温度传感器这种低功耗设备来说,MQTT轻量又好用
- 配置Cloud Pub/Sub主题:这是IoT Core接收设备数据的通道,你可以新建一个主题,或者用已有的,传感器的温度数据之后都会发到这里
- 点「创建」,你的设备注册表就搞定了
3. 把温度传感器对应的设备注册进去
在刚创建的注册表页面:
- 点「添加设备」,给设备起个ID(比如
temp-sensor-001,方便后续识别) - 认证方式选RS256密钥对就行,你可以本地用openssl生成:
openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem -nodes -out rsa_cert.pem -subj "/CN=unused",然后把生成的公钥上传到控制台 - 其他配置默认就行,点「添加」,设备就注册成功了,记好设备的完整路径,后面连接要用到
4. 设备端配置(以树莓派+DS18B20+MQTT为例)
这一步是让传感器真的能连上IoT Core:
- 先确保树莓派连上网,并且能读到传感器的温度(比如用Python的
w1thermsensor库就能轻松读取DS18B20的数据) - 装MQTT客户端:
pip install paho-mqtt - 写个简单的连接脚本,核心逻辑是:
- 导入
paho.mqtt.client库 - 填好你的GCP项目ID、区域、注册表ID、设备ID,还有私钥文件路径
- 用私钥做SSL认证(GCP IoT Core要求加密连接)
- 连上IoT Core的MQTT服务器后,定期读温度,然后把数据发到指定主题
- 给你个极简示例代码:
import paho.mqtt.client as mqtt import ssl import time from w1thermsensor import W1ThermSensor # 替换成你自己的配置 project_id = "你的GCP项目ID" cloud_region = "us-central1" # 换成你选的区域 registry_id = "你的注册表名称" device_id = "temp-sensor-001" private_key_file = "rsa_private.pem" # 初始化温度传感器 sensor = W1ThermSensor() def on_connect(client, userdata, flags, rc): print(f"连接成功!返回码: {rc}") # 设置MQTT客户端 client = mqtt.Client(client_id=f"projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}") client.username_pw_set(username="unused", password=None) client.tls_set(ca_certs=None, certfile=None, keyfile=private_key_file, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None) client.on_connect = on_connect # 连接到IoT Core的MQTT服务器 client.connect("mqtt.googleapis.com", 8883, 60) # 循环发送温度数据 while True: temp = sensor.get_temperature() print(f"当前温度: {temp}°C") # 把温度数据以JSON格式发送 client.publish(f"/devices/{device_id}/events", payload=f'{{"temperature": {temp}}}', qos=1) time.sleep(10) # 每10秒发一次
- 导入
- 运行脚本,如果没报错,你的传感器就成功连上IoT Core了!
5. 验证数据是否真的传上去了
你可以在GCP控制台的Pub/Sub主题里创建一个订阅,然后查看订阅的消息,就能看到传感器发过来的温度数据啦
内容的提问来源于stack exchange,提问作者Khoo Stephanie
相关产品推荐
相关产品推荐

