用于Switchbots的API,允许控制操作、设置和计时器(也有密码保护)
switchbotp的Python项目详细描述
Switchbot API
用于SwitchBots的Python API,允许控制操作、设置和计时器。在
该设置在Raspberrypi3上进行了测试,该操作系统与运行固件4.4和4.5的Switchbots结合使用
常见问题解答
请注意,如果在运行任何一个api时观察到以下错误:Can't init device hci0: Connection timed out (110)
。更新所有包see these steps。在
使用
examples文件夹包含如何扫描switchbot、按下switchbot、读取和设置设置(电池、固件、保持时间等)、读取和设置计时器的演示。在
使用扫描仪查找该区域中的所有SwitchBot:
fromswitchbotpyimportScannerscanner=Scanner()mac_addresses=scanner.scan()
使用mac地址创建一个bot实例,提供控制switchbot的方法:
^{pr2}$可切换API
对于那些对构建一个控制switchbot的应用程序感兴趣的人,我提供了一个包含逆向工程结果的列表。我不保证正确性和完整性,但通过下面描述的BLE命令,我设法用固件4.4和4.5控制switchbot。 官方的switchbot应用程序被用来设置机器人的密码。在
动作
Request | Notification (Response) | |||||
---|---|---|---|---|---|---|
Name | Handle | Unencrypted | Encrypted | Required | Handle | Value |
press | 0x16 | 0x 57 01 | 0x 57 11 ^{ | 0x13 | ^{ | |
turn on | 0x 57 01 01 | 0x 57 11 ^{ | ||||
turn off | 0x 57 01 02 | 0x 57 11 ^{ |
pw8
:crc32密码4字节校验和stat2
:1=操作完成,3=bot忙,11=bot无法访问,7=bot加密,8=bot未加密,9=密码错误
设置
获取设置
bot设置都是通过触发一个由连接的设置组成的通知来检索的。在
^{tb2}$pw8
:crc32密码4字节校验和stat2
:1=操作完成,3=bot忙,11=bot无法访问,7=bot加密,8=bot未加密,9=密码错误
设置设置
Request | Notification (Response) | |||||
---|---|---|---|---|---|---|
Name | Handle | Unencrypted | Encrypted | Required | Handle | Value |
hold time | 0x16 | 0x 57 0f 08 ^{ | 0x 57 1f ^{ | 0x13 | ^{ | |
mode | 0x 57 03 64 ^{ | 0x 57 13 64 ^{ |
pw8
:crc32密码4字节校验和sec2
:秒作为一个字节的无符号intds1
:如果双状态模式:1,否则为0inv1
:如果反向模式:1,否则为0stat2
:1=操作完成,3=bot忙,11=bot无法访问,7=bot加密,8=bot未加密,9=密码错误
定时器
Request | Notification (Response) | |||||
---|---|---|---|---|---|---|
Name | Handle | Unencrypted | Encrypted | Required | Handle | Value |
get timer | 0x16 | 0x 57 08 ^{ | 0x 57 18 ^{ | x | 0x13 | |
set timer | 0x 57 09 ^{ | 0x 57 19 ^{ | ^{ | |||
sync timer | 0x 57 09 01 ^{ | 0x 57 19 ^{ | ^{ |
pw8
:crc32密码4字节校验和tid1
:计时器id介于0和4之间timer20
:nt2
00rep2
hh2
mm2
rep11
md1
rep21
act1
its2
ihh2
{} nt2
:以一个字节表示的计时器数量(例如,如果设置了3个计时器,则为0x03)rep2
:以一个字节的形式重复模式。如果计时器被禁用,则为0x00。如果没有重复,则为0x80==b10000000。否则,字节的最后七位表示应重复计时器的工作日(例如,b0110000表示计时器在星期日和星期六计数)。在hh2
:计时器小时介于0和23之间mm2
:计时器分钟介于0和59之间rep11
:如果定时器被禁用(rep2
=0),则重复字节的前4位存储在这里md1
:计时器模式(标准=0,间隔=1)作为字节rep21
:如果定时器被禁用(rep2
=0),则重复字节的最后4位存储在这里act1
:计时器操作(按=0,打开=1,关闭=2)作为一个字节its2
:间隔计时器和ihh2
:间隔计时器小时imm2
:间隔计时器分钟stat2
:1=操作完成,3=bot忙,11=bot无法访问,7=bot加密,8=bot未加密,9=密码错误
作者
- ^{str1}$nicolaskulchler-初始工作-nicolas-kuechler
- 项目
标签: