WLAN Verbindung überprüfen

P

PiBorg

Ambitioniertes Mitglied
2
Hallo zusammen,

ich möchte über ein Tasker Widget folgenden Task ausführen:

1) Schalte das WLAN ein, wenn aus
2) Falls WLAN bereits an, weiter
3) Wenn WLAN Verbindung aktiv, dann
4) führe ein SSH Kommando aus und
5) starte die App Yatse

Die Schritte 2 und 3 machen mir Probleme. Wie kann ich diese beiden Schritte umsetzen? Derzeit behelfe ich mir bei Schritt 3 mit einer Wartezeit von 10 Sekunden, möchte jedoch sicher gehen, das die Verbindung steht bevor es weiter geht. Vielen Dank für eure Hilfe.
 
Aus der Tasker Userdoku:
WiFi Info
%WIFII
When connected to an Access Point (AP), shows human-readable data about the AP. When not connected, show details of the most recent Wifi scan results for nearby APs.

WiFi Status (dynamic)
%WIFI
Whether WiFi is on or off. Note: if WiFi is enabling or disabled, in fact anything but enabled, it's classed as off.
Bei 2. prüfst du also
Code:
if(%WIFI ~ on){weiter}
und bei 3. prüfst du
Code:
if(%WIFII ~ *CONNECTION* && *SSID*){weiter}
bzw.
if(%WIFII ~ *CONNECTION* && *MAC-Adresse*){weiter}
Für beliebige APs %WIFII natürlich lediglich auf *CONNECTION* testen.
 
Danke für deine schnelle Rückmeldung. Ich gehe mal davon aus, du meinst es so wie in dem angehängten Screenshot gemeint, oder? Wenn ich allerdings nach *CONNECTION* noch ein *SSID*, also anstelle von SSID den Netznamen oder die MAC-Adresse im Klartext verwende funktioniert das nicht. Rein mit Connection funktioniert es.

Wie du siehst ist es ja eine einfache if/else Schleife. Da über das Tasker-Widget ein Skript auf dem Pi aufrufen wird, müsste also noch Ablauf rein, der beim erneuten Drücken auf das Widget das Skript erneut ausführt und die WLAN Verbindung wieder beendet. Wie könnte ich das realisieren?

Danke und Grüsse
 

Anhänge

  • Screenshot_2014-12-16-17-21-07.png
    Screenshot_2014-12-16-17-21-07.png
    20,4 KB · Aufrufe: 482
PiBorg schrieb:
Danke für deine schnelle Rückmeldung.
Gerne.
Ich gehe mal davon aus, du meinst es so wie in dem angehängten Screenshot gemeint, oder? Wenn ich allerdings nach *CONNECTION* noch ein *SSID*, also anstelle von SSID den Netznamen oder die MAC-Adresse im Klartext verwende funktioniert das nicht. Rein mit Connection funktioniert es.
Um ehrlich zu sein hatte ich nur die Schritte angeschaut, von denen du geschrieben hattest, dass es hakt und hab dafür ne Lösung gepostet, aber es führen ja bekanntlich viele Wege nach Rom. Mich wundert nur, dass es nicht in Verbindung von *CONNECTION* und *Macadr* klappt, bei mir tuts das nämlich im Test. Flash "Test", wenn %WIFII ~ *CONNECTION* & %WIFII ~ *meineMacAdr* gibt mir ne Toastmessage mit Test. Komisch.
Es sei denn du hast es wörtlich mit %WIFII ~ *CONNECTION* & *Macadr* probiert, dann wäre klar, dass es nicht geht.
Wie du siehst ist es ja eine einfache if/else Schleife. Da über das Tasker-Widget ein Skript auf dem Pi aufrufen wird, müsste also noch Ablauf rein, der beim erneuten Drücken auf das Widget das Skript erneut ausführt und die WLAN Verbindung wieder beendet. Wie könnte ich das realisieren?

Danke und Grüsse
Über ne Toggle-Variable. Ich würde das ganze etwa so angehen:
Code:
if(%Toggle == 1){ // Einschaltpfad
  if(%WIFI == off){
    Set Wifi On // Wlan einschalten, falls nötig
  }
  Wait Until 1s, %WIFII ~ *CONNECTION* // Warten bis verbunden

  // restlicher Task

  Variable Set %Toggle = 0 // Variable togglen, dass beim nächsten Mal anderer Pfad genommen wird
}else{ // Ausschaltpfad
  // Wifi aus, Sachen rückgängig machen

  Variable Set %Toggle = 1 // Variable togglen, dass beim nächsten Mal anderer Pfad genommen wird
}
 
Um ehrlich zu sein hatte ich nur die Schritte angeschaut, von denen du geschrieben hattest

Ehrlich ist immer gut :winki:

Es sei denn du hast es wörtlich mit %WIFII ~ *CONNECTION* & *Macadr* probiert, dann wäre klar, dass es nicht geht.

Also ich habe es z. B. so gemacht mit dem Namen des WLANs

Code:
%WIFII ~ *CONNECTION* && *WlanName*

oder mit der MAC des Routers (AP)

Code:
%WIFII ~ *CONNECTION* && *00:11:22:33:44:55*

Das passt doch so, oder?

Auf die Toggle-Variable komme ich sehr gerne später zurück, das ist mir für den Anfang zu hart, aber da muss ich noch durch...
 
PiBorg schrieb:
Also ich habe es z. B. so gemacht mit dem Namen des WLANs

Code:
%WIFII ~ *CONNECTION* && *WlanName*

oder mit der MAC des Routers (AP)

Code:
%WIFII ~ *CONNECTION* && *00:11:22:33:44:55*

Das passt doch so, oder?

Nee, das geht nicht denn in %WIFII steht ja kein &&.
Du musst die Variable 2 mal abfragen:
Code:
%WIFII ~ *CONNECTION*
&
%WIFII ~ *MacAdresse/SSID*
 
Aha, habe es jetzt so gemacht und das Popup wird mir angezeigt, daher gehe ich davon aus das es funktioniert. Sieht jetzt so aus, sollte passen oder?

Zu deiner Toggle-Variable, wo fange ich da an bzw. wo füge ich die hinzu? Also nochmal das Ziel ist ein Widget-Icon anklicken, Skript wird über SSH Plugin ausgeführt. Skript schaltet TV je nach Zustand an oder aus. Das wäre über die Toggle-Variable realisierbar, ja?
 

Anhänge

  • Screenshot_2014-12-16-18-43-25.png
    Screenshot_2014-12-16-18-43-25.png
    21,6 KB · Aufrufe: 320
Die Toggle Variable merkt sich quasi lediglich den letzten Zustand. Soll heißen, wenn du mit der letzten Aktion AN geschaltet hast, merkt sich das die Variable, sodass du das beim nächsten Ausführen des Tasks erkennst und entsprechend AUS schaltest. Und umgekehrt. Deshalb die zwei "Programmpfade" in meinem Codebeispiel vorhin. Dort wird der Pfad mit Einschalten genommen, wenn %Toggle auf 1 steht. Dann wird %Toggle auf 0 gesetzt und der Task ist vorbei. Startest du ihn erneut, geht der Task in den anderen Zweig, weil %Toggle ja jetzt auf 0 steht, schaltet aus und setzt %Toggle auf 1, sodass beim nächsten ausführen der andere Pfad genommen wird. Usw.usf.
Bevor du den Task das erste mal ausführst, müsstest du %Toggle natürlich händisch setzen oder mit dem auschalten anfangen, damit alles richtig funktioniert.
Ich hab mich halt allgemein gehalten, vlt ist es klarer, wenn du die Variable nicht Toggle sondern %Status nennst und zwischen den Werten "ein" und "aus" wechselst.
 
