Android/Eventghost Communication Suite

EDIT:16.12.2013:
Habt bitte Verständnis dafür das ich diese Scripte nur mehr bedingt supporten kann. Die beteiligten APPS werden fortwährend weiterentwickelt wodurch sich ergibt das die Scripte nur teilweise oder manchmal auch vorübergehend gar nicht funktionieren.
Ich kann aber nicht allen Updates immer folgen. Selbst verwende ich noch recht alte Versionen von Tasker und terremote und habe den automatische updatefunktion abgeschaltet.

Insbesondere terremote wurde sehr stark weiterentwickelt wodurch der hier noch beschriebene Link zu Tasker größtenteils obsolet wird.
zb. kann Sprachausgabe, Popups und das starten von Apps nun direkt von terremote erledigt werden.

danke
bb

=====================================================================

Hallo zusammen, sucht euch eine ruhige Ecke, es wird laaaang.

Einige haben vieleicht diesen Thread http://www.ip-symcon.de/forum/f27/anbindung-android-tabs-via-eventghost-android-version-18570/ verfolgt.
Nun ist es an der Zeit die ganze Sache zu Releasen.

Es geht um folgendes: Vielen von euch sind sicher Softwaren wie „Girder“ oder „Eventghost“ ein Begriff. Deren Pedant am Android ist „Tasker“. Damit kann man verschiedenste betriebsystemnahe Macros ausführen, bzw. bieten sie eine Schnittstelle zur Hardware und Betriebsparameter des Systems.
Im weitesten Sinne sind diese Softwaren ähnlich wie unser IPS.

Meine AndroidCommunicationSuite kann nun IPS an Eventghost(PC) und Tasker(Android) anbinden und eröffnet damit eine Unzahl von neuen Möglicheiten.

Besonders interessant ist Tasker. Man kann damit zb. von IPS gesteuert am Client:

  • das Droid eigene Text2Speach für lokale Sprachausgabe nutzen
  • Applikationen starten und beenden
  • die Camera einschalten
  • SMS und Voice Calls starten und loggen
  • ect. ect.
    weitere Tasker Featurs und Funktionen bitte auf deren Webseite nachlesen.Tasker for Android

Bei der Anbindung von Eventgost(PC) ergeben sich einfache Kommunikationspfade zu den vielen von Eventghost unterstützten Multimedianwendungen und vieler PC Systemfunktionen und PC Hardware.
Mit etwas Geschick kann man damit diese ganze Welt transparent und ohne über die untiefen der Protokolle jeder einzelnenen Anwendungen zu stolpern alles an IPS anhängen.

Für einige der obigen Featurs gäbe es auch andere Lösungsmöglichkeiten, das schöne ist aber die Einbindung des Protokolls in IPS. Dadurch braucht man auch keine weitere exotische Software auf der IPS Maschine.

Wie spricht das Teil nun mit IPS ?
Das Android Program „terRemote“ bzw. das entsprechende terRemote Tasker Plugin sprechen das gleiche Protokoll welches auch Eventghost (PC) benützt um zwischen Instanzen im LAN zu kommunizieren.

Meine kleinen Scripte verstehen ebenfalls dieses Protokoll und stellen damit eine Schnittstelle zwischen IPS und diesen Programmen bereit.
Damit ist also eine Kommunikationskette:

Tasker --> terRemote --> IPS -->terRemote -->Tasker oder
Eventghost(PC) --> IPS --> Eventghost(PC)möglich.

Die Kommunikation besteht aus Events und einem optionalem Payload.
Ein Event ist ein String welcher zum Zielsystem geschickt wird und dort ein Makro startet.
Ein Payload ist ein String welcher mit dem Event mitgeschickt wird und dann dem Makro als Parameter übergeben wird.

Ein Dank geht an das Forumsmitglied „Raketenschnecke“ für die Grundidee und an Christopher Gertz den Programmierer von terRemote.
terRemote ist nämlich eigentlich für ein ganz anders Anwendungsprofil konzipiert. Es nur als Kommunikationsbridge zu mißbrauchen ist nicht der Fokus der Anwendung.
Christopher hat aber trotzdem einige nur für uns wichtige Fixes und Features für Stabiltät und sichere Kommunikation eingebaut. Eine kleine Donation für terRemote würde ihm sicher eine Freude machen.

