Meteoclimatic

Bricolaje y otras manualidades => Creacion de páginas personales meteorológicas => Mensaje iniciado por: kocher en 12 de Marzo del 2021, 10:55:51 am

Título: Personalizar avisos de AEMET en nuestra web
Publicado por: kocher en 12 de Marzo del 2021, 10:55:51 am
Saludos a todos los amigos de Meteoclimatic.

Llevo pensando desde hace un tiempo, cual puede ser la mejor manera para, de forma grafica y sencilla, poder mostrar en nuestra web los avisos de AEMET para nuestra zona.

Hasta hace unos meses, funcionaban unos scripts en PHP, que tomaban los datos de:

                              http://www.meteoalarm.eu/es_ES/0/0/ES-Espana.html (http://www.meteoalarm.eu/es_ES/0/0/ES-Espana.html)

Además de responder muy lentamente, tengo noticias de que están remodelando totalmente sus sistema de avisos; el caso es que todos aquellos scripts han dejado de funcionar.

Todos los foros que he visitado, se encuentran con el mismo problema, sin haber encontrado la solución hasta el momento.     :;

Creo que La mejor manera, en estos momentos, de obtener nuestra información, se encuentra en AEMET, aunque no conozco la forma de llevarlo a cabo; con la dificultad añadida de disponer de 2 tipos de avisos en las zonas que disponen de costa:

                             http://www.aemet.es/es/eltiempo/prediccion/avisos (http://www.aemet.es/es/eltiempo/prediccion/avisos)

- Avisos Costeros

- Avisos  del interior

Espero que alguien más hábil que yo, pueda hacer la luz en este asunto.  *+*

Muchas gracias







Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: zapal en 12 de Marzo del 2021, 13:05:50 pm
 Seria viable el tomar los datos de los xml que genera aemet con los avisos ? es que no se tampoco que pagna se generaba antes con los script que comentas para ver la viabilidad del dato en xml..
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 12 de Marzo del 2021, 16:22:08 pm
Ocurrió hace creo que un año +- lo mismo con AEMET.... tenía unos avisos que parseaban sus tres páginas de avisos de una zona (hoy, mañana y pasado mañana) e hicieron la nueva web.... ahora es más fácil el sistema de avisos.... se han subido al moderno sistema de jsons y una vez lo tienes es sacar su contenido y crear una tabla más o menos elaborada  *-* *-*

Os pongo mi script PHP por si os viene bien en el adjunto. Lee el json de AEMET configurando eso sí previamente la zona del aviso.
Esas zonas tienen un número de 6 cifras y en el script se pone la zona en codigozona en las opciones de configuración a principio del script.

Si hay avisos en la zona ese dígito se puede sacar del final de la URL donde está el aviso en AEMET entrando en los avisos y yendo a la zona, lo malo es que si no hay aviso en la zona no se puede entrar a esa URL. Por ejemplo si entramos en http://www.aemet.es/es/eltiempo/prediccion/avisos?l=752001&r=1 entramos en la zona de avisos de AEMET de Gipuzkoa litoral, pero no es accesible al no tener avisos activos.

Para los costeros, no hay que preocuparse ya que vienen con el código de la zona de aviso terrestre, de hecho el código lleva una C al final del número.

Sólo he encontrado el PDF de AEMET donde están todos los municipios con sus códigos y las zonas de avisos por CCAA y sus provincias:

http://www.aemet.es/documentos/es/eltiempo/prediccion/avisos/plan_meteoalerta/detalle_municipios_zonas_meteorologicas.pdf

Por ejemplo mi zona es la Vega del Segura y su código es el 733003. Ese es el que hay que poner.

Los otros dos campos son el nombre de la zona del aviso y la provincia.

La tabla resultante estará dividida en días y si el aviso está activo estará con fondo rojizo y con la palabra ACTIVO parpadeando.

Los estilos están al final, si sabéis editarlos podéis ponerle los colores que queráis a la tabla. La tabla no tiene anchura así que ocupará todo el ancho del contenedor en que la pongáis.

Eso sí.... cuidado en San Sebastián.... se te puede llenar a veces entre costeros y no costeros la página entera de avisos  *+* *+* *+*

Probadlo y a ver qué tal.

Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: kocher en 12 de Marzo del 2021, 20:55:37 pm
Buenas noches a todos.

Saludos  Zapal y jmviper ("el mago") jjjjj

#zapal: La mayoría de los aficionados han utilizado las plantillas de Leuven y Saratoga con sus propios sistemas de avisos basados en Meteoalarm.eu; a estos me refiero al decir que ya no funcionan:

                     https://support.leuven-template.eu/ (https://support.leuven-template.eu/)

                     https://saratoga-weather.org/scripts-EUwarning.php#EUwarning (https://saratoga-weather.org/scripts-EUwarning.php#EUwarning)

#jmviper

Citar
Eso sí.... cuidado en San Sebastián.... se te puede llenar a veces entre costeros y no costeros la página entera de avisos  *+* *+* *+*

Definitivamente, eres un mago  O:-)

Efectivamente. tu código funciona de maravilla:

               http://kocher.es/Alertas_Avisos/avisosaemet.php (http://kocher.es/Alertas_Avisos/avisosaemet.php)


En mi caso no parpadea, quizás se daba a que, el suceso, debe ocurrir mañana




Apreciado jmviper , eres un genio  apla3 apla3 apla3

Saludos desde San Sebastian











Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: kocher en 12 de Marzo del 2021, 21:20:56 pm
¿Sería factible imprimir tan solo el rectángulo con su color pertinente?

Me refiero a que, solo se mostrara el color del aviso y tan solo apareciera el texto resultante al pinchar en dicho rectángulo o en el signo +
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 12 de Marzo del 2021, 22:23:55 pm
Perfecto kocher  :) :)

Aunque sería poner en tu caso Gipuzkoa litoral como nombre de la zona y Gipuzkoa la provincia, por lo menos para salir como están en AEMET, si no, parece que son los avisos de todo el País Vasco  *+* *+*

¿Sería factible imprimir tan solo el rectángulo con su color pertinente?

Me refiero a que, solo se mostrara el color del aviso y tan solo apareciera el texto resultante al pinchar en dicho rectángulo o en el signo +

Quieres decir que en el nivel de riesgo de cada aviso no ponga el texto de Aviso amarillo etc y sólo apareciese con alguna acción tipo pinchar ese recuadro ??

Algo se podría hacer con JavaScript sí.

Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: kocher en 12 de Marzo del 2021, 22:42:46 pm
Humm

Citar
Aunque sería poner en tu caso Gipuzkoa litoral como nombre de la zona y Gipuzkoa la provincia, por lo menos para salir como están en AEMET, si no, parece que son los avisos de todo el País Vasco  *+* *+*

jjjj realmente, Euskadi es muy pequeñica (como dicen los navarros) ..., no me importa que salga toda la información.

En cuanto a la forma de presentar la información, me refiero a algo parecido a esto:

                  http://kocher.es/Alertas_Avisos/avisosaemet-resumido.php (http://kocher.es/Alertas_Avisos/avisosaemet-resumido.php)

Aunque lo ideal sería que al colocar el puntero en + INFO, en vez de abrirse un enlace, se deslizara la información jjj

Ya se que no es muy elegante ser un pedigüeño, pero .....

Muchas gracias por todas tus creaciones: las aprecio mucho









Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 12 de Marzo del 2021, 23:42:00 pm
pequeñica también lo decimos aquí en Murcia  *+* *+* *+*

Aquí te lo dejo en otro adjunto con tu zona correspondiente, ya que aunque el País Vasco sea "pequeñico"  *-* *-* tiene diferentes zonas de avisos.

Si teniendo avisos le das a +INFO se mostrarán y si estando le das a -INFO otra vez se esconderán. Creo que es ese el comportamiento que quieres. Si no hay avisos +INFO te llevará a la página de avisos de AEMET de tu zona.

Pruébalo a ver si se comporta como tú quieres  ;)
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: kocher en 12 de Marzo del 2021, 23:48:42 pm
                                 
                    ¡Perfecto!:


                                   http://kocher.es/Alertas_Avisos/avisosaemet-nuevo.php (http://kocher.es/Alertas_Avisos/avisosaemet-nuevo.php)


             apla3 apla3 apla3 apla3 apla3 apla3 apla3


  Eres un fenómeno       :aplaude1:
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 13 de Marzo del 2021, 00:26:00 am
Perfecto !!  :) ;)

Saludos kocher
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: kocher en 13 de Marzo del 2021, 11:28:56 am
jmviper, has hecho una virguería jjjjjj

Ya lo he instalado en mi web.

Estuve  discurriendo el que hacer y como hacerlo porque, dado que no se conocen de antemano el número de avisos que van a ocurrir, es complicado reservar un espacio para ellos, ya que puede quedar vacío o, al revés, invadir todo el espacio; así que, gracias a jmviper, he optado por presentar el anuncio de los avisos (digamos que un resumen), con el color del tipo de riesgo asignado. El que desee conocer la información completa, debe pinchar en +INFO que le llevará a otra página con la información en forma de tabla.

Caso de no existir ningún tipo e avisos, se mostrará "Sin Avisos" sobre fondo verde.

Si a alguien se le ocurre otra forma más elegante de presentarlo, no tiene más que opinar.

Muchas gracias jmviper.

Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 13 de Marzo del 2021, 19:55:33 pm
ummmm algo como una ventana emergente con los avisos con lo de más info…. ya miraré si hay alguna librería con jQuery para hacerlo

Queda bien en tu página  :)
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: kocher en 13 de Marzo del 2021, 23:38:39 pm
Gracias jmviper

Estás en todo; me lees el pensamiento jjjj


Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 21 de Marzo del 2021, 13:20:53 pm
Bueno, he estado liado creando un json con todas las zonas de avisos de todos los pueblos de España y me he demorado un poco en verte esto del popup  *-* *-*

Para el "popup" de los avisos he encontrado una librería basada en jQuery (como casi todas) que tiene su propia referencia:

https://dev.vast.com/jquery-popup-overlay/

Se trata de referenciar jQuery si no se tiene y el jscript que se descarga del enlace que he puesto. Por ejemplo con estas tres líneas ya queda inicializado todo:

