【VisionFive 2 Lite 单板计算机】SoC 温度的 Home Assistant 物联网终端显示

【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 温度的物联网实时监测的项目设计,为相关产品在工业物联网、智能家居、消费电子等领域的快速开发和产品应用提供了参考。

相关推荐
强化试剂瓶1 小时前
全面掌握Ergosterol-PEG-Biotin,麦角甾醇PEG生物素的使用与注意事项
python·scrapy·flask·scikit-learn·pyqt
人工智能AI技术1 小时前
【Agent从入门到实践】45 与后端系统集成:Agent作为服务,嵌入业务流程
人工智能·python
JERRY. LIU1 小时前
realsense识别目标距离的传感器及其工作原理
python·opencv·目标检测
工程师老罗1 小时前
Pytorch自定义数据集的用法
开发语言·pytorch·python
好学且牛逼的马1 小时前
【Hot100|20-LeetCode 240. 搜索二维矩阵 II 】
linux·算法·leetcode
Aurora@Hui1 小时前
GSAP (GreenSock Animation Platform)
人工智能·python
码农水水2 小时前
小红书Java面试被问:mTLS(双向TLS)的证书验证和握手过程
java·开发语言·数据库·redis·python·面试·开源
工程师老罗2 小时前
Python中__call__和__init__的区别
开发语言·pytorch·python
dyyx1112 小时前
Python GUI开发:Tkinter入门教程
jvm·数据库·python