Anbindung Android-Tabs via EventGhost (Android-Version)

Hi,

ich versuche gerade, meine Android-Tabs (IPS-Visualisierung) via Eventghost (Android-Version)/Tasker mit IPS zu verheiraten. Das klappt auch schon ganz gut: Display ein/aus schalten, Applikation öffnen/Schließen .
Leider ist aber die Client-Socket-Verbindung zum Android-Tab sehr instabil. Der client-Socket toggelt im 5-Sekunden Rhythmus: verbinden …verbunden…getrennt.
Hat jemand ne Idee, wie man die Ursache abstellen oder mindestens eingrenzen kann?

Das gibts? Coool !

heute Abend gleich mal ausprobieren muß
bb

ja, ich war mal ein ausgesprochener EG-Fan, aber seit dem ich mein Media-Portal System in Rente geschickt habe, hatte ich für EG keine Anwendung mehr.
Dass es jetzt EG für Android gibt, weiß ich auch erst seit ein paar Wochen und freut mich natürlich :wink:

ich hab nicht wirklich was gefunden (auch Google spuckt nichts aus), also habe ich die Vorgehensweise geändert:
wenn ein Befehl an eines der Android-Tabs abgesetzt werden soll, wird der Clientsocket erst dann geöffnet, Befehl wird abgesetzt, ClientSocket wird wieder geschlossen.
Funktioniert überraschend performant und perfekt. Bis jetzt. :wink:

Servus

hab mich grad mit der Android EV Variante etwas rumgespielt.
Hmm, naja ganz nett. Verbindung mit dem EV Server ging sofort, in beide Richtungen.
Aber eine richtig zündende Idee was ich nun in Verbindung mit IPS damit machen will ist mir noch nicht gekommen.

Vorstellen könnte ich mir:

  • Sprachausgabe an dedizieren Clients
  • Clients regelmäßig rebooten
  • optische und akustische Alarmmeldungen an dedizierten Clients

Ja, das hätte Charme. Der Konfigurationsaufwand dafür ist aber auch nicht ohne.

Mit den möglichen Android Events kann man ja net so wirklich viel anfangen.
Oder hast da eine Idee ?

Der Android Client ist mir auf meinem GalaxyS übrigens auch recht oft abgeschmiert.

Aber wie hast denn die Verbindung EventGhost (PC) zu IPS gebaut ?
per UDP Broadcast ?
Ich glaub da wart ich noch etwas bis ich da Zeit investiere. ( Hab auch nur 1 1/2 Android Clients)

In der Verbindung IPS<->Eventghost(PC) liegt aber einiges an Potential. Es werden ja sehr viel Anwendungen und auch Hardware von Eventghost unterstützt welche IPS so nicht kennt.
Wenn man dies nun als Bridge nimmt wäre es ein simpler Weg von und zu IPS.
Oder auch beim leidigen Watchdog und Datensicherungsthema könnten sich die beiden Applikationen prima ergänzen.

Oder macht ihr das eh schon lange, und ich habs verschlafen. ?:eek:

gruß
bb

…tatsächlich verschlafen, die SuFu brachts zu Tage.

bb

das will ich aber genauer wissen :wink:
wie genau hast du den Handshake-Prozess mit hash-validierung gelöst?
Ich habs zwar hin bekommen, aber eine echte, sichere Validierung ist das nicht (ich prüfe den hash auf Länge, nicht auf Inhalt :D)

mir geht es Momentan primär um das Aus- und Einschalten bei Ab- und Anwesenheit. Warum sollen die armen Kerlchen 7*24h schuften, obwohl keiner zu hause ist?
Ich spiele auch noch mit dem Gedanken, bei bestimmten Ereignissen via IPS auf IP Cam Viewer umzuschalten

ich hoffe, das Tasker hier weiter hilft. Aber ich hab noch nicht rausgefunden, wie man aus Tasker (oder anderen Apps) Events an EG schickt

läuft bei mir bis jetzt stabil, auf 3 verschiedenen Devices, Android 2.x, 3.x und 4.03

hier aus diesem Thread geklaut (da war ich noch IPS-Frischling ;))

Hi
ich hab erstmal nur EG (PC) mit EG (Android) verheiratet um mal die Android App anzutesten.
Das ging out-of-the-box.

Aber wie schon erwähnt, das ganz große Must-have feature hab ich noch nicht gesehen.

Von EG (PC) wollte ich dann weiter nach IPS.
Intuitiv auch brav mit Client Socket rumgespielt aber da zickte mein IPS irgendwie.
Es wollte mich partout keine zweite Verbindung (eine hab ich schon für Winlirc) anlegen lassen.
Mach da im Moment aber lieber keine Experimente, Winlirc muß laufen. Frauchen hat bzgl. IPS eh mal wieder eine Vertrauenskriese.