Código: [Seleccionar]
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="jscripts/jquery.popupoverlay.js"></script>
<script>
    $(document).ready(function() {

      // Initialize the plugin
      $('#tabla_avisos').popup({
horizontal: 'center'
  });

    });
</script>

Yo tengo mi propia ruta a jquery.popupoverlay.js que habrá que poner bien en el caso de cada uno. El resto es identificar los elementos:

Código: [Seleccionar]
<a class="tabla_avisos_open" style="color:white; cursor: pointer; margin-left:15px; font-size: 12px;">+ INFO</a></div><table id="tabla_avisos">
Solo hay que poner esa clase class="tabla_avisos_open" en el enlace del php. De todas formas lo pongo modificado al final de este mensaje.

Por mi parte tras el curro de poner asociar más de 8000 localidades a sus zonas de aviso en el json he creado una página para testearlo con cualquier localidad:

https://www.meteoarchena.es/avisosaemet.php?poblacion=archena&provincia=murcia

En la parte del query o petición tras el signo ?de la URL se pone la población y la provincia de la cual queremos que nos salga el aviso. Ignorará mayúsculas o acentos y espacios en blanco (se puede poner villaviejadeyeltes todo junto  *+* *+*) pudiendo salir cualquier coincidencia, por ejemplo si en el query pongo poblacion=arch&provincia=mur me saldrá lo mismo y si hay coincidencia saldrá la primera solamente.

Creo que es el resultado esperado. Si lo pruebas a ver qué tal va  ;)
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 29 de Abril del 2021, 00:01:17 am
Gran trabajo, ya lo tengo puesto en la web, gracias
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 29 de Abril del 2021, 15:49:02 pm
Hola Carlos.

Según veo en tu web no has puesto bien el enlace al script:

jscripts/jquery.popupoverlay.js

Debes de poner bien la ruta si es otra o no saldrá el popup de los avisos cuando hayan.

Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 29 de Abril del 2021, 23:03:26 pm
Valla pensé que era algo opcional. Lo mirare.
Una duda podría configurarse para que cuando no haya avisos no muestre nada y cuando haya avisos si.
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 30 de Abril del 2021, 00:10:30 am
Citar

Valla pensé que era algo opcional. Lo mirare.


Si no lo quieres quita los enlaces a los scripts:

Código: [Seleccionar]
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="jscripts/jquery.popupoverlay.js"></script>
<script>
    $(document).ready(function() {

      // Initialize the plugin
      $('#tabla_avisos').popup({
horizontal: 'center'
  });

    });
</script>

Citar

Una duda podría configurarse para que cuando no haya avisos no muestre nada y cuando haya avisos si.


Edita el script y en la salida en vez de esto:

Código: [Seleccionar]
if ($exit == 3 or $exit == 2 && $sinavisos) $resulavisos = '<div id="sin_riesgo">Avisos AEMET '.$nombrezona.'<span style="color: black; background-color: #32CD32; padding: 5px; font-size: 14px; margin-left: 15px;">Sin Avisos</span><a href="http://www.aemet.es/es/eltiempo/prediccion/avisos?l='.$codigozona.'" target="_blank" style="color:white;margin-left:15px;font-size:12px;">+ INFO</a></div>';
else $resulavisos = '<div style="border: 5px solid red;"><div id="riesgo">Avisos AEMET '.$nombrezona.$filaavisos.'<a class="tabla_avisos_open" style="color:white; cursor: pointer; margin-left:15px; font-size: 12px;">+ INFO</a></div><table id="tabla_avisos">'.$res.'</table></div>';

echo $resulavisos;

Déjalo así:

Código: [Seleccionar]
if ($exit == 3 or $exit == 2 && $sinavisos) exit;
else $resulavisos = '<div style="border: 5px solid red;"><div id="riesgo">Avisos AEMET '.$nombrezona.$filaavisos.'<a class="tabla_avisos_open" style="color:white; cursor: pointer; margin-left:15px; font-size: 12px;">+ INFO</a></div><table id="tabla_avisos">'.$res.'</table></div>';

echo $resulavisos;
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 02 de Mayo del 2021, 22:45:11 pm
Citar



Edita el script y en la salida en vez de esto:

Código: [Seleccionar]
if ($exit == 3 or $exit == 2 && $sinavisos) $resulavisos = '<div id="sin_riesgo">Avisos AEMET '.$nombrezona.'<span style="color: black; background-color: #32CD32; padding: 5px; font-size: 14px; margin-left: 15px;">Sin Avisos</span><a href="http://www.aemet.es/es/eltiempo/prediccion/avisos?l='.$codigozona.'" target="_blank" style="color:white;margin-left:15px;font-size:12px;">+ INFO</a></div>';
else $resulavisos = '<div style="border: 5px solid red;"><div id="riesgo">Avisos AEMET '.$nombrezona.$filaavisos.'<a class="tabla_avisos_open" style="color:white; cursor: pointer; margin-left:15px; font-size: 12px;">+ INFO</a></div><table id="tabla_avisos">'.$res.'</table></div>';

echo $resulavisos;

Déjalo así:

