eefocus_4062187 发表于 2025-9-21 20:35:17

【AIMB-2210研华AMD嵌入式主板】物联网智能家居平台

本帖最后由 eefocus_4062187 于 2025-9-25 14:50 编辑

# 【AIMB-2210研华AMD嵌入式主板】物联网智能家居平台

本文介绍了 AIMB-2210 研华 AMD 嵌入式主板实现物联网家居平台搭建,包括 Docker 安装、EMQX 部署、Home Assistant 智能家居平台部署、工程测试等。

## 项目介绍

- 环境搭建:Docker、HA、EMQX 部署、MQTT 配置;
- MCP 接入:HACS 、HA MCP 、Xiaozhi MCP 安装;
- 工程测试:流程图、关键代码、MQTTX 通信测试;
- 效果演示:温度传感器的数据上传、开关 LED 的远程控制、MQTT 消息发送等。

## 环境搭建

包括 Docker、HA、EMQX 部署、MQTT 配置等,为 Xiaozhi 的连接提供基础。

### Docker

- 下载并安装 (https://www.docker.com/products/docker-desktop/) 软件;

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203118qidtoqd6zvhozhie.jpg)

#### 镜像源更换

为了便于后续 EMQX 和 HA 平台部署,需要添加镜像源以加速下载。

- 依次进入 `设置` - `Docker Engine` 添加如下代码

```yaml
{
"builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
},
"debug": true,
"experimental": false,
"insecure-registries": [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
],
"registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc",
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://dockerproxy.com",
    "https://gst6rzl9.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "http://mirrors.ustc.edu.cn/",
    "https://mirrors.tuna.tsinghua.edu.cn/",
    "http://mirrors.sohu.com/"
]
}
```

- 选择 `Apply` 即可。

### HA 部署

- 打开命令行终端并执行指令

```shell
docker pull homeassistant/home-assistant:latest
```

- 待拉取 HA 镜像完成;
- 磁盘根目录创建 `homeassistant` 文件夹,新建 `docker-compose.yaml` 文件,并添加如下代码

```yaml
version: '3'
services:
homeassistant:
    image: homeassistant/home-assistant:latest
    container_name: homeassistant
    restart: always
    volumes:
      - /data/homeassistant/config:/config
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "8123:8123"
```

- 保存文件,并在终端打开该文件夹,执行 `docker compose up -d` 指令,完成 HA 容器创建。
- 进入 Containers 容器页面,点击 homeassistant 端口链接,进入 HA 浏览器页面,创建并登录账户;

### EMQX 部署

在添加软件镜像源的基础上,终端执行指令

```bash
docker pull emqx/emqx:latest
```

拉取最新版 emqx 镜像

终端执行指令

```shell
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest
```

创建并运行 emqx 容器;

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203136q53b2zbosuov288c.jpg)

> 若提示端口被占用报错,可删除已创建的 emqx 容器,进入 Images 标签页,点击 emqx/emqx 镜像对应的启动按钮,手动配置容器名称、Host端口等参数,端口填写 0 ,系统随机分配可用端口。

#### 配置 EMQX

(1)进入 Containers 容器页面,点击 emqx 端口链接,进入 emqx 浏览器页面,初始登录账户名 `admin` 密码 `public` ;

(2)依次打开 `访问控制` - `客户端认证` - `创建` - `Password-Based` - `内置数据库` - (默认配置)- `创建` ;

(3)`用户管理` - `新建用户` - 自定义用户名和密码 .

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203148j2qyqwn6q2zpfnko.jpg)

### MQTT 配置

(1)命令行终端输入 `ipconfig` 获取本地计算机 IPv4 地址,如 `192.168.31.160`

(2)配置 Home Assistant ,依次点击设置 - 设备与服务 - 添加集成 - 搜索 MQTT - 填写代理信息。

> 代理栏输入计算机 IP 地址,端口 1883,用户名和密码为 EMQX 中创建的用户信息。

(3)进入 HA 所在文件夹,打开 configuration.yaml 配置文件,添加温度传感器和开关设备

```yaml
mqtt:
sensor:
    - name: "Temperature"
      state_topic: "ha/adc/temp"
      suggested_display_precision: 1
      unit_of_measurement: "°C"
      value_template: "{{ value_json.temperature }}"
switch:
    - name: "Switch"
      unique_id: "led_switch"
      command_topic: "ha/switch/cmd"
      state_topic: "ha/switch/state"
      payload_on: "ON"
      payload_off: "OFF"
      retain: true
```

保存更改并 [重新加载配置](https://www.home-assistant.io/docs/configuration/#reloading-the-configuration-to-apply-changes) 以应用更改。

(4)进入 HA 概览页面,编辑仪表盘,添加温度传感器和开关卡片。

### HACS 安装

使用命令行安装;

- 进入HA容器终端,

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203213abxh3jc2o5klcwk3.jpg)
- 执行如下指令,

```shell
wget -O - https://get.hacs.vip | bash -
```

获取 HACS 压缩文件并自动安装

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203230m4rxvvah57rwaaar.jpg)

- 待提示安装完成,进入设置,搜索并添加 HACS 集成;

