【“星睿O6”AI PC开发套件评测】Docker本地部署EMQX和Home Assistant平台
本文介绍了瑞莎星睿 O6 (Radxa Orion O6) 开发板通过 Docker 容器实现 EMQX 和 Home Assistant 的本地部署。
项目介绍
- Docker 安装:网络加速、安装脚本、更换软件源、相关指令和版本检测等;
- EMQX 部署:镜像获取、容器启动、创建用户以及参数配置等;
- Home Assistant 部署:镜像拉取、容器启动、参数配置等。
Docker
介绍 O6 实现 Docker 部署的主要流程,包括安装脚本的获取与执行、版本检测等。
安装脚本
更换国内软件源
# 添加 Docker 官方 GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加仓库到 Apt 源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.aliyun.com/docker-ce/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker_aliyun.list > /dev/null
sudo apt-get update- 使用官方脚本安装,终端执行指令
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh- 安装完成后,查询 Docker 版本号
docker -v软件源
终端执行如下代码,添加镜像源,加速拉取镜像
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
EOF重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart dockerEMQX
EMQX 是全球领先的开源分布式云原生 MQTT 物联网接入平台,支持单机千万级并发、毫秒级延迟,为万物互联提供高可靠、高可用的消息总线底座。
介绍了部署 EMQX 容器的主要流程,包括增加软件源、镜像拉取、容器启动、个性化配置等。
部署方案
在添加软件镜像源的基础上,终端执行如下指令,拉取最新版 emqx 镜像
sudo docker pull emqx/emqx:latest启动容器
终端执行如下指令,启动 EMQX 容器
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest- 浏览器输入网址
http://<IP>:18083,如http://192.168.1.107:18083; - 进入 EMQX 界面,初始账号
admin密码public; - 首次登录会提示更新密码并进入概览界面
- 若要停止/启动/重启 EMQX,则执行指令
sudo docker stop emqx # STOP
sudo docker start emqx # RUN
sudo docker restart emqx # Restart创建用户
创建客户端
- 依次打开
访问控制-客户端认证-创建-Password-Based-内置数据库- (默认配置)-创建;
创建用户
用户管理-新建用户- 自定义用户名和密码 - 保存.
Home Assistant
镜像获取
拉取 HA 镜像,终端执行
sudo docker pull homeassistant/home-assistant:stable启动容器
HA 镜像拉取完成后,终端执行如下代码,启动容器
docker run -d \
--restart always \
--name homeassistant \
-v /data/homeassistant/config:/config \
-e TZ=Asia/Shanghai \
-p 8123:8123 \
homeassistant/home-assistant:latest参数配置
- 浏览器输入网址
http://<IP>:8123,如192.168.1.107:8123 - 进入 HA 主界面(首次打开需进行注册),输入用户名、密码等信息;
- 配置完成后进入 HA
概览标签页;
工程测试
将 SoC 温度通过 MQTT 协议上传至 HomeAssistant 平台,实现物联网 SoC 温度实时监测。
安装软件包
sudo apt install python3-paho-mqtt流程图
代码
终端执行指令 touch soc_temp_mqtt_ha.py 新建文件,添加如下代码
#!/usr/bin/env python3
import time, json
import paho.mqtt.client as mqtt
# ----------- parameters -----------
MQTT_HOST = "localhost"
MQTT_PORT = 1883
MQTT_USER = "xxx"
MQTT_PASS = "xxx"
CLIENT_ID = "o6_soc_temp"
DISCOVERY_PREFIX = "homeassistant"
NODE_ID = "O6"
OBJECT_ID = "soc_temp"
TEMP_PATH = "/sys/class/hwmon/hwmon0/temp1_input"
SEND_INTERVAL = 2
# -----------------------------------
STATE_TOPIC = f"{DISCOVERY_PREFIX}/sensor/{NODE_ID}/{OBJECT_ID}/state"
CONFIG_TOPIC = f"{DISCOVERY_PREFIX}/sensor/{NODE_ID}/{OBJECT_ID}/config"
def read_temp():
with open(TEMP_PATH) as f:
return round(int(f.read()) / 1000, 1)
def on_connect(cli, *_):
config = {
"name": "SoC Temp",
"state_topic": STATE_TOPIC,
"unit_of_measurement": " C",
"device_class": "temperature",
"value_template": "{{ value_json.temperature }}",
"unique_id": f"{NODE_ID}_{OBJECT_ID}",
"device": {
"identifiers": [NODE_ID],
"name": "O6",
"model": "Orion O6",
"manufacturer": "Radxa"
}
}
cli.publish(CONFIG_TOPIC, json.dumps(config), retain=True)
print("MQTT Connected")
def main():
client = mqtt.Client(client_id=CLIENT_ID)
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.connect(MQTT_HOST, MQTT_PORT, keepalive=60)
client.loop_start()
while True:
try:
temp = read_temp()
client.publish(STATE_TOPIC, json.dumps({"temperature": temp}), qos=1)
print(f"Send temperature: {temp} C")
except Exception as e:
print("Read/send failed:", e)
time.sleep(SEND_INTERVAL)
if __name__ == "__main__":
main()保存代码。
效果
终端执行指令
python3 soc_temp_mqtt_ha.py运行程序,终端打印 SoC 温度HA 概览界面自动加载 MQTT 传感器设备
总结
本文介绍了瑞莎星睿 O6 开发板通过 Docker 容器实现 EMQX 平台和 Home Assistant 的本地部署,包括软件源加速、Docker 安装、EMQX 部署、Home Assistant 镜像拉取、容器启动和参数配置等流程,为相关产品在物联网 IoT 领域的快速开发和应用设计提供了参考。