用于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()直接从附件服务, 不过,如果你愿意,你也可以把附件交给司机。