如何设置微软Azure IoT Hub

目录

🧭 一、前提条件

🛠️ 二、创建 IoT Hub 实例

方法一:使用 Azure 门户网站创建(适合新手)

🧩 三、注册设备(添加设备身份)

🖥️ 四、连接设备(以模拟设备为例)

方法一:使用 Azure 官方设备模拟器

📡 五、查看设备发送的数据

方式一:用 Azure CLI 查看(开发者常用)

方式二:将数据路由到其他服务(推荐)

🔐 六、安全建议

📘 七、进阶:通过 ESP32 实物上传数据

✅ 总结流程图

🧭 一、准备工作

硬件设备:

软件安装:

🛠️ 二、获取连接字符串和信息

🧩 三、生成 SAS Token(临时访问令牌)

方法一:使用 Python 脚本生成(推荐)

📡 四、Arduino 代码示例(通过 HTTPS 上报数据)

✅ 五、在 Azure 查看数据

🔐 六、安全提醒


设置 Microsoft Azure IoT Hub 的过程可以分为以下几个主要步骤,适合初学者和开发者从零开始:


🧭 一、前提条件

在开始之前,请确认:

  1. 已拥有 Azure 账户:如果还没有,可通过 https://azure.microsoft.com/zh-cn/free/ 注册免费账户(提供 12 个月免费服务和 $200 美元试用额度)。

  2. 安装了 Azure CLI(可选,但推荐):用于命令行管理 Azure 服务。

    • 安装地址:https://learn.microsoft.com/zh-cn/cli/azure/install-azure-cli

  3. 了解基本概念

    • IoT Hub:云端的设备通信中心,支持数百万设备的连接与管理。

    • 设备:可以是物理传感器、ESP32、Raspberry Pi,或者模拟器。


🛠️ 二、创建 IoT Hub 实例

方法一:使用 Azure 门户网站创建(适合新手)

  1. 登录 Azure Portal

  2. 在搜索框中输入 IoT Hub 并点击“创建”

  3. 填写以下字段:

    • 订阅(Subscription):选择已有订阅。

    • 资源组(Resource Group):创建新的或选择已有的。

    • 区域(Region):选择靠近你的区域,例如 East Asia(香港)或 Korea Central。

    • IoT Hub 名称:全局唯一,例如 jcwon-iot-hub

  4. 点击“下一步”直到“创建”,确认配置后点击“创建”

  5. 等待几分钟,IoT Hub 就会创建成功


🧩 三、注册设备(添加设备身份)

  1. 进入你创建好的 IoT Hub 页面

  2. 在左侧导航栏点击 设备(IoT devices)→ 点击顶部的 + 添加设备

  3. 设置:

    • 设备 ID:自定义,例如 myDevice01

    • 认证类型:默认“自动生成密钥”

  4. 点击“保存”

  5. 复制生成的 连接字符串(用于设备连接)


🖥️ 四、连接设备(以模拟设备为例)

方法一:使用 Azure 官方设备模拟器

  1. 打开 Azure 官方示例项目:https://github.com/Azure-Samples/azure-iot-samples-node

  2. 安装 Node.js(如未安装)https://nodejs.org/

  3. 下载并运行以下命令:

git clone https://github.com/Azure-Samples/azure-iot-samples-node.git
cd azure-iot-samples-node/iot-hub/Quickstarts/simulated-device
npm install
  • 打开 simulated_device.js 文件,将 connectionString 改为你刚才复制的设备连接字符串。

  • 运行模拟设备:

node simulated_device.js

你会看到模拟设备每隔一段时间向 IoT Hub 发送温度数据。


📡 五、查看设备发送的数据

IoT Hub 本身不存储遥测数据,但你可以:

方式一:用 Azure CLI 查看(开发者常用)

az extension add --name azure-iot
az iot hub monitor-events --hub-name <你的IoTHub名称> --device-id <你的设备ID>

 

方式二:将数据路由到其他服务(推荐)

你可以将 IoT Hub 的数据路由到以下服务进行存储与分析:

服务说明
Azure Storage Blob储存历史数据
Azure Stream Analytics实时分析数据
Azure Functions触发自动化逻辑
Power BI可视化分析数据

🔐 六、安全建议

  • 不要把设备连接字符串暴露到公共代码仓库

  • 使用 X.509 证书认证更安全(高级用法)

  • 可设置设备的最大连接数、传输速率限制


📘 七、进阶:通过 ESP32 实物上传数据

可以使用 Arduino IDE + ESP32 模块,通过 PubSubClient 或 Azure 官方 Arduino SDK 连接到 IoT Hub,实现物理设备上报数据。若你需要我可以单独讲这一块。


✅ 总结流程图

