Turn Touch智能家庭遥控器的Python库

TurnTouch的Python项目详细描述


Turntouch Python库

此库支持Turn Touch 蓝牙智能家庭遥控器。

它是用python 3编写的,最初用于Home Assistant

用法

从pypi安装此库:

pip install TurnTouch

扫描转弯触摸设备

注意:扫描需要Linux上的根权限。为了避免这个,跳过 连接到下一节,然后在不扫描的情况下连接到设备。

importturntouch# Example 1: Find all devicesdevices=turntouch.scan()# Example 2: Find just one devicedevice=turntouch.scan(only_one=True)[0]# Example 3: Extend scan timeout to 60 seconds (default is 10)devices=turntouch.scan(timeout=60)

turntouch.scan()返回turntouch.TurnTouch对象的列表。连接 自动打开到每个设备,以便可以使用。

turntouch.TurnTouch^{}

与转弯触控装置互动

importturntouch# Connect to a device by MAC addresstt=turntouch.TurnTouch('c0:ff:ee:c0:ff:ee')# Read the device nickname and battery percentageprint("Name: {}\nBattery: {}".format(tt.name,tt.battery))# Update the device nickname (max. 32 characters)tt.name='Living Room Remote'

收听按钮按下情况

fromturntouchimportTurnTouch,DefaultActionHandlerclassMyHandler(DefaultActionHandler):defaction_north(self):print("Up button pressed.")defaction_east_double_tap(self):print("Right button double-tapped.")defaction_south_hold(self):print("Down button held.")tt=TurnTouch('c0:ff:ee:c0:ff:ee')tt.handler=MyHandler()tt.listen_forever()# One-liner alternative (same as listen_forever)TurnTouch('c0:ff:ee:c0:ff:ee',handler=MyHandler(),listen=True)

有关操作的完整列表,请参见actions部分。

更高级的用法

这里有一个更复杂的例子,触发一些现有函数。

importturntouch# Define a handlerclassMyFancyHandler(turntouch.DefaultActionHandler):def__init__(some_object,other_function):"""Use the __init__ method to pass references to parts of your code,        such as objects, methods, or variables."""self.thing_1=some_objectself.other_func=other_functiondefaction_any(action):"""Special handler which is fired for ALL actions.        `action` is an instance of turntouch.Action."""ifaction.name=="North":self.thing_1.some_method()elifaction.namein["South","East","West"]:self.thing_1.other_method()else:self.other_func()defaction_south_hold():print("You can combine per-button handlers with action_any!")# Instantiate the handler, passing some application data into itmy_handler=MyFancyHandler(some_object_from_my_application,a_function)# Scan until we find a devicedevices=[]whilenotdevices:devices=turntouch.scan(only_one=True)tt=devices[0]# Assign the handler to your device.tt.handler=my_handlertt.listen_forever()

只需按一个按钮即可收听

如果您不希望侦听器永远运行,请执行以下操作:

tt=TurnTouch('c0:ff:ee:c0:ff:ee',handler=SomeHandler)tt.listen()# Will return as soon as one action occurs.

错误处理

连接失败将引发turntouch.TurnTouchException。你可能想 捕获并忽略此异常以重试连接。

操作

  • action_any
  • action_off
  • action_north
  • action_north_double_tap
  • action_north_hold
  • action_east
  • action_east_double_tap
  • action_east_hold
  • action_west
  • action_west_double_tap
  • action_west_hold
  • action_south
  • action_south_double_tap
  • action_south_hold
  • action_multi_north_east
  • action_multi_north_west
  • action_multi_north_south
  • action_multi_east_west
  • action_multi_east_south
  • action_multi_west_south
  • action_multi_north_east_west
  • action_multi_north_east_south
  • action_multi_north_west_south
  • action_multi_east_west_south
  • action_multi_north_east_west_south

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

推荐PyPI第三方库


热门话题
java Mulesoft转换消息转义正斜杠   java Spring JPA REST按嵌套属性排序   多数据源多重访问中的java数据源路由器问题   java MapReduce处理GZip压缩的RCF文件   在Java中不使用替换函数替换字符   在mysql查询java中使用数组   java DriverManager。getConnection(“jdbc:odbc:thin:@localhost:1521:orcl”、“shaheena”、“shaheena”);错误:找不到符号驱动程序管理器,语句st   java IntelliJ IDEA不显示新创建的类或文件。要查看文件,我需要完全重新启动程序   用于层间通信的java装饰器   java Gradle多项目OpenClover   java如何使用指定的属性和排序顺序对列表进行排序   Javasocket在windows上不起作用   用不同长度的1D列表对Java中的2D arraylist进行排序   安卓中使用Active Directory的java Singlesignon   将外部jar添加到纯java模块时出现NoClassDefFoundError,这是Android Studio中应用程序模块的依赖项   java为什么所有的“Executors”工厂方法都没有包装在“FinalizableDelegatedExecutorService”中?   为什么swing gui的行为很奇怪?   即使在添加路径后也会出现ssl Java证书问题