Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions pyhap/accessories/AM2302.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,17 @@
import pigpio
import sensors.DHT22 as DHT22

from pyhap.accessory import Accessory, Category
from pyhap.accessory import Accessory
from pyhap.const import CATEGORY_SENSOR
import pyhap.loader as loader


class AM2302(Accessory):

category = Category.SENSOR
category = CATEGORY_SENSOR

def __init__(self, *args, pin=4, **kwargs):
super(AM2302, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.pin = pin

self.temp_char = self.get_service("TemperatureSensor")\
Expand All @@ -31,14 +32,14 @@ def __init__(self, *args, pin=4, **kwargs):
self.sensor = DHT22.sensor(pigpio.pi(), pin)

def _set_services(self):
super(AM2302, self)._set_services()
super()._set_services()
self.add_service(
loader.get_serv_loader().get("TemperatureSensor"))
loader.get_serv_loader().get_service("TemperatureSensor"))
self.add_service(
loader.get_serv_loader().get("HumiditySensor"))
loader.get_serv_loader().get_service("HumiditySensor"))

def __getstate__(self):
state = super(AM2302, self).__getstate__()
state = super().__getstate__()
state["sensor"] = None
return state

Expand Down
13 changes: 7 additions & 6 deletions pyhap/accessories/BMP180.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,30 @@
# Assume you have a bmp module with BMP180 class with read() method.
from sensors.bmp180 import BMP180 as sensor

from pyhap.accessory import Accessory, Category
from pyhap.accessory import Accessory
from pyhap.const import CATEGORY_SENSOR
import pyhap.loader as loader


class BMP180(Accessory):

category = Category.SENSOR
category = CATEGORY_SENSOR

def __init__(self, *args, **kwargs):
super(BMP180, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)

self.temp_char = self.get_service("TemperatureSensor")\
.get_characteristic("CurrentTemperature")

self.sensor = sensor()

def _set_services(self):
super(BMP180, self)._set_services()
super()._set_services()
self.add_service(
loader.get_serv_loader().get("TemperatureSensor"))
loader.get_serv_loader().get_service("TemperatureSensor"))

def __getstate__(self):
state = super(BMP180, self).__getstate__()
state = super().__getstate__()
state["sensor"] = None
return state

Expand Down
11 changes: 6 additions & 5 deletions pyhap/accessories/DisplaySwitch.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# An Accessory for viewing/controlling the status of a Mac display.
import subprocess

from pyhap.accessory import Accessory, Category
from pyhap.accessory import Accessory
from pyhap.const import CATEGORY_SWITCH
import pyhap.loader as loader


Expand All @@ -23,19 +24,19 @@ class DisplaySwitch(Accessory):
of the Mac that this code is running on.
"""

category = Category.SWITCH
category = CATEGORY_SWITCH

def __init__(self, *args, **kwargs):
super(DisplaySwitch, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)

self.display = self.get_service("Switch")\
.get_characteristic("On")
self.display.setter_callback = self.set_display

def _set_services(self):
super(DisplaySwitch, self)._set_services()
super()._set_services()
self.add_service(
loader.get_serv_loader().get("Switch"))
loader.get_serv_loader().get_service("Switch"))

def run(self):
while not self.run_sentinel.wait(1):
Expand Down
16 changes: 9 additions & 7 deletions pyhap/accessories/FakeFan.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
"""A fake fan that does nothing but to demonstrate optional characteristics."""
import logging

from pyhap.accessory import Accessory, Category
from pyhap.accessory import Accessory
from pyhap.const import CATEGORY_FAN
import pyhap.loader as loader

logger = logging.getLogger(__name__)
Expand All @@ -10,7 +11,7 @@
class FakeFan(Accessory):
"""A fake fan accessory that logs changes to its rotation speed and direction."""

category = Category.FAN
category = CATEGORY_FAN

def set_rotation_speed(self, value):
logger.debug("Rotation speed changed: %s", value)
Expand All @@ -20,19 +21,20 @@ def set_rotation_direction(self, value):

def _set_services(self):
"""Add the fan service. Also add optional characteristics to it."""
super(FakeFan, self)._set_services()
service_loader = loader.get_serv_loader()
fan_service = service_loader.get("Fan")
super()._set_services()
fan_service = loader.get_serv_loader().get_service("Fan")
# NOTE: Don't forget that all characteristics must be added to the service before
# adding the service to the accessory, so that it can assign IIDs to all.

# Add the optional RotationSpeed characteristic to the Fan
rotation_speed_char = loader.get_char_loader().get("RotationSpeed")
rotation_speed_char = loader.get_char_loader() \
.get_char("RotationSpeed")
fan_service.add_characteristic(rotation_speed_char)
rotation_speed_char.setter_callback = self.set_rotation_speed

# Add the optional RotationSpeed characteristic to the Fan
rotation_dir_char = loader.get_char_loader().get("RotationDirection")
rotation_dir_char = loader.get_char_loader() \
.get_char("RotationDirection")
fan_service.add_characteristic(rotation_dir_char)
rotation_dir_char.setter_callback = self.set_rotation_direction

Expand Down
13 changes: 7 additions & 6 deletions pyhap/accessories/Http.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
import logging
from http.server import HTTPServer, BaseHTTPRequestHandler

from pyhap.accessory import Bridge, Category
from pyhap.accessory import Bridge
from pyhap.const import CATEGORY_OTHER

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -38,7 +39,7 @@ def __init__(self, http_accessory, sock, client_addr, server):
"""Create a handler that passes updates to the given HttpAccessory.
"""
self.http_accessory = http_accessory
super(HttpBridgeHandler, self).__init__(sock, client_addr, server)
super().__init__(sock, client_addr, server)

def respond_ok(self):
"""Reply with code 200 (OK) and close the connection.
Expand Down Expand Up @@ -125,7 +126,7 @@ class HttpBridge(Bridge):
After the above you can HTTP POST updates to the local address at port 51111.
"""

category = Category.OTHER
category = CATEGORY_OTHER

def __init__(self, address, *args, **kwargs):
"""Initialise and add the given services.
Expand All @@ -135,7 +136,7 @@ def __init__(self, address, *args, **kwargs):

