Mehr als drei States um ein Profil zu triggern

  • 11 Antworten
  • Letztes Antwortdatum
M

metalhead79

Ambitioniertes Mitglied
1
Hallo,

Frage:
Gibt es die Möglichkeit bei "Add kontext" --> "State" --> "Variable" mehrere Variablen auszuwerten? if(Variable1 && Variable2 || Variable3 ...). Natürlich ohne irgendwelche Hilfsvariablen in den Threads zu berechnen (ist zu unübersichtlich und sehr schlecht zu debuggen).

Warum brauche ich das (für die die es interessiert:tongue:):
Ich habe relativ komplexe Profile für Klingeltöne, Lautstärke und Netzwerkeinstellungen und benötige mehr als drei Bedingungen um ein Profil zu triggern.
Es ist eingentlich immer nur eine Bedingung und dann mehrere Variablen die in anderen Tasks gesetzt/gelöscht werden.

Momentan habe ich folgende Profile:
Home --> Cells near wenn daheim
Work --> Cells near wenn auf arbeit
Car --> Bluetooth connected (WLAN aus)
Silent --> Vibrationsmodus 20-7Uhr
Offline --> Datenverbindungen aus 1-6Uhr
WLAN --> Mit WLAN verbunden (BT, mobile Daten aus)

Home, Work und Car können immer nur jeweils ein Profil aktiv sein, die restlichen können für jedes Profil zusätzlich aktiv sein.

Momentanes Problem:
Home aktiv, WLAN aktiv. Home verliert die Bedingung Cells Near kurz und der default Task wird ausgeführt. Danach wird die Bedingung Home wieder getriggert. Da WLAN aber durchgängig aktiv geblieben ist, wird dieses nicht mehr ausgeführt (--> bluetooth bleibt also beispielsweise an).

Ich könnte natürlich über ein Flag das ausführen der Entsprechenden Tasks verhindern, aber das Profil würde trotzdem zwischenzeitlich inaktiv werden und natürlich auch so im Log stehen (häßlich und schwer zu debuggen, da das ziemlich häufig vorkommt).

Besten Dank.
Gruß Metalhead
 
Dann machst du etwas unsauberes. Ein Task sollte in meinen Augen immer nur seine von sich gesetzten Tätigkeiten beenden.

Also sollte der Standardtask nicht BT einschalten wenn er es am Ende nicht wieder ausschaltet.
 
Georgius schrieb:
Dann machst du etwas unsauberes. Ein Task sollte in meinen Augen immer nur seine von sich gesetzten Tätigkeiten beenden.

Hi,

