K3上安装Home Assistant
自从了解了智能家电, 整了几个433的射频模块,就一直想在路由安装服务端的程序, 不管是domoticz还是homeassistant, 总觉得这类服务就应该跑在路由器上面是最合适的.
[TOC]
在WNDR3800上面尝试
网件的WNDR3800是一个神级路由器, 特别是它对OpenWrt的完美支持, 使得它拥有大量的玩家. 去年第一次打算整智能家电的时候, 看到很多人的方案都是使用树莓派, 但我一直比较反感, 如果使用树莓派家里则多了一个长期工作的电子设备, 得给它找地方住, 而且它又外观不好看,还不能放在比较显眼的地方, 所以就打起了家里路由器的主意. 自己编译OpenWrt, 尝试Domoticz, Home Assistant, 但一直没有完美运行起来, 毕竟它16MROM 和128M的RAM限制太多, 到最后还是放弃了. 巧合的是发现Lua在OpenWrt上面跑的挺好的, 就用Lua弄了一个简单的WEB服务, 写了一个简单的HTML页面, 将USB接口的433射频发射器接在了路由器上面, 完成了第一个最简单的智能家电系统.
433射频调用代码
#!/usr/bin/lua
print("Content-type: text/html")
print("")
print("hello,lua")
str = os.getenv("QUERY_STRING")
print(str)
io.output("/dev/ttyUSB0")
local hex_to_char = {}
for idx = 0, 255 do
hex_to_char[("%02X"):format(idx)] = string.char(idx)
hex_to_char[("%02x"):format(idx)] = string.char(idx)
end
-- print(str:gsub("(..)", hex_to_char))
io.write(str:gsub("(..)", hex_to_char))
这次在K3上面尝试
整了斐讯的K3后觉得可以继续上次未完成的尝试, 这一次只选择了Home Assistant,因为过去了这段时间后明显hass占了上风,已经没有多少人玩Domoticz了,毕竟选择一个大家都玩的平台才会得到更多的帮助. 先是看了瀚思彼岸里lse的贴子, 在官改的K3上面试着装了一次(中间遇到了netifaces问题, 按照贴子里面的方法我没有成功, 最后看了下错误的原因是无法编译安装,所以手动安装了gcc, 解决了这个问题), hass可以跑起来, 但是由于官改的固件里面缺少对U转串设备以及USB HUB的支持, 所以没办法把我的U转串的射频发射器接在K3上面. 所以又刷了OpenWrt, 再安装hass, 但通过官方的源安装好Python3.6, 安装hass时同样遇到了netifaces编译的问题, 通过官方源安装gcc没有安装成功, 自己下载了gcc的IPK包,手动安装后还有别的问题(缺少cc_cache), 折腾了好久, 开了个虚拟机自己编译K3固件, 结果编译中间又出错了, 机器太慢编译一次好折磨人, 所以又想起来官改的gcc可以通过opkg install 安装, 是不是OpenWrt也可以利用entware的源来安装gcc, 后来找到了恩山论坛里的一个贴子, 安装了entware源, 重新恢复了出厂设置,通过entware安装了Python3.6 gcc, 最后安装hass, 终于成功了.
控制射频开关
我的控制发射器是USB接口的, 在OpenWRT下控制比较简单, 一行命令就可以实现:
#usr/bin/env bash
echo -e "\xFD\x03\x55\x55\x$1\x60\xDF" > /dev/ttyUSB0
在hass里面控制开关可以使用command_line模式:
switch:
- platform: command_line
switches:
study_light:
command_on: "/root/.homeassistant/light.sh 11"
command_off: "/root/.homeassistant/light.sh 12"
friendly_name: "书房灯"
附上github的链接, 有类似需求的人可以参考一下.
后续
其实这只是完成了最基本的平台搭建, 后面还要折腾的东西还很多,记录一下后面慢慢折腾吧.
论坛里面很多人有分享好玩的东西, 我得慢慢学了.