用 Home Assistant 开关 Xbox One

Xbox One 提供了即开即用和节能两种电源模式,不管哪一种似乎都没法远程开机,也许是我用 WiFi 连接的原因,也许是我设置不对。

哪里有需求,哪里就有解决方案。我的方法是用WiFi插座+博联 RM 进行远程开关 Xbox One。

  1. 开机时,先打开电源,再发射一个开机的红外信号。
  2. 关机时,先发射一个关机的红外信号,再发射一个确认的信号,最后关闭电源彻底关机。

Home Assistant 配置如下:

switch:
- platform: broadlink
host: 192.168.2.100
mac: '78:0F:00:00:00:00'
type: rm2_pro_plus
switches:
xbox_one_ir:
command_on: 'JgBQAAABKJQTEhMTExITEhQSExIUEhM3ExMTEhMSFDcTNxQSEzcTOBMSEzcUEhM3FBITNxMTExITNxQSEzcUEhM3ExMTNxM3FAAFngABKUoTAA0FAAAAAAAAAAA='
command_off: 'JgBQAAABKJQTEhQSExIUEhMSFBITEhM3FBITEhQSEzcUNxMSEzgTNxM3FBITEhQ3ExITOBMSExIUEhM3FDcTEhM3FBITNxQ3EwAFnwABKUkTAA0FAAAAAAAAAAA='
- platform: template
switches:
xbox_one:
value_template: "{{ is_state('switch.broadlink_mp_1s2', 'on') }}"
turn_on:
service: script.1548158043107
turn_off:
service: script.1548158143044
script:
'1548158043107':
alias: turn on xbox
sequence:
- data:
entity_id: switch.broadlink_mp_1s2
service: switch.turn_on
- delay: '2'
- service: switch.broadlink_send_packet_192_168_2_100
data:
packet: "JgBQAAABKJQTEhMTExITEhQSExIUEhM3ExMTEhMSFDcTNxQSEzcTOBMSEzcUEhM3FBITNxMTExITNxQSEzcUEhM3ExMTNxM3FAAFngABKUoTAA0FAAAAAAAAAAA="
'1548158143044':
alias: turn off xbox
sequence:
- service: switch.broadlink_send_packet_192_168_2_100
data:
packet: "JgBQAAABKJQTEhQSExIUEhMSFBITEhM3FBITEhQSEzcUNxMSEzgTNxM3FBITEhQ3ExITOBMSExIUEhM3FDcTEhM3FBITNxQ3EwAFnwABKUkTAA0FAAAAAAAAAAA="
- delay: '2'
- service: switch.broadlink_send_packet_192_168_2_100
data:
packet: "JgBQAAABKJQUERMSExITEhMSExIUERM3FBETEhMSFDYSOBMSEjgTNxMSEzcUERMSEhMUNhITFBETNxMSEzcUNhM3ExMSNxM3FAAFcQABJ0oUAA0FAAAAAAAAAAA="
- delay: '5'
- data:
entity_id: switch.broadlink_mp_1s2
service: switch.turn_off

确认开机状态应该用 device_tracker,更准确。

相关链接

https://community.home-assistant.io/t/xbox-one-ir-codes-for-broadlink-rm/26680/5

私人定制的吃药提醒 TTS

母亲年龄大了,去年生了一场病,需要每天早晚吃药,偶尔忘记吃药的事情时有发生,自己不在身边,能做的不多……

所以利用家中现成的 Home Assistant 做了这个私人定制的吃药提醒。

一、软硬件准备

  1. Home Assistant 是必须的
  2. 米家无线开关,有开关自然得有网关
  3. TTS 音箱,我用的是百度TTS

二、代码

比较简单,三个自动化。

  1. 8:00-9:30,18:30-21:00,每隔十分钟提醒一次
  2. 吃药后按下按钮“打卡”,禁用提醒
  3. 定时重新打开提醒

继续阅读

无法接入 Home Assistant 的 360 摄像机怎么办

我这个360摄像机用了很久了,大概是最早的一批用户,经历了水滴直播从无到有再到关闭的风风雨雨。

360摄像机不像传统摄像头厂商的产品有开放 rtsp,也没有破解的固件可以刷,只能使用官方 app。可以预见的将来也不会开放,完全没有希望接入 Home Assistant 。

使用 Weblink 组件接入 URL Scheme

这里提供一个曲线救国的方法,使用 Weblink 组件通过 URL Scheme 打开 app,算是抛砖引玉。

Weblink 组件只支持 http 和 https 协议的链接,直接使用 URL Scheme 会出错,所以通过 html 网页进行中转。

weblink:
entities:
- name: 360 Camera
url: /local/360_camera.html
icon: mdi:webcam

360_camera.html 放在 www 文件夹中,html 代码如下:

<head>
<meta http-equiv="refresh" content="0;url=shuidilive://view"> 
</head>

点击上图中的链接,会跳转到 360 摄像机的 app。不同浏览器略有不同,可能会有“是否打开”的提示,推荐使用 Chrome。Android 和 iOS 都是支持 URL Scheme 的。

录了一个小视频作为演示,戳这里查看。

继续阅读

Home Assistant 更换 MySQL 和 PostgreSQL 数据库

Home Assistant 默认的数据库是 sqlite,随着使用时间的增加,数据库文件越来越大,查看日志和历史的速度也变得越来越慢。曾经试着把这个 sqlite 数据库文件放到 /tmp 目录下,也就是内存中,响应速度快了很多,但是内存很快就塞满导致死机。

MySQL/MariaDB 和 PostgreSQL 则成为更好性能数据库的选择。强烈推荐使用 PostgreSQL,内存占用少,系统负载更低。

下面以安装在本机的数据库为例,进行简单的配置。

Home Assistant 使用 MySQL/MariaDB

1、安装 MySQL/MariaDB

2、新建数据库

mysql -u root -p

输入密码后,进入 mysql 命令行,

create database hass;

如果你使用 phpMyAdmin 管理 MySQL,新建数据库之类的操作就简单多了。

3、安装依赖软件

pip3 install mysqlclient

4、在 Home Assistant 的配置文件 configuration.yaml 中添加

recorder:
  db_url: mysql://user:passwd@SERVER_IP/DB_NAME?charset=utf8

5、监测 MySQL 数据库大小的的 sensor,可根据需要使用

- platform: sql
db_url: mysql://user:passwd@SERVER_IP:3306/information_schema
queries:
- name: hass_db_size
query: "select concat(round(sum(DATA_LENGTH/1024/1024),0)) as db_size from TABLES where table_schema='HASS';"
column: 'db_size'
unit_of_measurement: MB

继续阅读

在斐讯 K3 路由器中运行 Home Assistant

这大概是一篇导航贴,整理一下前面的文章。

首先,斐讯 K3 路由器官方root固件运行 Debian Jessie

然后,编译安装 Home Assistant 依赖的 Python 3.6

最后,进入 Debian,安装 Home Assistant,方法是一样的。需要远程访问的话,记得打开路由器的防火墙端口。

K3 的 CPU 性能有限,RAM 只有 256M,编译安装一个 Python 组件往往需要很久,毕竟 Orange Pi 之类的开发板也很便宜。因为 80 端口被路由器后台管理占用,所以没法使用 habridge 服务。

曾经在 K3 中运行过半年 Home Assistant,还算稳定。

挺复杂的,不推荐在路由器中折腾,至于 docker 就更不要折腾了。

在斐讯 K3 路由器中运行 Home Assistant
在斐讯 K3 路由器中运行 Home Assistant

Home Assistant 支持的那些插座和灯泡

插座、排插

WiFi 智能插座可以简单的把现有家电改造成智障家电,如果自动化做的好,智障家电也可以成为智能家电,比如低湿度打开加湿器等。

Home Assistant 支持的开关插座很多,国内能买的到的却不多,整理了一个列表在这里。

品牌 名称/型号 价格 链接 其他
控客 mini k 39-59 京东 天猫 第三方插件支持
控客 mini pro 59-79 京东 天猫 同上
控客 K2 pro 128 天猫 同上,老款不推荐
米家 WiFi 基础版 49-69 天猫
米家 WiFi 增强版 59-89 天猫 带可控的USB,带电量统计
米家 Zigbee 版 59-69 京东 天猫 带电量统计
小米 智能插线板 65-69 停售 带电量统计
博联 SP mini3 39-49 京东 天猫
博联 mp1 99 京东 天猫 4口分别控制
鸿雁 8340B 89-109 京东 天猫 4口分别控制
鸿雁 8340J 89-109 京东 4口分别控制,京东微联版
鸿雁 8342B 119 京东 天猫 带电量统计,4口分别控制

米家和小米的几款插座商品页面没有型号,用名称代替。Zigbee 版插座需要配合米家网关或者 Aqara 空调伴侣使用。

控客的插座用第三方组件接入 Home Assistant,github 项目地址:https://github.com/jedmeng/homeassistant-konke

