Muy buenas,
Quiero usar Arduino para recoger datos obtenidos por un par de sensores analógicos y enviarlos por Ethernet al PC (conexión directa) y, mediante Node-RED, registrarlos en un archivo para posterior análisis.
En un principio pensé en MQTT, pero en algún hilo de este foro leía que un usuario quería transmitir datos cada X minutos y otros compañeros le decía que era demasiado poco tiempo y que podía colapsar el sistema.
Mi intención es transmitir datos con una tasa del orden de al menos un paquete por segundo (preferiblemente 2 o más).
¿Qué protocolo usaríais? Modbus TCP os parece adecuado?
Enviar una trama compata en serie via RS232 también sería otra opción, aunque el portátil con el que tengo que conectarlo tiene ya pocos puertos disponible (simultáneamente, en NodeRED, estoy recopilando datos de otros aparatos que van directos a PC)
En un principio pensé en MQTT, pero en algún hilo de este foro leía que un usuario quería transmitir datos cada X minutos y otros compañeros le decía que era demasiado poco tiempo y que podía colapsar el sistema.
Cómo es posible que enviar datos cada X minutos colapse algo? No tiene lógica eso.
Lo que si puede "colapsar" es un buffer circular por ejemplo, en realidad si tienes datos analógicos y los almacenas en un buffer de digamos capacidad 50 elementos pero no envias esos elementos a intervalos que aseguren no perder nada, lo que va a ocurrir es que el indice que apunta a la posición de donde debe guardar la muestra no tendrá mas remedio que reiniciarse en 0 y por lo tanto sobreescribir datos que debieron ser enviados.
Ahora eso es mala programación mía, tuya, o de quien sea.
Mi intención es transmitir datos con una tasa del orden de al menos un paquete por segundo (preferiblemente 2 o más).
Esta tasa no requiere ningún protocolo o buffer. Desde ya te lo digo. Usa MQTT si quieres pero hacerlo ahora a una muestra por segundo me parece demasiado.
No entiendo tu (preferiblemente 2 o mas). Son dos paquetes por segundo o cada 2 segundos?
surbyte:
No entiendo tu (preferiblemente 2 o mas). Son dos paquetes por segundo o cada 2 segundos?
Gracias por responder,
Me refiero a 2 paquetes por segundo o más paquetes por segundo.
Es decir, un paquete por segundo sería el mínimo, y 2 sería más deseable. A partir de ahí, cuanto más azúcar, más dulce.
me he liado y no eran paquetes cada X minutos de lo que se hablaba, pero creo recordar que eran cada 15 o 30 segundos, aunque en ese hilo creo que no se hablaba de una conexión punto a punto, sino más bien habían más dispositivos implicados
Haz intentado algo o aún no pruebas si la opción MQTT funciona por ejemplo?
Yo haría eso en lugar de suponer cosas. He probado enviando datos MQTT tan rápido como 1 x segundo y mas allá que según donde estuviera viéndolos podía ser interesante con el tiempo comprendí que no lo es.
Puntualmente y solo para probar, medía la temperatura de mis habitaciones tan rápido 1 cada 2 segundos solo para darme cuenta que era una idiotez. Luego lo pasé a 1 cada 30 segundos y terminó en 1 cada 10 minutos. Si cambia o no la temperatura de una habitación mas rápido no interesa porque tampoco harás grandes cambios.
Ahora si en tu caso miraras el debug en NodeRed te aseguro que 1 x segundo es molesto. Y lo harás un momento y luego lo detendrás.
No solo se envía el dato sino también el tópico y algún detalle extra en el payload. Considera eso.
Estoy también intentando probar con MQTT para ver hasta donde puedo llegar, aunque entiendo que con MQTT, enviando los mismos datos, el payload es más pesado (he llegado a esa conclusión porque en el tutorial que he seguido envían los datos en forma de cadenas de caracteres JSON, pero supongo que se puede enviar de manera más ligera).
Una muestra por segundo (o más) pienso que es demasiada información, desconozco el fenómeno que estás midiendo, pero te explico la estrategia usada midiendo el eléctrico a ver si te sirve para optimizar la comunicación sin perder información, al hacer registro de carga, se registra un dato cada 5 o 10 minutos, se registra el máximo, mínimo y el promedio, las muestras se toman cada 10 o 12 ciclos (para 50Hz y 60Hz respectivamente), es decir, cada 200ms (5 muestras por segundo), con esa información se puede hacer en principio un buen análisis del comportamiento del voltaje y la corriente, se detectan picos de arranque de motores y de caídas de tensión.
Espero sea de utilidad.