python控制小米电器以及ros通讯控制小米电器

注意事项:

IP最后一位会在附近跳动 

182-183

相关工具 

需要下载合适版本的米家,用电脑的手机模拟器,数据库软件查看获取的token

链接:https://pan.baidu.com/s/1MLwZ8K1-7Jq2rM1zIb_CIg 
提取码:2qor

使用python-miio控制小米智能插座

使用python-miio控制小米智能插座 - 简书 (jianshu.com)

token获取

参考:

一日一技|只要一台电脑,轻松获取米家设备 token

一日一技|只要一台电脑,轻松获取米家设备 token_miio

python控制小米电器以及ros通讯控制小米电器_第1张图片

python控制小米电器以及ros通讯控制小米电器_第2张图片

回到主界面,打开 RE 浏览器并跳转到路径 /data/data/com.xiaomi.smarthome/databases/,找到 miio2 文件,并检查一下文件的修改时间是不是最近的;点击鼠标不松开选中 miio2 文件后,在界面右上角点击「复制」按钮;然后通过路径 /storage/emulated/0/$MuMu共享文件夹 找到模拟器的共享文件夹,点击右下角的「复制至此」按钮;最后,点击模拟器底部工具栏上的「文件共享」按钮就能在本地文件夹找到 miio2 文件了。 

py控制电器 

  python控制小米电器以及ros通讯控制小米电器_第3张图片

 参考这个得到我们是P5型号

import miio

from miio.chuangmi_plug import ChuangmiPlug
from miio.yeelight import Yeelight
from miio.fan import FanP5
#插座
plug_ip='192.168.31.235'
plug_token='f91513e7bdf1b28dcbfd11b7197e7c99' # 输入之前获得token

#台灯
light_ip='192.168.31.8'
light_token='5f38707156577f4eee6358dd8c82b2d9' # 输入之前获得token

#落地扇
fan_ip='192.168.31.130'
fan_token='3d1b6f525af4d36032cec9041c62f86d' # 输入之前获得token

plug= ChuangmiPlug(ip=plug_ip, token=plug_token)
light=Yeelight(ip=light_ip, token=light_token)
fan=FanP5(ip=fan_ip,token=fan_token)

x=plug.status() # 给出设备的状态
#s = miio.device.Device(ip=ip3, token=token3)
#print(plug.info())

#light.off()
fan.off()
# x: 
# x.power = True
#x=d.info()
#print(x)
# 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'] 则 控制成功

ros通讯控制小米电器

python代码

ROS通讯控制台灯,风扇,插座等电器

```python
#!/usr/bin/env python3
#coding=utf-8

from std_msgs.msg import String
import rospy

from miio.chuangmi_plug import ChuangmiPlug
from miio.yeelight import Yeelight
from miio.fan import FanP5


#插座
plug_ip='192.168.31.235'
plug_token='f91513e7bdf1b28dcbfd11b7197e7c99' # 输入之前获得token

#台灯
light_ip='192.168.31.9'
light_token='5f38707156577f4eee6358dd8c82b2d9' # 输入之前获得token

#落地扇
fan_ip='192.168.31.130'
fan_token='3d1b6f525af4d36032cec9041c62f86d' # 输入之前获得token



#回调函数输入的应该是msg
def callback(msg):
    if  msg.data.find("风扇") > -1:
        fan=FanP5(ip=fan_ip,token=fan_token)
        if  msg.data.find("开") > -1:
            fan.on()
        elif msg.data.find("关") > -1:
            fan.off()
    elif  msg.data.find("台灯") > -1:
        light=Yeelight(ip=light_ip, token=light_token)
        if  msg.data.find("开") > -1:
            light.on()
        elif msg.data.find("关") > -1:
            light.off()
    elif  msg.data.find("插座") > -1:
       plug= ChuangmiPlug(ip=plug_ip, token=plug_token)
       if  msg.data.find("开") > -1:
            plug.on()
       elif  msg.data.find("关") > -1:
            plug.off()



   

def voice_listener():
    rospy.init_node('electronic_listener', anonymous=True)
    #Subscriber函数第一个参数是topic的名称,第二个参数是接受的数据类型 第三个参数是回调函数的名称
    rospy.Subscriber('voice_message', String, callback)
    rospy.spin()


if __name__ == '__main__':
    voice_listener()
    



```
下载moudle
```bash
pip install rospkg
pip install python-miio
```
命令行发布话题

```bash
rostopic pub -1 /voice_message std_msgs/String "data: '打开风扇'"
```

你可能感兴趣的:(python,服务器,开发语言)