【VisionFive 2 Lite 单板计算机】SoC 温度的 Home Assistant 物联网终端显示
本文介绍了昉·星光 VisionFive2 Lite 单板计算机结合芯片内置温度传感器获取 SoC 温度数据,并通过 MQTT 协议完成温度的云端上传,以及接入 Home Assistant 智能家居平台,实现 SoC 温度的物联网实时监测的项目设计。
项目介绍
通过 Python 编程和芯片内部传感器获取 SoC 温度,并通过 MQTT 协议上传至 Home Assistant 平台,实现物联网远程实时温度监测。

- 准备工作:硬件连接、Docker、HA、EMQX部署等;
- SoC 温度:获取芯片内部温度并终端打印;
- MQTT 上传:将 芯片温度数据由 MQTT 协议上传至 EMQX 服务器并远程访问;
- Home Assistant 连接:将芯片温度通过 MQTT 协议上传至 HA 智能家居平台。
准备工作
包括硬件连接、Docker安装、HA 和 EMQX 部署等。
硬件连接

系统安装
安装和烧录 VisionFive2 Lite 官方 Ubuntu 操作系统。
详见:VF2 Lite 系统安装 .
Docker
电脑主机或服务器安装 Docker 软件。

Home Assistant
通过 Docker 拉取 Home Assistant 镜像文件;
bash
docker pull homeassistant/home-assistant:latest
- 启动容器
bash
docker run -d \
--name hass \
--restart=unless-stopped \
-e TZ=Asia/Shanghai \
-v /data/homeassistant/config:/config \
--network=host \
homeassistant/home-assistant:latest
-
浏览器访问
http://<服务器IP>:8123/进入 HA 主页;
-
配置用户信息,添加 MQTT 集成。
EMQX
通过 Docker 拉取 EMQX 镜像文件;
bash
docker pull emqx/emqx:latest
- 启动容器
bash
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/进入 EMQX 主页;
-
配置账户信息,添加客户端及 MQTT 用户。
详见:EMQX添加MQTT客户端 .
SoC 温度
VisionFive2 Lite 内核驱动里,温度传感器挂在 hwmon (hardware monitoring) 子系统。

终端执行如下指令,获取 hwmon 所在路径
bash
for f in /sys/class/hwmon/hwmon*/name; do
echo "$f -> $(cat $f)"
done
回复 /sys/class/hwmon/hwmon0/name -> sfctemp ;
可知节点为 sfctemp ,对应文件路径 /sys/class/hwmon/hwmon0/temp1_input ;
代码
执行指令 touch chip_temp.py 新建文件并添加如下代码
python
#!/usr/bin/env python3
import time
PATH = '/sys/class/hwmon/hwmon0/temp1_input'
while True:
with open(PATH) as f:
print(f'SoC 温度: {int(f.read()) / 1000:.1f} °C')
time.sleep(1)
保存代码;
效果
- 终端执行
python3 chip_temp.py指令; - 连续打印实时 SoC 温度数据

MQTT 上传
消息队列遥测传输(Message Queuing Telemetry Transport, MQTT)是一种基于发布/订阅范式的轻量级消息协议。广泛应用于物联网(IoT)、机器与机器(M2M)通信、智能家居、医疗设备等领域。

下面介绍将获取到的芯片温度数据通过 MQTT 协议上传至云端 MQTT Broker 服务器的相关流程。
准备工作
安装 paho-mqtt 库
bash
sudo apt install python3-paho-mqtt
流程图
开始
初始化
连接EMQX
主循环
读取温度
构建JSON报文
MQTT发布
终端打印
延时
代码
终端执行 touch chip_temp_mqtt.py 新建文件并添加如下代码
python
#!/usr/bin/env python3
import paho.mqtt.client as mqtt
import time
import json
# ---------------- 参数 ----------------
HOST = "192.168.31.116"
PORT = 1883
USER = "xxx"
PASS = "xxx"
TOPIC = "vf2/temp"
INTERVAL = 2 # 秒
TEMP_FILE = "/sys/class/hwmon/hwmon0/temp1_input"
# -----------------------------------------
def read_temp():
"""从 hwmon 读取 SoC 温度,返回浮点摄氏度"""
with open(TEMP_FILE, "r") as f:
millideg = int(f.read().strip())
return round(millideg / 1000.0, 1)
def main():
client = mqtt.Client()
client.username_pw_set(USER, PASS)
client.connect(HOST, PORT, 60)
client.loop_start()
while True:
temp = read_temp() # 温度定义
payload = json.dumps({"temperature": temp})
client.publish(TOPIC, payload)
print(payload) # 终端回显报文
time.sleep(INTERVAL)
if __name__ == "__main__":
main()
保存代码。
效果
终端执行 python3 chip_temp_mqtt.py 运行程序;
终端
- 程序运行后,终端打印 SoC 温度数据的 JSON 报文;