Scripte und technische Details im nächsten Thread.

So

Um Daten zu versenden müssen sie erstmal in eine Message-Queue geschrieben werden.
Dies übernimmt die „sendtoDroid“ Funktion:
Ich empfehle sie in eine eigen Datei auszulagern und bei Bedarf mittels include in eure jeweiligen Scripte einzubinden.


// Call this function to add new command to ClientSocket message queue
// Args[$IDBuffer = ID of ClientSocket] [$new... command to be send]
function SendtoDroid($Id_ClientSocket,$new) {


$IDBuffer = @IPS_GetObjectIDByName("BufferToSend", $Id_ClientSocket);
$IDSendScript = @IPS_GetObjectIDByName("sendData", $Id_ClientSocket);


$maxQueueLenght = 10;  // max Commands in Queue
$old = GetValueString($IDBuffer);
// cleanup queue if too much commands pending
if (substr_count ($old,"_+_") >  $maxQueueLenght) {
   $old ='nothing to send';    //todo: add error processing if required
	 }
if ($old == 'nothing to send') {
   SetValue($IDBuffer,$new."_+_");
  IPS_RunScript($IDSendScript);
	}
	else {
	SetValue($IDBuffer,$old.$new."_+_");
	}
}

der Aufruf sieht dann zb. so aus:

include_once "SendToDroid_include.ips.php";
// this library provides SendtoDroid() function;

$Wohnzimmer = 44038 /*[Client Socket WohnzimmerTablett]*/;

SendtoDroid($Wohnzimmer,"Say,Bewegung im Garten erkannt");