Código: [Seleccionar]
if ($exit == 3 or $exit == 2 && $sinavisos) exit;
else $resulavisos = '<div style="border: 5px solid red;"><div id="riesgo">Avisos AEMET '.$nombrezona.$filaavisos.'<a class="tabla_avisos_open" style="color:white; cursor: pointer; margin-left:15px; font-size: 12px;">+ INFO</a></div><table id="tabla_avisos">'.$res.'</table></div>';

echo $resulavisos;
Eres un artista!! Eso si de la primera linea si no quito el exit ultimo no me carga la pagina web.
Al final lo he dejado siempre visible, con tu permiso he modificado el script tanto para la.web como para la version movil y básicamente esta tal y como lo tengo en la web(diseño parecido a los script de Leuven)
Si no hay aviso sale la banda verde completamente. Si hay avisos amarillo, naranja o rojo se muestra la banda del color correspondiente. Aunque esta a falta de probarlo, pero en toda España hoy esta sin avisos así que no puedo probar cambiando el código de la zona a otro con avisos.
De todas formas me parecen increíbles los script que eres capaz de crear.... apla3 apla3 apla3
Hoy mismo me he apañado uno (copy and paste con alguna modificación)  para que si la raspberry no responde al ping por el puerto 22 , (se bloquee, me quede sin internet en casa etc...) me avisa en este caso por telegram (eso si ejecutando el script desde el vps)
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 03 de Mayo del 2021, 00:05:04 am
Código: [Seleccionar]
Eso si de la primera linea si no quito el exit ultimo no me carga la pagina web.
Está mal puesto por mi parte sí, el exit termina el script y éste está insertado en el de tu página por lo que a partir de él no saldría ya lo siguiente. Lo mejor sería poner una salida sin texto pero si lo has dejado así mejor. Yo lo tengo así y queda bien avisando de que no hay avisos  *+* *+*.

Que lo disfrutes, y si ves algún fallo no dudes en decirlo  ;).

Saludos
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: kocher en 03 de Mayo del 2021, 19:46:12 pm
Saludos jmviper

Aunque tarde, te agradezco muchísimo el trabajo que has realizado para todos los aficionados Españoles que nos habíamos quedado sin el útil servicio de las alarmas de Meteoalarm (en España: AEMET).

No quiero ni imaginarme lo que has tenido que hacer para personalizar los avisos de todas las regiones Españolas.

Además, el diseño está muy logrado:

                    http://kocher.es (http://kocher.es)

Nos has dado una lección magistral.

