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/[email protected]

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