用途:

Home Assistant是一个基于Python的智能家居系统,它可以帮助你构建和管理你的智慧空间。以下是一些Home Assistant的主要用途:

  1. 设备支持:Home Assistant支持高度定制化的设置,包括自动化(Automation)、群组化(Group)、UI客制化(Theme)等。它可以方便地连接各种外部设备,如智能设备、摄像头、邮件、短消息、云服务等。

  2. 自动化:你可以根据自己的需求,手动或自动化地联动这些外部设备。例如,你可以设置当你回家时,门自动解锁,灯自动开启,空调自动调到适宜的温度。

  3. 集中管理:通过在手机或电脑上安装Home Assistant客户端,用户可以通过简单易用的界面,对家庭设备进行集中管理、控制。

  4. 智能控制:Home Assistant可以实现设备的Siri控制,使你可以通过语音命令来控制你的智能家居设备。

  5. 开源:Home Assistant是开源的,它不属于任何商业公司,用户可以无偿使用。

 

docker-compose安装: 

  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    network_mode: "bridge"
    privileged: true
    restart: unless-stopped
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /home/tech-shrimp/homeassistant:/config
      - /run/dbus:/run/dbus:ro
    ports:
      - "8123:8123"
    user: "root"
    restart: always

1.安装HACS

在国内下载 HACS,你可以尝试以下方法:

  1. 使用镜像站点:你可以使用 hacs-china 提供的镜像站点进行下载¹。具体的命令如下:

    wget -O - https://get.hacs.vip | bash -

    如果上面的命令执行后卡住不动,或没有提示安装成功,你可以尝试下面的命令¹:

    wget -O - https://get.hacs.vip | HUB_DOMAIN=ghproxy.com/github.com bash -

    如果你的 Home Assistant 是 haos/hassio/supervisor 版本,你可以直接在宿主机或 Terminal & SSH 加载项中执行上面的命令¹。如果是 core/docker 版本的 Home Assistant,你需要 ssh 登陆宿主机后,并 cd 进入到 Home Assistant 配置目录再执行安装命令¹。

  2. 手动安装:你也可以选择手动安装¹。首先,你需要下载安装包https://ghproxy.com/github.com/hacs-china/integration/releases/latest/download/hacs.zip并解压¹。然后,通过 samba/ftp 进入 Home Assistant 配置目录,在该目录下创建 custom_components 文件夹(如果已有请忽略),在 custom_components 目录下创建 hacs 文件夹(如果已有请删除重新创建),将解压出来的文件复制到刚创建的 hacs 文件夹¹。最后,重启 Home Assistant¹。

 

2.无hacs安装Xiaomi MIoT插件

手动安装(HACS装不上)
下载插件 zip 压缩包(该链接始终为最新版本)。
https://github.com/al-one/hass-xiaomi-miot/releases

依次打开压缩包中的xiaomi_miot_raw-master/custom_components文件夹。

将该文件夹中的xiaomi_miot文件夹拷贝至自己 HA 安装目录的custom_components文件夹。

重新启动 Home Assistant 容器。

3.python 控制设置(Home Assistant REST API)

 

此外,也请确保您的URL正确无误,并且对应于有效的Home Assistant服务端点。

如果您确认以上两点都是正确的,代码应该修改为类似下面这样:

import requests

url = "http://192.168.31.113:8123/api/services/light/turn_on"
headers = {
    "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    "content-type": "application/json",
}

data = {
    "entity_id": "light.living_room"  # 确保是您想要操作实体的正确ID
}

response = requests.post(url, headers=headers, json=data)
print(response.text)

请确保替换YOUR_ACCESS_TOKEN与您的实际访问令牌和light.living_room为您试图控制的灯具的实际entity_id。如果在使用更正后的代码仍然遇到问题,建议您检查Home Assistant的日志文件,了解可能的错误详细内容,此外您还可以查阅Home Assistant的REST API文档以获得更多信息。

