用于BroadLink设备控制的异步模块

pybroadlink的Python项目详细描述


pybroadlink

使用Asyncio(单线程事件循环)使用Python3控制BroadLink设备。目前支持RM3智能遥控器。

用法

importsysimportloggingimporttracebackfrompybroadlink.broadlink_udpimportBroadlinkRM3importasyncioimportbinasciifrombase64importb64decodefrompybroadlinkimport_LOGGERasyncdeftestFake(n):foriinrange(n):_LOGGER.debug("Counter is %d",i)awaitasyncio.sleep(1)asyncdefdiscovery_test(*args):rv=awaitBroadlinkUDP.discovery(local_ip_address=args[2],timeout=int(args[3]))ifrv:_LOGGER.info("Discovery OK %s",rv)else:_LOGGER.warning("Discovery failed")asyncdefemit_test(*args):importremo=re.search('^[a-fA-F0-9]+$',args[4])ifmo:payload=binascii.unhexlify(args[4])else:payload=b64decode(args[4])a=BroadlinkRM3((args[2],PORT),args[3])rv=awaita.emit_ir(payload,retry=1)ifrv:_LOGGER.info("Emit OK %s",binascii.hexlify(rv[0]).decode('utf-8'))else:_LOGGER.warning("Emit failed")a.destroy_remote()asyncdeflearn_test(*args):a=BroadlinkRM3((args[2],PORT),args[3])rv=awaita.enter_learning_mode()ifrv:_LOGGER.info("Entered learning mode (%s): please press key",rv)rv=awaita.learn_ir_get(30)ifrv:_LOGGER.info("Obtained %s",binascii.hexlify(rv[0]).decode('utf-8'))else:_LOGGER.warning("No key pressed")else:_LOGGER.warning("Enter learning failed")a.destroy_remote()_LOGGER.setLevel(logging.DEBUG)handler=logging.StreamHandler(sys.stderr)handler.setLevel(logging.DEBUG)formatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)_LOGGER.addHandler(handler)loop=asyncio.get_event_loop()try:asyncio.ensure_future(testFake(150))ifsys.argv[1]=="learn":loop.run_until_complete(learn_test(*sys.argv))elifsys.argv[1]=="discovery":loop.run_until_complete(discovery_test(*sys.argv))else:loop.run_until_complete(emit_test(*sys.argv))exceptBaseExceptionasex:_LOGGER.error("Test error %s",str(ex))traceback.print_exc()except:_LOGGER.error("Test error")traceback.print_exc()finally:loop.close()

贡献

欢迎拉取请求。可能的改进领域:

  • 其他BroadLink设备(交换机)。

免责声明

不属于BroadLink。

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

推荐PyPI第三方库


热门话题
java应用程序不是在Eclipse中运行,而是在命令行中运行   swing Java图形组件问题。似乎找不到错误   我需要键盘。close();让代码正常工作?   Springboot中的java HttpSession   抽象语法树我想添加一个语句。我试图解析它,java解析器异常被抛出。如何克服它?   java Hibernate:清理会话   具有不连续子集的java划分问题   java正则表达式查找最后一个冒号后的字符串   java从SpringShell执行OS命令   Java扫描器字符串输入   java字符串索引越界异常(charAt)   java执行器服务终止被卡住   Springockito没有继承java@ContextConfiguration   java如何为一个servlet映射多个url   java安卓获取命令的stderr   java生成类型。表:数据库中的大数字   安卓 Getter Setter返回NothingJava