用于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应用程序被用来设置机器人的密码。在

动作

RequestNotification (Response)
NameHandleUnencryptedEncryptedRequiredHandleValue
press0x160x 57 010x 57 11 ^{}0x13^{}
turn on0x 57 01 010x 57 11 ^{} 01
turn off0x 57 01 020x 57 11 ^{} 02
  • 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=密码错误

设置设置

RequestNotification (Response)
NameHandleUnencryptedEncryptedRequiredHandleValue
hold time0x160x 57 0f 08 ^{}0x 57 1f ^{} 08 ^{}0x13^{}
mode0x 57 03 64 ^{}^{}0x 57 13 64 ^{} ^{}^{}
  • pw8:crc32密码4字节校验和
  • sec2:秒作为一个字节的无符号int
  • ds1:如果双状态模式:1,否则为0
  • inv1:如果反向模式:1,否则为0
  • stat2:1=操作完成,3=bot忙,11=bot无法访问,7=bot加密,8=bot未加密,9=密码错误

定时器

RequestNotification (Response)
NameHandleUnencryptedEncryptedRequiredHandleValue
get timer0x160x 57 08 ^{}30x 57 18 ^{} ^{}3x0x13
set timer0x 57 09 ^{}3 ^{}0x 57 19 ^{} ^{}3 ^{}^{}
sync timer0x 57 09 01 ^{}0x 57 19 ^{} 01 ^{}^{}
  • pw8:crc32密码4字节校验和
  • tid1:计时器id介于0和4之间
  • timer20nt200rep2hh2mm2rep11md1rep21act1its2ihh2{}
  • 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=密码错误

作者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像