Ver la versión completa : [Ayuda] Programadores os invoco!
egleuterio
15/03/2015, 18:43
Buenas compis, con unas de mis RPIs y la pantalla que va por GPIOs que no puedo usar para el otro proyecto quiero montar un cacharrito para tener en una pantalla pequeña la monitorizacion de mis maquinas, os explico un poco a ver si podéis echarme un cable:
La idea es muy simple, tengo una maquina que tiene corriendo el cacti para monitorizar por snmp las maquinas que tengo corriendo en casa (por si no lo conocéis es esto http://www.cacti.net/screenshots.php), el caso es que esto genera una web donde va presentando las gráficas y como la pantalla en cuestión solo tiene 320x240 de resolución es imposible ver la web ahí, con lo que se me ocurrió que igual haciendo alguna web hipersencilla donde vaya cambiando de grafica (una o dos en pantalla) cada unos 3 segundos, me valdría para ir dando un vistazo general.
La idea es esa, hacer una web mini, donde solo salga una gráfica y como mucho el nombre de la maquina en cuestión y que vaya cambiando las gráficas cada X segundos como si fueran slides, partiendo de la base que en la vida he programado nada, que me recomendáis leer para poder conseguirlo???
Muchas gracias compis!
egleuterio
15/03/2015, 19:17
¿php?
Y por donde empiezo?
pablomalaga
15/03/2015, 21:16
¿Codeacademy?
egleuterio
15/03/2015, 21:17
¿Codeacademy?
Me lo apunto!
Gracias!
josepzin
15/03/2015, 22:58
Y esos gráficos son imágenes que se van guardando en el disco? Si es así con un mini html con la opción de actualizarde de forma automática cada x tiempo debería ser suficiente o igual no entendí muy bien lo que quieres :-P
egleuterio
16/03/2015, 00:51
Cada imagen corresponde con una url, no se guarda en disco.
josepzin
16/03/2015, 02:29
Y la misma url se va actualizando cada x segundos?
Si es así es tan simple como un HTML básico que se recargue cada 5 segundos.
Para mejorarlo, la recarga podría ser por javascript de sólo las imágenes.
tiene pinta de descontinuado pero este plugin es una version muy basica de lo que pides
http://docs.cacti.net/plugin:mobile
quizas haya otros plugins similares o mas completos.
Luego parece ser que existen clientes para iOS que el interface es justo lo que quieres pero supongo que seran nativos de iOS.
Edit: Acabo de mirar el codigo y son 30 lineas que hacen unas queries y "supongo" que pinta los numeros, nada de graficas :(
Edit2 : Yo creo que lo que necesitas es un theme/skin que se vea bien en pantallas pequeñas, no se si hay skins para cacti.
Aiken
egleuterio
16/03/2015, 13:57
tiene pinta de descontinuado pero este plugin es una version muy basica de lo que pides
http://docs.cacti.net/plugin:mobile
quizas haya otros plugins similares o mas completos.
Luego parece ser que existen clientes para iOS que el interface es justo lo que quieres pero supongo que seran nativos de iOS.
Edit: Acabo de mirar el codigo y son 30 lineas que hacen unas queries y "supongo" que pinta los numeros, nada de graficas :(
Edit2 : Yo creo que lo que necesitas es un theme/skin que se vea bien en pantallas pequeñas, no se si hay skins para cacti.
Aiken
Gracias compi, pero la opcion plugins/themes de cacti esta descartada.
Al final he montado una cosa que pinta qeu funciona, pero aun no he podido probarla en la pantalla de la RPI, cuando la pruebe os comento cositas.
Gracias!
egleuterio
16/03/2015, 15:17
Al final he encontrado un script por ahí y lo he toqueteado un poco, el script en cuestión es este:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
SlideShow v1.0
Troy Wolf <troy@troywolf.com>
Simply define your "slides" in the javascript slides[] array below.
-->
<html>
<head>
<title>RPI Monitor</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<style>
/* Change body background-color to change fade out color. */
body.siteshow { margin:0; padding:0; background-color:#000000; }
#menu
{
font-family:Arial;
font-size:9pt;
display:none;
opacity:0.00;
-mozopacity:0.00;
filter:alpha(opacity=0);
position:absolute;
top:10px;
left:10px;
padding:5px;
background-color:#000000;
color:#FFFFFF;
border:3px dotted #999999;
}
#menu a { color:#ffffff; }
#menu a:hover { text-decoration:none; }
#title { font-size:11pt; font-weight:bold; letter-spacing:2; }
#slides { font-size:9pt; line-height:16pt; }
.button { width:60px; font-size:9pt; letter-spacing:1; }
</style>
<script type="text/javascript">
var current_idx = 0;
var slides = new Array();
var menuwin;
var show_timer;
var menu_timer;
var menu;
var content;
var loaded = true;
// Define your "slides". 3 values for each are:
// 1. Duration in seconds.
// 2. Title to be used in menu.
// 3. Source URL. Can be full URI or a relative URL.
slides[1] = new Array(5, "MiniLamp Disks", "http://192.168.1.22/graph_image.php?action=view&local_graph_id=325&rra_id=1");
slides[2] = new Array(5, "MiniLamp CPU", "http://192.168.1.22/graph_image.php?action=view&local_graph_id=324&rra_id=1");
slides[3] = new Array(5, "MiniLamp Load Av", "http://192.168.1.22/graph_image.php?action=view&local_graph_id=321&rra_id=1");
slides[4] = new Array(5, "MiniLamp memory", "http://192.168.1.22/graph_image.php?action=view&local_graph_id=322&rra_id=1");
slides[5] = new Array(5, "MiniLamp Traffic", "http://192.168.1.22/graph_image.php?action=view&local_graph_id=318&rra_id=1");
slides[6] = new Array(5, "Win Server CPU", "http://192.168.1.22/graph_image.php?action=view&local_graph_id=171&rra_id=1");
slides[7] = new Array(5, "Win Server Disk C", "http://192.168.1.22/graph_image.php?action=view&local_graph_id=77&rra_id=1");
function MenuInit()
{
var html = "";
for(idx=1; idx<slides.length; idx++) {
html += '<a href="javascript:Navigate('+idx+')">' +
slides[idx][1] + "</a><br />\n";
}
document.getElementById("slides").innerHTML = html;
menu.style.display = "block";
}
function MenuShow()
{
clearTimeout(menu_timer);
opacity('menu', 0, 90, 500);
menu_timer = setTimeout("MenuHide()", 3500);
}
function MenuHide()
{
opacity('menu', 90, 0, 500);
}
function Pause()
{
clearTimeout(show_timer);
document.getElementById('play').style.display = "block";
document.getElementById('pause').style.display = "none";
}
function Navigate(slide_idx)
{
clearTimeout(show_timer);
if (current_idx == 0) {
if (!slide_idx) { slide_idx = 1; }
current_idx = slide_idx;
content.src = slides[current_idx][2];
document.getElementById('play').style.display = "none";
document.getElementById('pause').style.display = "block";
show_timer = setTimeout("Navigate()", slides[current_idx][0]*1000);
return;
}
if (slide_idx) {
current_idx = slide_idx;
content.src = slides[current_idx][2];
document.getElementById('play').style.display = "block";
document.getElementById('pause').style.display = "none";
return;
}
loaded = false;
current_idx++;
if ( current_idx == slides.length) { current_idx = 1; }
opacity('content', 100, 0, 500);
document.getElementById('play').style.display = "none";
document.getElementById('pause').style.display = "block";
show_timer = setTimeout("Navigate()", slides[current_idx][0]*1000);
return;
}
function opacity(id, opacStart, opacEnd, millisec)
{
//speed for each frame
var speed = Math.round(millisec / 100);
var timer = 0;
//determine the direction for the blending, if start and end are the same nothing happens
if(opacStart > opacEnd) {
for(i = opacStart; i >= opacEnd; i--) {
setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
timer++;
}
if (opacEnd == 0) { setTimeout("FadeOutTrigger('"+id+"')",((timer-1) * speed));; }
//if (opacEnd == 0) { FadeOutTrigger(id); }
} else if(opacStart < opacEnd) {
if (opacStart == 0) { FadeInTrigger(id); }
for(i = opacStart; i <= opacEnd; i++)
{
setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
timer++;
}
}
}
//change the opacity for different browsers
function changeOpac(opacity, id)
{
var object = document.getElementById(id).style;
object.opacity = (opacity / 100);
object.MozOpacity = (opacity / 100);
object.KhtmlOpacity = (opacity / 100);
object.filter = "alpha(opacity=" + opacity + ")";
}
function FadeOutTrigger(id)
{
//alert('FadeOut: '+id);
switch(id) {
case "menu":
document.getElementById(id).style.display = "none";
break;
case "content":
content.src = slides[current_idx][2];
//setTimeout("opacity('content', 0, 100, 500)", 1000);
break;
default:
break;
}
}
function FadeInTrigger(id)
{
//alert('FadeIn: '+id);
switch(id) {
case "menu":
document.getElementById(id).style.display = "block";
break;
case "content":
//opacity('content', 0, 100, 500);
break;
default:
break;
}
}
function FadeInContent()
{
if (!loaded) {
opacity('content', 0, 100, 500);
loaded = true;
}
}
function LoadTrigger()
{
//self.resizeTo(1366,768);
menu = document.getElementById('menu');
content = document.getElementById('content');
Navigate();
// MenuInit();
// MenuShow();
}
window.onload = LoadTrigger;
</script>
</head>
<body class="siteshow">
<iframe id="content" name="content" style="width:100%; height:100%;" frameborder="no" scrolling="auto" src="" onmouseover="MenuShow();" onload="FadeInContent();" ></iframe>
<div id="menu">
<div id="slides">
</div>
<p>
<input id="pause" class="button" style="display:block;" type="button" value="pause" onclick="Pause()" />
<input id="play" class="button" style="display:none;" type="button" value="play" onclick="Navigate()" />
</p>
</div>
</body>
</html>
El resultado es el siguiente:
42944
https://www.youtube.com/watch?v=9y55ScaFoys
Como podéis ver tiene un error, no redimensiona las imágenes, las hay de varios tamaños y a las mas pequeñas no las agranda a la resolución de la pantalla y a las mas grandes no las reduce...
¿Alguien sabe que debo modificar del script para que redimensiones las imágenes?
Gracias compis!
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.