Hardware > Bricometeo

Sensor de Radiacion Solar en w/m^2

<< < (39/55) > >>

jmviper:
A ver prueba esto:

<?php

$archivo_solar = 'solar.txt'; //Datos recibidos del Arduino Solar
if (file_exists($archivo_solar)){
   $archivo_solar = file_get_contents($archivo_solar);  //Leemos dato solar del archivo
   $valor_solar = intval($archivo_solar);   //Extraemos el valor de radiación solar

$lat = 42.55;
$lon = -6.62;
$offset = explode(':',date('P'))[0];

$fecha = time();

$salida = date_sunrise($fecha, SUNFUNCS_RET_STRING, $lat, $lon, 90.6, $offset);

$puesta = date_sunset($fecha, SUNFUNCS_RET_STRING, $lat, $lon, 90.6, $offset);

$valor_solar = (strtotime(date('d-m-Y '.$salida))-600 < $fecha and $fecha < strtotime(date('d-m-Y '.$puesta))+600) ? $valor_solar : 0;

echo $valor_solar;   

}

?>

Lo que hace el script es calcular que si la hora actual está entre la salida y la puesta de sol (en verdad con -600 y más 600 le resta o le suma 10 minutos a la salida o la puesta y ya he puesto tu latitud / longitud) sacará el valor de radiación solar y si no está entre esas horas pondrá 0.


--- Cita de: EA1AML en 12 de Mayo de 2018, 19:11:12 ---Si os vale este enlace? aqui lo pongo:
https://sites.google.com/site/pormetexpdomel/scripts-y-simulink-matlab
Saludos

--- Fin de la cita ---

Ese enlace es de Matlab. Nada que ver con PHP. Gracias  ;)

spyfly:
muchas gracias jmviper, me he permitido retocar un poco tu código para recoger también la unidad

<?php
$archivo_solar = 'solar.txt'; // Datos recibidos del Arduino Solar
$lat = 42.57277777777778;     // Mi latitud
$lon = -6.642499999999999;    // Mi longitud
   
if (file_exists($archivo_solar))
{
   list($valor_solar, $txt) = split('[ ]', file_get_contents($archivo_solar));  // Extraemos las unidades como texto y el valor como texto

   $salida = strtotime(date('d-m-Y '.date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $lon, 90.6, explode(':',date('P'))[0])))-600; // Calcula la hora de salida del sol
   $puesta = strtotime(date('d-m-Y '.date_sunset(time(), SUNFUNCS_RET_STRING, $lat, $lon, 90.6, explode(':',date('P'))[0])))+600; // Calcula la hora de salida del sol

   if (time() < $salida or $puesta < time())
      $valor_solar = '0.00';      
   
   echo $valor_solar.' '.$txt;   
}
?>

jmviper:
Ok Javier aunque algunas puntualizaciones a la modificación de tu código... no entiendo el propósito de list($valor_solar, $txt) = split('[ ]', file_get_contents($archivo_solar)); . Mejor que lo hagas con explode ya que split quedará obsoleta si tu hosting pasa a PHP 7. Además no sé cómo va a dividir el texto en array con ese separador ('[ ]'). Se supone que si la separación es un espacio será explode(' ', ...etc

Y en segundo lugar es mejor, aunque en scripts pequeños no sea muy necesario, guardar el resultado de funciones o métodos en variables en vez de tenerlas que repetir tipo poner $fecha = time(). El valor se queda en esa variable llamando solamente una vez a time() pero si lo llamas 4 veces, 4 veces accederá al reloj de sistema.

Ya digo que no es nada grave pero es bueno ir depurando código para scripts más grandes.

Pruébalo a ver qué tal va

spyfly:
El que yo puse va bien, pero acepto tus indicaciones para mejorarlo. La modificación del time y del explode que comentas creo que serian así...


--- Código: ---<?php
$archivo_solar = 'solar.txt'; // Datos recibidos del Arduino Solar
$lat = 42.57277777777778;     // Mi latitud
$lon = -6.642499999999999;    // Mi longitud
   
if (file_exists($archivo_solar))
{
   list($valor_solar, $unidades) = explode(" ", file_get_contents($archivo_solar));  // Extraemos las unidades como texto y el valor como texto

   $fecha=time();
   $salida = strtotime(date('d-m-Y '.date_sunrise($fecha, SUNFUNCS_RET_STRING, $lat, $lon, 90.6, explode(':',date('P'))[0])))-600; // Calcula la hora de salida del sol
   $puesta = strtotime(date('d-m-Y '.date_sunset($fecha, SUNFUNCS_RET_STRING, $lat, $lon, 90.6, explode(':',date('P'))[0])))+600; // Calcula la hora de salida del sol

   if ($fecha < $salida or $puesta < $fecha)
      $valor_solar = '0.00';      
   
   echo $valor_solar.' '.$unidades;   
}
?>
--- Fin del código ---

jmviper:

--- Cita de: spyfly en 13 de Mayo de 2018, 10:55:35 ---
El que yo puse va bien, pero acepto tus indicaciones para mejorarlo. La modificación del time y del explode que comentas creo que serian así...


--- Fin de la cita ---

Ok ok... gracias por aceptar mis condiciones  ;D

Ahora lo que debes de hacer es mejorar la comunicación estación-consola o consola-PC ya que sigue haciendo planos en el gráfico y va a entrar a menudo en observación. Ahora mismo tienes uno desde las 1 de la madrugada aprox.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa