用于python的homekit附件协议(hap)包装器

gleeful的Python项目详细描述


这将包装非常有用的hap python包,用于创建新附件, 尤其是那些有多种服务的,非常简单。

下面是一个示例:

class Temperature(gleeful.Accessory):
    temperature = gleeful.services.temperature.DS18B20(sensor_id='28-00000000000')

    class AccessoryInformation:
        Name = 'Temperature'
        Manufacturer = 'Matthew Schinckel'
        Model = 'DS18B20'
        SerialNumber = '28-00000000000'


Temperature(persist_file='/path/to/temperature.state').start()

定义服务

服务必须继承自gleevel.service 使用附件,并正确确定服务属性:

class PIR(gleeful.Service):
    service = 'MotionSensor'

    def __init__(self, *args, **kwargs):
        from gpio import MotionSensor
        self.motion = self.service.get_characteristic('MotionDetected')
        self.detector = gpiozero.MotionSensor(kwargs.pop('gpio_pin'))
        super().__init__(*args, **kwargs)

    def run(self, sentinel):
        self.detector.when_motion = lambda: self.motion.set_value(True)
        self.detector.when_no_motion = lambda: self.motion.set_value(False)

在本例中,您将注意到一些非常重要的事情:

  • 将类上的服务定义为字符串:将从 HAP加载器在使用类时,服务属性将自动 不是字符串,而是匹配的hap服务的实例。
  • run方法需要一个额外的参数:可以用来 触发重复代码或停止情况。这是所有人共享的 附件内的服务。

为什么使用这个而不是hap python?

Gleeful使在一个附件中提供多个服务变得容易,并且 在服务中封装逻辑。

它还允许您使用.start()直接从附件服务, 不过,如果你愿意,你也可以把附件交给司机。

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

推荐PyPI第三方库


热门话题
java如何计算大于平均值的数字的百分比。?   JavaFX中后台执行任务的服务   xml解析用于解析java中推荐的xml解析器的小文档   java Nativescript+无法实例化接收器。。。。没找到上课的机会   maven是在数百个Java测试类上应用自定义JUnit测试运行程序的更简单方法   泛型如何引用接口在Java中实现的类类型?   java序列化程序SimpleXML只发送第一行   java字符串组合/排列   java无法创建EMRclient Sdkclientexception   JavaMaven不生成“persistence.xml”文件   java找不到主要方法   java中的正则表达式正负双精度   接口对于我试图解决的问题,有Java设计模式吗?   java在创建bean时获取异常   java如何创建<?使用JCodeModel扩展子类型>?   java在javafx中制作搜索栏   java Compare Hashmap with List=new Arraylist()   java接口与具体类