消息订阅
浏览器访问 http://192.168.31.116:18083 进入 EMQX 控制终端;
左侧工具栏 - 诊断工具 - WebSocket 客户端
-
填写 ip 地址、端口、用户名、密码,点击
连接按钮; -
在
订阅面板中填写主题vf2/temp;
-
在下方消息框立刻收到 SoC 温度消息;

Home Assistant 连接
Home Assistant 是一个开源的智能家居平台,旨在通过集成各种智能设备和服务,提供一个统一的、可自定义的家庭自动化解决方案。它允许用户监控、控制和自动化家中的各种设备,包括灯光、温度、安全系统、多媒体设备等。

下面介绍芯片温度数据通过 MQTT 协议上传至 Home Assistant 平台的相关流程,包括流程图、代码、效果演示等。
流程图
开始
初始化
创建MQTT客户端
连接EMQX
触发HA配置
主循环
读取温度
构建JSON报文
发布主题
终端打印
延时
代码
终端执行 touch chip_temp_mqtt_ha.py 新建文件并添加如下代码
python
#!/usr/bin/env python3
import time, json, os
import paho.mqtt.client as mqtt
# ----------- 可调参数 -----------
MQTT_HOST = "192.168.31.116"
MQTT_PORT = 1883
MQTT_USER = "xxx"
MQTT_PASS = "xxx"
CLIENT_ID = "vf2lite-temp"
DISCOVERY_PREFIX = "homeassistant" # HA 默认发现前缀
NODE_ID = "visionfive2lite" # 设备层节点 ID
OBJECT_ID = "soc_temp" # 实体层对象 ID
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, _ud, _flags, rc):
if rc == 0:
print("MQTT 已连接")
# 发送自动发现配置
config = {
"name": "SoC 温度",
"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": "VisionFive2 Lite",
"model": "VisionFive2 Lite",
"manufacturer": "StarFive"
}
}
cli.publish(CONFIG_TOPIC, json.dumps(config), retain=True)
else:
print(f"MQTT 连接失败,返回码 {rc}")
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()
payload = json.dumps({"temperature": temp})
client.publish(STATE_TOPIC, payload, qos=1)
print(f"已推送温度: {temp} °C")
except Exception as e:
print("读取/推送失败:", e)
time.sleep(SEND_INTERVAL)
if __name__ == "__main__":
main()
保存代码。
效果
终端执行 python3 chip_temp_mqtt_ha.py 运行程序;
终端
- 程序运行后,终端打印温度数据,以及实时消息推送状态;

卡片
- 进入 Home Assistant 主界面;
- 自动加载目标设备,显示 SoC 实时温度信息;

历史曲线
- 点击卡片,可进一步获取历史演化曲线;
- 在显示更多链接中,可调整目标查看时间段,以获取更多细节;

此外,可访问 Home Assistant 移动端 APP 获取实时芯片温度信息。
总结
本文介绍了昉·星光 VisionFive2 Lite 单板计算机结合芯片内置温度传感器获取 SoC 温度数据,并通过 MQTT 协议完成温度的云端上传,以及接入 Home Assistant 智能家居平台,实现 SoC 温度的物联网实时监测的项目设计,为相关产品在工业物联网、智能家居、消费电子等领域的快速开发和产品应用提供了参考。