Dann bisl im Forum rumgesucht und genau den von dir verlinkten Beitrag gefunden.

Naja, irgendwann mal schau ich mirs wieder an.

so long
bb

jiepp, das ist Plug-and-Play

Von EG (PC) wollte ich dann weiter nach IPS.
Intuitiv auch brav mit Client Socket rumgespielt aber da zickte mein IPS irgendwie.

das geht bei mir nicht, da ich keinen PC laufen habe, aus dem EG 7*24 laufen kann (Als Dienst geht ja nicht). Deshalb gehe ich vom Android-EG direkt auf IPS. Eine Kommunikation von IPS -> Android-EG aufbauen geht gut, andersrum nicht.

Ich mach das momentan so (Script unterhalb des ServerSocket/RegisterVariable):


#################### Konfig ####################################################
$serversocket = 57167 /*[EG Server Socket]*/;
$received = 26845 /*[EG Server Socket\EG SS RegVar\Received]*/;
$praefix1 = "R2D2.";
#################### Konfig Ende ###############################################

// Etablieren der Kommunikation
$data = $IPS_VALUE;
//echo "$IPS_VALUE von Android Device empfangen\r";

$zufall = rand(1000, 1000*10);

if ($data == "quintessence
\r")
{

   SSCK_SendText($serversocket, $zufall."
");
}
else
{
		$stringlaenge  =strlen($data);

	if ($stringlaenge == 33) // nur Prüfung auf hash-Länge (32 chars) + Zeilenumbruch!
	{
		SSCK_SendText($serversocket, "accept
\r");
	}
	else
	{
	   // Bearbeiten und Abspeichern des von EG empfangenen Befehlsstring
		$code = strstr($data, $praefix1);      //Prüfung auf korrektes Befehls-Präfix
		if ($code != false)                //wenn "R2D2." vorhanden ...
		{
		   $search = array("
", "\r", "close"); //Definition der Suchstrings (zur Entfernung)
			$code = str_replace($search, "", $data); // abschneiden der Suchstrings  aus dem EG-Befehls-String
			SetValueString($received, $code); //schreiben des finalen EG-Befehls in Variable zur weiteren Verwendung
		}
		SSCK_SendText($serversocket, 'close');
	}
}

noch ein Nachtrag zur Vollständigkeit:

Aufbauend auf dem Initial-Thread zu Eventghost(PC-Version) und Lösung von goran sowie einer Druckbetankung „Grundlagenwissen“ von Toni habe ich nun die vollständige Kommunikation zwischen IPS und Android-Devices etablieren können.

die Kommunikation wird über 2 Kommunikations-Kanäle realisiert. Will man von vornherein nur eine der beiden Varianten nutzen, muss auch nur die Eine implementiert werden

[ol][li]Kommandos von IPS an Android-Client absetzen -> via ClientSocket in IPS[*]Kommandos vom Android-Device an IPS absetzen -> via Server-Socket in IPS
[/li][/ol]

1. ClientSocket in IPS -> Android-Client
das Script ist identisch mit goran’s Lösung
2.Server-Socket IPS -> Android-Client
hier muss das Handshake-Script angepasst werden, die PC-Version funktioniert so nicht.


<?
// modifiziertes Script für Android-EG Kommunikation
// Quelle EG-PC-Version: http://www.ip-symcon.de/forum/f20/dashboard-fernbedienung-11722/index2.html
#################### Konfig ####################################################

$serversocket 			= 57167 /*[EG Server Socket]*/;        // hier die ID des ServerSocket (nicht RegVar!) eintragen
$receiver_id         = 12345; 										// hier die ID der Ausgabe-Variable eintragen
$praefix1 				= "R2D2.";                             // hier Präfix für Kommunikation eintragen
#################### Konfig Ende ###############################################

// Etablieren der Kommunikation
	$data = $IPS_VALUE;
	//echo "$IPS_VALUE von Android Device empfangen\r";

	$zufall = "R2D2EG";													// hier kann ein individueller String vergeben werden,
	$hash = md5($zufall.":");                                //  anschliessend den dafür gültigen hash generieren
	//echo "SSCK lokaler Hash: $hash
";                     //  und in Zeile 27 eintragen
	$close   = "close";
	
	

	if ($data == "quintessence
\r")                               // Handshake-Initialisierung durch Android-Device mit "quintessence"
	{
	   SSCK_SendText($serversocket, $zufall."
");                 // Absenden eines "Zufalls-Strings" (hier statisch $zufall) an Android-Device
	}
elseif($data == "a9fcc20b2cec51339a7620a3794c8c8d
")     // Validierung des vom Android-Device zurück gelieferten hash-Wertes
{
	SSCK_SendText($serversocket, "accept
");          			// Handshake erfolgreich & bestätigen
}
else
{
   // Bearbeiten und Abspeichern des von EG empfangenen Befehlsstring
	$code = strstr($data, $praefix1);      							//Prüfung auf korrektes Befehls-Präfix
	if ($code != false)                									//wenn Präfix "R2D2." im Antwortstring vorhanden ...
	{
	   $search = array("
", "\r", "close", $praefix1); 			//Definition der Suchstrings (zur Entfernung)
		$code = str_replace($search, "", $data); 						// abschneiden der Suchstrings  aus dem EG-Befehls-String

		

		      setValueString($receiver_id, substr($code, 5));    
		      //echo "Ausgabestring: ".substr($code, 5)."
";

	}
}

?>

Hallo,

ich bin gerade durch Zufall über den Beitrag gestolpert. Bin selbst erst seit ein paar Tagen Besitzer einer IP-Symcon Lizenz und deshalb noch sehr „unwissend“, aber arbeite seit längerem mit Eventghost und habe auch ein eigenes Eventghost App im Store: „EGRemote“. Falls es also konkrete Fragen über das Zusammenspiel PC (EG) <-> Android (EG) gibt kann ich also vielleicht weiter helfen … :cool:

… zumindest kenn ich das Protokoll bzw. den TCP Handshake mittlerweile auswendig

greetz

Hallo Rainer,

das hört sich ausserordentlich interessant an.

Wir/ich möchten das Androidgerät, in meinem Fall ein ODYS 7" Tablet, per IPS bedienen. Insbesondere

[ul]
[li]Bildschirm einschalten[/li][li]Browser mit definierter URL starten[/li][/ul]Wäre soetwas möglich.

Vorteilhaft wäre auch wenn Eventghost garnicht auf dem Server installiert werden muss und IPS dein EGRemote direkt ansprechen könnte.

ich hab mal ein paar Videos (im Rahmen eines Artikels zur Steuerung von Android-Tabletts via IPS) eingestellt.
Funktionieren tut das Ganze bei mir, inzwischen auch sehr gut und fehlertolerant, allerdings hab ich dazu keine Plug-and-Play-Scripte :wink:
(der Artikel wird noch erweitert)

Ich stehe bei deinem Problem noch etwas auf dem Schlauch… was versuchst du mit dem EventGhost eigentlich zu erreichen. In deinem Text steht, du willst das Tablet einschalten (durch IPS gesteuert), ist das wirklich alles, was du willst?

…und am Besten auch wieder ausschalten, ja:D
und ein Problem ist es nicht mehr (für mich)

Ich kenne deine Tablets nicht, genau die hab ich leider nicht, aber ich habe das bei mir so simpel gelöst, das ich dein „Problem“ gar nicht verstehen konnte :wink:

Alle meine Tablets machen „das Licht an“, wenn sie an den Strom kommen, also hab ich nen FS20-Zwischenstecker genommen, wenn das Display an gehen soll mach ich kurz Strom aus, wieder an, TARA…

und aus geht ja mit vielen Wegen… das ist ja noch einfacher.

prima, wenn es dir reicht und funktioniert.:wink:

mmh, vielleicht konnte ich mich auch nicht gut ausdrücken… ich wollte sozusagen meine Hilfe anbieten, falls darüber hinaus du noch Wünsche hast deinen Androiden zu steuern… dein Text bzgl. „Proof-of-Concept“ etc. las sich jetzt noch nicht nach einer stabilen oder endgültigen Lösung, deswegen dachte ich, man könne vielleicht unterstützen??

doch, die Lösung läuft inzwischen stabil. Es ist aber keine Lösung, die man als anwenderfertige Lösung weitergeben kann. Und das FS-System möchte ich ungern bei mir implementieren;)

Was wäre denn das einfachste, was du dir vorstellen könntest?

Ich mein, wege mit dem Tablet zu sprechen gibts ja viele… man könnte eine winzige App machen, die z.B. auf HTTP-Requests lauscht… oder eine Mail auswertet… oder SMS empfängt … oder was weiß ich… alleine deine Grafik mit dem Kommunikationsschema ist ja schon sehr komplex und Aufwändig, da dachte ich mir, das muss doch einfacher gehen… würde dir halt nur gerne helfen die beteiligten Komponenten zu reduzieren…

Wenn ich es jetzt bauen würde, würde ich auf der grünen Wiese wahrscheinlich so vorgehen: IPS sendet „Befehl“ per HTTP-GET an das Tab und bekommt prompt in der HTTP-Anwort die erfolgreiche Ausführung bestätigt… würde so etwas helfen?