Llama und Variablen - HilfeThread

Cua

Cua

Ehrenmitglied
54.531
Da es immer wieder zu Fragen bezüglich Variablen in Llama kommt, versuche ich mal einen kurzen Einblick in dieses Gebiet zu geben.

Variablen in Llama sind absolut frei konfigurierbar. Sowohl im Namen als auch in ihrem Wert. Jede Variable kann unendlich viele (oder zumindest soviele Werte, wie man braucht ;)) annehmen.
Sie müssen "aktiv" geschaltet werden, d.h. keine Variable nimmt einen Wert einfach so an.

Variablen konfigurieren:
Diese können sowohl als (zusätzliche) Bedingung als auch als (zusätzliches) Ereignis verwendet werden

Ein Beispiel: (Wir lassen eine Variable als Ereignis einen bestimmten Wert annehmen)

neue Regel:

Bedingung:
- WLAN-Netzwerk verbunden

Ereignis:

hier suchen wir in der Ereignis-Liste den Eintrag "Llama-Variable", es öffnet sich dieses Fenster:

Variable erstellen.png

- bei "Variablenname" können wir uns eine neue Variable erstellen indem wir einfach einen Namen eingeben.

Dies tun wir und nennen die Variable WLAN

- unten drunter der "Variablenwert": hier kann reingeschrieben werden, was man will, beispielsweise "Wlan ist verbunden", "Im WLAN", der Fantasie sind keine Grenzen gesetzt. ;)
Da ich beruflich aus der Elektronik-Ecke komme, liebe ich die Zahlen 0 ("Aus", "Nein") und 1 ("An", "ja") aus diesem Grund schreibe ich da als Wert eine 1 rein, weil wir ja mit einem WLAN verbunden sind ;)
im Idealfall sieht das jetzt so aus:

Variable erstellt.png

Wir bestätigen mit ok und haben so unsere erste Variable erstellt und ihr einen bestimmten Wert zugewiesen.
Die Regel sollte jetzt so aussehen

Regel 1.png

Der Wert der Variable (Sie hat jetzt den Wert "1") bleibt solange bestehen, bis die Hölle zufriert oder wir der Variable einen anderen Wert verpassen.

Dafür erstellen wir eine neue Regel (Die natürlich logischerweise einen Sinn ergeben sollte):

Bedingung:
- WLAN-Netzwerk getrennt

Ereignis:
Wir suchen in der Ereignisliste wieder den Eintrag Llama-Variable
neben dem Feld Variablenname drücken wir auf den Pfeil
und erhalten eine Übersicht aller unsere bereits erstellten Variablen. Dort suchen wir uns die gewünschte Variable aus (in unserem Beispiel "WLAN").

Variable wählen.png

Man kann den Namen natürlich auch wieder eintippen, aber bedenkt: vertippt man sich, erstellt man somit eine neue Variable und wundert sich dann später, weshalb Regeln nicht funktionieren ;)

Im Feld Variablewert geben wir der Variable den Wert 0 indem wir selbige reinschreiben (Wie in der vorherigen Regel mit der 1)
Auch hier kann man auf den Pfeil drücken und sich alle Werte, die der Variable je gegeben wurden anschauen und auswählen. Auch das ist sinnvoll, wenn man der Variable einen bereits erstellten Wert geben möchte.

Die 2. Regel sollte jetzt so aussehen:

Regel 2.png

Ab sofort hat die Variable WLAN definierte Werte (Zustände)
Nämlich, wenn wir mit einem WLAN verbunden sind, hat sie den Wert "1"
und wenn wir mit keinem WLAN verbunden sind hat sie den Wert "0"

Wofür brauchen wir jetzt Variablen?

Mit Variablen lassen sich z.B. Intervalle schalten (Siehe dazu auch hier) oder immerwiederkehrende Ereignisse vereinfachen.
Z.B. ist es ja ab Lollipop nicht mehr möglich mit Llama alleine GPS oder mobile Daten ein- bzw. auszuschalten. Dafür benötigt man z.B. die App "Secure Settings" und Root. Wenn man nun in mehreren Regeln GPS bzw. mobile Daten schalten möchte, ist es immer ein größerer Aufwand.

So habe ich mir Variablen erstellt, die das Auslösen.

