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第三方库


热门话题
SpringWeb中的java更新/通知其他用户   java Lambda性能测试   java Bukkit插件:空白符号   java在按下按钮后改变彩色正方形的大小   javajavac相当于“D”?   java序列化接口   属性无法从属性文件返回值   java我应该使用什么查询来使用Jsoup从html页面提取符号?   java Android Studio项目结构问题   JAVA方法和返回值/公共变量(基础)   java将NativeQuery映射到POJO   java如何在下面的程序中消除NumberFormatException?   在java中获取链表与数组中的对象   java Android Firebase将用户发送到聊天室