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

Azure IoT Hub与Azure Event Grid集成:本地数据库对接技术问询

Azure IoT Hub 与本地数据库集成(Event Grid + Webhook 方案指引)

一、配置IoT Hub的Event Grid事件订阅

  • 登录Azure门户,找到目标IoT Hub,进入「事件」选项卡
  • 点击「创建事件订阅」,填写订阅名称,勾选需要订阅的核心事件类型(重点选「设备遥测数据已到达」)
  • 终点类型选择「Webhook」,填入你的本地Web服务的公网可访问URL(本地服务需通过端口映射工具如Ngrok暴露公网地址,或部署在有公网IP的服务器上)

二、搭建本地Webhook服务

需要编写支持POST请求的HTTP接口,同时处理Event Grid的订阅验证逻辑:

  • 验证逻辑:当收到包含validationCode字段的请求时,直接返回该字段值,完成订阅校验
  • 示例Python(Flask)代码:
from flask import Flask, request, jsonify
import base64

app = Flask(__name__)

@app.route('/iot-webhook', methods=['POST'])
def process_telemetry():
    req_data = request.get_json()
    # 处理Event Grid订阅验证
    if 'validationCode' in req_data.get('data', {}):
        return jsonify({'validationResponse': req_data['data']['validationCode']}), 200
    
    # 解析遥测数据(IoT Hub遥测数据默认是Base64编码)
    for event in req_data:
        telemetry_bytes = base64.b64decode(event['data']['body'])
        telemetry_json = telemetry_bytes.decode('utf-8')
        # 这里添加写入本地数据库的逻辑
        # 示例:连接MySQL执行INSERT语句,将telemetry_json中的数据存入对应表
    return jsonify({'status': 'processed'}), 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

三、写入本地数据库

  • 根据你使用的数据库类型(MySQL、SQL Server、PostgreSQL等),引入对应驱动包(如Python的pymysql、psycopg2)
  • 在Web服务的事件处理逻辑中,解析遥测数据后,构建数据库插入语句,执行数据写入
  • 确保数据库连接参数(地址、端口、用户名、密码、库名)配置正确,且本地服务能访问到数据库

四、测试与排障

  • 触发设备发送遥测数据,检查Web服务日志是否收到事件
  • 查看本地数据库是否有数据写入
  • 若出现推送失败,可在Azure门户的Event Grid订阅详情中查看「传递历史」,排查问题(如Web服务不可达、验证未通过、数据解析错误等)

内容的提问来源于stack exchange,提问作者chossen-addict

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:42:12