Switch gpiozero(fuck you) for lgpio

This commit is contained in:
2026-08-01 14:45:44 +02:00
parent 158b430235
commit 936b786659
3 changed files with 28 additions and 42 deletions

View File

@@ -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!")