【昉·星光2 RISC-V 单板计算机】Home Assistant 控制 LED
分享作者:lijinlei
作者昵称:无垠的广袤
评测品牌:赛昉科技
评测型号:VF202040-A0
发布时间:2025-07-07 15:10:12
0
前言
本文介绍了昉·星光2单板计算机实现 Home Assistant 智能家居平台实现远程控制 LED 的项目设计。
开源口碑分享内容

【昉·星光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 为主题,发送 ONOFF 控制 LED 的亮灭。之后在 HA 终端建立 MQTT 设备连接,通过按钮实现 LED 控制。

网页端

移动端

依托 HA 丰富的生态建设,在移动端可通过 Home Assistant 应用实现 LED 的远程控制。

总结

本文介绍了昉·星光2单板计算机实现 Home Assistant 智能家居平台实现远程控制 LED 的项目设计,为该开发板的物联网应用和快速开发提供了参考。


全部评论
暂无评论
0/144