# SmartHomeAPI
基于PyXiaomiGateway,python-miio,Django后端的小米智能家居RESTful HTTP API。
### 项目定位
仅小米设备而言,我们目前买到的设备有如下几种设备:
- chuangmi.plug.m3 创米插座(需要使用[python-miio](https://github.com/rytilahti/python-miio)库)
- zhimi.airpurifier.ma2 智米空气净化器(支持python-miio)
- zhimi.fan.za4 智米风扇(支持python-miio)
- yeelink.light.lamp1 Yeelink台灯(python-miio库支持简单操作,复杂操作需要[python-yeelight](https://github.com/skorokithakis/python-yeelight)库)
- lumi.gateway.v3 绿米网关(需要使用[PyXiaomiGateway](https://github.com/Danielhiversen/PyXiaomiGateway)库)
- weather.v1 Aqara温湿度传感器(支持PyXiaomiGateway)
- magnet 门窗传感器(支持PyXiaomiGateway)
- 米家蓝牙温湿度计 不支持米家普通网关控制(需要使用特殊的蓝牙网关,比如米家床头灯,米家1090P智能摄像机,yeelight智能LED吸顶灯等)
智能家居目前没有一个统一的协议,就算是同一家公司的设备也多种多样。随着设备的增加会变得越来越复杂,个人基本无法完成,最好是借助其他较为完善的平台进行改造开发。
> 但我们仅基于有限的设备做几个demo cases,不需要考虑所有设备。
参考home assistant:
- 采用轮询方式更新设备信息。受限于设备单向通信问题(手动变更设备状态,设备不会发送变更信息给主机),采用轮询来更新主机上设备信息。
- 设备token和网关密码等需要用户自己获取(可能有帮助:https://github.com/xcray/miio-by-CSharp)。
- 获取token手段:使用Android手机下载米家APP(v5.4.49),用APP连接设备后,token以明文形式记录在APP的log文件(`/SmartHome/logs/\d{4}-\d{2}-\d{2}\.txt`)中。
- 获取网关密码信息:在米家APP中打开开发者模式获取信息。
### 目前实现
- 定时监控局域网中的智能设备(需要被python-miio支持)和传感器(需要被PyXiaomiGateway支持)
- 以REST APIs形式访问支持Wi-Fi的米家智能设备(控制开关)和传感器(获取状态)
- 支持将监控数据上传到远程数据库
### 环境要求
- python-miio: https://github.com/rytilahti/python-miio
- PyXiaomiGateway: https://github.com/barrierye/PyXiaomiGateway
- Django
- Python3
### 使用
1. 安装环境
```bash
sh build.sh
```
2. 修改配置
```bash
mv smartHomeApis/config.example.py smartHomeApis/config.py
```
并编辑`smartHomeApis/config.py`进行配置。
3. 运行后端
```bash
python manage.py runserver 0.0.0.0:8000
```
4. 运行demo
```bash
python demo.py
```
### 接口设计
访问`/help`显示如下接口文档:
```
PUT
- Description: Add a device.
- Path:
/<str:did>
- Form:
@localip IP address of device in LAN
@token Device token, which is allocated when the device connects to MI-HOME app
@name Device name which is generally set in MI-HOME app (not necessary)
GET
- Description: List terminals(include devices and sensors) infomation.
- Path:
/ List all terminals infomation
/<int:tid> List terminal infomation corresponding to the tid
DELETE
- Description: Delete a terminal by tid.
- Path:
/<int:tid>
POST
- Description: Given instructions, control device(Default switch on and off status).
- Path:
/<int:did>
- Form:
@status 0 or 1(not necessary)
```
### 注意
1. 由于可以通过`GET`方法直接获取每个注册设备的信息,存在严重的安全隐患。
2. 后端会持续将设备信息发送到数据库,存在严重的隐私安全隐患。
3. 设备的插拔不会改变localip与token,设备的重置会改变token。
4. 不同传感器数据更新时间不同,如门窗传感器每秒更新,而温度传感器每十秒更新。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【作品名称】:基于python-miio, PyXiaomiGateway, Django后端的小米智能家居RESTful API 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于PyXiaomiGateway,python-miio,Django后端的小米智能家居RESTful HTTP API。 目前实现 定时监控局域网中的智能设备(需要被python-miio支持)和传感器(需要被PyXiaomiGateway支持) 以REST APIs形式访问支持Wi-Fi的米家智能设备(控制开关)和传感器(获取状态) 支持将监控数据上传到远程数据库 环境要求 python-miio: PyXiaomiGateway: Django Python3 使用 安装环境 sh build.sh 修改配置 mv 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。
资源推荐
资源详情
资源评论



















收起资源包目录


















共 15 条
- 1
资源评论


小英子架构
- 粉丝: 1091
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 暑假电子商务实践报告.docx
- 如何做好项目管理-精选.ppt
- (源码)基于Spring Boot和Spring Cloud的分布式谷粒商城系统.zip
- 算法的概念优质课.pptx
- 中传传媒经济学硕士影视项目管理方向就业状况好不好.doc
- 专题讲座资料(2021-2022年)单片机红外线防盗报警系统课程设计.doc
- 合作开发贷款管理软件协议书.docx
- 项目管理项目变更控制表样本.doc
- Comsol锂离子电池仿真:方形电池充放电循环热仿真与流热耦合多物理场分析
- 鲁班软件安装消防培训.ppt
- 卫星图像处理流程.docx
- 某工程精装修项目管理成品保护控制标准.docx
- 霍尼韦尔智能家居系统的几大优势.pdf
- 深度学习-卷积神经网络算法简介.pdf
- 计算机大学生个人实习报告三篇范文.docx
- Android项目开发实训项目总结报告新.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
