Kollision alter Exit-Task und neuer Enter-Task verhindern

  • 17 Antworten
  • Letztes Antwortdatum
S

sfx2k

Neues Mitglied
0
Hallo,

ich stehe bei einem meiner Profile vor einem Problem, das ich selbst nicht lösen kann, und hoffe auf Eure Unterstützung.

Die Suche habe ich bemüht, konnte aber leider nichts finden, was mich glücklich macht...

Folgende Situation:

Ich habe folgendes Profil:
Eingangstask: Wenn "Display unten" und "Power = Steckdose" dann "lautlos=ein" und "Flugmodus".
Ausgangstask: "Flugmodus aus" und "Warte 5 Minuten" dann "lautlos=aus"

Sinn: wenn ich nachts das Handy lade, soll es leise sein und der Flugmodus wird eingeschaltet.
Wenn ich das Gerät dann morgens wieder abstöpsle, soll der Flugmodus ausgeschaltet werden und erst nach 5 Minuten (bis ich außer Reichweite der noch schlafenden Mitbewohner bin) lautlos aus, damit die anderen von den dann eintreffenden Benachrichtigungen nicht geweckt werden.

So, fällt mir nun abends, nachdem der Nachtmodus bereits aktiv ist, aber ein, dass ich doch nochmal schnell im Internet was schauen muss und somit eine Datenverbindung brauche, habe ich ein Problem.

Drehe ich das Handy um, so schaltet sich der Flugmodus ab und ich kann im Internet suchen - alles lecker.
Dummerweise läuft jetzt im Hintergrund noch der Ausgangs-Task, der ja 5 Minuten wartet und jetzt verhindert, dass der Eingangs-Task gestartet werden kann wenn ich das Handy wieder anschließe und umdrehe. Dieses passiert erst dann, wenn der Ausgangs-Task abgeschlossen ist.

Nun meine Frage: kann ich irgendwie veranlassen, dass ein laufender Ausgangs-Task bei neuem Eingangs-Task abgebrochen wird?
Die Task-Einstellungen mit der Kollision habe ich bereits erfolglos ausprobiert.
 
Bau doch in den Start-Task einfach den Befehl

Stop "Exit-Task" if %TIME <23:00(23 Uhr als Beispiel)

ein. Dann sollte Dein Problem weg sein.

Alternativ kannst Du natürlich auch den Wait-Befehl mit einer Uhrzeit verknüpfen...
 
Hallo und vielen Dank für Deine Antwort.

Alle zeitlichen Einschränkungen sind leider keine schöne Lösung, da es dann nicht mehr generisch ist :(

Hat noch jemand eine andere Idee?
 
Moin

Entweder Du beendest im Eingangstask den Ausgangstask (Stop Ausgangstask), oder
Du packst beides in einen Task und lässt das Tasker "Collision Handling" (Task - Properties) die Arbeit erledigen.
Code:
if %PACTIVE ~ *,PROFILNAME,*
  Befehle aus dem Eingangstask
Else
  Befehle aus dem Ausgangstask
End If
Anturix
 
Hallo,

ich würde gerne im Eingangstask den Ausgangstask stoppen, weiß aber nicht wie :/
Die Routine 'Stop' habe ich bereits gefunden, weiß aber nicht, wie ich diese konfigurieren soll.
Als Auswahl habe ich dort:
(Fehler)
Task

Der Task ist optional; ich weiß aber nicht, was ich da eintragen soll; 'Ausgangstask' wohl kaum, oder? :)
Der Ausgangstask ist kein benamter Task.
 
Moin
sfx2k schrieb:
Der Ausgangstask ist kein benamter Task.
Dann gib ihm einen Namen.

Anonyme Tasks sind ohnehin selten sinnvoll.

Anturix
 
