LCDTorrents

D.I.Y.  |    20/09/2009   |   2694 hits   |   J. Ricardo Simões Rodrigues
Trata-se de um script em PHP para exibição de estatísticas do cliente torrentflux-b4rt em um LCD paralelo com 20x4 caracteres via lcdproc em um equipamento sem monitor.
Está executando sob GNU/Linux Ubuntu 2.6.24-24-server #1 SMP.

O LCD é do tipo Hitachi HD44780 (YM2004A by YAOYU TECHNOLOGY) compatível e ConnectionType=winamp, portando em uma ligação paralela.

LCD YM2004A (HD44780 compatível) ligado na paralela e exibindo lela inicial do lcdproc

Traseira do LCD YM2004A (HD44780 compatível) ligado na paralela

Abaixo, vídeo demonstrando as informações do cliente torrentflux-b4rt sendo exibidas no LCD.

O script LCDTorrents.php é o seguinte:


\n";
echo "Iniciando $title $version
\n"; echo "Host: $server:$port
\n"; function _w($in){ global $socket; socket_write($socket, $in, strlen($in)); } function _clear(){ _w("widget_del scr1 info1 \n"); _w("widget_del scr1 info2 \n"); _w("widget_del scr1 info3 \n"); _w("widget_del scr1 hbar1 \n"); _w("widget_del scr1 scroll1 \n"); } function _create(){ _w("widget_add scr1 info0 string\n"); _w("widget_add scr1 info1 string\n"); _w("widget_add scr1 info2 string\n"); _w("widget_add scr1 info3 string\n"); _w("widget_add scr1 hbar1 hbar\n"); _w("widget_add scr1 scroll1 scroller\n"); echo "Flush.
\n"; } function _s($str){ return str_replace ( ' ' , '' , $str ); } //Get IP do servidor $command = "ifconfig eth0"; exec ( $command , $output, &$return_var ); $ip = explode(":", $output[1]); $ip = explode(" ", $ip[1]); $ip = $ip[0]; //criar socket $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { die("socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"); } else{ echo "Socket criado.
\n"; } $result = socket_connect($socket, $server, $port); if ($result === false) { die("socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"); }else{ echo "Socket conectado.
\n"; } $in = "hello\n"; $out = ''; socket_write($socket, $in, strlen($in)); $out = socket_read($socket, 2048); if(strpos ($out, 'LCDproc') > 0){ $info = explode(" ", $out); $config['version'] = $info[2]; $config['protocol'] = $info[4]; $config['wid'] = $info[7]; $config['hgt'] = $info[9]; $config['maxdim'] = 5 * ( $config['wid'] - 8 ); echo "Configs do LCD: $info.
\n"; }else{ die("socket_read() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"); } _w("client_set name {LCDTorrentflux} heartbeat off\n"); _w("screen_add scr1\n"); _w("screen_set scr1 heartbeat off duration 40\n"); _w("widget_add scr1 tit1 title\n"); while(true) { _create(); echo "Tela: Informacoes.
\n"; _w("widget_set scr1 tit1 {LCDTorrentflux}\n"); _w("widget_set scr1 info1 1 2 {" . str_pad('Informacoes de', 20, " ", STR_PAD_BOTH) . "}\n"); _w("widget_set scr1 info2 1 3 {" . str_pad('torrentflux-b4rt', 20, " ", STR_PAD_BOTH) . "}\n"); _w("widget_set scr1 info3 1 4 {". str_pad($ip, 20, " ", STR_PAD_BOTH) . "}\n");// sleep(5); _clear(); $handle = fopen($filename, "rb"); $xmlstr = stream_get_contents($handle); fclose($handle); $xml = new SimpleXMLElement($xmlstr); //SERVER _create(); echo "Tela: Server.
\n"; $driveSpacePercent = ($xml->server->serverStat[10]*(20*4))/100; _w("widget_set scr1 tit1 {Servidor}\n"); _w("widget_set scr1 info1 1 2 {U: " . $xml->server->serverStat[1] . " D: " . $xml->server->serverStat[0] . "}\n"); _w("widget_set scr1 info2 1 3 {Livre: " . _s($xml->server->serverStat[4]) . "}\n"); _w("widget_set scr1 hbar1 1 4 " . $driveSpacePercent . "\n"); sleep(5); _clear(); //XFER _create(); echo "Tela: XFER.
\n"; $driveSpacePercent = ($xml->server->serverStat[10]*(20*4))/100; _w("widget_set scr1 tit1 {Transferencias}\n"); _w("widget_set scr1 info1 1 2 {Total: " . _s($xml->xfer->xferStat[0]) . "}\n"); _w("widget_set scr1 info2 1 3 {M: " . _s($xml->xfer->xferStat[1]) . " S: " . _s($xml->xfer->xferStat[2]) . "}\n"); _w("widget_set scr1 info3 1 4 {Hoje: " . _s($xml->xfer->xferStat[3]) . "}\n"); sleep(5); _clear(); foreach($xml->transfers->transfer as $transfer){ _create(); echo "Tela: Torrents.
\n"; _w("widget_set scr1 tit1 {Torrents}\n"); _w("widget_set scr1 scroll1 1 2 20 2 m 2 {" . $transfer['name'] . " }\n"); _w("widget_set scr1 info2 1 3 {Size: " . _s($transfer->transferStat[0]) . "}\n"); _w("widget_set scr1 info3 1 4 {" . $transfer->transferStat[1] . "}\n"); sleep(5); _clear(); _create(); _w("widget_set scr1 tit1 {Torrents}\n"); _w("widget_set scr1 scroll1 1 2 20 2 m 2 {" . $transfer['name'] . " }\n"); _w("widget_set scr1 info2 1 3 {U: " . _s($transfer->transferStat[4]) . " D: " . _s($transfer->transferStat[3]) . "}\n"); _w("widget_set scr1 info3 1 4 {" . _s($transfer->transferStat[2]) . " ETA: " . _s($transfer->transferStat[5]). "}\n"); sleep(5); _clear(); } } ?>

Executar com o seguinte comando:


php LCDTorrents.php

Última edição concluída em 20/09/2009 por J. Ricardo Simões Rodrigues.