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中使用BufferedReader类读取文本文件的子字符串   java如何在JSP页面上包含来自另一台服务器的动态JSP   使用单表策略的java持久化Hibernate继承映射   java报告状态失败达600秒。谋杀!报告hadoop的进展   java将字符串解析为形状   使用JTable的java ClassCastException?   java在Spring引导中关闭数据库   java Android Studio调试错误(Ubuntu)   java如何区分apache beam中KV实例中的两个键?   java将RealmObjectChangeListener添加到异步下载的RealmObject   java匹配模式之前的所有内容,包括新行和/或回车   java使用JAXB在XML中动态更改元素序列   java如何在MACOS中找到动态库(.dylib文件)的版本   Android中的java Nanohttpd服务器   java libGDX:3d动画不工作