Du meinst Enter-Task aktiviert etwas, Exit-Task deaktiviert es.
Ich brauche aber irgendeine Defaulteinstellung (default-task, der immer als Exit-Task verwendet wird).
Genial wäre natürlich ein Default-Profil, daß immer aktiv wird, wenn kein anderes Profil aktiv ist (sowas gibt's aber nicht, zumindest hab ich nix dergleichen gefunden).

Default-Task soll definierte Settings einstellen (unabhängig davon was ich mal manuell geändert habe).
Eine elegantere Lösung fällt mir dazu nicht ein.

Cool wäre eine Tasker-Funktion, die einfach Java-Code compiliert und umsetzt. Mit API zum Settings verändern, das wäre genial. :tongue:

Aber mal zurück zur Frage: Mehrere Variablen verknüpfen geht nicht. Richtig?

Gruß Metalhead
 
Es gibt irgendwo eine Diskussion über Defaulttask. Es gibt eine Variable die alle aktiven Profile enthält. Mit dieser könnte man arbeiten.

Man könnte auch eine Variable nehmen und bei relevanten Task wird sie im Entertask um 1 erhöht, im exittask um 1 reduziert. Dann müsste sie 0 sein wenn kein Profil läuft.
 
Georgius schrieb:
Es gibt irgendwo eine Diskussion über Defaulttask. Es gibt eine Variable die alle aktiven Profile enthält. Mit dieser könnte man arbeiten.

Hi,

gerade die Doku gelesen (%PACTIVE wäre das).
Hm, muß ich mir in 'ner ruhigen Minute mal anschauen aber die Variable-Split-Funktion hat mich schon beim rausfiltern der SSID noch nicht sonderlich überzeugt (da bleiben irgendwie ungenutzte Variablen übrig).

Es gibt doch auch Arrays, kann darüber mehrere Indizes abfragen?

Gruß Metalhead
 
Georgius schrieb:
Was meinst Du damit?

Hi,

In einem Array stehen ja mehrere Variablen.
Ist aber, so wie es aussieht beim Tasker auch etwas anders gehandelt.

Gruß Metalhead
 
Hmmmm, irgendwie ist mir nicht ganz klar, welches Problem du eigentlich lösen möchtest.

Natürlich könntest du in eine Variable ",Home,Work,...," schreiben und dann dagegen matchen. Aber Tasker ist mehr dafür gemacht auf Zustände und deren Änderung zu reagieren. Daher im ersten Gedanken:

Profil Home: setze bestimmte Einstellungen / bei Verlassen zurücksetzen
Profil Work: ... Vorgehen analog Home ...

Profil Silent von 20-7 Uhr: merke Vibrattionsstatus + setze Vibration / bei Verlassen auf gemerkten Status zurücksetzen


Am Profil Silent wird jetzt sichtbar, dass es egal ist wo man ist = in welchem Status man ist. Natürlich sind jetzt noch die Konflikte zu bedenken, wenn sich während des Silent-Profils der Standord ändert. Aber da hilft ggf. ein IF mit match gegen %PACTIVE oder der Kontext Profile Home NOT active.

Und wenn Teile der Tasks identisch sind, dann lagere die in kleine Tasks aus und nutze PERFORM TASK.


Ein Default-Profile habe ich noch nicht benötigt. Sollte aber mit dem Kontext:
- %PACTIVE Not set
funktionieren. Hast dann halt nur eine kurze zeitliche Lücke zwischen dem Inaktiv-werden des letzten Profils und dem Aktiv-werden des Default-Profils und darfst nur einen ENTER-Task verwenden und keinen Exit-Task.
 
Hi,

die eigentliche Frage wurde leider noch nicht beantwortet (interessiert mich nämlich auch ;)): Kann man mehrere Variablen in einem Profile logisch verknüpfen?

Also AND geht, indem man in dem Profil eine weitere Bedingung hinzufügt:
Code:
Profil "XY"
Trigger:
     1. State -> Variable -> Variable Value
          Name: %VAR1
          Op: Matches
          Value: 1
     2. State -> Variable -> Variable Value
          Name: %VAR2
          Op: Matches
          Value: 1
Task:
    ...
Aber wie macht man das, wenn man die beiden %VAR1 und %VAR2 ODER-verknüpfen will? Geht das überhaupt in einem Profile oder muss man da 2 Profiles bauen, die dann die selbe Task ausführen?

Joline

P.S. Eigentlich ist es egal, welchen Trigger man nimmt. Die Frage bleibt aber: Kann man überhaupt in einem Profile Trigger ODER-verknüpfen?
 
Zuletzt bearbeitet:
Hi,

ja das geht.

State -> Variable -> Variable Value
Name: %VAR1/%VAR2
.
.
.


Gruß

Chillmann
 
Hi,

kann man auch mehrere Trigger innerhalb eines Profiles ODER-verknüpfen?

Also z.B. soll beim Start von App1 (trigger 1) ODER App2 (trigger 2) die gleiche Task ausgeführt werden. (Sinn der Sache: So wenig wie möglich Profiles)
 
Joline2 schrieb:
Also z.B. soll beim Start von App1 (trigger 1) ODER App2 (trigger 2) die gleiche Task ausgeführt werden. (Sinn der Sache: So wenig wie möglich Profiles)

Also mit Apps geht es definitiv über Profil-Application
Wenn man dort mehrere Apps auswählt, werden die ODER ausgewertet.
Ich habe so z.B. Kamera und Maps ausgewählt, um beim Start die Displayhelligkeit auf max zu setzen.
 

Ähnliche Themen

coolzero3389
Antworten
1
Aufrufe
240
coolzero3389
coolzero3389
X
Antworten
0
Aufrufe
70
xyzUpdate
X
Viper73
Antworten
3
Aufrufe
542
Viper73
Viper73
Zurück
Oben Unten