Task nur ausführen wenn eine bestimmte BT Verbindung besteht

J

joerg-rz

Neues Mitglied
1
Einen guten Abend an alle,

ich habe versucht die Suchfunktion hier und die Suchmaschinen zu nutzen aber keine Antwort gefunden und
hoffe das ich nichts übersehen habe, daher werde ich hier mal eine Frage einstellen.

Ich möchte das ein Task nur ausgeführt wird, wenn eine bestimmte BT Verbindung besteht!

Meine ursprünglichen Programmierungen habe ich sonst immer mit Profilen gelöst, was ich aber nicht mehr machen möchte
da oft zu viele aktive Profile laufen. Nun möchte ich das ganze gerne über eine IF Abfrage erledigen, kann mir da jemand einen Tipp
geben?


Gruß jörg
 
Als Auslöser für einen Task brauchst grundsätzlich immer ein Profil. Das ist halt genau die If-Abfrage. If Profilbedingung erfüllt, then Task ausführen.

Die If-Abfrage im Task ist dafür da, weitere Bedingungen abzufragen aber kann kein Taskauslöser sein, wenn der abfragende Task zuvor inaktiv ist. Klar kannst du in einem Task auch einen anderen Task aufrufen. Den Aufruf kannst du auch in eine If-Abfrage packen. Aber der Task mit der If-Abfrage muss halt aktiv sein. Eine Dauer-Überwachung auf eine Bluetooth-Verbindung ist auf diesem Weg ineffizient. Du müsstest einen Task mit loop in Endlosschleife schicken was entweder viel mehr Rechenzeit und Akku kostet oder mit wait-Befehl eine lange Reaktionszeit bekommt. Zum Aufruf von Task anhand solcher Bedingungen sind Profile der richtige Weg.
 
Guten Morgen,

danke vorweg für Deine Antwort.

Nee da habe ich mich wohl Missverständlich ausgedrückt, natürlich steht dem ganzen ein Profil vorweg.

Mein Beispiel dazu:
Ich habe das vorher immer so gelöst...
Wenn das Handy geladen wird - dann BT ein - führe TASK XY ausführen

In dem TASK XY stand dann, wenn %PACTIVE ein weiteres Profil aktiv war mache das oder das, wenn noch ein Profil
aktiv war mache eben noch etwas.

Das setzte aber eben voraus das unzählige Profile aktiv waren, teilweise bis zu 7 Stück.

Ich möchte aber das wenn das Handy geladen wird - dann BT ein - führe TASK XY aus
In TASK XY soll dann nach meinem Verständnis über eine IF Abfrage geklärt werden mit welchem Gerät
eine BT Verbindung besteht und dann der dazu gedachte weitere Task ausgeführt werden.
Sprich also davon abhängig gemacht werden an Hand des erkannten Gerätes eben z.B. ist das Handy mit
dem Auto oder dem Headset verbunden ist, dann soll jeweils ein unterschiedlicher Task ausgeführt werden,
oder wenn eben keine Verbindung besteht dann BT wieder aus. Das ist das was ich eigentlich nicht mehr über
zusätzlich diverse Profile möchte.

Mir geht es um die grundsätzliche Frage geht das?
Ich habe gesucht und leider keine richtigen Antworten gefunden.
Die Funktion %BLUEID z.B. wofür steht die und was kann man damit machen?
Man kann so weit ich es herausgefunden habe über IF nur abfragen ob eine BT Verbindung besteht.
Kann man aber auch abfragen mit welcher MAC Adresse das Handy verbunden ist,
oder auch die namentliche BT Verbindung dazu?

Nach meinem Verständnis müsste es ja gehen, da man ja den Befehl erteilen kann ein bestimmtes Gerät zu verbinden,
oder eine Verbindung eines bestimmten Gerätes zu beenden.

Gruß Jörg
 
Zuletzt bearbeitet:
Möglichkeit 1:
Aktion "Bluetooth Info" ausführen. Die liefert u.a. die Variable "%bt_name" die man testen kann.

Möglichkeit 2:
Ein Profil erstellen mit Auslöser "State - BT Connected". Dann bei Name auf die Lupe klicken und das BT Gerät (oder mehrere) auswählen.
Als Task dann eine eigene Variable erstellen. Z.B.BT_XYZ=1
Und als exit task dann BT_XYZ=0
Dann in anderen Task einfach If BT_XYZ = 1 ...
 
Moin Moin...

sorry war die letzten Tage etwas eingespannt und konnte nicht auf Deine Antwort reagieren.
Ich habe das mal versucht umzusetzen und es scheint zu funktionieren.

Hast Du eventuell noch einen Tipp wie man es so einrichten kann das ein Task nur ausgeführt wenn,
mehrere Bedingungen erfüllt sind.

Beispiel meiner Seits:

- Führe Task "XYZ" aus wenn
A. %bt_connected UNGL XYZ ist
und
B. %pactive !~ ABC ist
und
C. "hier das Problem" nur wenn ein bestimmtes BT Gerät in der Nähe ist.

Mein Gedanke dazu... ich möchte das diesen Task nur ausführen lassen, wenn nicht mit meinem Autoradio verbunden ist, nicht bei mir vor der Haustür stehe bzw. im Haus bin und Tasker erkennt das mein Autoradio aber in der Nähe ist (also an ist).
Ja A. und C. wäre als einzelnes zu nutzen um es zu Filtern, aber ich möchte verhindern das der Task ausgeführt wird und einen Fehler produziert. Ebenso könnte ich dann damit auch eine weitere Abfrage starten, die dann den selben Task bedient... wie z. B. die Lautstärke Einstellungen oder den Flugmodus beenden.

Gruß Jörg
 
eine einfache Möglichkeit wäre eventuell die "Stop" Aktion im task an erster Stelle zu setzen und mit einer IF Bedingung versehen. Es wird also der task gestartet aber sofort gestoppt wenn eine Bedingung erfüllt ist.
 
@joerg-rz Ein Profil erstellen mit Auslöser BT Near und darin das BT Device definieren.
Dann wieder eine globale Variable setzen auf 1 (Enter Profile) bzw. 0 (Exit Profile) .

Im anderen Profil kannst Du dann Deine 3 Bedingungen mit "und" Verknüpfen, in der dritten Bedingung benutzt Du dann die globale Variable.

Es gibt - wie immer - mehrere Wege. Ich halte States gern in globalen Variablen, dann kann man diese in beliebigen Tasks testen und sieht den Wert auch im Tab Variables, das erleichtert das Debugging.
 
  • Danke
Reaktionen: bbfh und HeikoS

Ähnliche Themen

P
Antworten
25
Aufrufe
1.108
Pentatulim
P
B
Antworten
6
Aufrufe
430
rtwl
rtwl
K
Antworten
9
Aufrufe
413
ka111
K
Zurück
Oben Unten