Mientras preparábamos la instalación de Home Assistant en un NAS de QNAP (tal y como os contamos en nuestra pasada revisión) aprendimos algunas cosas interesantes que no son complicadas pero sí llevan su tiempo y siempre es de agradecer alguna ayudita ¿no?.

El pasado mes os contábamos también como scrapear páginas web para extraer información de interés e integrarlas en nuestro HA y obrar en consecuencia. Sin embargo dicho procedimiento (que tenemos funcionando para recuperar datos de pólenes de Madrid) no es muy seguro y depende de la “buena voluntad” de los funcionarios que han preparado la web que habitualmente no viene en forma de tablas, etc. Por todo ello, cualquier modificación / mejora de la correspondiente página puede causar que no recibamos datos correctos.

Por esa razón, se inventaron las APIs para servir como capa intermedia de comunicación entre diferentes aplicaciones, por ejemplo… y es en lo que Home Assistant se basa principalmente para ser un sistema “abierto” a cualquier plataforma.

 

UTILIZANDO APIs EN HOME-ASSISTANT

Aunque en HA hay muchas alternativas para hacer uso de las APIs, en este caso nos centraremos únicamente en el sensor REST explicándolo sobre dos ejemplos sencillos pero a la vez útiles 🙂

LA FOTO DEL DIA DE LA NASA

Cuando estuvimos buscando aplicaciones interesantes para integrar APIs en HA lo primero que buscamos fue APIs gratuitas y la verdad es que españolas no hemos encontrado ninguna aunque sí unas pocas por ahí fuera.

Por ejemplo, hemos encontrado que la NASA tiene un interesante portal de datos abiertos y entre sus muchos servicios uno de los más utilizados en el mundo mundial: Astronomy Picture of the Day (APOD). Como su nombre indica cada día deja una bonita foto a disposición de los interesados… enviando la URL como respuesta a una petición (GET) desde una API.

Tras darte de alta en la web de NASA se consigue sin problema alguna la “clave” para hacer tus llamadas a sus APIs. EN mi caso por ejemplo, escribiendo en la barra del navegador la URL indicada con mi api_key evidentemente


https://api.nasa.gov/planetary/apod?api_key=ifxxxxPXrOvlAxxxxxx7ZqMUWGoxxxxO3Gjxxx
recibiré un texto en el que, por ejemplo, en la última línea se incluye la dirección de la imagen correspondiente al día en cuestión


Aunque en este caso no tiene ningún problema entender la estructura del “payload” del correspondiente “JSON” es muy recomendable que os instaléis por ejemplo, el complemente JSON Editor para Chrome que os hará más fácil la vida.

Lo dicho en este caso simplemente tendremos que pedir desde el correspondiente sensor REST de HA el valor / atributo del campo “url”, en este caso… y listo.

Teniendo en cuenta que en nuestro caso tan solo queremos leer / GET el dato (es decir, el valor por defecto en la configuración de este sensor) basta con definir el sensor NASA tal y como se ve en la imagen y gracias a un template extraer su valor a partir del atributo URL. Fácil, ¿no?

INDICE DE CONTAMINACION

Con objeto de completar nuestro control de polución que tenemos montado en casa gracias a FOOBOT (que vuelca a datos a HA, evidentemente) y los datos “escrapeados” desde la página web del Ayuntamiento hemos encontrado un interesante servicio con datos de miles de ciudades del mundo / mundial y entre ellas, donde vivimos 🙂

Como siempre es necesario registrarse asignándote una KEY válida por un año y 10.000 llamadas / mes (de forma gratuita).

En este caso y aunque hay muchas APIs disponibles tan solo me ha interesado, hasta el momento al menos, la de polución en la ciudad más cercana a mi ubicación

http://api.airvisual.com/v2/nearest_city?key=h6xxxxxxxxxxxxxx
devolviéndonos en este caso una estructura bastante más complicada que la anterior por cuanto envía también datos climatológicos.

En este caso nos interesa el valor de AQIUS que corresponde al Índice de Polución calculado por el metido americano US que difiere ligeramente del chino (AQICN).

Con ayuda del JSON Editor se ve que para llegar a dicho valor hay que entrar por DATA, CURRENT, POLLUTION, AQIUS


por lo que en HA la manera más sencilla de escribir el correspondiente template es:

 

value_template: ‘{{ value_json.data.current.pollution.aqius | float}} ‘

de lo que se deduce que también en el caso anterior de la NASA, el template podría haberse escrito de cualquiera de las dos formas:

 

value_template: “{{value_json[‘url’]}}”
o
value_template: ‘{{ value_json.url}} ‘

Por si os sirve de ayuda y os podéis ahorrar la cantidad de tiempo que he perdido os cuento:

Evidentemente aparte de ver la imagen de la NASA (que no había problemas) quería ver en una misma gráfica el Índice de Polución (que me da mi Foobot) junto al dato diario que estoy bajando del servicio AIRVISUAL. Aunque parezca extraño y a pesar de que en el template indicaba que lo tratara como FLOAT siempre me lo representaba como un valor discreto. Después de muchas pruebas he comprobado que lo que faltaba era decir que la unidad es “%” igual que la del FOOBOT.

 

Ahora ya funciona todo correctamente y puedo comprobar, como en efecto, la contaminación que tengo en casa es de unas 3-4 veces la que hay en la calle … por lo que aquí os quedáis y me voy a dar una vuelta y si tenéis alguna duda, ya sabéis que el Foro es para eso.

Fabricante:Home Assistant
Precio :APIs gratuitas + 0 EUR el Home Assistant
Venta:Pasen y vean, todo es gratuito

Pharizna… que ya tiene todo el hardware listo para su revisión de …

 

IoT: Arduino + Sigfox + … Home Assistant

 

Impactos: 171

Deja un comentario

A %d blogueros les gusta esto: