0 设备信息

本次采用设备为小米智能插座基础版,购买链接为:天猫购买链接

产品型号:ZNCZ04CM

1 python-miio模块

米家的智能设备都遵循了 miio 的协议,协议内容参见:mihome-binary-protocol

python-miio为封装后的miio-API

可以采用python代码控制miio设备

python-miio安装方式(1):

pip install python-miio

python-miio安装方式(2):

将压缩包中的miio目录放到项目文件夹,或者放入python程序的LIb/site-packages目录中

2 获得miio设备的Token

python-miio控制小米设备需要获得相关设备的Token及IP地址。

IP地址可以在米家APP的设备控制界面查询:右上角...按钮,选择网络信息,可看到IP。

小米设备的Token获取比较复杂。一般有以下几种方式

(1)已ROOT的安卓手机 或 电脑安卓模拟器(推荐、已验证)

打开手机 ROOT 权限,赋予文件管理器权限;

下载安装并使用『米家』App(请使用 5.0.19-及之前版本 App,参见附件,新版 App 已屏蔽 token 提取)连接所有需要的设备;

使用文件管理器(例如 ES 文件管理器),进入 /data/data/com.xiaomi.smarthome/databases/,复制粘贴 miio2.db 至有权限的文件夹 (例如 下载)。注意由根目录进入而不是主目录;

方法一:使用 SQL 读取 App (推荐 aSQLiteManager),打开 miio2.db 文件直接打开 devicerecord 项,手动寻找设备 token; 方法二:使用 SQL 读取 App (推荐 aSQLiteManager),点选 Query,输入 select token from devicerecord where localIP is '192.168.0.1',将其中的 IP 地址替换为你想要查询的米家设备的 IP。 方法三(推荐):下载 miio2.db 文件至电脑,将文件上传至网页:http://miio2.yinhh.com/ 直接获取。

记录下 token,建议保存在备忘录内。

(2)利用miio discover(未验证)

就是小米设备连上电源后,在配置前,会首先释放出一个 WIFI, 我们用一台电脑去连接这个 WIFI(没有密码),连接成功后,我们安装 miio, 通过 miio discover 命令,就可以得到 token了。

采用node.js的方式:

npm install miio

% 安装完成后

miio discover

采用python的方式:

from miio.discovery import Discovery

d = Discovery()

d.discover_mdns()

(3)使用无需 root 的安卓手机获取(未验证)

原因在于米家 v5.4.54 版本的 App(百度网盘有) 有一个小 bug,其中写入内部存储器的日志文件暴露了小米 miio 设备的设备 token。

卸载最新版米家,安装米家 v5.4.54 版本

登录小米账户等待设备连接,正常操作一遍设备

使用文件资源管理器导航到/sdcard/SmartHome/logs/Plug_Devicemanager/

打开名称为 yyyy-mm-dd.txt 的日志文件

在文档中搜索 token 或你需要的设备名称

image.png

(4)注意

注意:获取到的设备 token 请及时配置,如重置家中的网络,设备 token 会发生变更。

3 插座控制示例

如果不清楚需要使用python-miio的那个设备模块,可以通过以下方式获得设备对应的模块名。

import miio

ip='192.168.1.20'

token='*****' # 输入之前获得token

s = miio.device.Device(ip=ip, token=token)

s.info()

# Out: chuangmi.plug.m3 v1.3.8_0002 (04:CF:8C:5F:**:**) @ 192.168.1.20 - token: *****

我们可以得到设备的模块名称为:chuangmi.plug.m3

查看miio目录中的chuangmi_plug.py文件,可以看到对应的Class ChuangmiPlug。

插座可以通过以下类似的方式进行:

from miio.chuangmi_plug import ChuangmiPlug

ip='192.168.1.20'

token='****' # 输入之前获得token

d = ChuangmiPlug(ip=ip, token=token)

x=d.status() # 给出设备的状态

# x:

# x.power = True

x=d.info()

# type(z)

# miio.device.DeviceInfo

# print(z)

# chuangmi.plug.m3 v1.3.8_0002 (04:CF:8C:5F:**:**) @ 192.168.1.20 - token: *****

x=d.off()

# x = ['ok'] 则 控制成功

x=d.on()

# x = ['ok'] 则 控制成功

通过以上接口函数,可以控制插座实现更复杂的逻辑

