Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El formato adecuado para los datos JSON con etiquetas de ubicación es:
Vale la pena señalar que debido a que Adafruit IO analiza todo el objeto JSON que le
envía, se analizará cualquier JSON válido y, cuando se almacene en nuestro sistema y
se reenvíe a cualquier suscriptor, se volverá a generar. La importancia de esto es que si
publica datos JSON con espacios en blanco, se almacenarán y volverán a
publicar sin espacios en blanco, porque nuestro generador produce el formato JSON
más compacto posible.
Cadenas JSON con codificación doble
La segunda forma en que puede enviar datos JSON como un valor es "codificarlos dos
veces" antes de enviarlos, en cuyo caso IO los tratará como una cadena sin procesar. Si
está utilizando algo como JSON.stringifyla función de JavaScript o
Ruby JSON.generate, la codificación doble significa pasar el
resultado JSON.stringifypor JSON.stringifysegunda vez. En este ejemplo de la consola
de node.js, puede ver la diferencia:
JSON sin formato IO
La tercera forma en que puede enviar datos JSON sin procesar es simplemente
enviarlos. Si Adafruit IO no encuentra una clave de "valor" en el objeto JSON que
envía, tratará todo el blob como texto sin formato y almacenará y reenviará los
datos. Eso significa que con nuestro objeto JSON de ejemplo, el envío de la
cadena {"sensor-1":22.587,"sensor-2":13.182} dará como resultado que {"sensor-
1":22.587,"sensor-2":13.182}se almacene en IO y se envíe a los suscriptores de MQTT.
HEADERS
https://io.adafruit.com/api/docs/#pagination-headers
El encabezado del enlace
Para Adafruit IO Link siempre contiene al menos una URL entre paréntesis angulares, ese
es el enlace a la página de datos que está viendo actualmente. En el ejemplo anterior, la
primera URL es https://io.adafruit.com/api/v2/abachman/feeds/example.counter-1/
data?end_time=2019-05-02+22%3A33%3A22+UTC&limit=250. La primera URL
proporcionada en el encabezado del enlace se puede usar para solicitar el mismo
conjunto de datos nuevamente en el futuro. Incluso si su solicitud original no incluía
ningún parámetro, la URL del enlace incluirá un start_timeparámetro que refleje la hora
en que realizó la solicitud. Así es como podemos asegurarnos de que pueda solicitar los
mismos datos repetidamente.
El valor de enlace de ejemplo anterior también incluye una siguiente sección: rel="next",
<https://io.adafruit.com/api/v2/abachman/feeds/example.counter-1/data?
before=eyJ0aW1lX2lkIjoiMEU0V0RWSk1SNlgxNUgxV0FSR0c2SzFIRUgiLCJmZWVkX2l
kIjoiNzMuMCJ9&end_time=2019-05-02+22%3A33%3A22+UTC&limit=250>. La rel="ne
xt"parte significa que la URL que sigue es un enlace a la siguiente página de
datos. Siempre que haya más datos disponibles, el encabezado del enlace incluirá
una rel="next"URL. Se actualiza en cada solicitud, por lo que puede hojear los datos
realizando una solicitud, analizando el encabezado del enlace para obtener la siguiente
URL y luego usando esa URL para realizar otra solicitud. Si su solicitud inicial
incluye end_time, start_timeo limitparámetros, esos parámetros se incluirán en
la rel="next"URL. Tenga en cuenta que dado que las solicitudes de datos siempre se
ordenan de forma descendentecreated_atfecha (más reciente primero, más antigua al
final), la siguiente página de datos es siempre la siguiente página de datos más antigua.
Cuando se visualiza en una línea de tiempo, el concepto de paginación se ve así:
Tenga en cuenta que los feeds actualizados con frecuencia y de larga duración pueden
tener más de cien páginas de datos. En el ejemplo anterior, con un límite de 250 registros,
se necesitarían 330 solicitudes para obtener todos los datos. Si realiza solicitudes sin un
pequeño retraso en el medio, alcanzará un límite de tasa. Para evitar esto, observe las
respuestas de error HTTP 429 y manéjelas en el código agregando un tiempo de espera de
30 segundos entre solicitudes y solicite el tamaño más grande permitido, en este momento
eso es 1000 registros.
Sin embargo, si su objetivo es almacenar y estudiar los datos fuera de línea, sería mejor que
descargara todo el feed usando el botón Descargar integrado en Adafruit IO en la web.
Puede encontrar un ejemplo de un script de descarga de datos paginados en Python en este
enlace . Pase por los foros o Discord si tiene más preguntas sobre cómo sacar sus datos de
IO.
https://io.adafruit.com/api/docs/#chart-feed-data