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

网页端

移动端

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

总结

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


全部评论
暂无评论
0/144