Hi,
ist hier jemand im Besitzt einer Telenot Alarmanlage und hat Lust zusammen einen LBS zu entwickeln???
Gruß Benjamin
ist hier jemand im Besitzt einer Telenot Alarmanlage und hat Lust zusammen einen LBS zu entwickeln???
Gruß Benjamin
<?php
error_reporting(E_ALL);
echo "<h2>TCP/IP-Verbindung</h2>\n";
/* Den Port für den WWW-Dienst ermitteln. */
$service_port = getservbyname('www', 'tcp');
/* Die IP-Adresse des Zielrechners ermitteln. */
$address = gethostbyname('www.example.com');
/* Einen TCP/IP-Socket erzeugen. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
echo "Versuche, zu '$address' auf Port '$service_port' zu verbinden ...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() fehlgeschlagen.\nGrund: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "HTTP HEAD request senden ...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Serverantwort lesen:\n\n";
while ($out = socket_read($socket, 2048)) {
echo $out;
}
echo "Socket schließen ...";
socket_close($socket);
echo "OK.\n\n";
?>
<?php
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
set_time_limit(0);
sql_connect();
if ($E=getLogicEingangDataAll($id)) {
// WICHTIG: PHP-Fehlerbehandlung abschalten, sonst generiert socket_recv() "Warnungen", wenn keine Daten empfangen wurden
restore_error_handler();
error_reporting(0);
if ($socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) {
if (socket_bind($socket,0,$E[32]['value'])) {
while (getSysInfo(1)>=1) {
// Hier ein UDP-Listener, der N I C H T auf Datenpakete wartet. Die Schleife läuft also ständig durch (LBSd)!
$len = socket_recv($socket,$data,1024,MSG_DONTWAIT);
if ($len !== false) {
// $data = preg_replace("/[^A-Za-z0-9&=]/",'',$data);
parse_str($data, $output); // $output = array();
// ---- UDP-Pakete | EMPFANGEN : Hier wird der UDP-String (Rückmeldung) von iTunes geparst ...
// ---- In klassischem Still sind die UDP-Pakete als Status-Rückmeldungen zu verstehen - 1/0 oder Wert ...
// ---- UDP-Pakete | EMPFANGEN | iTunes | PLAYER:
// ---- String z.B.: 'EA=1&Play=1&Pause=0&Stop=0&MastVol=40'
if (array_key_exists('EA', $output)) {
setLogicLinkAusgang($id,1, $output['EA']);
writeToTraceLog(0,true,'iTunes RM | A01 | EIN/AUS exists : '.array_key_exists('EA',$output));
writeToTraceLog(0,true,'iTunes RM | A01 | EIN/AUS Wert : '.$output['EA']);
}
...
} else {
// ---- HTTP-Requests | kein UDP-Paket empfangen | http SENDEN:
if ($E=getLogicEingangDataAll($id)) {
$url = "http://".$E[34]['value']."/%7E".$E[33]['value']."/eDOMI.php?c=";
// ---- HTTP-Requests | iTunes | Steuerung:
// PLAY: mit &p1=fadein / &p2=3 [s] Verzögerung | 'play' erwartet "1"
if (getLogicElementVar($id,2) == 1) {
if ($E[8]['value'] == 1) {
$ctx=stream_context_create(array('http' => array('timeout' => 3 )));
$r=file_get_contents($url.'play&p1=fadein&p2='.$E[9]['value'],0,$ctx);
writeToTraceLog(0,true,'iTunes E02 URL :'.$url.'play&p1=fadein'.'&p2='.$E[9]['value'].' / ctx '.$ctx);
} else {
$ctx=stream_context_create(array('http' => array('timeout' => 3 )));
$r=file_get_contents($url.'play',0,$ctx);
writeToTraceLog(0,true,'iTunes E02 URL :'.$url.'play'.' / ctx '.$ctx);
}
setLogicElementVar($id,2,0);
}
}
}
usleep(1000*100); // z.B. 100ms (*100) warten - wichtig, um die CPU-Last zu begrenzen !!!
}
}
}
socket_close($socket);
}
sql_disconnect();
?>
function telnetOpen($ip,$port,$timeout) {
//Öffnet eine Telnet-Session
//$ip: IP-Adresse
//$Port: Telnet-Port
//$timeout: Timeout in Sekunden
//return: Connection-Handler, oder false=Fehler
$con=fsockopen($ip,$port,$x,$xx,$timeout);
if ($con) {
stream_set_blocking($con,0);
return $con;
} else {
return false;
}
}
function telnetClose($con) {
//Schließt eine Telnet-Session
//$con: Connection-Handler
return fclose($con);
}
function telnetSend($con,$n) {
//Sendet in eine Telnet-Session
//$con: Connection-Handler
//$n: Inhalt (String)
//return: false=Fehler, sonst Anzahl der geschriebenen Bytes
return fwrite($con,$n."\r\n");
}
function telnetWait($con,$waitFor,$readBytes,$timeout) {
//Wartet auf einen bestimmten String und liefert true/false zurück
//$con: Connection-Handler
//$waitFor: String, auf den gewartet werden soll
//$readBytes: soviele Bytes werden in einem Rutsch gelesen
//$timeout: Timeout
//return: false=Timeout/nicht gefunden, true=Gefunden
$ok=false;
$n='';
$t0=microtime(true);
while (!feof($con)) {
$n.=fread($con,$readBytes);
if (strpos(strtoupper($n),strtoupper($waitFor))!==false) {
$ok=true;
break;
}
if ((microtime(true)-$t0)>$timeout) {
break;
}
usleep(100*1000);
}
return $ok;
}
function telnetWait2($con,$waitFor,$readBytes,$timeout) {
//Wartet auf einen bestimmten String und liefert die Antwort zurück
//$con: Connection-Handler
//$waitFor: String, auf den gewartet werden soll
//$readBytes: soviele Bytes werden in einem Rutsch gelesen
//$timeout: Timeout
//return: die komplette Antwort, oder false=Timeout/nicht gefunden
$ok=false;
$n='';
$t0=microtime(true);
while (!feof($con)) {
$n.=fread($con,$readBytes);
if (strpos(strtoupper($n),strtoupper($waitFor))!==false) {
$ok=$n;
break;
}
if ((microtime(true)-$t0)>$timeout) {
break;
}
usleep(100*1000);
}
return $ok;
}
<?
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
set_time_limit(0); //Script soll maximal 2 Sekunden laufen
sql_connect();
$E=getLogicEingangDataAll($id);
$ip = $E[3]['value'];
$port = $E[4]['value'];
function telnetOpen($ip,$port,$timeout) {
//Öffnet eine Telnet-Session
//$ip: IP-Adresse
//$Port: Telnet-Port
//$timeout: Timeout in Sekunden
//return: Connection-Handler, oder false=Fehler
$con=fsockopen($ip,$port,$timeout);
if ($con) {
stream_set_blocking($con,0);
return $con;
} else {
return false;
}
}
setLogicLinkAusgang($id,1,$con);
sql_disconnect();
?>
| Fehlercode: 8 | Zeile: 30 | Undefined variable: con ERROR
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar