用于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中使用Kotlin值类   在Hadoop中表示大文本块作为键的java   java安卓工作室;布局设计视图;   字典Java确定字符串是否以映射中的键开头   JavaG1:混合gc和完全gc之间有什么区别?   java Camunda升级组织。阿帕奇。平民语言错误   java Scanner类具有NextLine无限循环   安卓 GCM Java服务器:发送带有重音字符的消息   java我正在构建一个兴趣计算应用程序,我的项目构建良好,有1个警告,但它不会在我的设备上打开   java在Tilera TileGX上构建OpenJDK 8   GUI中的java惰性初始化与急切初始化   java JodaTime四舍五入到最近的一刻钟   java如何限制菜单。SpringRoo中的jspx可以避免对其他用户的实体执行CRUD操作   java我应该将缓冲流链接到输入流,还是在将声音库作为嵌入式资源加载时使用URL类?