@param accessories:
"""
super(HttpBridge, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)

# For exclusive access to updates. Slight overkill...
self.update_lock = None
Expand All @@ -155,7 +156,7 @@ def __getstate__(self):
Also add the server address. All this is because we cannot pickle such
objects and to allow to recover the server using the address.
"""
state = super(HttpBridge, self).__getstate__()
state = super().__getstate__()
state["server"] = None
state["server_thread"] = None
state["update_lock"] = None
Expand Down Expand Up @@ -198,7 +199,7 @@ def update_state(self, data):
def stop(self):
"""Stop the server.
"""
super(HttpBridge, self).stop()
super().stop()
logger.debug("Stopping HTTP bridge server.")
self.server.shutdown()
self.server.server_close()
Expand Down
13 changes: 7 additions & 6 deletions pyhap/accessories/LightBulb.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@

import RPi.GPIO as GPIO

from pyhap.accessory import Accessory, Category
from pyhap.accessory import Accessory
from pyhap.const import CATEGORY_LIGHTBULB
import pyhap.loader as loader


class LightBulb(Accessory):

category = Category.LIGHTBULB
category = CATEGORY_LIGHTBULB

@classmethod
def _gpio_setup(_cls, pin):
Expand All @@ -18,7 +19,7 @@ def _gpio_setup(_cls, pin):
GPIO.setup(pin, GPIO.OUT)

def __init__(self, *args, pin=11, **kwargs):
super(LightBulb, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.pin = pin
self._gpio_setup(pin)

Expand All @@ -33,12 +34,12 @@ def set_bulb(self, value):
GPIO.output(self.pin, GPIO.LOW)

def _set_services(self):
super(LightBulb, self)._set_services()
super()._set_services()

bulb_service = loader.get_serv_loader().get("Lightbulb")
bulb_service = loader.get_serv_loader().get_service("Lightbulb")
self.add_service(bulb_service)
bulb_service.get_characteristic("On").setter_callback = self.set_bulb

def stop(self):
super(LightBulb, self).stop()
super().stop()
GPIO.cleanup()
13 changes: 7 additions & 6 deletions pyhap/accessories/MotionSensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@

import RPi.GPIO as GPIO

from pyhap.accessory import Accessory, Category
from pyhap.accessory import Accessory
from pyhap.const import CATEGORY_SENSOR
import pyhap.loader as loader


class MotionSensor(Accessory):

category = Category.SENSOR
category = CATEGORY_SENSOR

def __init__(self, *args, **kwargs):
super(MotionSensor, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)

self.detected_char = self.get_service("MotionSensor")\
.get_characteristic("MotionDetected")
Expand All @@ -21,13 +22,13 @@ def __init__(self, *args, **kwargs):
GPIO.add_event_detect(7, GPIO.RISING, callback=self._detected)

def _set_services(self):
super(MotionSensor, self)._set_services()
super()._set_services()
self.add_service(
loader.get_serv_loader().get("MotionSensor"))
loader.get_serv_loader().get_service("MotionSensor"))

