Suche Trigger bei verlust der Datenverbindung

  • 16 Antworten
  • Letztes Antwortdatum
M

mbefore305

Stamm-User
214
Gibt es in Tasker einen Trigger, wenn die Netzwerkverbindung unterbrochen ist?
Also das Handy ist im WLAN oder Datennetz, aber die Verbindung geht verloren.

Hintergrund:

Ich möchte IntentRadio benutzen (ein Streaming Radio welches nur über Intents gesteurt wird).
Problem: Unterwegs verliert man manchmal das Datennetz und IntentRadio stellt leider
nicht automatisch die Verbindung wieder her, wenn das Netz wieder da ist.
TuneInRadio macht das, hat aber leider keine Intents. Möchte alles über Tasker steuern.

Ich habe in Tasker einen Loop gebaut, der IntentRadio alle x Sekunden neu startet,
aber das macht sich in einem kurzen Aussetzer des Streams bemerkbar. Also keine Lösung.
 
@mbefore305
Am besten macht du einen loop der zB dir Google Website anpingt.

Schau mal hier. Das geht in die gleiche Richtung.
Online- Erkennung
 
  • Danke
Reaktionen: mbefore305 und NitramAkloh
Danke, das geht schon mal in die richtige Richtung.

Fragen:
In Deinem Screenshot ist beim Shell Command 'Root' angeklickt. Habe kein Root, scheint aber trotzdem zu funktionieren.

Wie oft macht die Ping Abfrage Sinn. Z.B.
Ping jede Minute.
Netzwerkverbindung ist nur 5 Sekunden unterbrochen.
Dann würde Tasker die Unterbrechnung nicht feststellen und entsprechend den Intent nicht absetzen.
Ping jede Sekunde könnte zu oft sein. Was macht Sinn?
 
mbefore305 schrieb:
Netzwerkverbindung ist nur 5 Sekunden unterbrochehen.
Da er sich auch bei 5 Sekunden unterbruch nicht von selber Wiederverbindet. Musst du ja fast irgendwie alle 2 -3 sekunden Pingen. Aber ich weiss nicht wie sich das auf Tasker und den Akku auswirkt.
 
Ich teste erst mal mit 5 Sekunden. Akku sollte nicht so problematisch sein, da ich die Task nur benutze, wenn ich draussen Sport mache und
dabei Radio Streame. Dann läuft die Sport App, GPS, und das Radio, da sollte ein bisschen Tasker keine grosse Rolle spielen.
 
@mbefore305
Habe om Manifestviewer gesehen

android:name="org.smblott.intentradio.PLAY"/>
<action
android:name="org.smblott.intentradio.STOP"/>
<action
android:name="org.smblott.intentradio.PAUSE"/>
<action
android:name="org.smblott.intentradio.RESTART"/>
<action
android:name="org.smblott.intentradio.STATE_REQUEST"/>
<action
android:name="org.smblott.intentradio.CLICK"/>

Ich Frage mich was State_request auslöst.
 
  • Danke
Reaktionen: Spardas
Moin
mbefore305 schrieb:
Gibt es in Tasker einen Trigger, wenn die Netzwerkverbindung unterbrochen ist?
Also das Handy ist im WLAN oder Datennetz, aber die Verbindung geht verloren.
Das hängt davon ab, wie die Verbindung kaputt geht? Erkennt Android, das keine Verbindung mehr besteht oder wird nur die Verbindung zum Stream unterbrochen?

Was sagt denn in dem Fall %WIFII
 
Die Verbindung zum Datennetz. Da ich das während Sport benutze ist es schwierig zu testen. Gibt es eine Variable für Datennetz, dann kann ich das loggen.
%WIFII hilft da nicht.
 
Als Trigger gibt es Status > Netzwerk > Mobiles Netzwerk (Haken bei 2G, 3G, 3G-HSPA, 4G und umkehren setzen) und Status > Netzwerk > Wifi verbunden (Haken bei Umkehren setzen).

Für dein Problem mit Intent Radio habe ich dir ein Profil welches mit den Intents von der App arbeitet

Profil: Keine Verbindung (43)
Ereignis: Intent Empfangen [ Aktion: org.smblott.intentradio.STATE Typ:None Typ:None Schema:* MIME Typ:* ]
Eingang: Anon (28)
A1: If [ %Wiederholung !~ Ja ]
A2: Variable Setzen [ Name:%Wiederholung Zu:Ja Recurse Variables:Aus Mathematisch:Aus Hinzufügen:Aus ]
A3: Sende Intent [ Aktion: org.smblott.intentradio.STATE_REQUEST Typ:None MIME Typ: Daten: Extra: Extra: Extra: Paket: Klasse: Ziel:Broadcast Receiver ]
A4: Else
A5: If [ %state ~ *disconnect* ]
A6: Sende Intent [ Aktion: org.smblott.intentradio.RESTART Typ:None MIME Typ: Daten: Extra: Extra: Extra: Paket: Klasse: Ziel:Broadcast Receiver ]
A7: Warte [ MS:0 Sekunden:1 Minuten:0 Std.:0 Tage:0 ]
A8: Sende Intent [ Aktion: org.smblott.intentradio.STATE_REQUEST Typ:None MIME Typ: Daten: Extra: Extra: Extra: Paket: Klasse: Ziel:Broadcast Receiver ]
A9: Else
A10: Variable Setzen [ Name:%Wiederholung Zu:Nein Recurse Variables:Aus Mathematisch:Aus Hinzufügen:Aus ]
 
  • Danke