控客和博联部分产品有京东微联版,价格略低,使用京东微联app,可能无法接入 Home Assistant。部分产品在天猫上有卖阿里智能版,不知道是否可以接入 Home Assistant。

  1. 博联mp1和鸿雁8340通用,8340J 可以使用智慧星,可以接入 Home Assistant。
  2. 博联SP mini3-JD 只能使用京东微联,不能使用智慧星,无法接入 Home Assistant
  3. 博联SP mini3 天猫精灵零配版,通过天猫精灵连接 WiFi,从天猫精灵中删除后可以使用智慧星,无法正常接入 Home Assistant

个人比较推荐小米/米家和控客的插座,个头小,按键位置合理。博联SP mini3个头大,按键和插口在同一面上,容易被挡住,而且按键上的灯在夜间太亮,不过这货胜在便宜,而且卖了这么多年还在卖。

继续阅读

斐讯盒子 T1 安装 Kodi 接入 Home Assistant

斐讯盒子 T1 是斐讯最近推出的新品,性能还不错,高于当前主流配置。拿到手后就用 adb 安装了 Kodi,完美运行,再把 Kodi 接入 Home Assistant。

Kodi+NAS 是我心目中最好的家庭多媒体中心解决方案,一条龙解决视频、音乐、图片等,有空再单独说一下 Kodi。

斐讯盒子 T1 安装 Kodi

1、首先去盒子的设置-高级-远程调试打开,最好把盒子设置成固定IP

2、下载 Kodi,我下载的是64位版本

3.1、下载 adb,把 adb 解压到计算机C:\adb目录,链接: https://pan.baidu.com/s/1mjQ9DPm 密码: 7pwj

Windows命令行执行( Win键+R 输入cmd 回车)

cd c:\adb
adb connect 192.168.x.x #盒子IP
adb shell
adb install kodi.apk #把apk放在adb同一个目录下

安装成功后去盒子的应用界面找到 Kodi。 继续阅读

编译安装 Home Assistant 依赖的 Python 3.6+

本文的编译环境为 Debian Jessie 8.x。

Home Assistant 公告 2018年就不支持 Python 3.4 了,然而 Debian 8 Jessie 的官方源只能安装 Python 3.4,Debian 9 Stretch 的官方源只能安装 Python 3.5.3,也会出现一些小问题,软件源加入 testing 倒是可以安装 Python 3.6,不过要是产生各种问题就麻烦了。

还是编译安装 Python 3.6 以上版本比较省心。

#先安装python3.6+依赖的软件包
sudo apt-get install build-essential libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libffi-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev
#编译安装python3.6+,根据需要选择
#wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
tar xzvf Python-3*.tgz
cd Python-3*/
sudo ./configure && sudo make && sudo make install

编译的时间比较久,完成后查看版本:

python -V
python3 -V
pip3 -V


如果是从Python 3.4 升级到 3.6+,需要重新安装 HASS,运行前删除配置文件夹中的 deps 文件夹

rm ~/.homeassistant/deps -rf

Home Assistant 用 Command line Sensor 获取硬盘温度

Home Assistant 获取 CPU 温度比较简单,官方的示例中即有。

Home Assistant 支持 hddtemp 获取硬盘温度,只是 hddtemp 不支持USB移动硬盘,所以使用 smartmontools 通过 S.M.A.R.T 获取温度。

首先安装 smartmontools,

apt-get install smartmontools

Home Assistant 用 Command line Sensor 获取温度数据,参数中的 -d sat 是关键,

#CPU温度
- platform: command_line
name: CPU Temperature
command: "cat /sys/class/thermal/thermal_zone0/temp"
unit_of_measurement: "°C"
scan_interval: 300
#硬盘温度
- platform: command_line
name: HDD Temperature
command: "smartctl -d sat -a /dev/sda | grep Temperature_Celsius | cut -c88-89"
unit_of_measurement: "°C"
scan_interval: 300

相关链接:https://home-assistant.io/components/sensor.command_line/

米家扫地机器人接入 Home Assistant

自从用上了 Home Assistant,就想着把各种设备接入,刚好米家扫地机器人是原生支持的。

先安装依赖的 python-miio

pip3 install python-miio

Home Assistant配置

vacuum:
- platform: xiaomi_miio
host: 192.168.0.101
token: 1234567890

IP 为扫地机器人的的局域网 IP,为了防止 IP 变动,建议在路由器中设置 DHCP 分配固定 IP。

获取 token,比较简单的方法是通过拥有root权限的安卓设备从米家app的数据库里获取,没有条件的可以用安卓虚拟机,文件路径是 /data/data/com.xiaomi.smarthome/databases/miio2.db,用 sqliteman 等软件打开查看 token。点击这里查看官网上的教程。 继续阅读