brauche einen "portlistener" oder netzwerkdienst

erstmal ein frohes Neues allen Zusammen!

ich habe eine Anwendung die mir Daten auf einen bestimmten udp Port senden möchte. Kann man mit V2 solche Daten empfangen und entsprechend damit umgehen?

Herzlichen Dank für Eure Hilfe!
Udo

Ps. hier gab es für V1 schon mal eine analoge Frage, aber nur Ansätze als Antwort.

gibt es da wirklich nichts um das unter V2 zu realisieren … ???

Nein. Für UDP gibt es zur Zeit nichts. Du könntest vielleicht mit der PHP Sockets Library etwas erstellen.

paresy

das hatte ich befürchtet … :rolleyes:
Trotzdem Danke!

Da der Thread ja noch recht frisch ist, gehe ich mal davon aus, dass es da noch nichts neues gibt.
Ich würde gerne die Daten meines IR-Trans Lan Moduls empfangen. Da dürfte ja dieser „portlistener“ das sein sein was ich brauche, oder?
Ist denn wohl damit zu rechnen, dass so etwas mal kommt?

Gruss
SmUDO

PS: Jetzt sind wir schon 2 Udo´s die gerne Daten aus dem Netzwerk hätten. Ob das hilft? :slight_smile:

Edit:
Noch besser wär natürlich eine bessere Unterstützung für den IR-Trans Server, so dass alle dort angeschlossenen Module direkt angesprochen werden könnte. Für mein Verständnis müsste das doch recht einfach zu machen sein (für jemanden der sich damit auskennt) da es ja nur um 3 Variablen (also eine mehr als Jetzt; Modul-ID) geht. So etwas können doch bestimmt einige Leutchen gebrauchen.

Moin Udo,
ich habe in der V1 mal einen IRTRans zun testen dran gehabt und den über WinLirc angebunden (der IRTrans-Server lief auf dem Rechner auch).
Das WinLirc-Modul gibt es unter (None) bei den Instanzen.
Ich würde in V2 auch genau dort ansetzen …

Hi Uwe,

jo, ist schon klar. Daran verrichtet mein USB Modul seinen Dienst. Ich hab aber fürs Wohnzimmer noch ein LAN Modul und da ist mein Problem. Ich kann darauf per UDP IR-Befehle senden aber hab keine Ahnung wie ich damit empfangen soll.

mfg
Smudo

Moin Udo,
auf meinem alten Server gibt es eine alte Verknüpfung, die nennt sich ‚IRTransTRay LAN‘. Darüber hatte ich das Ding via WinLirc an IPS über Netzwerk am laufen.
Da konnte man irgendwo verschiedene Geräte auswählen.
Ich habe das Gerät dem Besitzer mittlerweile wieder zurückgegeben und habe immer noch keins zum testen da.
Im Zweifel musst du mal den Bus-Profi [Tommy] fragen (war sein Gerät), der sollte das eigentlich unter IPS2 am laufen haben (mir sind jedenfalls keine Probleme ans Ohr geraten).

Ein ‚portlistener‘ ist für IRTrans jedenfalls Quatsch …

Hallo Uwe,

der IR-Trans Server kann mit dem USB-Modul oder mit dem LAN-Modul oder beiden Modulen arbeiten. Da aber IPS über die Winlirc Schnittstelle auf den IR-Trans Server zugreift, kann ich nicht zwischen den beiden Modulen unterscheiden.
Da ich in beiden Zimmern Geräte habe, die mit den gleichen IR-Befehlen arbeiten (Media Center) , kommt da einiges durcheinander. Ich muss die also wirklich einzeln sende- und empfangsmässig ansprechen können.

Über die UDP Instanz von IPS kann ich nur Befehle versenden. Das IR-Trans LAN Modul sendet die Empfangenen IR befehle auch über UDP auf Port 21000 zurück aber da hapert es dann mit dem Auswerten. So weit mein Wissensstand. Vielleicht gibts da ja noch eine Möglichkeit. Ich werde dann mal den Tommy darauf anhauen.

Eine andere Möglichkeit wäre, den IR-Trans Server 2 mal laufen zu lassen und eine zweite Instanz Winlirc zu installieren. Das mag der IR-Trans Server aber nicht einfach so. Vielleicht gibts da ja noch einen Trick mit umbennen einer exe oder so was. Ich werde da noch ein wenig probieren.

mfg
Smudo

Guten Abend,

ich habe seit dem Wochenende den IRtrans-Ethernet mit Datenbank und natürlich auch das Ziel, IR-Befehle mit IPS senden und empfangen zu können OHNE den IRTrans-Server auf einem Rechner laufen lassen zu müssen. Also Ansteuerung direkt aus IPS heraus.

