Como ver la previsión del tiempo desde Raspberry Pi ( parte 2)


En un post anterior de como ver la previsión del tiempo desde una Raspberry Pir veiamos como  podemos ver la previson del tiempo en nuestra  Rasperry Pi ,  usando mediante el comando curl y  la utilidad  de  Wttr.in  , un servicio de previsión del tiempo orientada a la consola que admite varios métodos de representación de información tal como secuencias ANSI de  terminal,  estando orientado tanto para clientes de consola HTTP (Rizo, httpie o wget), como  para navegadores web en HTTP  , o incluso para visualizadores gráficos en formato PNG .

Previamente antes de lanzar el comando ,para que se visualice correctamente la salida de texto de este servicio ,  abriremos la consola de terminal   ajustaremos la ventana   del valor  por defecto (80 x25 ) a  130 x24 ,  por lo que nos iremos a Editar –>Preferencias –>Mostrar y seleccionaremos como  ventana por defecto los valores  al menos de  130 x 24    y cerraremos la ventana  del Terminal

Nuevamente abriremos otra consola de shell  en la Raspberry Pi  y escribiremos : 

curl wttr.in

Como resultado desde la misma consola veremos  un informe en  tiempo real para su ubicación   sin haber tenido  que especificar nada  más ,  ya  que  es   sensible tanto para la fecha actual como para la localización:

 

Sin duda este  servicio es muy interesante , pero  ademas permite una personalizacion muy alta como vamos a ver a continuación 

Unidades de tiempo

Por defecto las unidades USCS se utilizan para las consultas de los Estados Unidos y el sistema métrico para el resto del mundo. Puede reemplazar este comportamiento agregando o a una URL como esta:?u?m


$ curl wttr.in/Almeria?m

 

Formatos de salida

wttr.in actualmente soporta tres formatos de salida:

  • ANSI para el terminal;
  • ANSI para el modo de terminal, una línea;
  • HTML para el navegador;
  • PNG para los espectadores de la gráficos.

Los formatos ANSI y HTML son seleccionados basándose en la cadena User-Agent. El formato PNG se puede forzar mediante la adición al final de la consulta:.png

$ wget wttr.in/Almeria.png

Puede utilizar todas las opciones con el formato PNG como una URL, pero hay que separarlos con en vez de y:_?&

$ wget wttr.in/Paris_0tqp_lang=fr.png

Opciones para el formato PNG:

  • t (transparencia);transparency=150
  • transparencia = 0..255 para un nivel de transparencia personalizada.

La transparencia es una característica útil cuando PNGs de tiempo se utilizan para agregar datos a los cuadros:

$ convert source.jpg <( curl wttr.in/Oymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg

En este ejemplo:

  • source.jpg -archivo de código fuente;
  • target.jpg -archivo de destino;
  • Oymyakon -nombre de la localización;
  • tqp0 -Opciones (recomendados).

Una línea de salida

Para el formato de salida de una línea, especifique los parámetros adicionales:format

$ curl wttr.in/Almeria?format=3
Almeria: 🌦 +11⁰C

Formatos preconfigurados disponibles: 1, 2, 3, 4 y el formato personalizado usando la notación porcentual (véase abajo).

Puede especificar varias ubicaciones separadas (para repetir consultas)::

$ curl wttr.in/Almeria:Granada:Jaen?format=3
Almeria: 🌦 +11⁰C

O para procesar todas las consultas de este a la vez:

$ curl 'wttr.in/{Almeria,Granada,Jaen}?format=3'
Almeria: 🌦 +14⁰C
Granada: 🌦 +14⁰C
Jaen: 🌦 +14⁰C

Para especificar su propio formato personalizado, utilice el especial-notación:%

    c    Weather condition,
    t    Temperature,
    w    Wind,
    l    Location,
    m    Moonphase 🌑🌒🌓🌔🌕🌖🌗🌘,
    M    Moonday,

Por lo tanto, estas dos llamadas son las mismas:

    $ curl wttr.in/Almeria?format=3
    Almeria: ⛅️ +14⁰C
    $ curl wttr.in/Almeria?format="%l:+%c+%t"
    Almeria: ⛅️ +14⁰C

Tenga en cuenta, que cuando se utiliza en, tiene que escapar con %, es decir, escribir allí en vez de.tmux.conf%%%%%

En programas, que están consultando el servicio automáticamente (por ejemplo tmux), es mejor utilizar un intervalo de actualización razonables. En tmux, puede configurarlo con.status-interval

Si varias ubicaciones separadas, se especifican en la consulta, especifique el período de actualización como un parámetro de consulta adicional::period=

set -g status-interval 60
WEATHER='#(curl -s wttr.in/London:Stockholm:Moscow\?format\="%%l:+%%c%%20%%t%%60%%w&period=60")'
set -g status-right "$WEATHER ..."

Fases de la luna

wttr.in puede utilizarse también para comprobar la fase de la luna. Este ejemplo muestra cómo ver la fase lunar actual:

$ curl wttr.in/Moon

Obtener la fase lunar para una fecha determinada mediante la adición de:@YYYY-MM-DD

$ curl wttr.in/Moon@2016-12-25

La información de la fase de luna utiliza pyphoon como su back-end.

Internacionalización y localización

wttr.in es compatible con nombres de ubicaciones multilingüe que pueden especificarse en cualquier idioma del mundo (puede ser sorprendente, pero muchos lugares en el mundo no tienen un nombre en inglés).

La cadena de consulta debe especificarse en Unicode (hexadecimal codificado o no). Espacios en la cadena de consulta deben ser reemplazados por:+

$ curl wttr.in/станция+Восток
Weather report: станция Восток

               Overcast
      .--.     -65 – -47 °C
   .-(    ).   ↑ 23 km/h
  (___.__)__)  15 km
               0.0 mm

