You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无GCP SDK的微控制器如何通过HTTP向Pub/Sub发送数据?

无SDK设备向GCP Pub/Sub发送数据的极简方案

GCP支持无SDK/类库的设备通过HTTP向Pub/Sub发送数据,有两种可行方案,可根据你的微控制器资源情况选择:

方案一:直接调用Pub/Sub REST API

适合具备基础加密计算能力(支持RSA签名、SHA256哈希)的微控制器,无需中间层。

步骤1:前置准备

  • 在GCP控制台创建Pub/Sub主题,记录项目ID和主题名称。
  • 创建服务账号,授予Pub/Sub Publisher权限,下载JSON格式的密钥文件(包含私钥和服务账号邮箱)。

步骤2:获取OAuth2访问令牌

Pub/Sub API要求Bearer认证,需为服务账号生成访问令牌:

  • 若微控制器资源有限,可先用本地脚本(如Python)预先生成短期令牌(有效期1小时),到期后重新生成替换。
  • 若微控制器支持加密运算,可在设备上构造JWT并请求令牌:
    1. 构造JWT头部:{"alg": "RS256", "typ": "JWT"}
    2. 构造JWT载荷:包含iss(服务账号邮箱)、scope(https://www.googleapis.com/auth/pubsub)、aud(https://oauth2.googleapis.com/token)、exp(过期时间戳)、iat(签发时间戳)
    3. 用服务账号私钥对头部+载荷的Base64拼接字符串做RS256签名,生成完整JWT
    4. 发送POST请求到https://oauth2.googleapis.com/token,参数grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer,assertion为生成的JWT,返回的access_token即为Bearer令牌。

步骤3:发送温度数据

构造HTTP POST请求到以下端点:

POST https://pubsub.googleapis.com/v1/projects/{你的项目ID}/topics/{你的主题名称}:publish

请求头需包含:

  • Authorization: Bearer {你的访问令牌}
  • Content-Type: application/json

请求体格式(温度数据需Base64编码):

{
  "messages": [
    {
      "data": "MjUuNg=="  // 示例:"25.6"的Base64编码
    }
  ]
}

方案二:用Cloud Functions做中间层

适合资源受限、无法处理加密运算或Base64编码的微控制器,只需发送简单HTTP请求。

步骤1:创建Cloud Functions端点

  • 选择HTTP触发器,编写转发代码(以Python为例):
from google.cloud import pubsub_v1

publisher = pubsub_v1.PublisherClient()
TOPIC_PATH = publisher.topic_path("你的项目ID", "你的主题名称")

def forward_temp_to_pubsub(request):
    req_data = request.get_json()
    temp = req_data.get("temperature")
    if not temp:
        return "缺少温度数据", 400
    # 直接将温度转为字节发送到Pub/Sub
    future = publisher.publish(TOPIC_PATH, str(temp).encode("utf-8"))
    return f"消息已提交: {future.result()}", 200
  • 部署时为Cloud Functions的默认服务账号授予Pub/Sub Publisher权限。

步骤2:微控制器发送请求

只需向Cloud Functions的部署URL发送HTTP POST请求,请求体用简单JSON格式:

{"temperature": 25.6}

可选:为端点添加简单验证(如请求头携带自定义API密钥,在代码中校验),避免非法请求。


内容的提问来源于stack exchange,提问作者AJV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:25:16