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