Reaktionen: mbefore305 und Spardas
Ich werde das mal testen, aber erst am Wochenende. Mir ist nicht ganz klar, ob der Trigger greift. Bisher dachte ich, dass der Trigger (Wifi, 4G, etc.)
nur überprüft, ob Wifi bzw. Daten ein oder ausgeschaltet ist und nicht, ob wirklich Daten fliessen können (also wirklich eine Verbindung besteht)?
 
Ich denke auch dass es nur die Verbindungsart überprüft und nicht ob es mit dem Internet verbunden ist.
Daher nutzt mein Profil als Trigger die Intents von Intent Radio.
 

Anhänge

  • Keine_Verbindung.prf.xml.zip
    813 Bytes · Aufrufe: 84
  • Danke
Reaktionen: mbefore305
Danke, jetzt wird es klar. Hatte nicht gerafft, dass IntentRadio selber Intents verschickt und man somit auf
einen Verbindungsabbruch reagieren kann. Schön: Das geht dann ohne Loop.
Ein kurzer Test (WiFiaus/an) ergab, das Intent Radio beim Abbruch ein 'Stop' als State im Intent schickt.
Muss genauer testen, unter welchen Umständen ein Disconnect kommt; aber definitiv ist das der richtige Weg.
 
Das disconnect wird leider nicht automatisch gesendet sondern muss mit dem Intent org.smblott.intentradio.STATE_REQUEST
nach dem stop angefordert werden.
 
Moin
Sollte so funktionieren
Code:
Profile: No Connection (218)
   Restore: no Enforce: no Notification: no
   State: Not Mobile Network [ 2G:Off 3G:On 3G - HSPA:On 4G:On 4G:Off Active:Yes ]
   State: Not Wifi Connected [ SSID:* MAC:* IP:* Active:Yes ]
Exit: New Connection (217)
   A1: Send Intend
 
Habe es so gelöst und scheint zu funktionieren:
Über ein anderes Profil/Task wird die Variable RadioOn <> Off gesetzt und IntentRadio gestartet.
Dann dient der State von IntentRadio als Trigger für die Task im Bild.
Recht simpel: Wenn 'Radio aus ODER Status = Play' wird gleich gestoppt.
Ansonsten wird kurz gewartet, dann das Radio restartet (restart bewirkt keine Aussetzer),
dann noch mal kurz warten und dann einen Status Request triggern.
Letzterer bewirkt, dass diese Taks gleich wieder ausgeführt wird. Prinzipiell also alle 10 Sekunden
ein Loop bis entweder der Status 'play' (wieder) erreicht wurde oder das Radio ausgeschaltet wurde.

Ergänzung: IntentRadio triggered einen Status update. Play/Buffering oder Stop wenn die Verbindung verloren geht.
[doublepost=1522314184,1522312366][/doublepost]
Nachtrag:
Hm, ganz perfekt ist es doch noch nicht. Nach längerer Unterbrechung reicht ein Restart nicht, IntentRadio bleibt in Buffering hängen.
Erst ein Stop und Restart hilft dann. Werde es also noch etwas verbessern, abhängig vom Status noch ein Stop einbauen.
 

Anhänge

  • Radio.png
    Radio.png
    26,6 KB · Aufrufe: 219
  • Danke
Reaktionen: Spardas
Es ist dann doch komplexer geworden, weil:
- IntentRadio natürlich permanent den Status per Intent schickt. Deshalb musste der Trigger aktiv/inaktiv gesetzt werden.
- Es braucht einen Loop um regelmäßig den Status per Request anzufordern.
- Radio Restart funktioniert nicht zuverlässig. Deshalb benutze ich nun Stop und kurz danach Play.
Heute bin ich länger gelaufen und es hat zuverlässig funktioniert. Es gab öfters Aussetzer und das Radio
hat sich immer wieder wie gewünscht eingeschaltet.
Bin also zufrieden. Aber evtl. kann man es noch eleganter machen.

1-RadioPlay.png 2-Loop.png 3-StatusCheck.png 4-StatusCheck-If.png
 

Ähnliche Themen

O
Antworten
5
Aufrufe
440
rtwl
rtwl
F
Antworten
1
Aufrufe
154
MeinNickname
MeinNickname
X
Antworten
0
Aufrufe
72
xyzUpdate
X
Zurück
Oben Unten