Hallo,
Folgendes Ziel:
Ich möchte meinen Onkyo NR414 in über EIB steuern (Steuer perl script gibt es schon. Siehe entsprechenden Thread)
Jetzt möchte ich die Stati mit bekommen um den aktuellen Status mitbekommen bzw abfragen zu können.
Gibt es da schon was fertiges?
Falls nicht:
hätte ich imho zwei Optionen:
1. Jeden möglichen Status einzeln durch zu ackern
2. Einen socket dauernd offen halten und das eISCP Protokoll vom Onkyo belauschen
Folgendes Script ist in Verbindung mit dem Pear System-Daemon zum belauschen gedacht:
Zum belauschen funktioniert das so fürs erste. Ansonsten macht das Script noch nichts.
Gibt es eine Elegante Möglichkeit die stati in eine csv o.ä zu schreiben und dort auch zu aktualisieren?
Ich hab desöfteren gelesen das es mit endless loops massive Speicher Probleme geben kann. (U.a wegen Tausender offener sockets. Die müsste ich ja ausgeschlossen haben, da dieser vor der schleife geöffnet wird? )
Gesendet von meinem GT-N7100 mit Tapatalk 2
Folgendes Ziel:
Ich möchte meinen Onkyo NR414 in über EIB steuern (Steuer perl script gibt es schon. Siehe entsprechenden Thread)
Jetzt möchte ich die Stati mit bekommen um den aktuellen Status mitbekommen bzw abfragen zu können.
Gibt es da schon was fertiges?
Falls nicht:
hätte ich imho zwei Optionen:
1. Jeden möglichen Status einzeln durch zu ackern
2. Einen socket dauernd offen halten und das eISCP Protokoll vom Onkyo belauschen
Folgendes Script ist in Verbindung mit dem Pear System-Daemon zum belauschen gedacht:
Code:
#!/usr/bin/php -q <?php require_once "System/Daemon.php"; System_Daemon::setOption("appDescription", "Onkyo Listener"); System_Daemon::setOption("authorEmail", "vlamers@online.de"); System_Daemon::setOption("authorName", "Ich"); System_Daemon::setOption("appName", "onkyo"); System_Daemon::start(); System_Daemon::log(System_Daemon::LOG_INFO, "Daemon not yet started so this will be written on-screen"); System_Daemon::writeAutoRun(); $host="192.168.178.68" ; $port=60128; $timeout=30; $sk=fsockopen($host,$port,$errnum,$errstr) ; while(TRUE) { if (!is_resource($sk)) { exit("connection fail: ".$errnum." ".$errstr) ; } else { // fputs($sk, "ISCP\x00\x00\x00\x10\x00\x00\x00\x08\x01\x00\x00\x00\x211PWR01\x0D\x0A") ; // $dati.= fgets ($sk, 1024); // while (!feof($sk)) { $dati.= fgets ($sk, 1024); System_DAemon::log(System_Daemon::LOG_INFO, $dati); // } if($buf === FALSE) { // something went wrong // echo 'socket_read() returned false : '.socket_strerror(socket_last_error())."\n"; continue; } elseif(strlen($buf) === 0) { // this should mean "client closed the connection" // System_Daemon::log(System_Daemon::LOG_INFO,"socket_read() returned an empty string : ".socket_strerror(socket_last_error())."\n"); usleep(500); continue; } // System_Daemon::log(System_Daemon::LOG_INFO, "Incoming connection from ".$clientIP.":".$clientPort." ... "); } } fclose($sk) ; //while (true) { //doTask(); //} System_Daemon::stop(); ?>
Gibt es eine Elegante Möglichkeit die stati in eine csv o.ä zu schreiben und dort auch zu aktualisieren?
Ich hab desöfteren gelesen das es mit endless loops massive Speicher Probleme geben kann. (U.a wegen Tausender offener sockets. Die müsste ich ja ausgeschlossen haben, da dieser vor der schleife geöffnet wird? )
Gesendet von meinem GT-N7100 mit Tapatalk 2
Kommentar