小米设备token获取&HomeAssistant安装部署

  • 小米智能设备token获取
    • miIO-discovery获取token与控制
    • app直接token获取
    • DB获取token
  • 开源智能家居平台HomeAssistant安装部署
    • HomeAssistant简介
    • 安装部署HomeAssistant
    • 将小米设备配置到HomeAssistant
    • HomeAssistant可连接设备
  • 总结

近两年,物联网及其相关技术迅猛发展,各样的智能设备渐渐的走进了我们的生活,随之使用者们也变的越来越向往智能化的生活。但目前的智能家居市场产品分散,单一厂商很难完全满足用户需求,并且多个厂商产品不能原生联动,这可能也是家居智能化面临的问题。本文主要介绍小米设备拿token以及局域网控制,以及一款开源的智能家居平台HomeAssistant部署与使用,让家庭中的多种智能设备联动变成一种可能。

小米智能设备token获取

为了消除对专有软件(米家app)的依赖,米家设备提供一种在局域网控制的方式。在使用这个局域网控制协议之前需要获取到设备token,接下来介绍小米设备获取token的一些方法。

miIO-discovery获取token与控制

设备和米家app在同一局域网下使用的加密专有网络协议,这个被称之为miIO协议。该协议基于UDP,使用54321端口进行通信。具体功能见github地址https://github.com/rytilahti/python-miio,这个库的目的是支持所有miIO兼容的设备,将设备类型和控制方法进行了分类,以简化与它们的交互。该库需要安装在Python3.5以上版本,首先搭建Python环境:

  • 安装Python3.5依赖(本机存在的会忽略)
sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev libssl-dev openssl libgdbm-dev liblzma-dev libreadline-dev libncursesw5-dev
  • 编译安装Python3.5
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
tar zxvf Python-3.5.2.tgz
cd ./Python-3.5.2
./configure --prefix=/usr/bin/python3.5
make
make
sudo make install

编译后运行一下python3.5,结果如下证明安装成功

  • 安装miIO库,下载库代码到本地
git clone https://github.com/rytilahti/python-miio

下面就以小米智能插座为例,获取该设备token。进入python-miio/miio目录discovery.py文件主要是来获取设备token的方法。为了直观将插座的主要实现代码提取出来,在python-miio/miio目录编写如下脚本miio_test.py(向设备ip的54321端口发送固定字符串,返回值即为token)

#-*-coding:utf8-*-
import codecs
import socket
from protocol import Messagehelobytes = bytes.fromhex('21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff')
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(helobytes, ('192.168.42.17', 54321))#插座ip,端口54321
data, addr = s.recvfrom(1024)
m = Message.parse(data)
tok = codecs.encode(m.checksum, 'hex')
print(‘token:’,tok)
  • 运行python3.5 miio_test.py,获取小米Wi-Fi插座token
  • 执行控制脚本,输入插座的ip和token两个参数就可以看到现在插座的状态,在这两个参数的基础上添加on/off就可以对该设备进行控制

    支持这种方式拿token的还有小米的空气净化器、净水器、扫地机器人、智能插座插线板等。具体列表见https://github.com/rytilahti/python-miio

app直接token获取

能用上述的miIO探测方法获取还是比较便捷的,但目前只有部分小米设备支持。接下来还有一种方法可以直接从app获取token。以小米绿米网关为例,首先下载米家app,将绿米网关配置入网后,点击网关设备。接下来步骤如下组图,最后的密码即为网关的token。


目前绿米的这种设计模式是最方便用户的,而且设备的所有者还可以选择是否开放局域网控制以及刷新控制token的有效性,个人还是很希望小米的其他设备同样开放app侧获取设备token,因为毕竟获取需要搭建复杂的环境以及调试代码,大部分使用者应该不能接受的。

DB获取token

 第1步,获取一部安卓手机的root权限
 第2步,安装米家app并登录账号
 第3步,进入/data/data/com.xiaomi.smarthome/databases/
 第4步,拷贝miio2.db,下载到电脑
 第5步,前往网站(http://miio2.yinhh.com/),上传miio2.db,点击提交,即可获得token。
没有具体测试这种方式获取token,可以参考这个链接(https://homekit.loli.ren/docs/show/12)

开源智能家居平台HomeAssistant安装部署

上文给大家介绍了获取小米设备获取token方法和插座的简单控制,如果想自动化或者实现多设备联动的话还需要写代码,不会被所有的用户所接受,接下来给大家介绍下一款开源智能家居平台——HomeAssistan,只要几步部署,就可以轻松实现多厂商设备的联动。

HomeAssistant简介

HomeAssistant为开源的智能家居平台,可以识别和直接连接的外部设备有将近千项。其中有各种商业化的智能产品(如小米系列产品、Philips智能灯系列、亚马逊的音响、苹果的Siri、Google Assistant、BroadLink的产品、特斯拉汽车等)、有互联网上的各种实时信息(股票、汇率、交通、天气等)、有开源或开放的各种智能软件(人脸识别、车牌识别文字识别、文字转语音、语音转文字等)、有各种联动机制(短信、Email等)

安装部署HomeAssistant

  • 安装HomeAssistant
pip3 install HomeAssistant
  • 启动HomeAssistant
hass

第一次启动HomeAssistant,因为要安装相关依赖,大概要等上10几分钟,通过浏览器访问树莓派的8123端口,如果看到如下页面,证明安装启动成功。

将小米设备配置到HomeAssistant

进入.HomeAssistant目录,编辑configuration.yaml,添加小米网关和Wi-Fi插座的配置参数,token为按照上文你获取到的字符串:

switch:                                     #小米插座配置参数- platform: xiaomi_miioname: Xiaomi Mi Smart Power Strip #设备名称host: 192.168.42.17                  #设备IP
token: YOUR_TOKEN                    #设备密钥
xiaomi_aqara:                             #小米网关配置参数gateways:- mac: DEVICE_MAC                     #设备mackey: YOUR_TOKEN                     #设备密钥

配置文件修改完成后重启hass,再次访问HomeAssistant主页看到新增Xiaomi Mi Smart Power Strip(配置文件里面的name字段)和GatewayLight设备,这就证明配置完成,点击对应的控制按钮就可以控制该设备了。

HomeAssistant可连接设备

HomeAssistant支持数以千计的设备,这里只举一些列子,比如支持控制小米的设备,BroadLink设备,自己开发的MQTT设备。还可以通过插件支持一些智能语音输入控制,比如安装HAbridge可以使用亚马逊echo音箱、京东音箱和天猫精灵控制HomeAssistant支持的设备,安装HomeBridge和homekit就可以让IOS的Siri控制设备。这里就不一一罗列,具体的详细支持见官网列表

总结

从小米、京东微联、博联等智能家居设备体验来看,智能的并不尽人意。首先,虽然都可以生成若干场景,但大多是自己玩自己的,不同厂商之间无法实现联动;其次场景略显单一,假如用户想实现每次出门之前提醒天气,如果今天是雾霾/雨天提醒用户带口罩/雨具,类似这样的场景是实现不了的。因为缺乏与互联网信息联动的接口,并且大多数厂商的智能音箱与其他设备交互仅仅是语音控制。可能就是考虑到用户的个性化需求,就有了类似HomeAssistant这样的智能家居平台,将各式的资源整合到一起,使得家居距离智能更近了一步。当然,从目前的智能家居市场来看,单独一个智能设备厂商不太可能让所有用户仅使用自己的设备,所以给用户一些控制的“自由”,对厂商来说应该是个不坏的选择。

小米设备token获取HomeAssistant安装部署相关推荐

  1. 小米设备token获取HomeAssistant

    Use HomeAssistant Service Goto HomeAssistant service developer tool Select xiaomi_miot.get_token, En ...

  2. 记录小米设备事件获取

    Android 系统里面有很多小工具,运行这些工具,我们可以掌握很多数据,再顺藤摸瓜,就可以针对设备做特殊的操作. 记录获取我手机的event信息,我的手机是小米版: F:\eclipse\andro ...

  3. 对比homeassistant和智汀家庭云之docker安装部署篇

    本篇教程,带你了解Home Assistan和智汀家庭云的初步安装部署,如同很多开源项目,Home Assistant 就是常见的一款,作为国外开源软件,需要去阅读大量的英文文档,在编辑器里编辑自己的 ...

  4. 获取米家设备token

    token获取 1.下载网易mumu模拟器 http://mumu.163.com/ 2.下载相关apk 链接:https://pan.baidu.com/s/1xHKw-qm2IMhHyn8tAOn ...

  5. php对接百度网盘开发平台API开发高级实战案例解析:(环境部署、php封装类、Access Token获取、预上传、分片上传)

    文章目录 前言 一.环境部署 1.封装BdPan类库 2.回调地址配置 二.获取授权码Code 1.手动获取Code 2.生成本地token 3.读取AccessToken凭证 4.爬虫函数 二.简化 ...

  6. 【CentOS】安装部署jenkins从git获取代码[转]

    持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...

  7. 小米设备打开了开发者选项和USB调试仍然无法安装成功的问题

    小米设备无法安装的问题及解决: DeviceException: com.android.ddmlib.InstallException: Failed to establish session Fo ...

  8. 小米 9 SE 获取Root 和 安装Magisk

    1.刷入第三方REC 和 Magisk 参考教程:[LR.Team]小米9SE专版TWRP中英文修改优化版_小米9 SE_MIUI论坛 使用上面的工具,傻瓜式操作即可. 关于刷入成功之后的说明:刷入成 ...

  9. FFmpeg入门详解之127:GB28181平台安装部署过程 - 可接入海康、大华、华为、科达、宇视等等设备和平台

    本文章向大家介绍GB28181平台安装部署过程 - 可接入海康.大华.华为.科达.宇视等等设备和平台,主要包括GB28181平台安装部署过程 - 可接入海康.大华.华为.科达.宇视等等设备和平台使用实 ...

最新文章

  1. 浅析手机端网站建设的基本流程
  2. 搭建Nginx+Tomcat 负载均衡集群
  3. ITK:图像区域相交
  4. php callable 参数,php 利用反射执行callable
  5. 【Project3】【web.xml分析】
  6. 一张图诠释Git所有命令
  7. 设计模式之行为模式(1)-状态、策略、责任链、访问者
  8. python逐行输出_python逐行输出
  9. 赢在电子商务网站制作与营销:B2C版
  10. [LeetCode] Balanced Binary Tree 平衡二叉树
  11. 数学建模入门篇(新手必看)
  12. AI(人工智能)园区顶层设计方案(ppt)
  13. Python在word的指定位置插入图片
  14. 数据分析/挖掘的六个步骤
  15. octet-stream文件怎么看
  16. ctfshow 做题 萌新 模块(1)
  17. 非共识大会 | 伍鸣博士:DApp发展需要一条高性能且安全的公链
  18. Java线程的死锁和活锁
  19. 海南大学信号与系统838报考高频问题整理
  20. RuntimeError: could not create a descriptor for a dilated convolution forward propagation primitive

热门文章

  1. 计算机视觉最新进展概览(2021年8月1日到2021年8月7日)
  2. scons与Madagascar!
  3. NCE4 L46 Hobbies
  4. 给Ubuntu系统清理垃圾
  5. APMServ更新PHP,APMServ升级PHP至5.3
  6. 基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298M芯片控制直流电机正反运转的项目
  7. 用命令提示符打开资源管理器目录
  8. OSPF DR选举详解
  9. Windows10访问共享总是提示输入网络凭证不正确
  10. LOOK LOOK 微端服务器