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
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.
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
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).
por lo que en HA la manera más sencilla de escribir el correspondiente template es:
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}} ‘
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.
Pharizna… que ya tiene todo el hardware listo para su revisión de …
IoT: Arduino + Sigfox + … Home Assistant
4680
No consigo que me salga la imagen, el sensor me da la dirección de la imagen pero no se como ponerla
Ahora mismo tengo HA fuera de la RPi … y empezando a reinstalar todo sobre mi nuevo router Turris MOX que revisaremos el próximo fin de semana.
Al menos en la versión «vieja» de HA para pedir la imagen a la NASA valía con:
– platform: rest
resource: https://api.nasa.gov/planetary/apod?api_key=ifjAk4oxxxxxxxxxxxxx
name: NASA
value_template: «{{value_json[‘url’]}}»
– platform: generic
name: Photo
still_image_url: «{{states.sensor.nasa.state}}»
scan_interval: 600
y poco más.
Voy a intentarlo en mi nuevo HA 0.105.2 a ver como se hace ahora 😉