Habe ich getan; leider funktioniert das nicht.
Der Eingangstask wird erst neu gestartet nach der regulären Wartezeit des Ausgangstasks :(

Ich habe das Profil vereinfacht mal exportiert:

<TaskerData sr="" dvi="1" tv="4.2u3">
<Profile sr="prof36" ve="2">
<cdate>1394174407529</cdate>
<edate>1394227318827</edate>
<id>36</id>
<mid0>39</mid0>
<mid1>41</mid1>
<nme>Test</nme>
<State sr="con0">
<code>165</code>
<Str sr="arg0" ve="3">%Blubb</Str>
<Int sr="arg1" val="5"/>
<Str sr="arg2" ve="3">1</Str>
</State>
</Profile>
<Task sr="task39">
<cdate>1394174414312</cdate>
<edate>1394227318827</edate>
<id>39</id>
<pri>10</pri>
<rty>1</rty>
<Action sr="act0" ve="3">
<code>137</code>
<Int sr="arg0" val="0"/>
<Str sr="arg1" ve="3">Exittask</Str>
</Action>
<Action sr="act1" ve="3">
<code>30</code>
<Int sr="arg0" val="0"/>
<Int sr="arg1" val="5"/>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<Int sr="arg4" val="0"/>
</Action>
<Action sr="act2" ve="3">
<code>61</code>
<Int sr="arg0" val="200"/>
</Action>
<Action sr="act3" ve="3">
<code>310</code>
<Int sr="arg0" val="2"/>
</Action>
</Task>
<Task sr="task41">
<cdate>1394226272214</cdate>
<edate>1394226414513</edate>
<id>41</id>
<nme>Exittask</nme>
<Action sr="act0" ve="3">
<code>30</code>
<Int sr="arg0" val="0"/>
<Int sr="arg1" val="30"/>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<Int sr="arg4" val="0"/>
</Action>
<Action sr="act1" ve="3">
<code>310</code>
<Int sr="arg0" val="0"/>
</Action>
</Task>
</TaskerData>

Die Variable Blubb wird auf 1 gesetzt um den Eingangstask zu starten.
 
Moin

Kein Mensch kann XML-Dateien vernünftig lesen
Bitte noch mal exportieren als "Description ..." und dann mit CODE-Tags posten.

Anturix
 
Lange auf das Profil drücken, dann oben Einstellung und "Task Reihenfolge forcieren " wegnehmen.

Fas Mitdenken des Taskers nervt öfters.
 
Georgius schrieb:
Lange auf das Profil drücken, dann oben Einstellung und "Task Reihenfolge forcieren " wegnehmen.

Fas Mitdenken des Taskers nervt öfters.

Super! Manchmal ist es doch einfacher, als man denkt :)
Vielen vielen Dank!
 
Ich dachte das würde vielleicht auch mein Problem lösen, dem ist aber nicht so:

Ich schalte Bluetooth manuell an verbinde z.B. mein Headset mit dem Handy. Wenn dann drei Minuten lang keine Verbindung besteht, soll Bluetooth deaktiviert werden, das Profil sieht so aus:


Profil: Bluetooth verbunden (24)
Status: Bluetooth verbunden [ Name:* Adresse:* ]
Status: Nicht Profil Aktiv [ Name:Akku schwach I ]

Eingang: Bluetooth an (11)
A1: Blutetooth [ setzen:An ]
A2: Stopp [ (Fehler):Aus Task:Bluetooth aus ]

Ausgang: Bluetooth aus (10)
A1: Warte [ MS:0 Sekunden:0 Minuten:3 Std.:0 Tage:0 ]
A2: Blutetooth [ setzen:Aus ]


Wenn jetzt innerhalb der drei Minuten die Verbindung wieder hergestellt wird, wird Bluetooth trotzdem am Ende der drei Minuten für einen Moment deaktiviert und dann wieder aktiviert.

Deaktiviere ich das Forcieren der Task Reihenfolge wird Bluetooth ohne Wartezeit deaktiviert.

Mit den Bordmitteln "wait" und "stop" sollte sich doch so etwas eigentlich realisieren lassen, ohne auf Variablen und "if"s zurückgreifen zu müssen, oder?

Ps. Tapatalk bietet mir keine Code Formatierung an, auch komisch
 
Moin

Stop ohne Parameter beendet den aktuellen Task.
Du musst als Stop "Bluetooth Aus" verwenden.

Oder:
Code:
Bluetooth [setzen: Aus] If %PACTIVE !~ *,Bluetooth verbunden,*
Anturix
 
