『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 5872|回复: 1

[基础教程] 远程树莓派GPIO的接入的方法

[复制链接]

26

主题

304

帖子

1670

积分

金牌会员

Rank: 6Rank: 6

积分
1670
金钱
1366
HASS币
0
发表于 2019-10-13 20:50:08 | 显示全部楼层 |阅读模式
本帖最后由 窗寒轻雨 于 2019-10-13 20:54 编辑

经过不断的摸索和查阅资料,终于把远程树莓派接入了群辉docker里的hass~


第一种方法:remote gpio 平台
参考:https://www.home-assistant.io/integrations/remote_rpi_gpio/
https://gpiozero.readthedocs.io/en/stable/remote_gpio.html


步骤:
1.树莓派上操作,安装pigpio库
sudo apt install pigpio
2.树莓派上操作,开启远程gpio功能:
sudo raspi-config,选择第五个interfacing option-remote gpio
3.树莓派上操作,将pigpio注册为服务并添加自启
sudo systemctl enable pigpiod
sudo systemctl start pigpiod
4.docker的homeassistant添加两个运行环境:
GPIOZERO_PIN_FACTORY=pigpio
PIGPIO_ADDR=XXXXXXX(树莓派的IP)
5.hass的配置文件中添加:
switch:
  - platform: remote_rpi_gpio
    host: 192.168.200.235
    ports:
      10: keting_music(10为BCM编码,即GPIO端口号,后边为自己起的名字)
    invert_logic: false
6.运行homeassistant容器,一般都会
pip自动加载需要的库,然后会发现多出了一个swtich.keting_music的entity_id

第二种方法:通过emqtt将gpio发布到broker,然后用mqtt组件接入homeassistant
参考:https://github.com/flyte/pi-mqtt-gpio
1.树莓派安装pi-mqtt-gpio:
pip3 install
pi-mqtt-gpio
2.在随便一个目录下新建配置文件,名字随意,比如/root/mqtt_gpio_config.yml
内容为:
mqtt:
  host: xxxxxx(mqtt 服务器地址)
  port: 1883
  user: "XXXXX"
(用户名)
  password: "XXXXXX"
(密码)
  
topic_prefix: keting/pi
(自己定义,发布的主题的前缀)
  
status_topic: status

gpio_modules:
  - name: raspberrypi
    module: raspberrypi

digital_outputs:
  - name: keting_music 名字自己起
    module: raspberrypi
    pin: 10                       BCM编码的针脚,GPIO端口号
    on_payload: "ON"
    off_payload: "OFF"
    inverted: yes             是否反转逻辑
    initial: high                初始化高低电瓶
    retain: yes
  

  - name: canting_music 名字自己起
    module: raspberrypi
    pin: 27                       BCM编码的针脚,GPIO端口号
    on_payload: "ON"
    off_payload: "OFF"
    inverted: yes             是否反转逻辑
    initial: high                初始化高低电瓶
    retain: yes

......

3.树莓派启动
pi-mqtt-gpio:
python3 -m pi_mqtt_gpio.server /root/mqtt_gpio_config.yml &(注意配置文件路径)
4.homeassistant的配置文件添加配置:
switch:
   - platform: mqtt
     name: keting_music
     command_topic: keting/pi/output/keting_music/set(路径为刚才配置文件的
topic_prefix+output+digital_outputs里的name+set
     qos: 1
     retain: 1
   - platform: mqtt
     name: canting_music
     command_topic: keting/pi/output/canting_music/set
     qos: 1
     retain: 1
5.重启即可看见switch.keting_music 的entity_id

测试中发现的问题:
1.两种方法都没有状态反馈,也就是说如果在其他地方更改了某gpio口的电平值,状态不能反应在homeassistant里
第二种方法看作者说后期会加上,第一种方法没弄懂具体实现原理,不知道是不是通过命令行远程到树莓派调用库来
实现控制的,总之两种方法生成的组件都是不带状态的开关图标,不是滑杆
2.第一种方法如果用
GPIOZERO_PIN_FACTORY=pigpio环境,则运行一段时间后就无法控制了,ha后台提示connect
reset by peer,查无资料~!如果改为
GPIOZERO_PIN_FACTORY=mock,则稳定的多,不过还未做长时间测试,
准备测试两天看,如果不行,就切换到第二种方式运行。







评分

参与人数 1金钱 +20 收起 理由
+ 20 纳尼,还有这种操作?

查看全部评分

回复

使用道具 举报

42

主题

523

帖子

2517

积分

金牌会员

Rank: 6Rank: 6

积分
2517
金钱
1989
HASS币
30
发表于 2020-5-3 12:20:37 | 显示全部楼层
经测试,还没有研究出来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 03:39 , Processed in 0.083471 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表