FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: CoolTux am 22 Februar 2016, 06:24:41

Titel: Abarbeitung von CommandSet Strings
Beitrag von: CoolTux am 22 Februar 2016, 06:24:41
Guten Morgen,


set Tablet volume 10; set Tablet ttsMsg Dies ist ein Test der Reihenfolge der Befehle; set Tablet volume 5


Wie genau wird dieser CommandSet abgearbeitet. Ich bilde mir ein das dies von Links nach Rechts abgearbeitet wird, aber oft kommt es vor das erst der ttsMsg und danach die beiden volume Befehle am Endgerät ankommmen. Selbst wenn ich es so mache


set Tablet volume 10; set Tablet ttsMsg Dies ist ein Test der Reihenfolge der Befehle; sleep 1; set Tablet volume 5


muss ich in der Tat es am besten so machen das ich bei einer Befehlsreihe welche Abhängigkeiten zu einander hat hinter jedem Befehl ein sleep setze? Ich denke mal es wäre dann sicherlich Sinnvoll dies im Modulcode schon so zu steuern, oder? Zu mindest bei Reihenfolgen die ich selbst kenne und weiß das da Abhängigkeiten sind. So wie bei meinem oberen Beispiel.




Grüße
Leon
Titel: Antw:Abarbeitung von CommandSet Strings
Beitrag von: rudolfkoenig am 22 Februar 2016, 09:08:56
Alle Befehle in einer Befehlskette werden von links nach rechts abgearbeitet. Wenn aber ein Befehl asynchron weiterlaeuft und etwas laenger benoetigt (meine Vermutung bei ttsMsg), dann kann sie von den anderen ueberholt werden. Die Loesung fuer die Synchronization ist in diesem Fall auf Papier einfach: ttsMsg muss ein Event generieren, wenn es fertig ist, voraufhin per notify die Lautstaerke wieder abgesenkt wird. Ob das auch praktikabel ist, weiss ich nicht.
Titel: Antw:Abarbeitung von CommandSet Strings
Beitrag von: CoolTux am 22 Februar 2016, 09:16:26
Hallo Rudolf,

Ok dann weiß ich schon mal Bescheid, ich danke Dir. Dann muss das Problem an der Gegenstelle liegen. Denn da ist es so das alle ankommenden Kommandos in eine Warteschleife kommen und diese dann nach einander abgearbeitet werden. Der ttsMsg brauch länger bei der Abarbeitung an der Gegenstelle, das ist richtig, aber er sollte ja dennoch als zweites ankommen und dem zu folge auch so in der Warteschleife landen. Oder meinst Du die Abarbeitung innerhalb von FHEM würde länger dauern für den ttsMsg?


Vielen Dank
Titel: Antw:Abarbeitung von CommandSet Strings
Beitrag von: Markus Bloch am 22 Februar 2016, 09:18:00
Vielleicht könnte man ja sowas mit einer Art "until" Befehl lösen:

until <eventregexp> <cmd ...>

So dass man folgendes machen könnte (Beispielhaft):

set Tablet volume 10; set Tablet ttsMsg Dies ist ein Test der Reihenfolge der Befehle; until Tablet:ttsResult set Tablet volume 5

Der Befehl würde dann ein temporäres notify mit der regexp anlegen und sobald es triggert, wieder löschen.

Gruß
Markus
Titel: Antw:Abarbeitung von CommandSet Strings
Beitrag von: CoolTux am 22 Februar 2016, 09:25:42
Wenn müsste ich das im Modul abfangen, sowas kann ich meinen Usern ja nicht zumuten. Bisschen usability sollte doch vorhanden sein   ;D

Ich schaue mir das noch mal in Ruhe an. Danke Euch erstmal für die Tips und Auskünfte.



Grüße
Leon