Compare commits
No commits in common. "main" and "v0.1.5" have entirely different histories.
5 changed files with 9 additions and 30 deletions
|
@ -176,7 +176,6 @@ class Application(models.AppInterface):
|
||||||
systimecfg.set_system_timezone(tz, self.cfg.cmd_set_timezone)
|
systimecfg.set_system_timezone(tz, self.cfg.cmd_set_timezone)
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
"""Starte die Anwendung"""
|
|
||||||
logging.info('Starting application')
|
logging.info('Starting application')
|
||||||
self._running = True
|
self._running = True
|
||||||
self.io.start()
|
self.io.start()
|
||||||
|
@ -186,7 +185,6 @@ class Application(models.AppInterface):
|
||||||
self.grpc_server.start()
|
self.grpc_server.start()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
"""Stoppe die Anwendung"""
|
|
||||||
logging.info('Stopping application')
|
logging.info('Stopping application')
|
||||||
self._running = False
|
self._running = False
|
||||||
self.grpc_server.stop(None)
|
self.grpc_server.stop(None)
|
||||||
|
|
|
@ -238,7 +238,7 @@ class _MCP23017Device:
|
||||||
Beispiel: ``0x27/B0`` (MCP23017 mit I2C-Adresse 0x27, Pin B0)
|
Beispiel: ``0x27/B0`` (MCP23017 mit I2C-Adresse 0x27, Pin B0)
|
||||||
|
|
||||||
Um den Zustand eines Geräts zu invertieren, einfach ``/!``
|
Um den Zustand eines Geräts zu invertieren, einfach ``/!``
|
||||||
an den Konfigurationsstring anfügen: ``0x27/B0/!``
|
an den Konfiguraionsstring anfügen: ``0x27/B0/!``
|
||||||
|
|
||||||
:param cfg_str: Konfigurationsstring
|
:param cfg_str: Konfigurationsstring
|
||||||
:return: Neues ``_MCP23017Device``-Objekt
|
:return: Neues ``_MCP23017Device``-Objekt
|
||||||
|
|
|
@ -51,10 +51,10 @@ class Job:
|
||||||
and date_now.minute == self.date.minute
|
and date_now.minute == self.date.minute
|
||||||
|
|
||||||
return date_now.year == self.date.year \
|
return date_now.year == self.date.year \
|
||||||
and date_now.month == self.date.month \
|
and date_now.month == self.date.month \
|
||||||
and date_now.day == self.date.day \
|
and date_now.day == self.date.day \
|
||||||
and date_now.hour == self.date.hour \
|
and date_now.hour == self.date.hour \
|
||||||
and date_now.minute == self.date.minute
|
and date_now.minute == self.date.minute
|
||||||
|
|
||||||
def serialize(self) -> Dict[str, Any]:
|
def serialize(self) -> Dict[str, Any]:
|
||||||
return {
|
return {
|
||||||
|
@ -96,10 +96,6 @@ class Job:
|
||||||
)
|
)
|
||||||
|
|
||||||
def validate(self, app: 'AppInterface'):
|
def validate(self, app: 'AppInterface'):
|
||||||
"""
|
|
||||||
Prüfe, ob der Task gültige Daten enthält
|
|
||||||
(Zonen existieren, Bewässerungszeit > 0)
|
|
||||||
"""
|
|
||||||
if not self.zones:
|
if not self.zones:
|
||||||
raise util.InvalidInputException('No zones set')
|
raise util.InvalidInputException('No zones set')
|
||||||
if self.duration < 1:
|
if self.duration < 1:
|
||||||
|
@ -313,7 +309,7 @@ class AppInterface:
|
||||||
|
|
||||||
:param request: Objekt, dass die Parameter der neuen Aufgabe enthält.
|
:param request: Objekt, dass die Parameter der neuen Aufgabe enthält.
|
||||||
:return: Statusobjekt (Information, ob eine Aufgabe gestartet oder gestoppt
|
:return: Statusobjekt (Information, ob eine Aufgabe gestartet oder gestoppt
|
||||||
wurde).
|
wurde).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def start_task(self, source: Source, zone_id: int, duration: int,
|
def start_task(self, source: Source, zone_id: int, duration: int,
|
||||||
|
@ -325,7 +321,7 @@ class AppInterface:
|
||||||
:param zone_id: ID der Bewässerungszone
|
:param zone_id: ID der Bewässerungszone
|
||||||
:param duration: Bewässerungsdauer in Sekunden (0 für Standarddauer)
|
:param duration: Bewässerungsdauer in Sekunden (0 für Standarddauer)
|
||||||
:param queuing: Neue Aufgabe in die Warteschlange einreihen, wenn momentan
|
:param queuing: Neue Aufgabe in die Warteschlange einreihen, wenn momentan
|
||||||
eine andere Zone bewässert wird.
|
eine andere Zone bewässert wird.
|
||||||
:return: True wenn die Aufgabe erfolgreich gestartet wurde
|
:return: True wenn die Aufgabe erfolgreich gestartet wurde
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ class TaskQueue(util.StoppableThread, TaskHolder):
|
||||||
|
|
||||||
:param task: Neuer Task
|
:param task: Neuer Task
|
||||||
:param queuing: Füge Task der Warteschlange hinzu, wenn bereits
|
:param queuing: Füge Task der Warteschlange hinzu, wenn bereits
|
||||||
ein anderer Task läuft
|
ein anderer Task läuft
|
||||||
:return: True wenn Task erfolgreich hinzugefügt
|
:return: True wenn Task erfolgreich hinzugefügt
|
||||||
"""
|
"""
|
||||||
if not queuing and self.running_task is not None:
|
if not queuing and self.running_task is not None:
|
||||||
|
|
|
@ -129,20 +129,9 @@ class StoppableThread(threading.Thread):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def run_cycle(self):
|
def run_cycle(self):
|
||||||
"""
|
pass
|
||||||
Führe einen Durchlauf des Threads aus.
|
|
||||||
|
|
||||||
Diese Funktion darf nicht blockieren, sonst kann der
|
|
||||||
Thread nicht gestoppt werden.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""
|
|
||||||
Führe die ``run_cycle()``-Funktion in
|
|
||||||
Endlosschleife aus, mit einer durch das
|
|
||||||
``interval``-Attribut bestimmten Verzögerung zwischen
|
|
||||||
den Durchläufen.
|
|
||||||
"""
|
|
||||||
try:
|
try:
|
||||||
self.setup()
|
self.setup()
|
||||||
|
|
||||||
|
@ -157,10 +146,6 @@ class StoppableThread(threading.Thread):
|
||||||
sys.excepthook(*sys.exc_info())
|
sys.excepthook(*sys.exc_info())
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
"""
|
|
||||||
Stoppe den Thread und warte bis er beendet. Dies dauert
|
|
||||||
maximal ``interval`` + Durchlaufzeit von ``run_cycle()``.
|
|
||||||
"""
|
|
||||||
self._stop_signal.set()
|
self._stop_signal.set()
|
||||||
try:
|
try:
|
||||||
self.join()
|
self.join()
|
||||||
|
|
Loading…
Add table
Reference in a new issue