Danke für die ausführliche und verständliche Erklärung, dadurch war es mir möglich meine erste Toggle-Variable zu erstellen, einfach nur genial. Die Variable funktioniert soweit, auf den Screenshots siehst du den Aufbau.

Das einzige Problem was ich noch habe ist, dass das Ausführen über ein Widget leider nicht funktioniert, führe ich es hingegen direkt im Tasker unter den Tasks aus funktioniert es. Muss ich da noch ein Widget-Switch oder so etwas einbauen? Die Möglichkeit das Widget-Icon je nach Zustand zu ändern wäre auch prima :)
 

Anhänge

  • Screenshot_2014-12-17-07-49-44.png
    Screenshot_2014-12-17-07-49-44.png
    29,8 KB · Aufrufe: 318
  • Screenshot_2014-12-17-07-50-00.png
    Screenshot_2014-12-17-07-50-00.png
    27,3 KB · Aufrufe: 306
So, der Tasker war im Hintergrund inaktiv (warum auch immer), daher hat die Widget-Ausführung nicht funktioniert, es geht nun also.

Das einzige was weiterhin fehlt, wäre das Widget-Icon je nach Zustand zu ändern. Würde mich freuen, wenn hierzu jemand eine Idee hat. Achso, für Verbesserungsvorschläge zu meiner ersten Toggle-Variable bin ich auch dankbar :)
 
das Widget - Icon ändern kann man gut mit der App Zooper da kann man z.B Tasker Variablen abfragen, die Beschreibung gibt es hier [thread=443914]android-hilfe.de[/thread]
 
das ändern der Widget-Icons hab ich auch gerade gebastelt gehabt. Das geht direkt mit Tasker.

im Task:
+ --> Tasker -->Wähle Widget Icon

!!!das Widget muss aber schon auf dem Homescreen platziert sein!!!
 

Anhänge

  • Screenshot_2014-12-16-12-22-09 (Small).png
    Screenshot_2014-12-16-12-22-09 (Small).png
    26,1 KB · Aufrufe: 260
  • Screenshot_2014-12-16-12-24-02 (Small).png
    Screenshot_2014-12-16-12-24-02 (Small).png
    25,4 KB · Aufrufe: 270
Hallo PiBorg,

das sieht doch schon gut aus. Meistens ist es jedoch besser, die Toggle-Variable erst am Ende von If- bzw. Else-Zweig zu ändern (wie auch im ersten Beispiel von Thadeuz zu sehen) . Dann ist klar, dass alles ordnungsgemäß abgearbeitet wurde...



%WIFII ~ *CONNECTION*
wird nicht mehr verwendet?


Grüße, Jürgen.
 
Hallo zusammen und vielen Dank für all eure Antworten.

@hawkie250, falls möglich möchte ich die Widget-Icons direkt mit Tasker dem ändern

@oggy, hab das mal versucht in einer Toggle-Variable nachzustellen, siehe Screenshots, leider ändert sich das Icon nicht. Was hast du anders als ich?

@androidkoller
Meistens ist es jedoch besser, die Toggle-Variable erst am Ende von If- bzw. Else-Zweig zu ändern
Hm, um ehrlich zu sein habe ich die Toggle-Variable von Thadeuz nicht wirklich verstanden, daher habe ich mir nach seiner Erklärung/Beschreibung selbst eine erstellt. Also du meinst ich soll das "Variable Set -> Name %TOGGLE To 0" vor "Else" und "Variable Set -> Name %TOGGLE To 1" vor "End if" setzen, oder? Das %WIFII ~ *CONNECTION* hat nicht mehr funktioniert, evtl. hilft hier schon das verschieben der Variablen.

Danke nochmals und Grüsse
 

Anhänge

  • Screenshot_2014-12-18-11-34-03.png
    Screenshot_2014-12-18-11-34-03.png
    29,5 KB · Aufrufe: 278
  • Screenshot_2014-12-18-11-35-02.png
    Screenshot_2014-12-18-11-35-02.png
    29,2 KB · Aufrufe: 260