这段代码是用Python编写的,其目的是通过发送HTTP POST请求来控制连接到Home Assistant智能家居系统中的一盏灯具(例如客厅的灯)。以下是对每行代码的详细解析:

  1. url = "http://192.168.31.113:8123/api/services/light/turn_on": 这里,url变量被赋予了一个字符串值,该字符串代表Home Assistant REST API的URL。此URL用于向Home Assistant发送命令来控制灯具的打开。这个地址由Home Assistant的IP地址(在这个例子中是本地网络上的192.168.31.113)和端口号(8123)组成,后面跟着指定的API路径(/api/services/light/turn_on)。

  2. headers = { ... }: 这个headers字典包含了两个键值对,用于定义发送HTTP请求时需要附带的头部信息。"Authorization": "Bearer YOUR_ACCESS_TOKEN"指的是使用Bearer认证方式和你的访问令牌(YOUR_ACCESS_TOKEN需要被替换为你的实际访问令牌, Bearer不能省略),这是接入Home Assistant API的认证方式之一。"content-type": "application/json"表明发送的数据将是JSON格式。

    • 获得YOUR_ACCESS_TOKEN:您可以通过在Home Assistant的用户界面中进入您的个人资料页面,点击安全,然后滚动到页面底部找到"长期访问令牌"部分,创建一个令牌。创建后,请妥善保管这个令牌,因为它不会再次显示。
  3. data = { ... }: 这行代码定义了一个名为data的字典,该字典包含一个键"entity_id",其值被设置为你希望控制的灯具的实体ID(在这个例子中是"light.living_room")。这个ID在Home Assistant平台上唯一标识了一个特定的设备或实体(获取方式:概览-点击需要获取的设备-设置齿轮-实体标志符-复制)。

  4. response = requests.post(url, headers=headers, json=data): 使用requests库,这行代码发送一个HTTP POST请求到之前定义的url,并附加了headersjson数据。json=data参数自动将data字典转换为JSON格式的字符串。这个请求会告诉Home Assistant按照提供的信息去执行一个操作,比如在这个示例中是开启一盏灯。

整个过程的成功依赖于准确的URL、有效的访问令牌以及正确的entity_id。如果配置正确,此代码将使指定的灯具开启。

 

4.api

在Home Assistant中,/api/services/<domain>/<service>路由用于调用服务,这里的<domain> 和 <service> 分别代表服务的所属领域(例如lightswitchmedia_player等)和特定服务(如turn_onturn_offtoggle)。一些常见的<domain>/<service>组合包括:

Domain Service Description
light turn_on 开启一盏或多盏灯。
light turn_off 关闭一盏或多盏灯。
light toggle 切换一盏或多盏灯的状态,术语"切换"就是指将灯从开变为关,或反过来。
switch turn_on 开启一个或多个开关。
switch turn_off 关闭一个或多个开关。
switch toggle 切换一个或多个开关的状态。
media_player play_media 在媒体播放器上播放指定的媒体。
media_player pause 暂停正在播放的媒体。
media_player next_track 播放下一曲目。
media_player previous_track 播放上一曲目。
automation trigger 触发一个自动化流程。
scene turn_on 激活一个场景,场景是预设的一组设备状态。
climate set_temperature 设置一个或多个空调或恒温器的温度。

请注意,服务的参数(例如entity_id、亮度、颜色、媒体URL等)需要在请求体中以JSON格式提供。

关于API的使用,您可以参考Home Assistant的官方开发者文档获得更详细的信息:https://developers.home-assistant.io/docs/api/rest/

5.连接易微联SONOFF

连接易微联(SONOFF)设备到Home Assistant并实现场景自动化编程,你可以按照以下步骤进行¹:

安装SonoffLAN:如果你还没有安装Home Assistant或HACS,你可以参考相关教程进行安装。在HACS中,你可以通过集成——右下角浏览并下载存储库——搜索存储库SonoffLAN——右下角下载的方式来安装SonoffLAN。安装完成后,你需要在配置——系统——左上角重新启动。然后在配置——设备与服务——右下角添加集成——搜索集成Sonoff中输入你的账户密码,手机号码需要加上国家号前缀(86)¹。

打开SONOFF输入账户密码,账户必须加86,不然提示user account +189****8075 does not exist, 正确格式如86189****8075