本帖最后由 neroxps 于 2018-6-9 17:21 编辑
插件 Repositories 地址:https://github.com/neroxps/hassio-addons########################2018年6月9日更新内容########################
c1pher之前的 github 项目合并了 qebabe 的代码,并与论坛的天猫精灵网关功能合并了,但由于论坛是多用户管理,需要一个登陆页面,我将页面删除,回归以前 qebabe 的目录管理模式,使用nginx web密码认证管理。省去用户登录过程。
git clone https://github.com/neroxps/tmall-bot-x1.git -b php5.3_Single && cd tmall-bot-x1 && git submodule init && git submodule update
过程中也感谢 c1pher 大帮忙一起排了很多BUG,以后也会跟随C1pher 的版本继续合并更新代码。
########################2018-6-9更新内容结束########################
########################2018年3月10日更新内容########################
感谢 qebabe大佬更新接入代码支持同一位置多传感器,就是天猫的定语太不人性化了,必须得这样说:“天猫精灵,查询卧室传感器的温度。”有毛病......
使用方法参考帖子《[新奇玩法] 天猫精灵同一位置(zone)多传感器查询【已上传代码】》
########################2018年3月10日更新内容结束########################
本插件优点:自带数据库,自动配置数据库,自动化配置 oauth2,无需修改 homeassistant_conf.php 文件。你只需要准备SSL证书即可。后续可能会加入SSL证书自动申请及续期功能。
缺点:由于是使用SAE搭建天猫精灵接入HA后台,新增设备管理系统的代码,当时这个代码还不能调整灯光的颜色,所以本插件也无法调整灯光颜色。
本文默认你已经看过 《天猫精灵接入HomeAssistant【智能家居技能接入,非webhook调用】》这个帖子,如果你还没看过,请仔细观看后使用本插件。
天猫设备配置地址为:https://你的域名/device
利用 tmall-bot-x1 项目及 https://bbs.hassbian.com/thread-2285-1-1.html 制作而成的天猫精灵接入网关。
框架: PHP7+Nginx+Mariadb
鸣谢
本插件完全基于以下各位大神的代码构建而成,我只是一名搬运工。(排名不分先后)
使用方法
本插件具有几种配置方案,满足各种需求。
默认方案(内部数据库-提供 SSL 访问)
默认方案,插件会建立一个数据库,数据库文件存放在插件的 data 目录,根据 hassio 设计,插件的 data 目录默认会存储在本机的 /usr/share/hassio/addons/data/插件容器名称/ 目录下,使其持久化。
{ "remote_database":{},
"ssl":{
"ssl_trusted_certificate":"/ssl/tmall/chain.pem",
"ssl_certificate":"/ssl/tmall/fullchain.pem",
"ssl_key":"/ssl/tmall/privkey.pem"
},
"client_id":"qwertyuiopasdfghjkl",
"client_secret":"zxcvbnmasdfghjkl",
"httpd_error_log":true
}
外部数据库及外部 SSL 代理
其实本 addons 一开始是使用这个方案,因为我已经在 hassio 部署了 Nginx Proxy,配合 certbot 插件可以为 homeassistant 提供 SSL 加密访问。
而我的 hassio 也部署了官方的 mariadb 数据库,所以没必要重复部署数据库,可以利用数据库引擎建立一个 tmall 的数据库即可。
Nginx Proxy 配置参考
{ "vhosts": [
{
"vhost": "hass.url.com",
"port": "8123",
"certname": "hass",
"default_server": true
},
{
"remote": "addon_8b4631d3_tmall-bot-x1",
"vhost": "tmall.url.com",
"certname": "tmall",
"port": "80"
}
]
}
certbot 配置参考
注意:如果设置 "ssl_only":true 的话,运行 certbot 之前请停止 Nginx Proxy,因为二者都必须使用 443 端口,如果有 frp 内网穿透可以穿透80端口的话,建议设置 "ssl_only":false 这样就不会冲突了。
{ "debug":false,
"email":"[email protected]",
"certificats":[
{
"name":"hass",
"domains":"hass.url.com"
},
{
"name":"tmall",
"domains":"tmall.url.com"
}
],
"ssl_only":true
}
mariadb 配置参考
{ "databases": [
"homeassistant",
"tmall"
],
"logins": [
{
"username": "hass",
"host": "homeassistant",
"password": "homeassistant_mysql_password"
},
{
"username": "tmall",
"host": "addon_8b4631d3_tmall-bot-x1",
"password": "tmall_mysql_password"
}
],
"rights": [
{
"username": "hass",
"host": "homeassistant",
"database": "homeassistant",
"grant": "ALL PRIVILEGES ON"
},
{
"username": "tmall",
"host": "addon_8b4631d3_tmall",
"database": "tmall",
"grant": "ALL PRIVILEGES ON"
}
]
}
tmall-bot-x1 外部数据库及外部SSL代理参考
{ "remote_database":{
"mysql_host":"addon_core_mariadb",
"mysql_db_name":"tmall",
"mysql_user":"tmall",
"mysql_passwd":"tmall_mysql_password",
"mysql_port":"3306"
},
"ssl":{},
"client_id":"qwertyuiopasdfghjkl",
"client_secret":"zxcvbnmasdfghjkl",
"device_user":"tmall",
"device_passwd":"device_account_passowrd",
"httpd_error_log":true
}
Options 说明
{ "config_dir_to_config":"bool?",
"remote_database":{
"mysql_host":"str?",
"mysql_db_name":"str?",
"mysql_user":"str?",
"mysql_passwd":"str?",
"mysql_port":"port?"
},
"ssl":{
"ssl_trusted_certificate":"str?",
"ssl_certificate":"str?",
"ssl_key":"str?"
},
"client_id":"str",
"client_secret":"str",
"device_user":"str?",
"device_passwd":"str?",
"httpd_log":"bool?",
"httpd_error_log":"bool?",
"container_timezone":"str?",
"debug":"bool?"
}
Option: config_dir_to_config
该参数为布尔值 "config_dir_to_config":"true" 天猫精灵网关的php程序会放到 /config/tmall-bot-x1,"config_dir_to_config":"false" 时天猫精灵网关的php程序会放到 /data/tmall-bot-x1。
Option: remote_database
此 remote_database 用于控制是否使用容器内部的数据库还是使用外部数据库。
如果这个对象是空的话例如:"remote_database":{},,那么容器会自动建立数据库,供天猫精灵网关使用。(此数据库因只允许容器内部访问,故账号密码固定无需填写)
如果这个对象内部内容符合要求,会连接参数内部填写的数据库,前提是该数据库已建立好数据库(可以是空的数据库,但是必须是建立好,脚本不会帮忙建立数据库)。
- mysql_host: 填写容器可访问的远程数据库,可以是ip,也可以是域名,如果是 hassio 建立的数据库,可以直接填写容器名称。
- mysql_db_name:数据库名字,该数据库必须已再数据库引擎中创建。
- mysql_user:连接数据库的用户名,该用户必须有mysql_db_name数据库的操作权限。
- mysql_passwd:连接数据库的密码。
- mysql_port:数据库的端口,当此项非必选,如不写则默认使用3306端口连接数据库。
Option: ssl
此 ssl 用于控制是否使用容器内部 nginx 的 https 配置,需要映射 443 端口出来,当这个对象内部填写了 ssl_trusted_certificate、ssl_certificate、ssl_key 后会启用 https。
如果 ssl 对象为空的话,会自动启动 http 配置,方便远端 web proxy 进行代理。
ssl_trusted_certificate、ssl_certificate、ssl_key 的路径可以是 /config 作为根目录,也可以用 /ssl 作为根目录,具体看你证书放到哪个路径。
- ssl_trusted_certificate:chain.pem证书在addons中的路径。
- ssl_certificate:fullchain.pem证书在addons中的路径。
- ssl_key:privkey.pem证书在addons的路径。
Option: client_id 和 client_secret
由用户自定义,必须与 AliGenie 开发者 填写的内容一致。
Option:device_user 和 device_passwd
由用户自定义,天猫精灵设备管理页面的账号和密码,如果此参数不存在的话,系统会默认为 admin,密码系统自动生成,介时请观察日志寻找密码。
日志内容如下:
Device Remote Access:
USERNAME:admin
PASSWORD:3PKZ7fcS9aVpkMjZ59oePt4N5owxGC
如果使用 SSL 模式,局域网访问是不需要密码的,但如果源ip不是局域网ip的话,就会要求输入密码。
而不是用 SSL 模式的话,默认是必须使用密码,无论是不是局域网。
Option:httpd_log
布尔值,true为显示访问日志,false为关闭访问日志。
Option: httpd_error_log
布尔值,true为显示错误日志,false为关闭错误日志。
Option: container_timezone
时区设置,此选项不写的话,默认为Asia/Shanghai。
Option:debug
开启 set -x,用于 start.sh 脚本调试。
|