Da ich IPS bisher auf V1 laufen lassen (inzwischen so Komplex, dass ich noch nicht auf V2 „umgebaut“ habe), kann ich nicht sagen, wie die Beispiele auf der 2-er Version laufen, auf der 1er tun sie es:)

Einmal eingespeicherte IR-Befehle lassen sich ja recht einfach senden:
1.) Von einem Web-Interface einfach durch einen Http-Link, also z.B:

<a href="http://192.168.1.30/send.htm?remote=tv&command=leiser&back">Leiser</a>

Wichtig ist der Parameter &back am Ende, damit ein Redirect auf die aufrufende Seite erfolgt.
Ausserdem können so auch mehrere Befehle durch Semikolon getrennt versendet werden, z.B:

<a href="http://192.168.1.30/send.htm?remote=dbox&command=3;7&back">Vox</a>

(Die 192.168.1.30 ist die LAN-Adresse meines IRTrans im Beispiel, da muss natürlich die entsprechende LAN-IP genommen werden)

  1. Will man nur Befehle ohne Web-Interface direkt aus IPS-Scripten senden, geht folgende Funktion:
$a = ir_sende('remote=bilderrahmen&command=home;@p800;right;ok');

function ir_sende($data) {
        $host = '192.168.1.30'; // IP des Lan - IRTrans hir eintragen
        $path= '/send.htm?'.$data;
        $filePointer = fsockopen($host, 80, $errorNumber, $errorString, 2);
        if (!$filePointer) {
            return 'Fehler'.'<br/>
';
        }
        $requestHeader = "GET ".$path."  HTTP/1.1
";
        $requestHeader.= "Host: ".$host."
";
        $requestHeader.= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0
";
        // oder welchen Browser man auch immer vorgaukeln will ist egal
        $requestHeader.= "Content-Type: application/x-www-form-urlencoded
";
        $requestHeader.= "Connection: close

";
        fwrite($filePointer, $requestHeader);
        $responseHeader = '';
        $responseContent = '';
        do {
            $responseHeader.= fread($filePointer, 1);
        }
        while (!preg_match('/\\r\
\\r\
$/', $responseHeader));
        // return $responseHeader;
        while (!feof($filePointer)) {
                $responseContent.= fgets($filePointer, 128);
        }
        return chop($responseContent);
}


  1. Jetzt zum Empfangen:

Hilfreich ist die Beschreibung der TCP-Schnittstelle von IR-Trans gewesen:
http://www.irtrans.de/download/Docs/IRTrans%20TCP%20ASCII%20Schnittstelle_DE.pdf

In IPS 1 nun einen Client-Socket für den Port 21000 und als Remote-Host die LAN des IRTrans eingeben. Dann 2 Registervariabeln (eine zum Empfangen, eine zum Senden) einrichten und wie in der o.g. Beschreibung zunächst „ASCR“ über die TCP-Schnittstelle senden, dann kann direkt und ohne Serverprogramm mit dem IRTrans-Modul Gesendet und Empfangen werden.

Auslesen und Senden der Befehle entsprechend der in der o.g. Doku. Hoffe, dass ich am Wochenende Zeit habe, das Auswerten der Empangen IR-Codes mit ein paar Beispielen zu versehen.

Gruß Rolf

Hallo Rolf,

warum willst du den IR-Trans Server nicht laufen lassen?
Damit geht das Senden und Empfangen über IPS echt mal ziemlich einfach. Oder hast du auch das Problem, das du mehrere IR Module hast.

Ohne den IR-Trans Server kann man bei der IPS V2 wunderbar über den UDP Socket Befehle an das Modul schicken. Dann sieht ein Behfehl nur noch so aus:

WinLIRC_SendOnce(29789 /*[WinLIRC]*/,"mediacenter", "power");

Nur mit dem Empfangen haperts noch bei mir. Keine Ahnung wie ich das anstellen soll.

Gruß
Smudo

Hallo Smudo,

Empfangen funktioniert einwandfrei mit einer TCP-Verbindung zum IR-Trans-Gerät auf Port 21000.
Habe mich nur in meinem Posting mit dem "ASCR"vertan: Stattdessen nach Verbindungsaufbau „ASCI“ senden, dann kommen die empfangen IR-Codes im Klartext (natürlich nur IR-Codes, die vorher in die Gerätedatenbank geschrieben worden sind).

Gruß Rolf

Ahh, sehr schön, da hab ich ja wieder was zum probieren.

Ürigens ist mir aufgefallen, daß das Beispiel, daß ich oben gepostet habe totaler Quatsch ist. Das ist der Befehl für die WINLIRC Schnittstelle und dem IR-Trans Server.
Über UDP sieht das dann so aus:

USCK_SendText(47177 /*[UDP Socket - IR-Trans LAN Wohnzimmer]*/,"snd mediacenter,power,li,p21000")

Gruß
Smudo