Muchísimas gracias y saludos desde San Sebastián





Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 03 de Mayo del 2021, 23:16:37 pm
Hola jmviper ¿alguna explicación porque los segundos van de dos en dos y en números impares en mi versión móvil?
Es algo que he tocado en el script.  Si lo quito va bien (//<?php   include ('avisosaemetmobile.php');   ?>)
En la versión normal lo incluí en header.php. En la versión móvil lo añadí directamente en las primeras lineas de mobile.php
Actualizado:  03/05/21 16:27:33 hace 5 segundos
Ya no se que puede ser



Código: [Seleccionar]
<?php
########### Configuración ###########

$codigozona '';  // Código de la zona de avisos. Se puede ver en el pdf de AEMET: //http://www.aemet.es/documentos/es/eltiempo/prediccion/avisos/plan_meteoalerta/detalle_municipios_zonas_meteorologicas.pdf
/detalle_municipios_zonas_meteorologicas.pdf

$nombrezona 
'';  // Nombre de la zona del aviso.
$provincia '';
#####################################

if (!$codigozona) exit('Hay que poner el código de la zona');

date_default_timezone_set('Europe/Madrid');

function 
icono_aviso($icono$nivel){
$res "";
global $res1;
$res1 "";
if (strstr($icono'PR')) {$res 'PR'$res1 'Lluvias';}
elseif (strstr($icono'TO')) {$res 'TO'$res1 'Tormentas';}
elseif (strstr($icono'VI')) {$res 'VI'$res1 'Viento';}
elseif (strstr($icono'AT')) {$res 'AT'$res1 'Temperaturas máximas';}
elseif (strstr($icono'BT')) {$res 'BT'$res1 'Temperaturas mínimas';}
elseif (strstr($icono'NE')) {$res 'NE'$res1 'Nevadas';}
elseif (strstr($icono'NI')) {$res 'NI'$res1 'Nieblas';}
elseif (strstr($icono'DH')) {$res 'DH'$res1 'Deshielos';}
elseif (strstr($icono'RI')) {$res 'RI'$res1 'Rissaga';}
elseif (strstr($icono'VS')) {$res 'VS'$res1 'Visibilidad';}
elseif (strstr($icono'AL')) {$res 'AL'$res1 'Aludes';}
elseif (strstr($icono'GA')) {$res 'GA'$res1 'Galernas';}
elseif (strstr($icono'CO')) {$res 'CO'$res1 'Costeros';}
return 'http://www.aemet.es/imagenes/gif/iconos_avisos/'.$res.$nivel.'.gif';
}

$avisoamar ""$avisonara ""$avisorojo "";

$semana = ['Domingo''Lunes''Martes''Mi&eacute;rcoles''Jueves''Viernes''S&aacute;bado'];

$meses = ['enero''febrero''marzo''abril''mayo''junio''julio''agosto''septiembre''octubre''noviembre''diciembre'];

$riesgo = ['''<div span class="avisos1">Avisos AEMET Campi&ntilde;a Sevillana&nbsp;&nbsp;&nbsp;&nbsp;Alerta Roja&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ INFO</div span class>''<div span class="avisos2">Avisos AEMET Campi&ntilde;a Sevillana&nbsp;&nbsp;&nbsp;&nbsp;Alerta Naranja&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ INFO</div span class>''<div span class="avisos3">Avisos AEMET Campi&ntilde;a Sevillana&nbsp;&nbsp;&nbsp;&nbsp;Alerta Amarilla&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ INFO</div span class>'];

$lista = [];

$lista[] = date('Y-m-d');

$lista[] = date('Y-m-d'strtotime("+1 day"));

$lista[] = date('Y-m-d'strtotime("+2 day"));

$jsons = [];

for (
$i 0$i 3$i++){

$jsons[] = json_decode(file_get_contents('http://www.aemet.es/es/api-eltiempo/resumen-lista-avisos/PB/'.$lista[$i].'T12:00:00+02:00/D+0/'.$codigozona));

}

$res "";
$exit 0;

$horaact time();
$activo "";
$sinavisos "";
$activonot "";
$finaviso $flagaviso 0;


foreach (
$jsons as $dia=>$items) {


if (empty($items->{'orden_avisos'})) {$exit += 1; continue;}
else {
$epoch strtotime($lista[$dia]);
$res .= '<tr><th class="dia_tabla" colspan="8">'.$semana[date('w',$epoch)].' '.date('j',$epoch).' de '.$meses[date('n',$epoch)-1].'</th></tr>';
foreach ($items as $item2){

$res .='<tr><th>Fen&oacute;meno</th><th>Nivel de riesgo</th><th>Valor</th><th>Probabilidad</th><th>Zona de avisos</th><th>Hora de comienzo</th><th>Hora de finalizaci&oacute;n</th><th>Comentario</th></tr>';

foreach ($item2 as $item3){
++$flagaviso;
$ini strtotime($item3[1]->{'Onset'});
$fin strtotime($item3[1]->{'Expire'});
if ($horaact $fin) {$finaviso += 1; continue;}
elseif ($horaact $ini and $horaact $fin and date('d',$epoch) == date('d')) {$activo ' class="activo"'$activonot '<br><span class="blinking" style="font-weight: bold; display: inline-block; margin-top:10px;">ACTIVO</span>';}
$nivel $item3[1]->{'Nivel'};
if ($nivel == 1$avisorojo 1;
elseif ($nivel == 2$avisonara 1;
elseif ($nivel == 3$avisoamar 1;


$res .= '<tr'.$activo.'><td class="estrecho"><img src="'.icono_aviso($item3[1]->{'FemParam'}, $nivel).'" /><br/>'.$res1.'</td><td>'.$riesgo[$nivel].$activonot.'</td><td class="estrecho">'.$item3[1]->{'Valor'}.'</td><td>'.$item3[1]->{'Prb'}.'</td><td>'.$nombrezona.'-'.$provincia.'</td><td class="start">'.date('d-m-Y H:i'$ini).'</td><td class="end">'.date('d-m-Y H:i'$fin).'</td><td style="width:25%;">'.htmlentities($item3[1]->{'Descrption'}).'</td></tr>';

$activo $activonot "";
}
if ($finaviso == $flagaviso) {$res ""$sinavisos 1;}
}
}
}

$filaavisos "";

if (
$avisorojo$filaavisos .= $riesgo[1];
if (
$avisonara$filaavisos .= $riesgo[2];
if (
$avisoamar$filaavisos .= $riesgo[3];

$resulavisos "";
if (
$exit == or $exit == && $sinavisos);
else 
$resulavisos '<div class="tabla_avisos_open" style="border: 5px solid red;"><div id="riesgo">Avisos AEMET '.$nombrezona.$filaavisos.'<a class="tabla_avisos_open"class="tabla_avisos_open" style="color:white; cursor: pointer; margin-left:15px; font-size: 10px;">+ INFO</a></div><table id="tabla_avisos">'.$res.'</table></div>';

echo 
$resulavisos;


?>

<style>
#tabla_avisos{

display: none;
width: 80%;
border-collapse: collapse;
border: 1px solid black;
font-size: 12px;
font-family: sans-serif;
}

.estrecho{
width:5%;
}

#tabla_avisos th{
padding: 5px;
border: 1px solid black;
background-color: lightblue;
}

#tabla_avisos td{
border: 1px solid black;
text-align: center;
background-color: #E0E0E0;
padding: 5px;
}

.dia_tabla{
background-color: #1b488e !important;
color: white;
font-size: 12px;
text-align: center;
}

.avisos3 {
background-color: yellow;
color:black;
border: 0px solid black;
padding:0px;
}
.avisos2 {
background-color: orange;
color:black;
border: 0px solid black;
padding:0px;
}
.avisos1 {
background-color: red;
color:black;
border: 0px solid black;
padding:0px;
}

#riesgo {
background-color:  ;
font-size: 14px;
font-weight: bold;
text-align: center;
color: white;
padding: 0px;
}

#riesgo span{
margin-left: 7px;
font-size: 14px;
}

#sin_riesgo {
background-color: #32CD32;
font-size: 14px;
font-weight: bold;
text-align: center;
color: black;
padding: 0px;
border: 0px solid #32CD32;
}

.activo td{
background-color: #ff7272 !important;
}

.blinking{
    animation: blinkingText 1.2s infinite;
}

@keyframes blinkingText{
    0%{     color: #000;    }
    49%{    color: #000; }
    60%{    color: transparent; }
    99%{    color:transparent;  }
    100%{   color: #000;    }
}

</style>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="jquery.popupoverlay.js"></script>
<script>
    $(document).ready(function() {

      // Initialize the plugin
      $('#tabla_avisos').popup({
horizontal: 'center'
  });

    });
</script>
Edito para resubir script ya que si había 2 avisos amarillo o naranja no se mostraba bien.
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 04 de Mayo del 2021, 00:41:45 am
Saludos jmviper

Aunque tarde, te agradezco muchísimo el trabajo que has realizado para todos los aficionados Españoles que nos habíamos quedado sin el útil servicio de las alarmas de Meteoalarm (en España: AEMET).

No quiero ni imaginarme lo que has tenido que hacer para personalizar los avisos de todas las regiones Españolas.

Además, el diseño está muy logrado:

                    http://kocher.es (http://kocher.es)

Nos has dado una lección magistral.

Muchísimas gracias y saludos desde San Sebastián

Hola kocher

Celebro que te haya servido y sirva a los demás. La verdad es que lo hice sólo para mí pero.... con tu petición dije de hacerlo público y que sirviera a más de uno  :)

Que lo disfrutes y que AEMET no cambie dentro de poco el sistema o habrá que estudiar otro nuevo  *+* *+*

Saludos


Hola jmviper ¿alguna explicación porque los segundos van de dos en dos y en números impares en mi versión móvil?
Es algo que he tocado en el script.  Si lo quito va bien (//<?php   include ('avisosaemetmobile.php');   ?>)
En la versión normal lo incluí en header.php. En la versión móvil lo añadí directamente en las primeras lineas de mobile.php
Actualizado:  03/05/21 16:27:33 hace 5 segundos
Ya no se que puede ser

No incluyas en ese script del adjunto (avisosaemetmobile.php) las cabeceras al inicio include("top.php"); ya que se llaman dos veces, ahí y en mobile.php

Eso hace que se incluya dos veces el ajaxCUwx.js y dos veces los setInterval que hacen funcionar ese contador por lo que hacen ese efecto de ir cada dos segundos cuando en verdad suman los dos muy rápidamente al ejecutarse a la vez.

Como digo, hay que tener cuidado en la inclusión de cabeceras y demás con PHP ya que se pueden repetir scripts y suceder comportamientos indeseados. Y ojo con los setInterval…. si se llaman unos dentro de otros pueden colapsar al servidor o al navegador con peticiones que se multiplicarían.... yo he tenido esos problemas y menos mal que jantoni me vio que el servidor estaba escribiendo peticiones en el log a cascaporro y ya vi que tenía mal por ahí los setInterval

Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 07 de Mayo del 2021, 23:19:03 pm



Hola jmviper ¿alguna explicación porque los segundos van de dos en dos y en números impares en mi versión móvil?
Es algo que he tocado en el script.  Si lo quito va bien (//<?php   include ('avisosaemetmobile.php');   ?>)
En la versión normal lo incluí en header.php. En la versión móvil lo añadí directamente en las primeras lineas de mobile.php
Actualizado:  03/05/21 16:27:33 hace 5 segundos
Ya no se que puede ser

No incluyas en ese script del adjunto (avisosaemetmobile.php) las cabeceras al inicio include("top.php"); ya que se llaman dos veces, ahí y en mobile.php

Eso hace que se incluya dos veces el ajaxCUwx.js y dos veces los setInterval que hacen funcionar ese contador por lo que hacen ese efecto de ir cada dos segundos cuando en verdad suman los dos muy rápidamente al ejecutarse a la vez.

Como digo, hay que tener cuidado en la inclusión de cabeceras y demás con PHP ya que se pueden repetir scripts y suceder comportamientos indeseados. Y ojo con los setInterval…. si se llaman unos dentro de otros pueden colapsar al servidor o al navegador con peticiones que se multiplicarían.... yo he tenido esos problemas y menos mal que jantoni me vio que el servidor estaba escribiendo peticiones en el log a cascaporro y ya vi que tenía mal por ahí los setInterval
[/quote]

Entiendo lo que me dices, pero si no incluyo ese include("top.php");
La plantilla móvil se me descuadra
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 08 de Mayo del 2021, 12:50:59 pm
Solucionado, despiece el top.php
Y añadiendo esto al inicio del script de avisosaemet.php ya no se descuadra y el contador de segundos va bien.
Código: [Seleccionar]
?php
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 08 de Mayo del 2021, 20:10:33 pm
El contador todavía va mal en mobile.php ya que se sigue llamando dos veces al ajaxCUwx.js
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 08 de Mayo del 2021, 23:41:58 pm
Lo se es que aun no lo había corregido :) ahora ya si...
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 09 de Mayo del 2021, 08:50:27 am
Perfecto  :)
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 09 de Mayo del 2021, 11:21:45 am
Por cierto... en la última versión de MX (build 3129) se han implementado notificaciones por email de las alarmas. De momento en el apartado de la lluvia solo están las alarmas de lluvia hoy superior a e intensidad de precipitación superior a

Seguramente se implementen más bajo demanda en siguientes versiones.
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 09 de Mayo del 2021, 12:58:04 pm
Gracias lo vi ayer, puede ser interesante, voy a intentar no actualizar inmediatamente CumulusMX, así me evito errores graves al menos los primeros dias
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 23 de Mayo del 2021, 13:17:45 pm
Voy a volver a darte la lata....
En la personalización que hice de tu script si pruebo un código de solo alerta amarilla salen acentos correctos.
Pero si pruebo un código con 2 alertas (amarilla y naranja) los acentos salen mal
Me explico
Si en la linea escribo así:
Código: [Seleccionar]
$nombrezona = "Campiña Sevillana";  // Nombre de la zona del aviso.La web (mobile.php) se ve perfecta pero el titulo del aviso sale asi:
Avisos AEMET Campiña Sevillana Alerta Amarilla + INFO
Si uso
Código: [Seleccionar]
$nombrezona = "Campi&ntilde;a Sevillana";  // Nombre de la zona del aviso.Me pasa lo mismo pero al reves
Se ve el titulo de avisos bien, pero todos los acentos de la web mobile salen mal :(

Código usado es el 610404

Llevo unos días dándole vueltas, cierto es que solo puedo probar cuando tengo un código con 2 alertas.
Básicamente lo modificado es que salgan las bandas a lo ancho y del fondo del color de la alerta, y que al pulsar en cualquier lado te salga el popup o en caso de no haber alertas te envié a la web de la aemet.
Se que el problema esta en
Código: [Seleccionar]
$riesgo = ['', '<div class="avisos1">Avisos AEMET '.$nombrezona.' Alerta Roja + INFO</div class>', '<div class="avisos2">Avisos AEMET '.$nombrezona.' Alerta Naranja + INFO</div span class>', '<div class="avisos3">Avisos AEMET '.$nombrezona.' Alerta Amarilla + INFO</div span class>'];

P.D. No se el motivo pero si se usa código de las Islas Canarias estos no funcionan :(

Adjunto php de tu script modificado y de mi mobile.php
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 23 de Mayo del 2021, 19:45:58 pm
Hola de nuevo Carlos

Todo lo de las codificaciones es un lío y más en las páginas web de Saratoga que usan charset para el europeo occidental charset=ISO-8859-1
Después están también las codificaciones de las páginas. Por ejemplo la que has adjuntado de avisosaemetmobile.php está codificada en UTF-8 y la de mobile.php en ANSI. Todo eso lo puedes ver abriendo los archivos con Notepad++ y viendo en su barra inferior derecha la codificación. Para codificarlo a UTF-8 ve a Codificación -> Codificar en UTF-8 sin BOM

Si incrustas scripts te encuentras con que se llaman a diferentes charsets. Abre esto en el navegador view-source:http://www.meteoviso.es/mobile.php (en Chrome por ejemplo) y verás cómo sale al principio una línea con charset="utf-8" y más adelante otra con content="text/html; charset=ISO-8859-1" además de varias declaraciones de documento !DOCTYPE etc ya digo que por se incluyen diferentes scripts.
Es uno de los quebraderos de cabeza de estas páginas que se llaman unas a otras como una muñeca rusa y a la hora de personalizarlas aparecen esos problemas con la codificación del charset en la cabecera y de la página.

En cuanto a lo de los avisos de Canarias.... gracias por ponerlo, la verdad es que nunca los había probado y ahora entiendo una cosa de la URL del json que lee los avisos.... en la línea que los llama
Código: [Seleccionar]
[b]$jsons[] = json_decode(file_get_contents('http://www.aemet.es/es/api-eltiempo/resumen-lista-avisos/PB/'.$lista[$i].'T12:00:00+02:00/D+0/'.$codigozona));[/b] cambia PB por CAN
PB es para la Península y Baleares y CAN obviamente para Canarias. Como se ve en la página de avisos de AEMET hay dos pestañas para cada zona.

Paciencia con lo de la codificación porque es un lío.

Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 23 de Mayo del 2021, 23:12:08 pm
Es increíble, el ruido que me están dando los caracteres especiales. Creo que ya di con la solución, aunque pendiente de probar con próximas alertas amarillas y naranjas. Espero que si algún día hay una roja no vuelva a empezar
Con
Código: [Seleccionar]
$nombrezona = 'Campi&ntilde;a Sevillana';  // Nombre de la zona del aviso.
$riesgo = ['', '<div span class="avisos1">Avisos AEMET-'.$nombrezona.' Alerta Roja</div span>', '<div span class="avisos2">Avisos AEMET-'.$nombrezona.' Alerta Naranja</div span>', '<div span class="avisos3">Avisos AEMET-'.$nombrezona.' Alerta Amarilla</div span>'];
No puede tener espacios en blanco entre AEMET y $nombrezona  si añado un &nbsp; tampoco.
No es lo mas practico, pero probé bastante cosas que hay en Internet sobre la codificación y nada ;(
Seguiré investigando y gracias!!!
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 21 de Septiembre del 2021, 18:19:06 pm
Valla o es algo puntual o ha dejado de funcionar el magnífico script de avisos de Aemet. Supuestamente estamos en alerta amarilla y naranja y no muestra nada. He probado con el script original, por si mi modo manazas era el culpable

https://ibb.co/cFRYS1N
https://ibb.co/rkJqns6

P.D. Que raro si pongo el codigo mío 614102 nada, y si pongo el 770301, funciona, que raro
P.D. 2 Vale no se el motivo, pero he observado que si en el mismo código hay 2 alertas, por ejemplo amarilla y naranja, no muestra ninguna. En el momento que la alerta naranja termino (a las 18:59) ya si sale la naranja en el script. ¿Tiene solución jmviper?
P.D. 3 Pues no lo entiendo pruebo con el código 645301 con avisos naranja y amarillo y funciona. Habrá que ver si la próxima falla....
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 21 de Septiembre del 2021, 20:09:22 pm
Creo que tiene que ver con la codificación de caracteres, en el comentario del aviso pone:

Tormentas muy fuertes al este de la comarca, en el entorno de �‰cija

Vamos que sale mal codificado incluso para ellos.

Puede que sea problema de eso. De todas formas ahora deben de estar atareados con los avisos modificándolos en tiempo real casi. De momento sale el que hay activo de la Campiña sevillana:

https://www.meteoarchena.es/avisosaemet.php?poblacion=elvisodelalcor&provincia=sevilla

El naranja ya pasó.
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: Dioni65 en 21 de Septiembre del 2021, 20:31:25 pm
Buenas tardes. Una observación para el compañero CarlosLSev: has modificado el script original y has puesto "Alerta Amarilla", Aemet no emite alertas, sino avisos, como pone en el original.

Un saludo.
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 21 de Septiembre del 2021, 22:05:56 pm
Creo que tiene que ver con la codificación de caracteres, en el comentario del aviso pone:

Tormentas muy fuertes al este de la comarca, en el entorno de �‰cija

Vamos que sale mal codificado incluso para ellos.

Puede que sea problema de eso. De todas formas ahora deben de estar atareados con los avisos modificándolos en tiempo real casi. De momento sale el que hay activo de la Campiña sevillana:

https://www.meteoarchena.es/avisosaemet.php?poblacion=elvisodelalcor&provincia=sevilla

El naranja ya pasó.
Puede ser, es algo raro... Lo observaré.. gracias
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: CarlosLSev en 21 de Septiembre del 2021, 22:13:25 pm
Buenas tardes. Una observación para el compañero CarlosLSev: has modificado el script original y has puesto "Alerta Amarilla", Aemet no emite alertas, sino avisos, como pone en el original.

Un saludo.
Buenas, como bien indicas eso es cierto. Pero al igual que las precipitaciones se miden en mm y yo las cambie a lo que vulgarmente conócenos de toda la vida como litros. Con eso hice lo mismo, siempre al menos por esta zona se ha dicho alerta amarilla, o naranja, y no aviso amarillo o naranja. De todas forma es un simple titulo que podemos cambiar a nuestro gusto y para gusto los colores.  :) Saludos
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: JoseBP en 20 de Abril del 2022, 13:15:01 pm
Buenas, muchas gracias jmviper, ya puesto en tiempoensevilla.es(versión escritorio y móvil) apla3
Ha terminar de probarlo cuando lleguen los avisos.
Saludos,
José Ramón
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: jmviper en 21 de Abril del 2022, 00:21:44 am
 :)
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: emicantero en 04 de Noviembre del 2023, 00:41:49 am
Gracias a quien corresponda, mi web ahora es más completa, utilizando algún código de los publicados por aquí.
https://dealmansa.com/meteo/ (https://dealmansa.com/meteo/)
Título: Re:Personalizar avisos de AEMET en nuestra web
Publicado por: meteosanjuan en 17 de Abril del 2024, 01:04:43 am
Buenas

Tenia implementados los advisory de meteoalarm con el script de saratoga get-meteoalarm-warning-inc.php y aunque funcionaban tenian algunos problemas. Se me ocurrio pasar por el foro y aunque muy tarde me he decidido a implementar este, no con pocas dificultades pues mis conocimientos en PHP son cero patatero. Voy copiando y pegando lo que veo.

La web es

https://www.meteosanjuan.com/ (https://www.meteosanjuan.com/)

Para el "popup" de los avisos no me ha funcionado el enlace de descarga al "jscripts/jquery.popupoverlay.js" en su lugar realice una busqueda por internet y me lo baje de un repositorio. Espero que sea el adecuado.

Gracas al creador, creo que jmviper, por crear y compartir

Sugerencias, notificaciones de fallos y mejoras que veais siempre son bien recibidas.