【昉·星光2 RISC-V 单板计算机】Home Assistant 控制 LED
分享作者:lijinlei
作者昵称:无垠的广袤
评测品牌:赛昉科技
评测型号:VF202040-A0
发布时间:2025-07-07 15:10:12
3 0
前言
开源口碑分享内容
【昉·星光2 RISC-V 单板计算机】Home Assistant 控制 LED
本文介绍了昉·星光2单板计算机实现 Home Assistant 智能家居平台实现远程控制 LED 的项目设计。
项目介绍
本项目设计主要包括
- 准备工作:软件库更新、 GPIO 库函数、MQTT 协议库的安装;
- 工程代码:LED 控制以及 MQTT 消息发送、状态监控等机制的模块化编写;
- Home Assistant 远程开关控制:通过 HA 配置文件生成开关,实现 LED 远程控制。
准备工作
包括软件库更新、 GPIO 控制库函数、MQTT 协议库的安装。
更新软件库
获取官方 .sh
安装文件,并安装程序包
wget https://github.com/starfive-tech/Debian/releases/download/v0.13.0-engineering-release-wayland/install_package_and_dependencies.sh
chmod +x install_package_and_dependencies.sh
sudo ./install_package_and_dependencies.sh
安装 VisionFive.gpio
库
- 访问 VisionFive.gpio_1.3.3 获取最新 whl 文件,对应开发板 python 版本;
- 运行 wget 将 whl 下载至本地文件夹;
- 修改文件名;
- 运行安装指令
python3 --version
wget https://files.pythonhosted.org/packages/2e/00/16326e8e01a268ce997b72e70240d7249a550222af82955d9b4a52f8a320/VisionFive.gpio-1.3.3-cp311-cp311-any.whl
mv VisionFive.gpio-1.3.3-cp311-cp311-any.whl VisionFive.gpio-1.3.3-cp311-cp311-linux_riscv64.whl
python3 -m pip install VisionFive.gpio-1.2.16-cp311-cp311-linux_riscv64.whl --break-system-packages
参考:SSH登录与GPIO控制及软件库更新 .
安装 paho-mqtt
库
apt install python3-paho-mqtt
用以实现标准 MQTT 协议通信。
工程代码
新建 led_HA.py
文件并添加如下代码
#!/usr/bin/python3
import paho.mqtt.client as mqtt
import VisionFive.gpio as gpio
import json
import time
import logging
# Configuration
LED_PIN = 22
GPIO_MODE = gpio.BOARD
MQTT_BROKER = "192.168.1.121" # Replace with your EMQX server IP
MQTT_PORT = 1883
MQTT_USER = "xxx"
MQTT_PASS = "xxxxxxxx"
COMMAND_TOPIC = "homeassistant/switch/visionfive2_led/command"
STATE_TOPIC = "homeassistant/switch/visionfive2_led/state"
AVAILABILITY_TOPIC = "homeassistant/switch/visionfive2_led/availability"
# Initialization
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def setup_gpio():
gpio.setmode(GPIO_MODE)
gpio.setup(LED_PIN, gpio.OUT)
gpio.output(LED_PIN, gpio.LOW)
def on_connect(client, userdata, flags, rc):
if rc == 0:
logger.info("Connected to MQTT Broker")
client.subscribe(COMMAND_TOPIC)
client.publish(AVAILABILITY_TOPIC, "online", retain=True)
client.publish(STATE_TOPIC, "OFF", retain=True)
else:
logger.error(f"Connection failed with code {rc}")
def on_message(client, userdata, msg):
payload = msg.payload.decode().lower()
logger.info(f"Received command: {payload}")
if payload == "on":
gpio.output(LED_PIN, gpio.HIGH)
client.publish(STATE_TOPIC, "ON", retain=True)
elif payload == "off":
gpio.output(LED_PIN, gpio.LOW)
client.publish(STATE_TOPIC, "OFF", retain=True)
try:
setup_gpio()
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.will_set(AVAILABILITY_TOPIC, "offline", retain=True)
client.on_connect = on_connect
client.on_message = on_message
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
except Exception as e:
logger.error(f"Error: {str(e)}")
finally:
gpio.cleanup()
保存代码,终端执行指令 python3 led_HA.py
运行程序。
配置 Home Assistant
HA 配置文件 configuration.yaml
添加如下代码
mqtt:
switch:
- name: "VisionFive2 LED"
unique_id: "visionfive2_led_switch"
command_topic: "homeassistant/switch/visionfive2_led/command"
state_topic: "homeassistant/switch/visionfive2_led/state"
availability_topic: "homeassistant/switch/visionfive2_led/availability"
payload_on: "on"
payload_off: "off"
payload_available: "online"
payload_not_available: "offline"
retain: true
device:
identifiers: ["visionfive2_board"]
name: "VisionFive2 Board"
manufacturer: "StarFive"
model: "VisionFive2"
保存 YAML 文件,HA 界面端 - 开发者工具 - 点击 所有 YAML 配置
以更新配置信息 - 刷新 HA 页面,则概览页新增开关卡片。
流程图
包括系统初始化、MQTT 消息处理流程
效果
可以先通过 MQTTX 软件客户端测试连接和控制效果,以 homeassistant/switch/visionfive2_led/command
为主题,发送 ON
或 OFF
控制 LED 的亮灭。之后在 HA 终端建立 MQTT 设备连接,通过按钮实现 LED 控制。
网页端
移动端
依托 HA 丰富的生态建设,在移动端可通过 Home Assistant 应用实现 LED 的远程控制。
总结
本文介绍了昉·星光2单板计算机实现 Home Assistant 智能家居平台实现远程控制 LED 的项目设计,为该开发板的物联网应用和快速开发提供了参考。
全部评论

暂无评论

0/144