【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]