首页 > 编程语言 >python-miio 入门

python-miio 入门

时间:2022-12-12 21:23:07浏览次数:71  
标签:miio 入门 piid python siid cubee miot spec 设备

一、获取ip和tooken

转载链接:

https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor

二、基础通信

转载链接:

https://github.com/rytilahti/python-miio/issues/901

以下是翻译:

我能够从不受支持的设备(HeatCold 加热地板控制器 - cubee.airrtc.th123e)获取数据,并从 Mac 上的终端设置所需的参数。有人可以帮助将其转换为 Home Assistant 和 HomeKit 的工作插件吗?

这是我为所有想玩自己设备的新手提供的分步指南:

  1. 在 Mac 上安装 python-miio。在 Mac 的终端应用程序中输入:
    sudo pip3 install python-miio

  2. 获取您设备的型号名称(在我的例子中为“cubee.airrtc.th123e”)、IP 地址(如“192.168.1.152”)和令牌(如“b110204d86732b019d3d6axxxxb9ad3a”)。对我来说最简单的方法是将此集成用于 Home Assistant - https://github.com/AlexxIT/XiaomiGateway3

  3. 通过在 Mac 上的终端应用程序中输入以下内容来检查您的设备是否可以访问:
    miiocli -d device --ip 192.168.1.152 --token b110204d86732b019d3d6axxxxb9ad3a info
    注意 1:您需要将设备的 IP 和令牌放在这里。
    注意 2:“-d”用于调试,可以排除以获得更短的输出。
    在我的例子中,我得到了这样的信息:
    “型号:cubee.airrtc.th123e
    硬件版本:esp32
    固件版本:2.1.7”
    设备正在响应!好的!进入下一步。

  4. 在 MIOT 设备列表中找到您的设备:
    http://miot-spec.org/miot-spec-v2/instances
    ?status=all 我搜索“cubee.airrtc.th123e”并找到以下行:
    {"status":"released","model":"cubee.airrtc.th123e","version":1,"type":**"urn:miot-spec-v2:device:thermostat:0000A031:cubee-th123e:1"**},

  5. 在这个 url 之后复制“urn”部分: https:
    //miot-spec.org/miot-spec-v2/instance
    ?type= 在我的例子中:https://miot-spec.org/miot-spec-v2/ instance?type=urn:miot-spec-v2:device:thermostat:0000A031:cubee-th123e:1
    您将看到设备规格的未格式化 JSON 文本

  6. 将此 JSON 文本放入任何 JSON 格式化程序以使其更易于阅读。例如这里: http: //json.parser.online.fr/

  7. 您将看到一个包含服务列表的层次结构(后来用作“siid”),每个服务都有一个属性列表(“piid”):

miot_json

  1. 您需要在列表中找到您想要从设备获取并且可读的一些属性
    (在我的例子中 siid 1 没有返回值,所以您可能想要检查其他服务,如“siid 2”和其他属性)
    我想接收当前的“目标温度”。这是“siid”:2 和“piid”:5:

miot_json_temp

  1. 尝试通过在终端中输入以下内容来从您的设备获得响应:
    miiocli -d device --ip 192.168.1.152 --token b110204d86732b019d3d6axxxxb9ad3a raw_command get_properties "[{'did': 'MYDID', 'siid': 2, 'piid': 5 }]"
    注意:用您的值替换 IP、令牌、siid 和 piid
    我收到的响应最后一行是:
    “[{'did': 'MYDID', ' siid': 2, 'piid': 5, 'code': 0, 'value': 29 }]"
    这是我设备上设置的实际目标温度:29 摄氏度!有用!

  2. 现在让我们尝试更改一些属性。确保它具有“写入”访问权限(查看上述 JSON 文件中特定 piid 的“访问”字段)。
    我想设置 28 度,这里是相关命令:
    miiocli -d device --ip 192.168.1.152 --token b110204d86732b019d3d6axxxxb9ad3a raw_command set_properties "[{'did': 'MYDID', 'siid': 2, 'piid': 5, 'value' : 28 }]"
    新温度已在我的设备上设置,并已在米家应用程序中更新!

  3. 检查值/设置是否在实际设备上设置,然后重做第 9 步以确认设备成功返回新值。

就这样!现在您可以从终端检索和设置值。
这是我的职责。如果有人描述如何根据这些知识进一步制作 Home Assistant 插件,我会很高兴 :)

 

感谢作者的分享。

三、实际操作

控制 chuangmi.plug.212a01 这个插座(小米智能插座2蓝牙网关版)

from miio.device import Device

plug = Device("你的设备ip地址", "你的设备tooken")
#打开
plug.send("set_properties", [{'did': 'MYDID', 'siid': 2, 'piid': 1, 'value': True}])
#关闭
plug.send("set_properties", [{'did': 'MYDID', 'siid': 2, 'piid': 1, 'value': False}])

 

 

标签:miio,入门,piid,python,siid,cubee,miot,spec,设备
From: https://www.cnblogs.com/ff888/p/16977114.html

相关文章

  • 入门练习3-3
    #include<stdio.h>intmain(){intA;printf("请输入一个整数:");scanf("%d",&A);if(A>=0){printf("绝对值是%d\n",A);}else{printf("绝对值是%d\n",-A);}return......
  • Python目录
      应用Django开发网站和网页的web框架。官网:https://docs.djangoproject.com/教程:a) 刘江的博客教程(Django) b) Django框架教程 c)  w3chool提供的Djang......
  • win11上同时安装多个版本的python
    最近在做车牌识别项目,我的电脑上安装的python3.8+tensorflow2.x,但是网上的很多项目需要python3.6+tensorflow1.15.2,所以我就开始折腾怎么在电脑上同时共存多个python版本,在......
  • (视频+图文)机器学习入门系列-第9章 集成学习
    机器学习入门系列,黄海广老师主讲。本站将持续更新,ppt、代码、课后习题见文末。本系列的目录01.引言​​02.回归​​03.逻辑回归04.朴素贝叶斯​​05.机器学习实践​​​​06......
  • 写了本机器学习入门书
    最近写了一本机器学习的入门书,针对初学者,希望能给初学者雪中送炭。黄海广动机作为计算机方向的博士,本人一直热衷于帮助机器学习初学者入门方面的工作,主持和参与了很多国内......
  • 7天入门小程序开发 | 03-小程序JS前后端交互
            第三节课又来啦,今天我们将会让小程序页面动起来,通过JS实现前后端的互动,包括:JS传静态数据JS传递列表数据并循环输出点击按钮刷新时间无需点击按钮自动刷新时......
  • Python学习基础笔记四十五——包
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • python map不一样应用
    mapmap(function,iterable,...)function:针对每个迭代对象的函数iterable可迭代对象注意:function中参数和iterable个数对应单个可迭代对象(不常用)list(map(lam......
  • 【华为OD机试真题 python】日志首次上报最多积分【2022 Q4 | 100分】
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Python各个列表交叉进行排列组合
    示例v_list=[["1.mp4","2.mp4"],["3.mp4"],["6.mp4","7.mp4"],[],[]]我想把这个列表里面的各个列表,重新排列组合但是我不知道列表里套了几个列表,套的列表里有......