Domoticz 连接 树莓派 和 天猫精灵
0x00 起因
目前使用的 ESP8266 + blinker + 天猫精灵 + 433M 模块控制客厅的灯, 总是出现连接不上的情况. 应该是 blinker 的服务器问题, 没法解决, 所以改造下, 尽量把其中的大部分环节做到自己控制.
0x01 用到的软件/硬件
- 树莓派 4B 2GB (安装的ubuntu aarch64)
➜ ~ uname -a
Linux ubuntu 5.4.0-1008-raspi #8-Ubuntu SMP Wed Apr 8 11:13:06 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux
- Domoticz
- 花生壳/花生棒
- 433M 高频接发模块
- 杜邦线
流程图
image.png0x02 树莓派安装 Domoticz
2.1 Docker 方式
我个人倾向于 Docker 安装, 安装卸载都简单, 尝试之后, 由于需要通过 Domoticz 运行树莓派上的调用 GPIO 的程序, 比较麻烦, 所以暂时放弃.
2.2 直接树莓派上安装
网络原因, 把官方的安装脚本 修改了一下
可以通过以下命令直接安装
curl -L https://raw.githubusercontent.com/Daoctor/Domoticz_RPI_Install/master/install.sh | sudo bash
这一步完成后应该可以通过 <树莓派 IP>:<端口>
访问到 Domoticz 的面板
0x03 433M 高频接发模块 和 树莓派的连接
3.1 环境配置
这篇文章很好, 早点看到能省 2 个小时
这里面用的 433Utils
库 是 fork 修改过的.
https://www.ibm.com/developerworks/cn/iot/library/iot-smart-home-02/index.html
其中 WiringPI 会遇到下载地址失效问题
用 https://github.com/WiringPi/WiringPi.git
这个地址替代
3.2 修改脚本
修改 上一步中 codesend.cpp
, 把其中的 code
, protocol
, pulseLength
变量 用常量代替, 方便运行.
编译后运行 ./codesend
如果提示
Unable to open /dev/mem or /dev/gpiomem: Permission denied
就需要修改一下权限, 比较好的方式是添加一个组
以我自己的用户 ubuntu
为例
sudo group add gpio
sudo usermod -aG gpio ubuntu
sudo chown root.gpio /dev/mem
sudo chmod g+rw /dev/mem
sudo chown root.gpio /dev/gpiomem
sudo chmod g+rw /dev/gpiomem
再运行, 应该就不需要 sudo 权限了.
这一步完成后应该 可以通过不需要要 sudo 的命令控制灯光
0x04 Domoticz 连接 433M 模块
在 Domoticz 中添加树莓派作为 设备
Setup
-> Hardware
添加设备
注意 Type
选择面板顶部的 Switches
选项, 然后选择 Manual Light/Switch
手动添加一个开关.
编辑开关的动作
填写上一部的脚本路径
测试
image.png
这一步完成后应该可以通过点击面板上的灯控制家里灯的开关
0x5 外网访问 Domoticz
花生壳软件安装
aarch64 没有对应的 花生壳 软件, 通过 dpkg --add-architecture armhf
添加架构兼容的方式来安装 花生壳 也遇到了卡死的情况, 暂时不用
花生棒
配置 花生壳 访问 Domoticz, 注意这种方式访问相当于通过内网访问, 需要配置 Domoticz对所有登录都要求密码
这一步完成, 应该做到通过外网可以访问到Domoticz页面
0x6 Domoticz对接天猫精灵
配置服务
进入 https://ali.domoticz.cn/
按照要求配置
上面测试连接, 一定要通过才可以
我用 Sakura frp 测试是不行的 所以上一步用了花生壳的服务.
天猫精灵 APP 端绑定
天猫精灵 技能搜索 Domoticz
, 绑定账号
这一步完成, 应该做到 在 天猫精灵 app 中发现了自己在 https://ali.domoticz.cn/
添加的开关, 并且可以通过天猫精灵开关灯