『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 24365|回复: 45

【天猫精灵接入网关】新增电视调频-与论坛代码同步

[复制链接]

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-2-8 14:28:30 | 显示全部楼层 |阅读模式
本帖最后由 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)多传感器查询【已上传代码】

TIM截图20180310091230.jpg

########################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_certificatessl_certificatessl_key 后会启用 https。

如果 ssl 对象为空的话,会自动启动 http 配置,方便远端 web proxy 进行代理。


ssl_trusted_certificatessl_certificatessl_key 的路径可以是 /config 作为根目录,也可以用 /ssl 作为根目录,具体看你证书放到哪个路径。
  • ssl_trusted_certificate:chain.pem证书在addons中的路径。
  • ssl_certificate:fullchain.pem证书在addons中的路径。
  • ssl_key:privkey.pem证书在addons的路径。


Option: client_idclient_secret

由用户自定义,必须与 AliGenie 开发者 填写的内容一致。

Option:device_userdevice_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 脚本调试。











评分

参与人数 4金钱 +26 收起 理由
潇洒哥er + 7 膜拜大神!
jyz_0501 + 7 呼唤傻瓜式图形化,付费也行~~.
咸味土豆 + 7 我来瀚思就为看你!
qq200800704 + 5 膜拜大神!给大神端茶送水捶腿.

查看全部评分

Nero
回复

使用道具 举报

3

主题

215

帖子

669

积分

高级会员

Rank: 4

积分
669
金钱
454
HASS币
0
发表于 2018-2-8 14:30:48 | 显示全部楼层
为什么这么6
回复

使用道具 举报

9

主题

787

帖子

3862

积分

论坛元老

Rank: 8Rank: 8

积分
3862
金钱
3075
HASS币
87
发表于 2018-2-8 14:32:06 | 显示全部楼层
先支持一下再说
回复

使用道具 举报

20

主题

700

帖子

3106

积分

论坛元老

Rank: 8Rank: 8

积分
3106
金钱
2406
HASS币
0
发表于 2018-2-8 14:32:42 | 显示全部楼层
坐等小白鼠。我更喜欢HAbridge的接入方式。可以自定义的东西多,而且方便。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
 楼主| 发表于 2018-2-8 14:34:12 | 显示全部楼层
gzroc 发表于 2018-2-8 14:32
坐等小白鼠。我更喜欢HAbridge的接入方式。可以自定义的东西多,而且方便。 ...

HAbridge 能自定义什么???

HAbridge貌似只能灯来灯去吧?
天猫精灵:“查询卧室温度灯?”
Nero
回复

使用道具 举报

75

主题

1976

帖子

8199

积分

元老级技术达人

积分
8199
金钱
6173
HASS币
430

活跃会员教程狂人

发表于 2018-2-8 16:09:51 | 显示全部楼层
厉害,说到做到,多谢分享。
所有过往,皆为序章。
回复

使用道具 举报

42

主题

523

帖子

2517

积分

金牌会员

Rank: 6Rank: 6

积分
2517
金钱
1989
HASS币
30
发表于 2018-2-8 23:05:07 | 显示全部楼层
楼主是个很不错,乐于分享的人,帖子忘了加隐藏了哦
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
 楼主| 发表于 2018-2-9 07:55:50 | 显示全部楼层
czweb 发表于 2018-2-8 23:05
楼主是个很不错,乐于分享的人,帖子忘了加隐藏了哦

加隐藏没意思,我比较喜欢看有意义的留言。
Nero
回复

使用道具 举报

75

主题

1976

帖子

8199

积分

元老级技术达人

积分
8199
金钱
6173
HASS币
430

活跃会员教程狂人

发表于 2018-2-9 09:07:45 | 显示全部楼层
楼主您好,我用阿里云的ssl,nginx只有两个文件,后缀名也不同,这么写可以不?

  "ssl": {
    "ssl_certificate": "/config/ssl/214421471680972.pem",
    "ssl_key": "/config/ssl/214421471680972.key"
  },
所有过往,皆为序章。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
 楼主| 发表于 2018-2-9 09:13:30 | 显示全部楼层
咸味土豆 发表于 2018-2-9 09:07
楼主您好,我用阿里云的ssl,nginx只有两个文件,后缀名也不同,这么写可以不?

...


阿里云应该有提供的ca这个根证书的。你找找
Nero
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-22 18:08 , Processed in 0.063462 second(s), 42 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表