小米node2红外_使用python-miio控制小米智能插座相关推荐

  1. 小米node2红外_智能家居之一:小米人体传感器2使用体验

    智能家居之一:小米人体传感器2使用体验 2020-12-29 19:32:32 7点赞 11收藏 0评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情 ...

  2. 小米node2红外_感应光、感应你,小米人体传感器2体验分享

    感应光.感应你,小米人体传感器2体验分享 2020-12-23 11:44:37 3点赞 0收藏 3评论 家里正需要一个人体传感器来搭配智能设备使用,没想到这么巧中了轻众测,感谢什么值得买平台. 感应 ...

  3. 小米node2红外_简单易懂,联动好用:小米 米家蓝牙温湿度计2 晒单

    简单易懂,联动好用:小米 米家蓝牙温湿度计2 晒单 2020-10-06 09:33:10 4点赞 6收藏 5评论 去年买过米家的温湿度计Pro,在家摆着和电暖风联动挺不错的,比如室温低于20℃自动开 ...

  4. 小米node2红外_关于小米人体传感器2的抢先体验报告

    关于小米人体传感器2的抢先体验报告 2020-12-22 11:40:27 0点赞 0收藏 0评论 首先,感谢值得买众测提供机会,本来是参与了小米的官方众筹,结果没想到众测直接中了一个,果断把众筹的退 ...

  5. 小米node2红外_小米监控open-falcon-0.2安装部署详细配置

    一.环境准备 1.配置阿里云yum源 #wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7 ...

  6. 小米node2红外_小米门窗传感器2的糟心问题

    小米门窗传感器2的糟心问题 2020-09-16 10:11:32 2点赞 0收藏 3评论 小米众筹了新的小米门窗传感器2,因为集成了光照传感器,所以刚众筹就买了2个使用.虽然陆陆续续一共有了30来个 ...

  7. 小米node2红外_国外媒体测评小米MIX2:存在三大致命缺陷,想不到你是这样的小米...

    小米也是最早进军全面屏的厂商,去年一款概念性的小米MIX令外界对小米有了不一样的认识,也正是凭借这款手机小米的品牌有了巨大的提升,进入2017年小米接二连三发布重磅产品,销量也开始回暖. 而在这几款重 ...

  8. python条件控制语句要注意什么_关于Python条件控制怎么用?要注意什么?

    今天小编给大家整理了学习python里比较困难的内容,就是关于条件的选择,相信大家也一样踩过坑吧,于是总结了下面内容,一起来看下吧~ 1.条件判断语句(if语句) 执⾏的流程:if语句在执⾏时,会先对 ...

  9. python第五周项目答案_工作页python流程控制(第五周 ).doc_学小易找答案

    [单选题]Mary is ()hardworking than her sister, but she failed in the exam. (5.0分) [单选题]设a.b为float型变量,则以 ...

最新文章

  1. 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析
  2. java重载和重载的区别
  3. 32.210内存的知识
  4. 自底向上构建知识图谱全过程
  5. python中的捕获异常、异常跟踪
  6. 百度AI达人创造营之创意的起源
  7. Altium designer快捷键汇总
  8. 数据库设计Step by Step (10)——范式化
  9. 有法院被执行人记录还能贷款吗?
  10. 不是每个人都适合linux
  11. linux之ps命令详解
  12. 前端布局神器display:flex
  13. PACKING【二维01背包】
  14. berkeley db java edition 源码,Berkeley DB Java Edition
  15. 查看linux环境下cudnn是否安装,Linux下安装cuda和对应版本的cudnn
  16. linux编译C++代码
  17. 世界上第一块商用微型处理器4004
  18. 维盟路由器pppoe服务配置(价值80元的帖子)
  19. foo,bar,baz
  20. 企业数据战略中,什么样的数据才能算是真正的数据资产

热门文章

  1. Exchange2003-2010迁移系列之十三
  2. Linux下简单的邮件服务器搭建
  3. BlogEngine.Net架构与源代码分析系列(转载)
  4. NetBeans 时事通讯(刊号 # 57 - May 27, 2009)
  5. intel的linux证书过期,rhce证书过期了可以怎么办
  6. python 高级使用实例_Python中的高级函数map/reduce使用实例
  7. mysql sqlstate 28000_mysql ERROR 1045 (28000): 错误解决办法
  8. wpsppt怎样让图片模糊_图片优化的14个技巧!
  9. linux 火狐安装java插件_Linux下Firefox安装配置JDK插件
  10. jdbc mysql 实例名_JDBC连接自定义sqlserver数据库实例名(多个实例)