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!")
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@ dependencies = [
|
||||
"pyscard>=2.3.1",
|
||||
"alembic>=1.18.5",
|
||||
"ruff>=0.16.0",
|
||||
"gpiozero>=2.0.1.post3",
|
||||
"pydantic-settings>=2.13.1",
|
||||
'lgpio>=0.2.2.0' # ; sys_platform == "linux" and platform_machine == "aarch64"',
|
||||
]
|
||||
|
||||
[tool.uv.sources]
|
||||
@@ -28,6 +28,7 @@ python-desfire = { git = "https://github.com/waza-ari/python-desfire" }
|
||||
[tool.uv.extra-build-dependencies]
|
||||
python-desfire = ["poetry"]
|
||||
"pyscard" = ["setuptools"]
|
||||
"lgpio" = ["setuptools"]
|
||||
|
||||
[tool.setuptools]
|
||||
py-modules = ["app"]
|
||||
|
||||
34
uv.lock
generated
34
uv.lock
generated
@@ -270,18 +270,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "colorzero"
|
||||
version = "2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "setuptools" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/b3/ca/688824a06e8c4d04c7d2fd2af2d8da27bed51af20ee5f094154e1d680334/colorzero-2.0.tar.gz", hash = "sha256:e7d5a5c26cd0dc37b164ebefc609f388de24f8593b659191e12d85f8f9d5eb58", size = 25382, upload-time = "2021-03-15T23:42:23.261Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/7e/a6/ddd0f130e44a7593ac6c55aa93f6e256d2270fd88e9d1b64ab7f22ab8fde/colorzero-2.0-py2.py3-none-any.whl", hash = "sha256:0e60d743a6b8071498a56465f7719c96a5e92928f858bab1be2a0d606c9aa0f8", size = 26573, upload-time = "2021-03-15T23:42:21.757Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "coverage"
|
||||
version = "7.14.0"
|
||||
@@ -636,7 +624,7 @@ source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "alembic" },
|
||||
{ name = "fastapi", extra = ["standard"] },
|
||||
{ name = "gpiozero" },
|
||||
{ name = "lgpio" },
|
||||
{ name = "poetry" },
|
||||
{ name = "pwdlib", extra = ["argon2"] },
|
||||
{ name = "pydantic-settings" },
|
||||
@@ -655,7 +643,7 @@ dependencies = [
|
||||
requires-dist = [
|
||||
{ name = "alembic", specifier = ">=1.18.5" },
|
||||
{ name = "fastapi", extras = ["standard"], specifier = ">=0.135.3" },
|
||||
{ name = "gpiozero", specifier = ">=2.0.1.post3" },
|
||||
{ name = "lgpio", specifier = ">=0.2.2.0" },
|
||||
{ name = "poetry", specifier = ">=2.3.4" },
|
||||
{ name = "pwdlib", extras = ["argon2"], specifier = ">=0.3.0" },
|
||||
{ name = "pydantic-settings", specifier = ">=2.13.1" },
|
||||
@@ -670,18 +658,6 @@ requires-dist = [
|
||||
{ name = "sqlmodel", specifier = ">=0.0.38" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gpiozero"
|
||||
version = "2.0.1.post3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "colorzero" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/67/63/864a3c36842cf7b05808aadf906763a024a1b13f2a4c8144e3163de91255/gpiozero-2.0.1.post3.tar.gz", hash = "sha256:745feab6df463ac2e9de10c67e2dd9f396e668ba4e281e92381d6c460100a8f7", size = 168403, upload-time = "2026-07-27T10:03:32.628Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/45/cb/ec5917b454b2e82874769a348dc74cfcec5b447bf1061c827edea9702451/gpiozero-2.0.1.post3-py3-none-any.whl", hash = "sha256:d491734803a9bc6036602e6b8bbd73fb25c33da88de0fcd11a40e890b8bc2d3b", size = 151465, upload-time = "2026-07-27T10:03:31.195Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "greenlet"
|
||||
version = "3.4.0"
|
||||
@@ -870,6 +846,12 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f", size = 39160, upload-time = "2025-11-16T16:26:08.402Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lgpio"
|
||||
version = "0.2.2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/56/33/26ec2e8049eaa2f077bf23a12dc61ca559fbfa7bea0516bf263d657ae275/lgpio-0.2.2.0.tar.gz", hash = "sha256:11372e653b200f76a0b3ef8a23a0735c85ec678a9f8550b9893151ed0f863fff", size = 90087, upload-time = "2024-03-29T21:59:55.901Z" }
|
||||
|
||||
[[package]]
|
||||
name = "mako"
|
||||
version = "1.3.12"
|
||||
|
||||
Reference in New Issue
Block a user