ganz einfach erklärt:

Ich habe mir 2 Regeln erstellt, die die mobilen Daten mithilfe "Secure Settings" Ein- bzw. Ausschalten.

Dafür nutze ich jeweils als Bedingung den Wert der Variable "Daten ein"

Bedingung:
- Variable "Daten ein" hat den Wert 1 (oder eben 0)

als Ereignis schaltet mir dann "Secure Settings" die mobilen Daten ein (oder eben aus),

Nun kann ich einfach in den Regeln, die die mobilen Daten schalten sollen den Wert der Variable "Daten ein" ändern lassen und muss nicht immer wieder über "Secure Settings" gehen.

Die beiden Regeln ("Daten aus" und "Daten ein")

Daten.png

Und hier Beispiele in denen ich die Variablen benutze

Regeln.png

in den Ereignissen weise ich der Variable "Daten ein" den entsprechenden Wert zu ("0" oder "1") und löse somit die entsprechende Regel aus
Wir erinnern uns:
Bedingung:
- Variable "Daten ein" hat den Wert 1 (oder eben 0)

als Ereignis schaltet mir dann "Secure Settings" die mobilen Daten ein (oder eben aus).
Das sollte für den Anfang reichen. Natürlich gibt es noch viel komplexere Möglichkeiten, Variablen einzusetzen.

Sollten weitere Fragen zur Verwendung von Variablen auftauchen, dürfen diese gern hier gestellt werden. ;)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Naderik, Cortes2410, vergilbt und 4 andere
Super Erklärung dank dir.
Ich kann unter 4.4 dennoch meine mobile Daten ausschalten nachts mit Llama. Du hast geschrieben, das ginge nicht. ??
 
Bei 4.4 braucht es zumindest Root.
 
Also bei mir nicht.. Bist du sicher? Oder meinst du 5.0?
 
Ok, bin mir nicht sicher bei den Daten und KitKat. :)
Ab 5.0 aber auf jeden Fall.

Edit, hab den Startpost entsprechend angepasst
 
Zuletzt bearbeitet:
Bleiben wir doch bei meinem konkreten Beispiel, daß ich eine Profilumschaltung nicht über die Zeitsperre (X Min.), sondern über eine Variable steuern möchte.
Diese Variable muß doch an irgendwas geknüpft sein. Handymasten auf verschiedenen Bahnstrecken geht nicht.
Vorschlag?
 
Kann mann den Wert einer Variable an eine andere Variable übergeben ?

Hintergrund:
Ich habe eine Variable DATA von 0 ... 3 zum Steuern und Abfragen meiner Datenverbindung(en):

0 = WLAN aus / mobile Daten aus
1 = WLAN ein / mobile Daten aus
2 = WLAN aus / mobile Daten ein
3 = WLAN ein / mobile Daten ein

Nun möchte ich für eine Positionsbestimmung (Energiesparmodus, also über verbundene Funkzellen und gefundene WLAN-Netzwerke) WLAN anschalten (egal ob schon an oder nicht), und danach den vorherigen zustand (DATA = 0 ... 3) wieder herstellen.
Mir ist klar dass ich die 4 möglichen Zustände von DATA alle einzeln mit einer Regel abfragen kann (4 Regeln), und mit 4 weiteren wieder herstellen.

wenn DATA=0 => TEMP=0 usw.

Schön wäre aber sowas wie TEMP=DATA / DATA=TEMP.

Geht so etwas ?
 
JohnDeere schrieb:
Bleiben wir doch bei meinem konkreten Beispiel, daß ich eine Profilumschaltung nicht über die Zeitsperre (X Min.), sondern über eine Variable steuern möchte.
Diese Variable muß doch an irgendwas geknüpft sein. Handymasten auf verschiedenen Bahnstrecken geht nicht.
Vorschlag?

Du erstellst eine Variable "Profilsperre" und fügst die als Bedingung in deine Regel ein, die das Profil schaltet:

- Variable "Profilsperre" hat den Wert "Sperre aus"

und als Ereignis in die selbe Regel:

- Variable "Profilsperre" auf "Sperre ein" setzen

Dann musst du noch eine verzögerte Regel erstellen

Bedingung:

- Variable "Profilsperre" hat den Wert "Sperre ein"

Ereignis (verzögert)

- Variable "Profilsperre" auf Wert "Sperre aus"

anders kannst du die Variable nicht einsetzen oder ich verstehe noch nicht ganz, was du meinst :unsure:

enshiro schrieb:
Kann mann den Wert einer Variable an eine andere Variable übergeben ?

Hintergrund:
Ich habe eine Variable DATA von 0 ... 3 zum Steuern und Abfragen meiner Datenverbindung(en):

0 = WLAN aus / mobile Daten aus
1 = WLAN ein / mobile Daten aus
2 = WLAN aus / mobile Daten ein
3 = WLAN ein / mobile Daten ein

Nun möchte ich für eine Positionsbestimmung (Energiesparmodus, also über verbundene Funkzellen und gefundene WLAN-Netzwerke) WLAN anschalten (egal ob schon an oder nicht), und danach den vorherigen zustand (DATA = 0 ... 3) wieder herstellen.
Mir ist klar dass ich die 4 möglichen Zustände von DATA alle einzeln mit einer Regel abfragen kann (4 Regeln), und mit 4 weiteren wieder herstellen.

wenn DATA=0 => TEMP=0 usw.

Schön wäre aber sowas wie TEMP=DATA / DATA=TEMP.

Geht so etwas ?
Wäre mir jetzt auf Anhieb nichts bekannt. Aber vielleicht kann man was mit deinen Regeln, in denen dieses Variable vorkommt, machen. Wäre schön, wenn du dir hier kundtun könntest.
 
  • Danke
Reaktionen: enshiro
Dachte ich mir schon (dass das nicht so ohne weiteres geht)

Ich mach es jetzt so, dass ich beim Schreiben eines Wertes in DATA den selben Wert in eine 2te Variable schreibe (DATArestore).
Mit Ausnahme beim Ändern von DATA zur Positionsbestimmung.

Im Anschluss wird DATArestore mit 4 Regeln für die 4 Möglichen Zustände ausgewertet und so DATA wieder hergestellt.
 
Hallo,

ich spiele auch viel mit Variablen, habe insgesamt 10 verschiedene im Einsatz. Diese werden beim Start des Handys initialisiert. Dabei bekomme ich folgenden Fehler (mein Englisch ist leider nicht so gut):

"Your events caused 5 consecutive event tests. Check your variable changes."

Kennt das jemand?

MfG
Holger
 
Ihre Ereignisse verursachten 5 Konsekutivereignis-Tests. Überprüfen Sie Ihre variablen Änderungen."
 
Danke, sowas ähnliches hat mir Google-Translater auch ausgespuckt, aber was bedeutet es?
 
du hast 5 Probleme die sich beissen

Ein Konsekutivsatz ist ein Nebensatz, der die Folge des im übergeordneten Satz genannten Sachverhaltes angibt. Der Konsekutivsatz wird daher auch als Folgesatzbezeichnet. Er steht oftmals an Stelle eines Pronominalobjekts, das sich auf ein schon erwähntes Ereignis bezieht. Der Konsekutivsatz gehört zu den Adverbialsätzen.

Nebensatz-Konjunktionen: Konsekutivsatz

Textgenerierung aus visuellen Daten: Beschreibungen von Straßenszenen - Hans-Joachim Novak - Google Books
 
ok Danke, ein Ausflug in Deutsche Gramatik... hat mir nur leider nicht weitergeholfen, aber ich habe weiter probiert.

Die Meldung taucht nur auf, wenn ich vor einem Neustart alle Variablen lösche. Es funktioniert aber trotzdem alles wie geplant. Starte ich dann das Tablet neu wird kein Fehler mehr gemeldet. An sich also nicht tragisch, aber es wäre schon gut zu wissen, was da klemmt und wie man es besser machen kann....

Kann man irgendwo herausfinden, welche Regel den Fehler erzeugt?

MfG
Holger
 

Ähnliche Themen

M
Antworten
7
Aufrufe
1.773
Johan
J
J
  • Johan
Antworten
2
Aufrufe
1.722
Johan
J
J
Antworten
2
Aufrufe
7.377
Gerimo
Gerimo
Zurück
Oben Unten