El lenguaje utilizado para la salida (excepto el nombre de la ubicación) no depende del idioma de entrada y es inglés (por defecto) o el idioma preferido del navegador (si la consulta fue emitida desde un navegador) que se especifica en la consulta cabeceras ().Accept-Language

El lenguaje se puede establecer explícitamente al usar a clientes de consola mediante las opciones de línea de comandos como este:

curl -H "Accept-Language: fr" wttr.in
http GET wttr.in Accept-Language:ru

El idioma puede ser forzado mediante la opción:lang

$ curl wttr.in/Almeria?lang=es

La tercera opción es elegir el idioma utilizando el nombre DNS utilizado en la consulta:

$ curl de.wttr.in/Almeria

wttr.in está actualmente traducido a 54 idiomas, y el número de idiomas está en constante crecimiento.

Ver /:translation para aprender más sobre el proceso de traducción, para ver la lista de idiomas soportados y colaboradores, o saber cómo puede ayudar a traducir wttr.in en tu idioma.

 

Instalación en local

Tambien  puede instalar este servicio de previsión de tiempo en su en nuestra  Rasperry Pi , 

Para instalar la aplicación estos son los pasos a seguir:

  1. Instalar dependencias externas
  2. Instalar dependencias de Python utilizadas por el servicio
  3. Obtener una clave de API de WorldWeatherOnline
  4. Configurar wego
  5. Configurar wttr.in
  6. Configurar el servicio de HTTP-frontend

Instalar dependencias externas

wttr.in tiene las siguientes dependencias externas:

  • golang, dependencia de wego
  • wego, cliente tiempo para terminal

Después de instalar golang, instalar:wego

$ go get -u github.com/schachmat/wego
$ go install github.com/schachmat/wego

Instalar dependencias de Python

Requisitos de Python:

  • Flask
  • geoip2
  • geopy
  • requests
  • gevent

Si desea obtener informes meteorológicos como archivos PNG, también debe instalar:

  • PIL
  • Pyte (> = 0,6)
  • fuentes necesarias

Puede instalar la mayoría de ellos utilizando.pip

Si se utiliza:virtualenv

$ virtualenv ve
$ ve/bin/pip install -r requirements.txt
$ ve/bin/pip bin/srv.py

