homeassistant爬坑记

2023年 8月 22日 83.7k 0

概述

我的目的是在服务器端搭建hass,接入米家设备进行远程控制(在自己的APP中接入ha的websocket api)

本篇不是入门攻略,算是个人爬坑笔记。

服务器环境为centos7

搭建

docker安装和运行

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl start docker  

拉hass镜像并运行容器

docker pull homeassistant/home-assistant:latest
docker run -it -d --memory 512m --name="hass" -v /home/hass/config:/config -p 8123:8123 homeassistant/home-assistant:latest

这样hass的配置文件就可以在/home/hass/config目录下查看了

根据端口和你的服务器IP打开hass网站,注册一下账号并登录

然后下载hacs,没有魔法的话改容器的hosts

docker exec -it hass bash
vi /etc/hosts # 编辑
​
# 找个站长工具搜一下github ip,比如
# 185.199.110.133 raw.githubusercontent.com
# 20.205.243.166 github.com
​
# 可以多试几次
wget -O - https://get.hacs.xyz | bash - 
  • 配置>设备与服务里添加集成,搜索hacs添加
  • 需要github的认证,不成功还是多试几次
  • hass重启后左栏出现hacs商店,点击进入集成,搜索Xiaomi Miot安装(我不是局域网,用不了gateway3,在本地部署的小伙伴可以考虑gateway3,延迟据说比较低)
  • 安装完成后重启,然后添加集成

这个插件依托云端账号,登录的时候需要手机验证码,但是不在同一个网络下验证了也无法登陆。#issue107里有同样的问题,开发者提供了两种方式,我选择给服务器临时搭一个桌面,然后vnc远程连接桌面。

图形界面安装

yum -y groups install "GNOME Desktop"
echo "exec gnome-session" >> ~/.xinitrc
​
yum -y groups install "KDE Plasma Workspaces"
echo "exec startkde" >> ~/.xinitrc
​
yum groupinstall "X Window System"
startx

vnc安装

yum install -y tigervnc-server
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
vim /etc/systemd/system/vncserver@:1.service
### 修改vncserver@:1.service
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
### 运行
systemctl daemon-reload
systemctl start vncserver@:1
​
### 密码设置(账号是root,如果用其他账户要修改vncserver@:1.service,请自行查阅资料)
vncpasswd

访问vnc的端口是5900+n,这里是5901

远程桌面软件很多,这边选择vnc viewer

然后打开火狐,进入hass,这时候验证就能通过了。

WSS

用postman测试一下websocket连接,设备是一个switch

地址为你的ip:8123/api/websocket

连接完成后要鉴权

{
  "type": "auth",
  "access_token": "123"
}

token可以直接在用户资料里面创建一个长期令牌

订阅事件

{
  "id": 1,
  "type": "subscribe_events",
  // Optional
  "event_type": "state_changed"
}

开关服务调用

{
    "id":9,
    "type": "call_service",
    "domain": "switch",
    "service": "turn_off",
    // Optional
    "target": {
        "entity_id": [
            "switch.giot_v51ksm_05f0_switch"
        ]
    }
}

官方资料里有更多API,感兴趣去多康康。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论