def _detected(self, _pin):
self.detected_char.set_value(True)

def stop(self):
super(MotionSensor, self).stop()
super().stop()
GPIO.cleanup()
27 changes: 15 additions & 12 deletions pyhap/accessories/SDS011.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
import logging

from sensors.SDS011 import SDS011 as AirSensor
from pyhap.accessory import Accessory, Category
from pyhap.accessory import Accessory
from pyhap.const import CATEGORY_SENSOR
import pyhap.loader as loader

logger = logging.getLogger(__name__)
Expand All @@ -20,7 +21,7 @@ class SDS011(Accessory):
"""Accessory wrapper for SDS011.
"""

category = Category.SENSOR
category = CATEGORY_SENSOR

SORTED_PM_QUALITY_MAP = ((200, 5), (150, 4), (100, 3), (50, 2), (0, 1))
"""
Expand Down Expand Up @@ -54,7 +55,7 @@ def __init__(self, serial_port, *args, sleep_duration_s=15*60, calib_duration_s=
self.pm25_density = None
self.pm10_quality = None
self.pm10_density = None
super(SDS011, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
self.sleep_duration_s = sleep_duration_s
self.calib_duration_s = calib_duration_s
self.serial_port = serial_port
Expand All @@ -67,25 +68,27 @@ def _set_services(self):
Also adds and configures optional characteristics, such as Name,
AirParticulateSize, AirParticulateDensity.
"""
super(SDS011, self)._set_services()
super()._set_services()
char_loader = loader.get_char_loader()

# PM2.5
air_quality_pm25 = loader.get_serv_loader().get("AirQualitySensor")
pm25_size = char_loader.get("AirParticulateSize")
air_quality_pm25 = loader.get_serv_loader() \
.get_service("AirQualitySensor")
pm25_size = char_loader.get_char("AirParticulateSize")
pm25_size.set_value(0, should_notify=False)
self.pm25_density = char_loader.get("AirParticulateDensity")
pm25_name = char_loader.get("Name")
self.pm25_density = char_loader.get_char("AirParticulateDensity")
pm25_name = char_loader.get_char("Name")
pm25_name.set_value("PM2.5", should_notify=False)
self.pm25_quality = air_quality_pm25.get_characteristic("AirQuality")
air_quality_pm25.add_characteristic(pm25_name, pm25_size, self.pm25_density)

# PM10
air_quality_pm10 = loader.get_serv_loader().get("AirQualitySensor")
pm10_size = char_loader.get("AirParticulateSize")
air_quality_pm10 = loader.get_serv_loader() \
.get_service("AirQualitySensor")
pm10_size = char_loader.get_char("AirParticulateSize")
pm10_size.set_value(1, should_notify=False)
self.pm10_density = char_loader.get("AirParticulateDensity")
pm10_name = char_loader.get("Name")
self.pm10_density = char_loader.get_char("AirParticulateDensity")
pm10_name = char_loader.get_char("Name")
pm10_name.set_value("PM10", should_notify=False)
self.pm10_quality = air_quality_pm10.get_characteristic("AirQuality")
air_quality_pm10.add_characteristic(pm10_name, pm10_size, self.pm10_density)
Expand Down
11 changes: 6 additions & 5 deletions pyhap/accessories/ShutdownSwitch.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
import os
import logging

from pyhap.accessory import Accessory, Category
from pyhap.accessory import Accessory
from pyhap.const import CATEGORY_SWITCH
import pyhap.loader as loader

logger = logging.getLogger(__name__)
Expand All @@ -19,20 +20,20 @@
class ShutdownSwitch(Accessory):
"""A switch accessory that executes sudo shutdown."""

category = Category.SWITCH
category = CATEGORY_SWITCH

def __init__(self, *args, **kwargs):
"""Initialise and set a shutdown callback to the On characteristic."""
super(ShutdownSwitch, self).__init__(*args, **kwargs)
super().__init__(*args, **kwargs)
on_char = self.get_service("Switch")\
.get_characteristic("On")
on_char.setter_callback = self.execute_shutdown

def _set_services(self):
"""Add the Switch service."""
super(ShutdownSwitch, self)._set_services()
super()._set_services()
service_loader = loader.get_serv_loader()
self.add_service(service_loader.get("Switch"))
self.add_service(service_loader.get_service("Switch"))

def execute_shutdown(self, _value):
"""Execute shutdown -h."""
Expand Down
Loading