[Azure Portal]
     ↓ 创建 IoT Hub
     ↓ 添加设备
     ↓ 获取连接字符串
     ↓ 本地模拟/物理设备连接
     ↓ 数据发送到 IoT Hub
     ↓ 配置路由:Blob、Functions、Stream Analytics、Power BI

下面是为 ESP32 开发板定制的 Azure IoT Hub 连接和数据发送的完整指南,适合你通过 WiFi 将传感器或遥测数据上传到云端。


🧭 一、准备工作

硬件设备:

  • ESP32 开发板(如 ESP32 DevKit V1)

  • USB 数据线

  • 一台可以运行 Arduino IDE 的电脑

  • WiFi 网络

软件安装:

  1. 安装 Arduino IDE:https://www.arduino.cc/en/software

  2. 为 ESP32 添加开发支持

    • 打开 Arduino IDE → 文件首选项

    • 在“附加开发板管理器网址”中添加:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

              3. 然后:工具 → 开发板 → 开发板管理器 → 搜索“ESP32”并安装

  1. 安装库(在 Arduino IDE 中)

    • AzureIoTHub(官方 Azure SDK)

    • WiFi.h(ESP32 自带)

    • 如果用 MQTT,也可以安装 PubSubClient


🛠️ 二、获取连接字符串和信息

回到你之前创建的 IoT Hub,在“设备”中找到你的设备,复制以下信息:

  • 主机名:类似于 jcwon-iot-hub.azure-devices.net

  • 设备 ID:你自己设定的名字

  • 主密钥连接字符串(注意:ESP32 SDK 需要你使用 主密钥 而不是完整连接字符串)


🧩 三、生成 SAS Token(临时访问令牌)

ESP32 无法处理复杂的加密认证,所以需要在本地电脑上先生成一个 SAS Token。

方法一:使用 Python 脚本生成(推荐)

安装依赖(如果未安装):

pip install azure-iot-device

 运行脚本:

from azure.iot.device import IoTHubDeviceClient
import urllib.parse
import hmac, base64, hashlib, time

def generate_sas_token(uri, key, policy_name=None, expiry=3600):
    ttl = int(time.time()) + expiry
    sign_key = "%s\n%d" % (urllib.parse.quote(uri, safe=''), ttl)
    key_bytes = base64.b64decode(key)
    signature = urllib.parse.quote(base64.b64encode(
        hmac.new(key_bytes, sign_key.encode('utf-8'), hashlib.sha256).digest()
    ), safe='')
    token = f'SharedAccessSignature sr={uri}&sig={signature}&se={ttl}'
    if policy_name:
        token += f'&skn={policy_name}'
    return token

# 替换为你自己的主机名和设备信息
hub_host = "jcwon-iot-hub.azure-devices.net"
device_id = "myDevice01"
device_key = "<你的主密钥>"

sas_token = generate_sas_token(f"{hub_host}/devices/{device_id}", device_key)
print("SAS Token:\n", sas_token)

📡 四、Arduino 代码示例(通过 HTTPS 上报数据)

使用原生 HTTP 请求简化,不使用复杂库。

#include <WiFi.h>
#include <WiFiClientSecure.h>

const char* ssid = "你的WiFi名";
const char* password = "你的WiFi密码";

// 替换为你的信息
const char* host = "jcwon-iot-hub.azure-devices.net";
const char* deviceId = "myDevice01";
const char* sasToken = "你生成的SAS Token"; // 不带引号换行粘贴

void setup() {
  Serial.begin(115200);
  delay(100);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500); Serial.print(".");
  }
  Serial.println("WiFi connected");

  WiFiClientSecure client;
  client.setInsecure(); // 测试时使用,正式部署应替换为TLS证书

  if (!client.connect(host, 443)) {
    Serial.println("Connection failed");
    return;
  }

  String payload = "{\"temperature\":25.6,\"humidity\":40}";
  String url = "/devices/" + String(deviceId) + "/messages/events?api-version=2020-09-30";

  String request =
    "POST " + url + " HTTP/1.1\r\n" +
    "Host: " + host + "\r\n" +
    "Authorization: " + sasToken + "\r\n" +
    "Content-Type: application/json\r\n" +
    "Content-Length: " + payload.length() + "\r\n\r\n" +
    payload;

  client.print(request);
  delay(1000);

  while (client.available()) {
    String line = client.readStringUntil('\n');
    Serial.println(line);
  }
  client.stop();
}

void loop() {
  // 可设置为定时上报
}

✅ 五、在 Azure 查看数据

打开终端运行:

az iot hub monitor-events --hub-name jcwon-iot-hub --device-id myDevice01

 如果一切设置正确,你会看到 ESP32 发送上来的 JSON 数据!


🔐 六、安全提醒

  • SAS Token 有效期一般设置为 1 小时,可自动刷新(进阶方案)。

  • 若需长期运行,建议使用 X.509 证书认证 或用 DPS 自动注册设备(Azure 提供支持)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王景程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值