Zuletzt bearbeitet:
Aber habe ich doch? :o

3a5ypyqu.jpg
 
Moin

Dann wirf mal einen Blick in dein LOG-File (Menü - More - Run Log).
Da steht dann, was genau passiert ist.

tuht schrieb:
Tapatalk bietet mir keine Code Formatierung an, auch komisch
Die musst Du von Hand einfügen. Wie alle anderen BBCodes auch.

Anturix
 
OK, hier mal das Logfile:
Code:
20140309 22.20.34 P Active   ID24     Bluetooth verbunden.
20140309 22.20.35 T Running  ID11     Bluetooth an
20140309 22.20.35 A OK       ID11.1   Bluetooth an.Blutetooth
20140309 22.20.35 A OK       ID11.2   Bluetooth an.Stopp
20140309 22.20.35 T ExitOK   ID11     Bluetooth an
20140309 22.20.41 P Inactive ID24     Bluetooth verbunden.
20140309 22.20.41 T Running  ID10     Bluetooth aus
20140309 22.20.49 P Active   ID24     Bluetooth verbunden
20140309 22.20.50 T Running  ID11:2   Bluetooth an
20140309 22.20.50 A OK       ID10.1   Bluetooth aus.Warte
20140309 22.21.11 A OK       ID10.2   Bluetooth aus.Blutetooth
20140309 22.21.11 T ExitOK   ID10     Bluetooth aus
20140309 22.21.12 P Inactive ID24     Bluetooth verbunden
20140309 22.21.12 T Running  ID10:3   Bluetooth aus
20140309 22.21.21 A OK       ID11:2.1 Bluetooth an.Blutetooth
20140309 22.21.21 A OK       ID11:2.2 Bluetooth an.Stopp
20140309 22.21.21 T ExitOK   ID10:3   Bluetooth aus
20140309 22.21.21 T ExitOK   ID11:2   Bluetooth an
20140309 22.21.22 P Active   ID24     Bluetooth verbunden
20140309 22.21.22 T Running  ID11     Bluetooth an
20140309 22.21.22 A OK       ID11.1   Bluetooth an.Blutetooth
20140309 22.21.22 A OK       ID11.2   Bluetooth an.Stopp
20140309 22.21.22 T ExitOK   ID11     Bluetooth an

Ich habe die Wartezeit bis Bluetooth deaktiviert wird testweise auf 30 Sekunden gestellt.

Und zwecks besserer Übersicht, das Logfile auch noch als Screenshot im Anhang
 

Anhänge

  • Screenshot_2014-03-09-22-33-30.png
    Screenshot_2014-03-09-22-33-30.png
    34,9 KB · Aufrufe: 290
Zuletzt bearbeitet:
Würde mal als 1. den Exittask stoppen
 
Moin

Damit was mit dem LOG-File anfangen können, musst Du schon dazu schreiben, was Du wann gemacht hast.
Dazu empfielt es sich, mit Stoppuhr zu arbeiten und genau auf 15 Sek eine Aktion auszuführen.
Dein Warte ist mit 30Sek. dafür zu kurz (mind. 1Min).

Einfacher wäre es, wenn Du meinen Vorschlag aus #4 aufgreifst.

Anturix
 
Hey,

Anturix hat recht. Und ohne die If's ist das kaum hinzubekommen.

Profil: Bluetooth
Bluetooth verbunden *, *

Eingang und Ausgangstask: Bluetooth timeout
A1: If (%PACTIVE !~ *,Bluetooth,*)
A2: Warte 3 Minuten
A3: Bluetooth aus
A4: End if

Im Task unter Einstellungen: kollissionshandling: aktiven Task abbrechen (Wichtig! )

Am besten legst du erst den Task an bevor du ihn mit dem Kontext verbindest. So sollte es an sich funktionieren.

Gruß,

Shantiel
 

Ähnliche Themen

G
Antworten
1
Aufrufe
195
bbfh
bbfh
H
Antworten
3
Aufrufe
374
Horgul123
H
b0mb
  • b0mb
Antworten
1
Aufrufe
152
b0mb
b0mb
Zurück
Oben Unten