Switch gpiozero(fuck you) for lgpio
This commit is contained in:
@@ -2,8 +2,7 @@ import logging
|
||||
from datetime import date, datetime, timedelta
|
||||
from time import sleep
|
||||
|
||||
from gpiozero import OutputDevice
|
||||
from gpiozero.pins.mock import MockFactory
|
||||
import lgpio
|
||||
from sqlalchemy import exc
|
||||
from sqlmodel import select
|
||||
|
||||
@@ -25,33 +24,37 @@ class DoorController:
|
||||
self._is_open: bool = False
|
||||
self._lock_pin = lock_pin
|
||||
self._unlock_pin = unlock_pin
|
||||
self._mock = mock_factory
|
||||
self._chip = None
|
||||
|
||||
if mock_factory:
|
||||
from gpiozero import Device
|
||||
|
||||
Device.pin_factory = MockFactory()
|
||||
|
||||
self._lock = OutputDevice(pin=lock_pin, active_high=False)
|
||||
self._unlock = OutputDevice(pin=unlock_pin, active_high=False)
|
||||
if not mock_factory:
|
||||
self._chip = lgpio.gpiochip_open(0)
|
||||
lgpio.gpio_claim_output(self._chip, unlock_pin, 1)
|
||||
lgpio.gpio_claim_output(self._chip, lock_pin, 1)
|
||||
|
||||
logger.info(
|
||||
"DoorController started. lock=%s unlock=%s factory=%s",
|
||||
"DoorController started. lock=%s unlock=%s mock=%s",
|
||||
lock_pin,
|
||||
unlock_pin,
|
||||
type(self._lock.pin_factory).__name__,
|
||||
mock_factory,
|
||||
)
|
||||
|
||||
def open(self):
|
||||
self._unlock.on()
|
||||
if self._mock:
|
||||
self._is_open = True
|
||||
logger.info("Dor unlocked.[MOCK]")
|
||||
return
|
||||
|
||||
lgpio.gpio_write(self._chip, self._unlock_pin, 0)
|
||||
sleep(0.4)
|
||||
self._unlock.off()
|
||||
lgpio.gpio_write(self._chip, self._unlock_pin, 1)
|
||||
self._is_open = True
|
||||
logger.info("Door unlocked!")
|
||||
|
||||
def close(self):
|
||||
self._lock.on()
|
||||
lgpio.gpio_write(self._chip, self._lock_pin, 0)
|
||||
sleep(0.4)
|
||||
self._lock.off()
|
||||
lgpio.gpio_write(self._chip, self._lock_pin, 1)
|
||||
self._is_open = False
|
||||
logger.info("Door locked!")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user