Exemplo n.º 1
0
 def setInterruptHandler(self):
     #~ return
     with self.lock:
         self.unsetInterruptHandler()
         GPIO.add_event_detect(self.irq_gpio,
                               GPIO.RISING,
                               callback=self.interruptHandler)
Exemplo n.º 2
0
    def __init__(self, logger):
        LoggableClass.__init__(self, logger=logger)
        self.door_state = DOOR_NOT_MOVING
        self.shutdown = False
        self._needs_update = True
        self.last_input = time.time()
        self.condition = Condition()
        self.tft_state = True
        self.light_state_indoor = False
        self.light_state_outdoor = False
        self.slots = {
            (250, 40, 310, 85): self.doorUp,
            (250, 105, 310, 165): self.doorStop,
            (250, 185, 310, 230): self.doorDown,
            (0, 150, 115, 240): self.switchOutdoorLight,
            (116, 150, 230, 240): self.switchIndoorLight,
            (0, 50, 230, 100): self.switchDoorAutomatic,
        }

        self.setState({})

        GPIO.setmode(GPIO.BCM)
        GPIO.setwarnings(False)

        self.tft = lib_tft24t.TFT24T(spidev.SpiDev(), GPIO, landscape=True)
        self.tft.initLCD(self.DC, self.RST, self.LED, switch_on=self.tft_state)
        self.tft.initTOUCH(self.TOUCH_IRQ)
        # TOUCH_IRQ = Pen!
        GPIO.add_event_detect(self.TOUCH_IRQ,
                              GPIO.BOTH,
                              callback=self.onTouchEvent,
                              bouncetime=250)

        InstallStateChangeHandler(self, self.onStateChanged,
                                  self.shouldShutdown)
Exemplo n.º 3
0
    def __init__(self):
        LoggableClass.__init__(self, name = "Board")

        #: Aktueller Zustand der Tür.
        #: Kann einen der folgenden Werte annehmen:
        #:
        #:   - :data:`config.DOOR_NOT_MOVING`: Quasi ein unbekannter Zustand, da die
        #:     Tür im Stillstand entweder geschlossen oder offen sein sollte.
        #:   - :data:`config.DOOR_MOVING_UP`: Tür bewegt sich nach oben
        #:   - :data:`config.DOOR_MOVING_DOWN`: Tür bewegt sich nach unten
        #:   - :data:`config.DOOR_OPEN`: Tür ist offen
        #:   - :data:`config.DOOR_CLOSED`: Tür ist geschlossen
        #:
        #: Zur Abfrage, ob sich die Tür bewegt, existiert ausserdem noch die Konstante
        #: :data:`config.DOOR_MOVING`, die als ODER-Ergebnis aus :data:`config.DOOR_MOVING_DOWN`
        #: und :data:`config.DOOR_MOVING_UP` zur Maskierung des Bewegungszustands
        #: verwendet werden kann:
        #:
        #: .. code-block:: python
        #:
        #:   door_is_moving = bool(door_state & DOOR_MOVING)
        self.door_state = DOOR_NOT_MOVING

        #: Zustand der Innenbeleuchtung (``True`` = an)
        #:
        #: .. seealso::
        #:   :meth:`SwitchIndoorLight`
        #:   :attr:`light_state_indoor`
        self.light_state_indoor = False

        #: Zustand der Außenbeleuchtung (``True`` = an)
        #:
        #: .. seealso::
        #:   :meth:`SwitchOutdoorLight`
        #:   :attr:`light_state_indoor`
        self.light_state_outdoor = False

        #: Zeitpunkt, an dem der Shutdown-Button gedrückt wurde.
        #: Wird in :meth:`OnShutdownButtonPressed` benutzt um zu ermitteln, wie lange der Knopf
        #: gedrückt wurde (und Fehlsignalisierung auszuschließen)
        self.shutdown_btn_time = 0

        #: Referenz auf ein Callable, welches bei Änderung des Board-Status
        #: gerufen wird.
        #:
        #: .. seealso::
        #:    :meth:`CallStateChangeHandler`
        #:    :meth:`SetStateChangeHandler`
        self.state_change_handler = None

        #: Pfad der Datei, in der der Status gespeichert wird.
        #:
        #: .. seealso::
        #:   :meth:`Load`
        #:   :meth:`Save`
        self.state_file = resource_path.joinpath(BOARDFILE)

        GPIO.setmode(GPIO.BOARD)

        self.logger.debug("Settings pins %s to OUT.", OUTPUT_PINS)
        GPIO.setup(OUTPUT_PINS, GPIO.OUT, initial = RELAIS_OFF)

        self.logger.debug("Settings pins %s to IN.", INPUT_PINS)
        GPIO.setup(INPUT_PINS, GPIO.IN)

        GPIO.add_event_detect(
            SHUTDOWN_BUTTON, GPIO.BOTH,
            self.OnShutdownButtonPressed, bouncetime = 200)

        #: Instanz von :class:`Sensors` zum Auslesen der Temperatur
        #: und Helligkeitswerte.
        self.sensor = Sensors()

        self.CheckInitialState()
Exemplo n.º 4
0
	def setInterruptHandler(self):
		#~ return
		with self.lock:
			self.unsetInterruptHandler()
			GPIO.add_event_detect(self.irq_gpio, GPIO.RISING, callback=self.interruptHandler)