Als Trennzeichen zwischen Event und Payload hab ich den „,“ definiert.
In diesem bsp. wird also der String „Say“ an den Droid gesendet (ist bei mir auf Text2Speach gemapped, „Bewegung im Garten“ ist der payload welcher dem Text2Speach übergeben wird. Hier also der zu sprechend Text.
Wie schon Eingangs erwähnt der Payload ist optional. denn um zb. das Display einzuschalten oder eine App zu starten ist kein Payload notwendig.

Um die Daten zu versenden benötigt man einen ClientSocket.
d.h. einen Client Socket einrichten und IP bzw. Port entsprechend dem Client konfigurieren.
Darunter eine RegisterVariable mit Namen „regVarDataBuffer“ anlegen und mit dem Client Socket verbinden.
Als Zielscript muß dieses „sendData“ Script eingetragen sein.
Die obigen Namensgebung ist unbedingt einzuhalten oder ihr müßt die Scripte entsprechend abändern.

// This Script send events to any Eventghost compatible Client via RegisterVariable -> IPS_Client_Socket
// Outgoing Events are read from "BufferToSend" Variable. This works like a send Buffer
// You should use my "SendToDroid() function to write Commands to the Buffer.

// Register variable MUST be named: "regVarDataBuffer"

// If you want to communicate with Eventghost PC please read comment near line 80

// During communication idle and Client Socket is dissabled (Gray Icon), this improved stability and prevent from mess up logging
// If Client is not reachable (Cleint Software Down) ClintSocket become Red Icon, this is cleard after first succesfull Event transfer.
// It works fine for me, but maybe your enviroment need any aditional error handling, check area around line 62

// The Script had been tested with: Eventghost for PC , Eventghost for Anroid, terRemote for Android
// rev 1.0 created by Bernhard Baptist  04.10.2012

// Change Configuration parameters if needed
$maxRetry = 5;  // retries until buffer is cleared
$socketReadyDelay = 10; //delay between retries if socket not ready
$msgDelay = 10;  // delay in sec until timeout and command re-send command

//-------------------------------------------------------------------------------------------
// Nothing to configure below this line

$Id_ClientSocket = IPS_GetParent($_IPS['SELF']);
$IDRegVar = @IPS_GetObjectIDByName("regVarDataBuffer", $Id_ClientSocket);
$IDBuffer = CreateVariableByName($Id_ClientSocket, 'BufferToSend', 3);
$IDerrorCount = CreateVariableByName($Id_ClientSocket, 'errorCount', 1);

Switch ($_IPS['SENDER'])
	{
  	Case "Execute":
	// reserved for debug
	break;

	Case "RunScript":
	if (IPS_GetInstance($Id_ClientSocket)['InstanceStatus'] != 102) {// Check if Socket is Active
   	CSCK_SetOpen($Id_ClientSocket,true);
   	IPS_ApplyChanges($Id_ClientSocket);
   	if (IPS_GetInstance($Id_ClientSocket)['InstanceStatus'] != 102) {
 			 IPS_SetScriptTimer($IPS_SELF, $socketReadyDelay);  //arm Timer for retry
     		echo "Keine Verbindung zu ".IPS_GetName($Id_ClientSocket);
			Return;  // Stop in case Socket Open fail
			}
	}
	RegVar_SendText($IDRegVar, "quintessence
\r"); 			//  start handshake
     		   IPS_SetScriptTimer($IPS_SELF, $msgDelay);  		//arm Timer for retry if Fail

	break;

	Case "TimerEvent":
	    IPS_SetScriptTimer($IPS_SELF, 0);  						//stop Timer
		$errorCount=GetValue($IDerrorCount);
      $errorCount=$errorCount+1;
      if ($errorCount < $maxRetry) {
         SetValue($IDerrorCount,$errorCount);
     		IPS_RunScript($_IPS['SELF']);								// Run next try
			}
		else {
        SetValue($IDerrorCount,0);
        SetValueString($IDBuffer,"nothing to send");
			// todo: add additional error processing there
			}
  	break;

	Case "RegisterVariable":
		$data = $IPS_VALUE;
		$data = trim($data);

		Switch ($data) {
		Case "accept":    												// ready to send data
		      $buffer=GetValueString($IDBuffer);  				//re-read in case modified meanwhile
		  		$data_to_send= substr($buffer,0,strpos ($buffer ,"_+_"));
            $posPayload = strpos ($data_to_send ,",");
            if ($posPayload > 0){                           // check if Payload should be added
					 $payload = "payload ".substr($data_to_send,$posPayload+1);
   				 RegVar_SendText($IDRegVar,$payload."
");  //here the payload is sent
 					 $data_to_send= substr($data_to_send,0,$posPayload);
                RegVar_SendText($IDRegVar,$data_to_send."
\r");  //here the event is sent
					}
				 else {
					 RegVar_SendText($IDRegVar,$data_to_send."
\r");  //here the event is sent
					}
         	RegVar_SendText($IDRegVar, "close
\r");
// Eventghost PC does not send "close" so we cannot do proper handshake
// Remark next three lines in case your Client is Eventghost PC
// unremark this line: //	sleep(1);

  		   IPS_SetScriptTimer($IPS_SELF, $msgDelay);  					//arm Timer for retry if Fail
 		break;
		case "close":     														// data successfull send
		   IPS_SetScriptTimer($IPS_SELF, 0);  								//Send Ok, stop Timer
         SetValue($IDerrorCount,0);
			CSCK_SetOpen($Id_ClientSocket,false);
      	$buffer=GetValueString($IDBuffer);  							//re-read in case modified meanwhile
			if (substr_count ($buffer,"_+_")> 1) {
   			$pos_next =strpos ($buffer ,"_+_");
            SetValueString($IDBuffer,substr($buffer,$pos_next+3,strlen($buffer))); //update
	//			sleep(1);  //  todo: find minimum delay
				IPS_RunScript($_IPS['SELF']); 								// re-run to process next command
				}
			else{
				SetValueString($IDBuffer,"nothing to send");
			}

	   break;

  		case "declined":     													// any problem
  		// todo: add logic to recover,
			CSCK_SetOpen($Id_ClientSocket,false);
         IPS_SetScriptTimer($IPS_SELF, 1);  								//arm Timer for retry

	   break;

		Default:      															 // send Hash ti initiate handshake
			$data .= ":";
     		$hash = md5($data);
     		$hash .= "
";
         RegVar_SendText($IDRegVar, $hash);
		Break;
		}

}


// common helper Function
function CreateVariableByName($id, $name, $type)
{
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
 		$vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "This Variable was created by Script #$IPS_SELF");
		}
	return $vid;

}

„sendData“ und „regVarDataBuffer“ müssen direkt unter der ClientSocket Instanz liegen.

Konfiguration ist keine notwendig, alles weiter wird vom Script selbst erstellt.

Weiter gehts im nächsten Post.

Um Daten vom Droid zu empfangen wird ein ClientServer benötigt.

Also: Eine ClientServer Instanz anlegen und IP/Port entsprechend dem Droid eintragen.
Darunter wieder eine Registervariable mit Namen „regVarDataBuffer“ anlegen und wie oben verbinden.
Zielscript ist diesmal „receiveData“

// This Script receives events fom any Eventghost compatible Client via IPS_Server_Socket -> RegisterVariable
// Incoming Events are interpreted as IPS - Variables, Payloads are interpreted their content
// This means: If a event with payload is received. Then the payload is written in the variable with the same name as event has.
//					If a event without payload is received. Then the the Variable with the same name as the event is set to ""
//             
// Payloads are interpreted as String.

// PLEASE NOTE: Only one Payload is allowed !!!

// The Script had been tested with: Eventghost for PC , Eventghost for Anroid, terRemote for Android
// rev 1.0 created by Bernhard Baptist  03.10.2012


// Change ID to your ClientServerID
$ID_ServerSocket = 28382 /*[Server Socket Wohnzimmer Tablett]*/;

// Set to false if you want to create variables manually --> take care the variable must 100% match with event name
// IF set to true the script will create a new variable each time a new event is received first  --> less work if you have lot of events
$autoCreateVariables = true;

// Default: Variables are located below the ClientServer Instance.
// Option: Change ID to the Categorie or Instance you want to have your Variables stored
$IDInstanceVariables = 47218 /*[Tabletts\Wohnzimmer]*/; //$ID_ServerSocket;

//----------------------------------------------------------------------------------------------------------------------------------
// below here nothing to be changed
$IDRegVar = @IPS_GetObjectIDByName("regVarDataBuffer", $ID_ServerSocket);
$IDPayloadBuffer = CreateVariableByName($ID_ServerSocket, "ReceiveBuffer", 3);

$data = trim($IPS_VALUE);
$myID = "IPS_Server";                 					//  any random IDString
$hash = md5($myID.":");                     			//  calculate hash
 
Switch ($data) {

	Case "quintessence":    								// ready to send data
       RegVar_SendText($IDRegVar, $myID."
");  	// send your ID String, Client will calculate hash
	Break;
		
	Case $hash:
	     RegVar_SendText($IDRegVar, "accept"."
"); 	// Confirm hash is correct and initiat data transfer
	Break;
		
	Default:
		if ( substr($data,0,7) == "payload") {       // check if paylod or event received
		     $payload = substr($data,8);             // remove string payload
		     if ($payload == "withoutRelease") {     // Eventghost PC send always with payload, but if empty the content is "withoutRelease"
		         $payload = "";
					}
		     SetValueString($IDPayloadBuffer,$payload); // write Payload to Buffer temporarly
			  }
		else {                                         // we got an event
			$event = substr($data,strpos($data,"close"));     // remove "close"   <<<-- maybe to be adjusted for alternative EG Clients
			if ($autoCreateVariables == true) {
					$IDVar = CreateVariableByName($IDInstanceVariables, $event, 3);
					}
			else {
               $IDVar = @IPS_GetVariableIDByName($event, $IDInstanceVariables);
	          }
			If ($IDVar <> Null) {
	         	$payload = GetValue($IDPayloadBuffer); // fetch payload from Buffer
  					SetValueString($IDVar,$payload);       // write data to variable
  					SetValueString($IDPayloadBuffer,"");
				}
			}
	Break;
		}
// ---------------------------------------------------------------------------------------------------------------------
// Standard Function to Get VarID
function CreateVariableByName($id, $name, $type)
{
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
 		$vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "This Variable was created by Script #$IPS_SELF");
		}
	return $vid;

}

Die obigen Namen „regVarDataBuffer“ und „receiveData“ müssen wieder exakt stimmen. Alles weitere erledigt das Script selbst.

Wird nun ein String(Event) empfangen, so wird automatisch eine Variable mit gleichem Namen angelegt.
Enthält dieser Event auch einen Payload so wird der in diese Variable geschrieben.
Per Default wird der Payload immer als String interpretiert. Wenn ihr was anderes haben wollt, so müßt ihr entweder in einem weiteren Script ummappen, oder meines entsprechend patchen.

Das starten eine IPS Scripte kann bei Bedarf entweder durch einen passenden Patch (Stelle ist im Script markiert), oder durch simples „Bei Variablenaktualisierung“ erfolgen.

Weiters gibts die Option das automatische anlegen von Variablen abzuschalten. Dies ist ggfls. sinnvoll um Fehlerstellungen bei Versuchen oder durch unvollständige Kommunikation zu vermeiden.
Insbesondere wenn ihr mit Eventghost(PC) kommuniziert kann das schon mal passieren.

Aussehen tut das dann etwa so:

Hier lass ich mir zb. den String „AC_Power“ schicken und ja nachdem ob ob der Droid an Batterie oder Netz läuft ist der payload dann „False“ oder „True“ .

Androidseitige Konfiguration im nächsten Post.

Was braucht man am Client ?

Client ist ein PC:
Ihr braucht Eventghost und dort das Plugin „Network Event Sender“ bzw. „Network Event Receiver“ installieren. Konfiguration und wie die Daten/Events dann in Makros weiterverwendet werden bitte der dem Eventghost Manual entnehmen.
Für mich persönlich ist die Kommunikation zu einem PC nicht im Fokus. Da Eventghost aber seinerseits einiges an Hardware und Software unterstützt von dem IPS nichts wissen will kann das ggfls. eine brauchbare Bridge sein.

Client ist ein Android:
Ihr müßt Tasker, terRemote und das taskerTerremote Pluggin installieren. Links sind im ersten Post.
Alternativ zu teRemote gibt es auch noch EGremote bzw. Eventghost(Android). Das Prinzip ist bei allen Programmen gleich.
EGremote und Eventghost(Android) haben aber einige Einschränkungen und kleine Abweichungen vom Protokoll. Entsprechende Kommentare finden sich in den Scripten.

Von daher empfehle ich die terRemote. Ab Version 1.09 (am 5.10.2012 aktuelle Market Version)hat der Entwickler einige eigens für uns wichtige Features ins Protokoll bzw. verbesserten Handshake eingebaut.

Für Sprachausgabe und Popup reicht es wenn ihr erstmal nur terRemote installiert.
Die Möglichkeit in terRemote eine eigen Bedienoberfläche zu erstellen brauchen wir nicht.
Ihr müßt nur unter Options alles nötige eintragen. Dann untre Makros für jeden zu empfangenen Event ein Makro anlegen.
Die Vorgehensweise sollte selbsterklärend sein.
Als Synonym für den payload ist der String ${payload.0} zu verwenden.

Nun kann man schonmal testen.

Möchtet ihr zusätzlich die vielfältigen Möglichkeiten von Tasker nutzen, so braucht ihr diesen bzw. das entsprechend terRemote Plugin.
Jetzt ist aber Manual lesen angesagt, denn die Konfigurationsmöglichkeiten vom Tasker sind so umfangreich das es diesen Rahmen sprengen würde.
Nur soviel sei gesagt: Die Events werden nach wie vor von terRemote empfangen. Per terRemote Makro wird ein Tasker Task getriggert welcher dann die gewünschte Aktion ausführt. Payloads werden auf der terRemote Seite als ${payload.0} und auf der Tasker Seite als %par1 bezeichnet.
Der Rückweg der Daten erfolgt analog gleich.

Klingt alles etwas kompliziert und über 5 Ecken. Allerdings ist es einmal eingerichtet erstaunlich stabil und funktionell.

Der Witz an dem ganzen: Es kann alles parallel bzw. im Hintergrund zum Webfront laufen. Die normale WF Bedinung wird nicht gestört. Aber man hat die Möglichkeit im WF Buttons anzulegen und dann via IPS->teRemote->Tasker am Gerät Funktionen auszulösen welche weder per Webfront noch per IPS nativ APP möglich sind.

  • Text2Speach
  • Speach2Text
  • IPS kontrollierte Fernsteuerung der integrierten Cam/Mikrofons
  • unter IPS Kontrolle zwischen WF und anderen native Apps wechseln(zb. nicht ins WF integrierbare Überwachungscams oder Multimedianwendungen)
  • IPS gesteuert Display An und Auschalten
  • Zugriff auf andere Apps bzw. weitere Tasker Plugins.

Einen Großteil davon hab ich bei mir schon konfiguriert, bzw. in Vorbereitung.

Nochwas:
Das Protokoll unterstützt grundätzlich auch mehrere Payloads pro Event. Meine Scripte können aber nur jeweils eines pro Event handhaben. Für unsere Anwendungszwecke sehe ich hier keine Einschränkung.

Die ganze Geschichte soll und ist KEINE Plug&Play Lösung, sonderen eher ein Toolset und Guidance für eure eigene Anwendungen.
Wäre schön wenn ihr darüber berichtet welche neuen Features ihr euch damit eingebaut habt.

Viel Glück
bb

Ich versuche gerade das Teil zum Laufen zu bringen und scheitere leider schon bei den einfachen Dingen. Welchen Port muss ich beim Client Socket einrichten ?? Ich nutze ein Nexus7. Wenn ich den Port 1200 angebe wir in Deinem Screenshot kommt die Fehlermeldung connection refused :

Meine Firewall auf dem Rechner auf dem das IPS System läuft habe ich zum Test ausgeschaltet. Auf meinem Nexus kann ich kein Port freigeben, bzw. ich weiss nicht wie das geht

Tipp ??

PS. Habe den Port 1100 eingetragen für Client (Server ist 1200) jetzt kommt ein Timeout. Ich werde mal den Rest installieren

Servus

welchen Port du nimmst ist ziemlich egal solange er nicht von einem anderen Dienst benutzt wird.
Default Port fürs Eventghost Protokoll ist 1024

Die 1100 hab ich mehr oder weniger zufällig gewählt.

Fürs Senden von IPS zum Droid must bei terRemote den Port unter „Options -> Server Configuration“ einstellen
Dieser Port muß mit dem beim Client Socket übereinstimmen. Als IP tragst die vom Droid ein.

Fürs Senden von Droid zu IPS must bei terRemote den Port unter „Options -> New Server“ einstellen. Die IP von deinem IPS Rechner mußt auch eintragen.
Dieser Port muß mit dem beim Client Socket übereinstimmen.

Senden und Empfangen muß über unterschiedliche Portadressen laufen.

In jedem Fall empfiehlt es sich den Droid nicht über DHCP sonderen mit einer festen IP einzustellen.

Bei terRemote muß auch noch „Use background service“ und „Listen to network events“ eingeschaltet sein.

gruß
bb

OK, erstmal die Preconditions klären :

1.) Auf meinem IPS Rechner läuft nur IPS unter Windows 7 sonst nichts.
2.) Auf meinem Nexus läuft Tasker mit dem TerRemote Plugin

Weder auf dem Tasker noch im Plugin TerRemote finde ich eine Einstellung für Options. Es gibt preferences aber da kann man keinen Port einstellen. Beim Plugin TerRemote wird unter configuration nur der Event und die Payload definiert. Wenn Du mir einen Link mit der relevanten Doku postest versuche ich mich einzulesen aber so komme ich trotz Deiner klaren Angaben leider nicht weiter, ich finde die Options Einstellung auf dem Tasker/TerRemote Plugin im Android einfach nicht

PS. Nexus hat Android 4.1.1

Alles klar

Du mußt auch noch terRemote installieren.
Dieses stellt erstmal die Verbindung zwischen IPS und dem Droid her.
Dort konfigurierst du den Port und stellst auch ein was mit den empfangenen Events geschehen soll. --> Die Makro Konfiguration durcharbeiten.
Für erste Tests ( Sprachausgabe oder Popup anzeigen) reicht das vollkommen.

Wennst merh amchen willst gehts mit dem Tasker Pluggin weiter zum Tasker selbst. Beim PLuggin ist gar nichts einzustellen.
Beim Tasker muß „externer Zugriff erlauben“ gesetzt sein.

Schreib bitte auf welche Probleme du stößt, nur so kann ich die Doku was am Droid einzurichten ist vervollständigen.-

gruß
bb

Wo finde ich terRemote für windows ? Die Website nimmt an das auf dem (IPS) PC EventGhost läuft und nicht terRemote, das scheint nur auf dem Droid als Plugin zu laufen terRemote

terRemote gibts nur für Android. Auf der Windowsseite spricht IPS -> Android/terRemote, TerRemote mit Tasker.

Dann verstehe ich Post Nr.11 nicht. Auf dem Tasker kann ich keinen Port konfigurieren :frowning:

Sent from my iPad using Tapatalk HD

das wär mir neu, ich hab die aktuelle Version nicht auf den Geräten, werds aber gleich mal installieren.
Du konfigurierst normalerweise den eingehenden und den ausgehenden Port im terRemote

Hmm also nochmal:

1ster Fall: IPS soll mit Droid kommunizieren:
Am IPS Rechner brauchst nur IPS und den ClientSocket bzw. optional den ServerSocket und die Scripte konfiguriert.
Am Droid brauchst terRemote, optional das Tasker Plugin und den Tasker selbst.
Den Port und die Macros stellst in terRemote ein- im Plugin kannst nix konfigurieren, in Tasker dann nur die Tasks.

2ter Fall: IPs soll mit zweitem PC kommunizieren:
Am IPS Rechner brauchst wieder nur IPS , den ClientSocket bzw. optional den ServerSocket und die Scripte konfiguriert.
Am zweiten PC brauchst Eventghost mit den jeweils notwendigen Plugins.

jetzt klarer ?
bb

Ok jetzt hats geschnagelt :slight_smile:

Auf dem Android muss Tasker, das terRemote Plugin und ein weiteres Programm terRemote installiert werden. Der Port wird in dem Stand Alone Android App terRemote eingestellt.
Ich habe das gerade installiert und werde jetzt mal schrauben. Sry für meine „Lange Leitung“

Deine Anweisung war absolut korrekt, mir war nur nicht klar das es neben dem Plugin noch ein Stand Alone App auf dem Droid gibt

Macht nix, geb ja zu das die Seiten etwa länglich sind. Muß aber da komplexes Thema.
Deine Fragen helfen aber ein DAU taugliche (tschuldigung is net persönlich gemeint) Anleitung zu schrieben.

Paar Fußangeln werden bei den Driod Programmen och kommen, nimm dir Zeit und Nerven…
Aus der terRemote und Tasker Konfiguration wollte ich mich aber eigentlich raushalten, da 3rd Party software. Mal sehen.

gruß
bb

Fehlersuche hat ja gut funktioniert, Client Socket läuft jetzt. Danke für die Hilfe.

Ich melde mich dann beim nächsten Problem :frowning:

PS. Ist meine Annahme korrekt das das ganze nur im lokalen Netz bzw, mit VPN funktioniert (IP Adresse muss bekannt sein) ?

Stimmt, geht nur im LAN/VPN.

Für 3G wäre das AutoRemote Paket Für Android, bzw. dessen PC Programme eine Alternative.
Funktioniert aber komplett anders, die Scripte dazu müßtets dir erst selbst basteln. „Etwas“ zum Droid senden geht damit übrigens viel einfacher, aber auch wesentlich unzuverlässiger und ohne garantierte Zustellung. In Post #76 hab ich hier mal was dazu geschrieben.

gruß
bb

Ach ja, kriegst du zufällig auch einen Parse error: syntax error, unexpected ‚[‘ in [Handy\Scripts\sendData] on line 38

Hab da eine entsprechende Rückmeldung, kann aber auch nach mehrmaligen Versuchen da leider nix nachvollziehen.

gruß
bb

Nein den Fehler hatte ich nicht…