Además, es necesario instalar la base de datos de geoip2. Puede utilizar una base de datos libre GeoLite2 que puede ser descargado (http://dev.maxmind.com/geoip/geoip2/geolite2/).

Obtener una clave de WorldWeatherOnline

Para obtener una clave de API de WorldWeatherOnline, se debe registrar aquí:

https://developer.worldweatheronline.com/auth/register

Configurar wego

Después de tener una clave de WorldWeatherOnline, usted puede configurar:wego

$ cat ~/.wegorc 
{
    "APIKey": "00XXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "City": "London",
    "Numdays": 3,
    "Imperial": false,
    "Lang": "en"
}

El parámetro se omite.City~/.wegorc

Configurar wttr.in

Configurar las siguientes variables de entorno que definen la ruta de acceso a la instalación local, a la base de datos de GeoLite y a la instalación. Por ejemplo:wttr.inwego

export WTTR_MYDIR="/home/igor/wttr.in"
export WTTR_GEOLITE="/home/igor/wttr.in/GeoLite2-City.mmdb"
export WTTR_WEGO="/home/igor/go/bin/wego"
export WTTR_LISTEN_HOST="0.0.0.0"
export WTTR_LISTEN_PORT="8002"

Configurar el servicio de HTTP-frontend

Se recomienda que también configurar el servidor web que se utilizará para acceder al servicio:

server {
    listen [::]:80;
    server_name  wttr.in *.wttr.in;
    access_log  /var/log/nginx/wttr.in-access.log  main;
    error_log  /var/log/nginx/wttr.in-error.log;

    location / {
        proxy_pass         http://127.0.0.1:8002;

        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $remote_addr;

        client_max_body_size       10m;
        client_body_buffer_size    128k;

        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;

        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;

        expires                    off;
    }
}

 

Mas información en  https://github.com/chubin/wttr.in

Como ver la previsión del tiempo desde una Raspberry Pi


Wttr.in es un servicio de previsión del tiempo orientada a la consola que admite varios métodos de representación de información tal como secuencias ANSI de  terminal,  estando orientado tanto para clientes de consola HTTP (Rizo, httpie o wget), como  para navegadores web en HTTP  , o incluso para visualizadores gráficos en formato PNG .

El servicio wttr.in utiliza  visualización de  wego y diferentes fuentes de datos para obtener información de la previsión del tiempo.

Lo puede ver funcionando aquí: http://wttr.in/ desde  un navegador,   pero lo mas interesante de esta utilidad ,  es que  se puede lanzar desde una consola  en nuestra Raspberry pi , para  lo que únicamente  necesitaremos:

  • Conectividad  bien vía WIFI o por cable ethernet
  • Tener instalado el curl 
  • No es fundamental usar la ultima versión Rasperry Pi 3, pues esta utilidad funciona  perfectamente con la versión 2 e incluso en versiones anteriores.

 

Instalar curl en un Raspberry Pi

El comando curl es bastante útil y flexible siendo su  objetivo servir como  herramienta de transferencia de  datos, sin interacción del usuario, hacia o desde un servidor, utilizando uno de los muchos protocolos admitidos.

Si tiene PHP 5 instalado en la Rasperry Pi 3,    y no tiene instado curl cuando instaló Raspbian  ,para ejecutar la utilidad de previsión del tiempo se requiere . Para ello puede hacer lo siguiente:

sudo apt-get update

Y entonces:

sudo apt-get install php5-curl

Estos dos comandos únicamente son los que  realmente todo lo que tenemos que lanzar en el peor de los casos  ya  que puede que  tenga instalado curl en la    Rasperry Pi ,.

 

Ejecución de wttr

Para ver la previsión de tiempo de wttr en la Raspberry Pi  lo podemos  hacer accediendo  desde el navegador Web  Chromiun  e ir a la url de wttr.in  , pero es mucho mas interesante y rápido (y obtendremos el mismo resultado)  si hacemos la llamada  desde un shell.

Previamente antes de lanzar el comando ,para que se visualice correctamente la salida de texto de este servicio , abriremos la consola de terminal desde la propia Rasperry Pi ,  y  ajustaremos la ventana   del valor  por defecto (80 x25 ) a  130 x24 ,  por lo que nos iremos a Editar –>Preferencias –>Mostrar y seleccionaremos como  ventana por defecto los valores  al menos de  130 x 24  en lugar de la marcada por defecto de 80 x25 .

 

Ahora pulsaremos Aceptar  y cerraremos la ventana  del Terminal

Nuevamente abriremos otra consola de shell  en la Raspberry Pi  y escribiremos : 

curl  wttor.in

Como resultado desde la misma consola veremos  un informe en  tiempo real para su ubicación   sin haber tenido  que especificar nada  más ,  ya  que  es   sensible tanto para la fecha actual como para la localización:

Como es de suponer ,la  ubicación real  se obtiene  de su dirección IP real    tomando  no solo la localización sino la zona horaria  y la hora .

 

Si quiere obtener la información meteorológica para un lugar específico  también se puede Agregar la ubicación deseada a la URL en su solicitud como esta:

$ curl wttr.in/London
$ curl wttr.in/Moscow

Recuerde , como hemos hablado  que si se omite el nombre de la ubicación, obtendrá el informe de su ubicación actual, basado en su dirección IP.

También se puede utilizar códigos del aeropuerto de 3 Letras con el fin de obtener la información del tiempo en un determinado aeropuerto:

$ curl wttr.in/muc      # Weather for IATA: muc, Munich International Airport, Germany
$ curl wttr.in/ham      # Weather for IATA: ham, Hamburg Airport, Germany

Digamos que quieres obtener el tiempo en un lugar geográfico que no sea un pueblo o ciudad – tal vez una atracción en una ciudad, un nombre de montaña o en algún lugar especial. Agregar el carácter antes del nombre para ver nombre ubicación especial antes de que el tiempo es entonces obtenido:~

$ curl wttr.in/~Vostok+Station
$ curl wttr.in/~Eiffel+Tower
$ curl wttr.in/~Kilimanjaro

Hay muchos ejemplos, debajo de la salida del tiempo en que se muestra los resultados de geolocalización de buscar la ubicación:

Location: Vostok Station, станция Восток, AAT, Antarctica [-78.4642714,106.8364678]
Location: Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, 75007, France [48.8582602,2.29449905432]
Location: Kilimanjaro, Northern, Tanzania [-3.4762789,37.3872648] 

También puede utilizar (directa) de direcciones IP o nombres de dominio (con el prefijo) para especificar una ubicación:@

$ curl wttr.in/@github.com
$ curl wttr.in/@msu.ru

Por ultimo también ofrece  información detallada en línea, para lo cual  solo se necesita acceder a la página de wttr.in/help

$ curl wttr.in/:help
Mas información en  su sitio de Github https://github.com/chubin/wttr.in