Abarbeitung von CommandSet Strings

Begonnen von CoolTux, 22 Februar 2016, 06:24:41

Vorheriges Thema - Nächstes Thema

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

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.

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Markus Bloch

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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net