PiBorg schrieb:
@oggy, hab das mal versucht in einer Toggle-Variable nachzustellen, siehe Screenshots, leider ändert sich das Icon nicht. Was hast du anders als ich?

Für Tasker gibt es 3 Widgets
Task --> funktioniert
Task Shortcut -- > funktioniert nicht
 
Hab gerade nochmal beide Möglichkeiten probiert, funktioniert leider nicht. Was ich komisch finde, wenn man ein Widget anlegt verlangt Tasker das man ein Icon für den Task festlegt (Widget-Icon). Verwendet man in dem Task jedoch andere Icons, müsste das Widget-Icon ja überschrieben werden, kann das überhaupt funktionieren oder denke ich wieder zu kompliziert?
 
Das Icon das du vergibst, wird beim Anlegen verwendet. Sobald das Icon über Tasker anderer wird nur das Icon auf dem Homescreen geändert. In Tasker selber bleibt das Alte. Hast du eventuell das Profil-Icon-Änderungsdingens gewählt?

[Edit:] ich sehe gerade, dass du für die Tasks "WLAN an" und "WLAN aus" die Icon änderst. Welcher Task liegt denn auf dem Desktop? Ich vermute mal der Task "Test" :)
 
Zuletzt bearbeitet:
Hallo!

PiBorg schrieb:
Also du meinst ich soll das "Variable Set -> Name %TOGGLE To 0" vor "Else" und "Variable Set -> Name %TOGGLE To 1" vor "End if" setzen, oder?
Genau. Wenn im If- oder Else-Zweig ein Fehler auftrittt, bricht der Task ab. Dann möchte man normalerweise eben nicht die Variable umschalten. Das SSH-Command-Plugin liefert soweit ich weiß auch ein Ergebnis zurück, das man sinnvollerweise auswerten sollte.



PiBorg schrieb:
Das %WIFII ~ *CONNECTION* hat nicht mehr funktioniert, [...]
Hm, da steht %WIFII und nicht %WIFI...

Edit: was ja auch richtig ist...


Widget-Icon:
Wenn du ein Task-Widget erstellst und mit dem Task "Test" verknüpfst, dann muss bei SetWidgetIcon und SetWidgetLabel unter "Name" natürlich "Test" stehen.

Grüße, Jürgen.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: LenovoP780
Hallo zusammen,

vielen Dank an oggy und androidkoller, dank eurer Erklärungen hat es nun auch bei mir mit dem Umschalten des Widget-Icons funktioniert. Etwas schade finde ich, das beim Erstellen des Widgets über "Task" der Abstand zur Schrift grösser ist als normal, Tanzt optisch n bissel aus der Reihe.

@androidkoller, werde die Toogle-Variable nach deinen Vorschlägen nochmals anpassen und melde mich dann wieder. Bis dahin...

Grüsse
 
Hallo,

guckst du hier: https://www.android-hilfe.de/forum/...r-kommentare.248452-page-71.html#post-8411236

Wenn man keine Schrift verwendet, fällt das gar nicht auf...:biggrin:


Nochmal zum sonstigen Ablauf: Egal, ob man jetzt Tasker-Tasks erstellt, oder Hochsprachen programmiert, die eigentliche Funktionalität ist ja meistens schnell hingezaubert. Kompliziert und aufwendig wird es, wenn man alle Eventualitäten und mögliche Fehler abfangen will.

In deinem Fall, wäre es halt wichtig zu wissen, ob das Skript auch angekommen und ordnungsgemäß ausgeführt wurde...

Grüße, Jürgen.
 

Ähnliche Themen

G
  • gene
Antworten
1
Aufrufe
356
holms
holms
coolzero3389
Antworten
21
Aufrufe
721
Hastenichgesehen
H
coolzero3389
Antworten
2
Aufrufe
285
coolzero3389
coolzero3389
Zurück
Oben Unten