I'm getting information from the interface of an internet modem: TXBytes, RXBytes, Uptime It gives me a json entry:
Entrada=([[
{
"uptime":"15423",
"txbytes":"1147089",
"rxbytes":"23124634"
}
]])
Tab = json.cod(Entrada)
I already did the calculation with the following excerpt:
TXAnterior,RXAnterior,TLAnterior = 0,0,0 // Definindo um valor inicial
TXAtual = convnumero(Tab.txbytes) // Converte em números pra calcular
RXAtual = convnumero(Tab.rxbytes)
TLAtual = convnumero(Tab.uptime)
Segundos = TLAtual - TLAnterior // Pegando o que foi consumido
MenosTX = TXAtual - TXAnterior
MenosRX = RXAtual - RXAnterior
VezesTX = (MenosTX * 8) // Os valores foram dados em bytes
VezesRX = (MenosRX * 8) // Convertendo em bits
MediaTX = (VezesTX / (Segundos * 1048576)) // Divide por um milhão "Mega"
MediaRX = (VezesRX / (Segundos * 1048576))
TXAnterior = TXAtual // O anterior vai pegar o valor do atual
RXAnterior = RXAtual
Calling ajax:
window.onload = function(){
animaGraficos()
};
var dados = ("EnderecoDoRadio=]]..EnderecoDoRadio..[[");
function ajax(dados, nrTentativas, cb) {
$.ajax({
type: "GET",
url: 'monitor.prisma',
data: dados,
dataType: "json",
success: function(sucesso) {
// Beleza deu certo!
cb(null, sucesso);
},
error: function(erro) {
// Tente novamente
if (nrTentativas > 0) setTimeout(ajax.bind(null, dados, nrTentativas - 1, cb), 500);
else cb(erro);
}
});
}
function animaGraficos() {
var timers = [];
var latencia = document.gauges.get('manometro-latencia');
var sinal = document.gauges.get('manometro-sinal');
var qualidade = document.gauges.get('manometro-qualidade');
var envio = document.gauges.get('manometro-envio');
var recebimento = document.gauges.get('manometro-recebimento');
var processador = document.gauges.get('manometro-processador');
setInterval(function() {
ajax(dados, 2, function(err, resposta) {
if (err) return console.log(err);
console.log(resposta);
result=resposta;
latencia.value = resposta.Ping;
sinal.value = resposta.Sinal;
qualidade.value=resposta.Qualidade;
envio.value=resposta.TXBytes;
recebimento.value=resposta.RXBytes;
processador.value=resposta.Processador;
//alert('oi');
if(result.Processador > 80){
$('#manometro-processador').addClass(' animated infinite flash');
}
if(result.Processador < 80){
$('#manometro-processador').removeClass(' animated infinite flash');
}
if(result.Sinal < -85){
$('#manometro-sinal').addClass(' animated infinite flash');
//$('#manometro-sinal').attr('data-value-text','Rafael');
}
if(result.Sinal > -86){
$('#manometro-sinal').removeClass(' animated infinite flash');
}
// se ping não for número
if(isNaN(result.Ping)){
Materialize.toast('<span>Destino inalcançável ou fora do ar</span>', 3000);
}
else if(isNaN(result.Sinal)){ // caso ping exista, veja se tem sinal
Materialize.toast('<span>Verifique usuário, senha e porta</span>', 3000);
}
if(result.ERRO){ // caso haja erros, mostre
Materialize.toast('<span>' + result.ERRO + '</span>', 3000);
}
});
}, 5000 );
}
This way sometimes works, sometimes not because there is a delay to capture the input and not always the calculation is necessary.
I want to know if someone helps me to improve this code or if I have to calculate it by the javascript itself?
This photo shows how wrong values are when it gives some error: