使用命令行控制小米智能插座的开与关

一、背景介绍

1.目标

目标:我们希望用命令行或代码远程进行断电冷启动,省去人工在实验室大量反复手动冷启动的过程。

2.实现思路

实现思路:购买小米智能插座,可以远程操控。现在已知可以通过手机米家APP控制开关。现在的目标是尝试用命令行来控制开关。以下是实现步骤。

3.品牌介绍

品牌名称:米家智能插座3
特点:直连WIFI,无需网关 (官方旗舰店介绍)
两种联网方式:Wi-Fi、蓝牙

在这里插入图片描述



二、用命令行操控小米智能插座的教程

1.准备好Linux环境,例如WSL

WSL (Windows Subsystem for Linux) 是 Windows下的Linux子系统。

WSL配置的详细介绍,见本文:https://blog.csdn.net/Edward1027/article/details/144552668
下面是WSL配置的简略版介绍:


1.打开powershell,安装wsl

wsl --install -d Ubuntu

在这里插入图片描述

2.重启电脑
3.重新打开powershell,启动WSL环境

wsl

2.Linux系统基本配置

1.下载安装包

sudo apt update

2.更新版本

sudo apt upgrade -y

3.安装对应的包
例如:安装Python3和pip:

sudo apt install python3-pip

3.安装、创建、激活 Python虚拟环境

1.安装虚拟环境 venv 或 virtualenv
例如,python 3.12版本安装venv:

sudo apt install python3.12-venv

2.创建虚拟环境

python3 -m venv myenv

3.激活虚拟环境

source myenv/bin/activate

此时成功进入Python的虚拟环境。可以放心大胆的在此虚拟环境做实验了。
在这里插入图片描述


4.正式开始:获取小米智能设备的 token和IP 等信息

在这里插入图片描述

获取小米设备信息的代码仓库:https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor

如果网络不好,git clone https拉不下来,去上面仓库就换成ssh拉取。
但是用ssh协议,要在本地配置git信息、公钥等,属于ssh配置的通用基本步骤,但是不短,在此不方便赘述。可自行查询我的git教程:https://blog.csdn.net/Edward1027/article/details/139689299

# 安装
pip3 install pycryptodome pybase64 requests
  
# 获取代码
git clone https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor
cd Xiaomi-cloud-tokens-extractor
  
# 登录小米账号, 以获取该账号下的设备信息
python3 token_extractor.py

在这里插入图片描述


5.最终一步:命令行控制插座的开与关

注意插座和电脑要在同一个局域网内,否则无法搜索到目标设备

pip3 install python-miio
sudo apt-get install libffi-dev libssl-dev
   
#获取设备信息
miiocli device --ip IP --token TOKEN info
   
#获取插座状态
miiocli -d device --ip <此处填写你设备的IP> --token <此处填写你设备的TOKEN> raw_command get_properties "[{'did': 'MYDID', 'siid': 2, 'piid': 1 }]"
  
#开
miiocli -d device --ip <此处填写你设备的IP> --token <此处填写你设备的TOKEN> raw_command set_properties "[{'did': 'MYDID', 'siid': 2, 'piid': 1, 'value':True}]"
  
#关
miiocli -d device --ip <YOUR_DEVICE_IP> --token <YOUR_DEVICE_TOKEN> raw_command set_properties "[{'did': 'MYDID', 'siid': 2, 'piid': 1, 'value':False}]"

6.替代第4、5步的另一种方式:Miio 命令行工具

sudo apt install npm
npx miio discover

这将列出与您的计算机连接到同一网络的设备。让它运行一段时间,以便有机会访问所有设备,因为所有设备可能需要一两分钟才能响应。

该命令以这种格式输出每个设备:
在这里插入图片描述输出的信息为:

  • Device ID- 设备的唯一标识符,如果设备重置则不会改变。
  • Model ID- 如果可以确定,则为型号 ID,这表明它是什么类型的设备。
  • Address- 设备在网络上的 IP。
  • Token- 设备的令牌或者???如果无法自动确定。

我实测下来,npx miio discover 搜索网络中的小米设备 这一步,非常慢。推荐还是用第4、5步,登录小米账号获取token和IP的方式
在这里插入图片描述


三、参考文献

1.使用代码控制小米智能插座:https://blog.csdn.net/linzhiji/article/details/118194526
2.小米Home Assistant:
①获取token:https://www.home-assistant.io/integrations/xiaomi_miio#retrieving-the-access-token
②小米智能 WiFi 插座和智能电源板:https://www.home-assistant.io/integrations/xiaomi_miio#xiaomi-smart-wifi-socket-and-smart-power-strip
3.小米仓库代码的README文件:https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员爱德华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值