Neigungs-Umweg gilt fuer jedes Kommando, nicht nur setOrientation
Die Kugelschreiber-Mechanik haengt nicht am Kommando, sondern an der Neigung selbst - "Position+Neigung" braucht den Umweg ueber 0 % genauso wie "Neigung". Erkannt wird er deshalb am Parameter und nicht am Kommandonamen: beide Kommandos nennen ihren Neigungsparameter "Neigung", das Geraetemodell liefert die Zuordnung also mit. Geprueft im Probelauf in beiden Versendern: Position+Neigung mit 20 % geht direkt raus, mit 90 % mit vorgeschaltetem Umweg. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -391,9 +391,16 @@ class TahomaTransport(Transport):
|
||||
# 0 % zurueck, sonst rastet sie nicht um - ein "Neigung 80 %" ohne
|
||||
# diesen Umweg bleibt wirkungslos.
|
||||
#
|
||||
# Das gilt fuer jedes Kommando, das die Neigung setzt - "Neigung" ebenso
|
||||
# wie "Position+Neigung". Erkannt wird es deshalb am Parameter und nicht
|
||||
# am Kommandonamen: beide heissen ihren Neigungsparameter "Neigung".
|
||||
#
|
||||
# Dasselbe steht in restricted/commands.php: beide Versender brauchen es.
|
||||
NEIGUNG_DIREKT_MAX = 30
|
||||
|
||||
# So heisst der Neigungsparameter im Geraetemodell.
|
||||
NEIGUNG_PARAMETER = "Neigung"
|
||||
|
||||
# So lange wird hoechstens auf das Ende einer Neigungsfahrt gewartet.
|
||||
# Auf core:MovingState ist dabei kein Verlass - gemessen hat die Box
|
||||
# waehrend einer Neigungsfahrt kein einziges Mal "faehrt" gemeldet, der
|
||||
@@ -453,13 +460,17 @@ class TahomaTransport(Transport):
|
||||
# setClosureAndOrientation also erst Position, dann Winkel.
|
||||
parameter = [self._zahl(p["wert"]) for p in aktion["params"]]
|
||||
|
||||
neigungsziel = None
|
||||
for p in aktion["params"]:
|
||||
if p["name"] == self.NEIGUNG_PARAMETER:
|
||||
wert = self._zahl(p["wert"])
|
||||
if isinstance(wert, (int, float)):
|
||||
neigungsziel = wert
|
||||
|
||||
# Kugelschreiber-Mechanik, siehe NEIGUNG_DIREKT_MAX. Der Umweg gehoert
|
||||
# hierher und nicht in die Automatik - sonst muesste ihn jeder kennen,
|
||||
# der eine Jalousie anspricht.
|
||||
umweg = (aktion["command_url"] == "setOrientation"
|
||||
and len(parameter) == 1
|
||||
and isinstance(parameter[0], (int, float))
|
||||
and parameter[0] > self.NEIGUNG_DIREKT_MAX)
|
||||
umweg = neigungsziel is not None and neigungsziel > self.NEIGUNG_DIREKT_MAX
|
||||
|
||||
if self.dry_run:
|
||||
logger.info("[dry-run] Tahoma %s %s%s", aktion["command_url"], parameter,
|
||||
|
||||
Reference in New Issue
Block a user