详见:(https://gitee.com/hacs-china/) .

#### HA MCP 安装

在安装小智 MCP 之前,需要安装 HA 官方 MCP Server 集成;

- 进入设置,设备与服务,添加集成,搜索 MCP Server 并安装;

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203246xsequ6y88eunnyy2.jpg)
- MCP 服务器将在 HA 实例中本地运行,网址为 `http://localhost:8123/mcp_server/sse`

> HA MCP 可用于小智 AI 智能体的连接,实现语音获取传感器数据、语音控制终端设备等。
>
> 详见:[小智 MCP 接入 Home Assistant](https://bbs.aithinker.com/forum.php?mod=viewthread&tid=47027) .
>
> GitHub 开源地址: (https://github.com/mac8005/xiaozhi-mcp-ha) .

## 工程测试

这里使用 MicroPython 开发板作为 HA 终端设备(温度传感器、LED 开关)进行工程测试,将设备连接至 AIMB-2210 研华 AMD 嵌入式主板;

包括流程图、工程代码、固件上传、MQTT 测试等。

### 流程图

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203305u3nvw4z2dt5i5554.jpeg)

### 代码

运行 Thonny IDE ,新建文件,添加如下代码

```python
#!/usr/bin/env python3
import json
import network
import time
import random
from machine import Pin, ADC
from umqtt.simple import MQTTClient

# ========== Configuration ==========
WIFI_SSID = "xxx"         # wifi name
WIFI_PASS = "xxx"         # wifi password
ADC_PIN = 16                # ADC pin
LED_PIN = 3               # LED pin
MQTT_SERVER = "192.168.31.160" # ip address
MQTT_PORT = 32768         # MQTT Broker port
MQTT_USER = "xxx"         # MQTT Broker user
MQTT_PASS = "xxx"         # MQTT Broker password
MQTT_CLIENT_ID = f"ha-client-{random.getrandbits(8)}"

# MQTT topic
PUB_TOPIC = "ha/adc/temp"       # publish topic
SUB_TOPIC = "ha/switch/cmd"   # subscribe LED
STATE_TOPIC = "ha/switch/state" # publish LED state
# ============================

led = Pin(LED_PIN, Pin.OUT, value=0)# initialize LED

def wifi_connect():
    sta = network.WLAN(network.STA_IF)
    sta.active(True)
    if not sta.isconnected():
      print("Connecting to WiFi...")
      sta.connect(WIFI_SSID, WIFI_PASS)
      for _ in range(20):
            if sta.isconnected():
                break
            time.sleep(1)
    print("WiFi Connected:", sta.ifconfig())

def read_temperature():
    adc = ADC(Pin(ADC_PIN))
    adc.atten(ADC.ATTN_11DB)
    raw = adc.read()
    volt = raw / 4095 * 3.3
    temp = (volt - 0.5) * 100 - 88 # ADC temperature
    return round(temp, 1)

def mqtt_callback(topic, msg):
    topic = topic.decode()
    msg = msg.decode()
    print(f"MQTT Received: {topic} -> {msg}")
   
    if topic == SUB_TOPIC:
      if msg == "ON":
            led.on()
            client.publish(STATE_TOPIC, "ON")
      elif msg == "OFF":
            led.off()
            client.publish(STATE_TOPIC, "OFF")

def mqtt_connect():
    client = MQTTClient(
      MQTT_CLIENT_ID,
      MQTT_SERVER,
      MQTT_PORT,
      MQTT_USER,
      MQTT_PASS,
      keepalive=60
    )
    client.set_callback(mqtt_callback)
    client.connect()
    client.subscribe(SUB_TOPIC)
    print(f"MQTT Connected to {MQTT_SERVER}, subscribed to {SUB_TOPIC}")
    return client

def main():
    wifi_connect()
    global client
    client = mqtt_connect()
   
    try:
      while True:
            client.check_msg()          # check MQTT
            temp = read_temperature()   # read temperature
            client.publish(PUB_TOPIC, json.dumps({"temperature": temp}))
            time.sleep(1)               # delay
    finally:
      client.disconnect()
      print("MQTT Disconnected")

if __name__ == "__main__":
    main()
```

- 保存代码,配置解释器,运行程序。

### MQTTX 测试

- 下载、安装并运行 MQTTX 软件;
- 添加连接,配置 MQTT 通信参数,点击连接;
- 添加订阅主题,包括 ADC 温度传感器、开关控制和状态;
- 设置发送主题,通过消息指令实现开关控制及状态反馈;

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203326oy82rfc32zc553z7.jpg)

## 效果演示

这里展示 HA 获取 ADC 温度传感器数据、以及控制开关 LED 的测试效果。

### 传感器读取

语音获取温度传感器数值

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203344httta1b7j1ujt7fe.png)

控制 `打开` 和 `关闭`Switch 开关

!(https://www.eefocus.com/forum/data/attachment/forum/202509/21/203359yg4gdy3mjpzlbj1z.jpg)

## 总结

本文介绍了 AIMB-2210 研华 AMD 嵌入式主板实现物联网家居平台搭建,包括 Docker 安装、EMQX 部署、Home Assistant 智能家居平台部署、工程测试等,为该产品在物联网、智能家居平台建设等领域的快速开发和应用提供了参考。

页: [1]
查看完整版本: 【AIMB-2210研华AMD嵌入式主板】物联网智能家居平台