Python SDK 使用指南
1. 安装 Google Cloud IoT Python SDK
在开始使用 Google Cloud IoT Python SDK 之前,需要先安装相关的依赖库。Google Cloud IoT Core 提供了官方的 Python 客户端库,这将帮助我们更方便地与 Google Cloud IoT Core 进行交互。以下是安装步骤:
1.1 安装 Google Cloud SDK
首先,确保您的系统上已经安装了 Google Cloud SDK。Google Cloud SDK 是一个包含 gcloud、gsutil 和 bq 命令行工具的软件包,这些工具对于管理 Google Cloud 项目非常有用。
安装步骤如下:
-
访问 Google Cloud SDK 官方文档 并按照说明安装 Google Cloud SDK。
-
安装完成后,打开终端并运行以下命令以初始化 SDK:
gcloud init
-
按照提示登录您的 Google Cloud 账户并选择项目。
1.2 安装 Google Cloud IoT Python 客户端库
接下来,安装 Google Cloud IoT Python 客户端库。您可以通过 pip 安装该库:
pip install --upgrade google-cloud-iot
1.3 配置身份验证
为了使 Python 客户端库能够访问您的 Google Cloud 项目,您需要配置身份验证。Google Cloud 使用 JSON 密钥文件进行身份验证。以下是配置步骤:
-
在 Google Cloud Console 中,转到“API 和服务” > “凭据”。
-
创建一个新的服务帐户并下载 JSON 密钥文件。
-
将 JSON 密钥文件保存到您的项目目录中,例如
google-cloud-key.json
。 -
设置环境变量
GOOGLE_APPLICATION_CREDENTIALS
以指向您的密钥文件:export GOOGLE_APPLICATION_CREDENTIALS="path/to/google-cloud-key.json"
2. 连接到 Google Cloud IoT Core
连接到 Google Cloud IoT Core 是使用 Python SDK 的第一步。以下是如何使用 Python SDK 连接到 IoT Core 的示例。
2.1 创建客户端实例
首先,创建一个 IoT Core 客户端实例。这将用于与 IoT Core 进行通信。
from google.cloud import iot_v1
def create_client(project_id, cloud_region, registry_id, device_id):
"""
创建一个 IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:return: IoT Core 客户端实例
"""
client = iot_v1.DeviceManagerClient()
return client
# 示例调用
project_id = 'your-project-id'
cloud_region = 'us-central1'
registry_id = 'your-registry-id'
device_id = 'your-device-id'
client = create_client(project_id, cloud_region, registry_id, device_id)
2.2 获取设备注册表
设备注册表是管理设备的集合。以下是如何获取设备注册表的示例:
def get_registry(client, project_id, cloud_region, registry_id):
"""
获取设备注册表
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:return: 设备注册表对象
"""
parent = f'projects/{project_id}/locations/{cloud_region}'
registry_path = f'{parent}/registries/{registry_id}'
registry = client.get_device_registry(name=registry_path)
return registry
# 示例调用
registry = get_registry(client, project_id, cloud_region, registry_id)
print(f"Registry: {registry.name}")
2.3 获取设备
获取设备信息可以帮助我们了解设备的当前状态。以下是如何获取设备的示例:
def get_device(client, project_id, cloud_region, registry_id, device_id):
"""
获取设备信息
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:return: 设备对象
"""
parent = f'projects/{project_id}/locations/{cloud_region}'
registry_path = f'{parent}/registries/{registry_id}'
device_path = f'{registry_path}/devices/{device_id}'
device = client.get_device(name=device_path)
return device
# 示例调用
device = get_device(client, project_id, cloud_region, registry_id, device_id)
print(f"Device: {device.name}")
3. 发布和订阅设备数据
Google Cloud IoT Core 支持通过 MQTT 和 HTTP 协议发布和订阅设备数据。以下是如何使用 Python SDK 进行数据发布和订阅的示例。
3.1 发布设备数据
发布设备数据通常用于将设备的状态或传感器数据发送到 IoT Core。以下是如何使用 MQTT 协议发布数据的示例:
import jwt
import datetime
import paho.mqtt.client as mqtt
def create_jwt(project_id, private_key_file, algorithm):
"""
生成 JWT 以进行身份验证
:param project_id: Google Cloud 项目 ID
:param private_key_file: 私钥文件路径
:param algorithm: 签名算法
:return: JWT 字符串
"""
with open(private_key_file, 'r') as f:
private_key = f.read()
token = {
'iat': datetime.datetime.utcnow(),
'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=60),
'aud': project_id
}
jwt_encoded = jwt.encode(token, private_key, algorithm=algorithm)
return jwt_encoded
def on_connect(client, userdata, flags, rc):
"""
MQTT 客户端连接回调函数
:param client: MQTT 客户端实例
:param userdata: 用户数据
:param flags: 连接标志
:param rc: 连接结果代码
"""
print(f"Connected with result code {rc}")
def on_publish(client, userdata, mid):
"""
MQTT 客户端发布回调函数
:param client: MQTT 客户端实例
:param userdata: 用户数据
:param mid: 消息 ID
"""
print(f"Published message with mid {mid}")
def publish_data(project_id, cloud_region, registry_id, device_id, private_key_file, algorithm, message):
"""
发布设备数据
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param private_key_file: 私钥文件路径
:param algorithm: 签名算法
:param message: 要发布的消息
"""
jwt_token = create_jwt(project_id, private_key_file, algorithm)
mqtt_topic = f'/devices/{device_id}/events'
mqtt_bridge_hostname = 'mqtt.googleapis.com'
mqtt_bridge_port = 8883
client = mqtt.Client(client_id=device_id)
client.username_pw_set(username='unused', password=jwt_token)
client.tls_set(ca_certs='roots.pem', tls_version=2)
client.on_connect = on_connect
client.on_publish = on_publish
client.connect(mqtt_bridge_hostname, mqtt_bridge_port)
client.loop_start()
client.publish(mqtt_topic, message, qos=1)
client.loop_stop()
client.disconnect()
# 示例调用
private_key_file = 'path/to/private_key.pem'
algorithm = 'RS256'
message = 'Hello, IoT Core!'
publish_data(project_id, cloud_region, registry_id, device_id, private_key_file, algorithm, message)
3.2 订阅设备数据
订阅设备数据通常用于接收设备的状态更新或命令。以下是如何使用 MQTT 协议订阅数据的示例:
def on_message(client, userdata, msg):
"""
MQTT 客户端消息回调函数
:param client: MQTT 客户端实例
:param userdata: 用户数据
:param msg: 收到的消息
"""
print(f"Received message '{msg.payload.decode()}' on topic '{msg.topic}'")
def subscribe_to_data(project_id, cloud_region, registry_id, device_id, private_key_file, algorithm, mqtt_topic):
"""
订阅设备数据
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param private_key_file: 私钥文件路径
:param algorithm: 签名算法
:param mqtt_topic: 要订阅的主题
"""
jwt_token = create_jwt(project_id, private_key_file, algorithm)
mqtt_bridge_hostname = 'mqtt.googleapis.com'
mqtt_bridge_port = 8883
client = mqtt.Client(client_id=device_id)
client.username_pw_set(username='unused', password=jwt_token)
client.tls_set(ca_certs='roots.pem', tls_version=2)
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqtt_bridge_hostname, mqtt_bridge_port)
client.subscribe(mqtt_topic, qos=1)
client.loop_forever()
# 示例调用
mqtt_topic = f'/devices/{device_id}/commands/#'
subscribe_to_data(project_id, cloud_region, registry_id, device_id, private_key_file, algorithm, mqtt_topic)
4. 管理设备配置
设备配置用于向设备发送配置数据。以下是如何使用 Python SDK 管理设备配置的示例。
4.1 获取设备配置
获取设备的当前配置可以帮助我们了解设备的配置状态。以下是如何获取设备配置的示例:
def get_device_config(client, project_id, cloud_region, registry_id, device_id):
"""
获取设备配置
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:return: 设备配置对象
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
config = client.get_device_config(device_path)
return config
# 示例调用
config = get_device_config(client, project_id, cloud_region, registry_id, device_id)
print(f"Device config: {config.binary_data.decode()}")
4.2 修改设备配置
修改设备配置用于向设备发送新的配置数据。以下是如何修改设备配置的示例:
def modify_device_config(client, project_id, cloud_region, registry_id, device_id, new_config):
"""
修改设备配置
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param new_config: 新的配置数据
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
config = iot_v1.types.DeviceConfig(binary_data=new_config.encode())
client.modify_cloud_device_config(request={'name': device_path, 'binary_data': config.binary_data, 'version_to_update': 0})
# 示例调用
new_config = 'new configuration data'
modify_device_config(client, project_id, cloud_region, registry_id, device_id, new_config)
5. 管理设备状态
设备状态用于存储设备的当前状态信息。以下是如何使用 Python SDK 管理设备状态的示例。
5.1 获取设备状态
获取设备的当前状态可以帮助我们了解设备的运行情况。以下是如何获取设备状态的示例:
def get_device_state(client, project_id, cloud_region, registry_id, device_id):
"""
获取设备状态
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:return: 设备状态对象
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
state = client.get_device(device_path).state
return state
# 示例调用
state = get_device_state(client, project_id, cloud_region, registry_id, device_id)
print(f"Device state: {state.binary_data.decode()}")
5.2 更新设备状态
更新设备状态用于向 IoT Core 发送设备的当前状态信息。以下是如何更新设备状态的示例:
def update_device_state(client, project_id, cloud_region, registry_id, device_id, new_state):
"""
更新设备状态
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param new_state: 新的状态数据
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
state = iot_v1.types.DeviceState(binary_data=new_state.encode())
client.modify_device(request={'name': device_path, 'state': state})
# 示例调用
new_state = 'new state data'
update_device_state(client, project_id, cloud_region, registry_id, device_id, new_state)
6. 管理设备命令
设备命令用于向设备发送指令。以下是如何使用 Python SDK 管理设备命令的示例。
6.1 发送设备命令
发送设备命令用于向特定设备发送指令。以下是如何发送设备命令的示例:
def send_device_command(client, project_id, cloud_region, registry_id, device_id, command, subfolder=None):
"""
发送设备命令
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param command: 命令数据
:param subfolder: 子文件夹(可选)
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
if subfolder:
topic = f'/devices/{device_id}/commands/{subfolder}'
else:
topic = f'/devices/{device_id}/commands'
client.send_command_to_device(request={'name': device_path, 'binary_data': command.encode(), 'subfolder': subfolder})
# 示例调用
command = 'turn_on'
send_device_command(client, project_id, cloud_region, registry_id, device_id, command)
6.2 获取设备命令
获取设备命令的历史记录可以帮助我们了解设备接收到的命令。以下是如何获取设备命令的示例:
def get_device_commands(client, project_id, cloud_region, registry_id, device_id):
"""
获取设备命令
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:return: 设备命令列表
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
commands = client.list_device_config_versions(request={'name': device_path})
return commands
# 示例调用
commands = get_device_commands(client, project_id, cloud_region, registry_id, device_id)
for command in commands:
print(f"Command: {command.binary_data.decode()}")
7. 管理设备元数据
设备元数据用于存储设备的附加信息,例如设备类型、位置等。以下是如何使用 Python SDK 管理设备元数据的示例。
7.1 获取设备元数据
获取设备的元数据可以帮助我们了解设备的附加信息。以下是如何获取设备元数据的示例:
def get_device_metadata(client, project_id, cloud_region, registry_id, device_id):
"""
获取设备元数据
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:return: 设备元数据字典
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
device = client.get_device(name=device_path)
return device.metadata
# 示例调用
metadata = get_device_metadata(client, project_id, cloud_region, registry_id, device_id)
print(f"Device metadata: {metadata}")
7.2 更新设备元数据
更新设备元数据用于向 IoT Core 发送设备的附加信息。以下是如何更新设备元数据的示例:
def update_device_metadata(client, project_id, cloud_region, registry_id, device_id, new_metadata):
"""
更新设备元数据
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param new_metadata: 新的元数据字典
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
device = iot_v1.types.Device(name=device_path, metadata=new_metadata)
client.update_device(request={'device': device, 'update_mask': {'paths': ['metadata']}})
# 示例调用
new_metadata = {'type': 'sensor', 'location': 'warehouse'}
update_device_metadata(client, project_id, cloud_region, registry_id, device_id, new_metadata)
8. 管理设备证书
设备证书用于验证设备的身份。以下是如何使用 Python SDK 管理设备证书的示例。
8.1 获取设备证书
获取设备的证书可以帮助我们了解设备的身份验证状态。以下是如何获取设备证书的示例:
def get_device_certificates(client, project_id, cloud_region, registry_id, device_id):
"""
获取设备证书
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:return: 设备证书列表
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
device = client.get_device(name=device_path)
return device.credentials
# 示例调用
certificates = get_device_certificates(client, project_id, cloud_region, registry_id, device_id)
for cert in certificates:
print(f"Certificate: {cert.public_key}")
8.2 添加设备证书
添加设备证书用于向设备添加新的身份验证证书。以下是如何添加设备证书的示例:
def add_device_certificate(client, project_id, cloud_region, registry_id, device_id, certificate):
"""
添加设备证书
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param certificate: 新的证书字符串
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
public_key = iot_v1.types.PublicKeyCredential(public_key=certificate, format=iot_v1.types.PublicKeyFormat.X509_CERTIFICATE_PEM)
client.modify_device(request={'name': device_path, 'credentials': [public_key]})
# 示例调用
new_certificate = '-----BEGIN CERTIFICATE-----\n...Your Certificate Here...\n-----END CERTIFICATE-----\n'
add_device_certificate(client, project_id, cloud_region, registry_id, device_id, new_certificate)
8.3 删除设备证书
删除设备证书用于移除设备的身份验证证书。以下是如何删除设备证书的示例:
def delete_device_certificate(client, project_id, cloud_region, registry_id, device_id, certificate_id):
"""
删除设备证书
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param certificate_id: 要删除的证书 ID
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
credentials = [cred for cred in client.get_device(name=device_path).credentials if cred.id != certificate_id]
client.modify_device(request={'name': device_path, 'credentials': credentials})
# 示例调用
certificate_id = 'your-certificate-id'
delete_device_certificate(client, project_id, cloud_region, registry_id, device_id, certificate_id)
9. 管理设备连接
设备连接管理用于监控和控制设备的连接状态。以下是如何使用 Python SDK 管理设备连接的示例。
9.1 获取设备连接状态
获取设备的连接状态可以帮助我们了解设备是否在线。以下是如何获取设备连接状态的示例:
def get_device_connection_state(client, project_id, cloud_region, registry_id, device_id):
"""
获取设备连接状态
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:return: 设备连接状态
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
device = client.get_device(name=device_path)
return device.connection_state
# 示例调用
connection_state = get_device_connection_state(client, project_id, cloud_region, registry_id, device_id)
print(f"Device connection state: {connection_state}")
9.2 断开设备连接
断开设备连接用于强制设备下线。以下是如何断开设备连接的示例:
def disconnect_device(client, project_id, cloud_region, registry_id, device_id):
"""
断开设备连接
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
client.modify_device(request={'name': device_path, 'connection_state': iot_v1.types.ConnectionState.DISCONNECTED})
# 示例调用
disconnect_device(client, project_id, cloud_region, registry_id, device_id)
10. 管理设备注册表
设备注册表用于管理设备的集合。以下是如何使用 Python SDK 管理设备注册表的示例。
10.1 创建设备注册表
创建设备注册表用于在 IoT Core 中注册新的设备集合。以下是如何创建设备注册表的示例:
def create_device_registry(client, project_id, cloud_region, registry_id):
"""
创建设备注册表
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:return: 创建的设备注册表对象
"""
parent = f'projects/{project_id}/locations/{cloud_region}'
registry = iot_v1.types.DeviceRegistry(id=registry_id)
created_registry = client.create_device_registry(request={'parent': parent, 'device_registry': registry})
return created_registry
# 示例调用
new_registry_id = 'new-registry-id'
created_registry = create_device_registry(client, project_id, cloud_region, new_registry_id)
print(f"Created registry: {created_registry.name}")
10.2 删除设备注册表
删除设备注册表用于从 IoT Core 中移除设备集合。以下是如何删除设备注册表的示例:
def delete_device_registry(client, project_id, cloud_region, registry_id):
"""
删除设备注册表
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
"""
registry_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}'
client.delete_device_registry(name=registry_path)
# 示例调用
delete_device_registry(client, project_id, cloud_region, new_registry_id)
print(f"Deleted registry: {new_registry_id}")
11. 管理设备
设备管理用于创建、删除和更新设备。以下是如何使用 Python SDK 管理设备的示例。
11.1 创建设备
创建设备用于在设备注册表中注册新的设备。以下是如何创建设备的示例:
def create_device(client, project_id, cloud_region, registry_id, device_id, public_key):
"""
创建设备
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param public_key: 设备的公钥字符串
:return: 创建的设备对象
"""
registry_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}'
public_key_credential = iot_v1.types.PublicKeyCredential(public_key=public_key, format=iot_v1.types.PublicKeyFormat.X509_CERTIFICATE_PEM)
device = iot_v1.types.Device(id=device_id, credentials=[public_key_credential])
created_device = client.create_device(request={'parent': registry_path, 'device': device})
return created_device
# 示例调用
new_device_id = 'new-device-id'
public_key = '-----BEGIN PUBLIC KEY-----\n...Your Public Key Here...\n-----END PUBLIC KEY-----\n'
created_device = create_device(client, project_id, cloud_region, registry_id, new_device_id, public_key)
print(f"Created device: {created_device.name}")
11.2 删除设备
删除设备用于从设备注册表中移除设备。以下是如何删除设备的示例:
def delete_device(client, project_id, cloud_region, registry_id, device_id):
"""
删除设备
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
client.delete_device(name=device_path)
# 示例调用
delete_device(client, project_id, cloud_region, registry_id, new_device_id)
print(f"Deleted device: {new_device_id}")
11.3 更新设备
更新设备用于修改设备的配置或元数据。以下是如何更新设备的示例:
def update_device(client, project_id, cloud_region, registry_id, device_id, update_mask, **kwargs):
"""
更新设备
:param client: IoT Core 客户端实例
:param project_id: Google Cloud 项目 ID
:param cloud_region: 云区域
:param registry_id: 设备注册表 ID
:param device_id: 设备 ID
:param update_mask: 要更新的字段列表
:param kwargs: 要更新的设备属性
:return: 更新的设备对象
"""
device_path = f'projects/{project_id}/locations/{cloud_region}/registries/{registry_id}/devices/{device_id}'
device = client.get_device(name=device_path)
for key, value in kwargs.items():
setattr(device, key, value)
updated_device = client.update_device(request={'device': device, 'update_mask': {'paths': update_mask}})
return updated_device
# 示例调用
update_mask = ['metadata', 'config']
updated_device = update_device(client, project_id, cloud_region, registry_id, device_id, update_mask, metadata={'type': 'actuator'}, config='updated configuration data')
print(f"Updated device: {updated_device.name}")
12. 总结
通过以上示例,您可以使用 Google Cloud IoT Python SDK 进行各种操作,包括安装和配置 SDK、连接到 IoT Core、发布和订阅设备数据、管理设备配置、设备状态、设备证书、设备连接以及设备注册表。这些功能将帮助您更有效地管理和监控您的物联网设备。
如果您有任何疑问或需要进一步的帮助,请参考 Google Cloud IoT Core 官方文档 或联系 Google Cloud 支持团队。
标签:IoT,param,PythonSDK,device,client,registry,二次开发,id,设备 From: https://blog.csdn.net/chenlz2007/article/details/143027218