Hola Amigos/as,
No nos hemos olvidado de este blog y ni mucho menos hemos cesado en nuestro intento de contribuir en lo que podamos a este mundillo de las redes de sensores.
Aprovechando el parón navideño y la dedicación a la fabricación de algunos prototipos, que ya nos han encargado y que os iremos contando, hemos abierto una línea de trabajo para adecuar nuestros bmotes al estándar abierto opendomo.
Cito textualmente lo que dicen en http://es.opendomo.org/:
OpenDomo es un proyecto libre que pretende crear un sistema de control domótico accesible y seguro. La licencia bajo la que se está desarrollando el proyecto es la Licencia Pública General (GPL). Esta licencia garantiza la libertad en el uso del software, uno de los principales valores de la sociedad tecnológica actual. En términos generales, esto implica que OpenDomo puede ser usado, copiado, modificado y distribuido libremente.
En esencia queremos ampliar los la gama de productos compatibles con este “estándar abierto”, proponiendo la opción inalámbrica en los dispositivos que actualmente están disponibles o crear otros nuevos.
Os iremos contando cual es la experiencia y como la vamos desarrollando…
Saludos,,
Hola Carlos! Hace un tiempo te hice unas consultas para un proyecto que estaba realizando. El proyecto funciona perfectamente ahora y en estos momentos me encuentro realizando mejoras de las cuales tengo una duda.
En modo Mesh, yo recolecto información de los routers. Mi duda es:
– Cuando se conectan los routers estos avisan al coordinador que pertenecen a la red. Qué pasa si se conectan todos juntos? Digamos unos 500? Donde está el cuello de botella aquí, en el coordinador o el PIC que lo controla? Lo que yo quiero hacer es que se reporten todos los routers al coordonador sin que el coordinador pregunte uno a uno si estos están. Se puede hacer un broadcast también o hay problemas de convergencia?
Muchas gracias desde ahora.
Saludos,
Daniel
Daniel,
te respondo por intuición, pero seguro que no estoy muy equivocado…
Cuando haces un broadcast lo que estás enviando es un único paquete a todos los nodos. De alguna forma cada nodo filtra los paquetes que van dirigidos a él o a la dirección de broadcast, pero no hay problemas de convergencia al tratarse de un único paquete.
Una vez los routers responden al broadcast cada uno envía un paquete al coordinador, que se multiplican porque unos routers transmiten sus paquetes a través de otros.
El nodo que emite antes de empezar a hacerlo verifica que no haya en ese momento otro nodo emitiendo (escucha por la antena), si hay otro nodo emitiendo lo vuelve a intentar en un periodo de tiempo (escuchando primero de nuevo). Como las ondas electromagnéticas viajan a la velocidad de la luz puede ocurrir que un nodo no escuche que otro está hablando proque no le haya llegado la onda, que empiece a hablar y que se solapen, eso es una colisión, no se si se detecta activamente o simplemente el paquete no llega y el emisor detecta que no le ha llegado núnca el paquete de ack. En todo caso, si ocurre una colisión los nodos retransmiten el paquete despues de un tiempo aleatorio (porque si fuera el mismo estarían colisionando todo el rato).
Una vez resuelto el tema de las colisiones tenemos todos los paquetes en el aire en un espacio relativamente pequeño de tiempo. La radio del coordinador los puede escuchar todos (evidentemente los de las colisiones no, pero serán retransmitidos de nuevo por sus nodos). Lo normal es que la info se vaya metiendo en un buffer en el coordinador y que el PIC lo vaya vaciando a medida que vaya procesandolos. En función de la velocidad de recepción (max teorico de 250K) y la de proceso del PIC necesitarás que el buffer sea más grande. Con un procesador lento más buffer, con uno rápido menos.
No tengo experiencia con redes de tantos nodos, no se cuanto puede durar este proceso de descubrimiento ni como afecta el número de nodos a las colisiones (seguro que exponencialmente), pero yo si tengo que descubrir una red de 10 nodos no esperaría menos de 2 segundos en resolverla. Lo que te quiero decir es que no se donde está el límite, pero para 500 nodos posiblemente tengas problemas. El ancho de banda de la red es de 250kbs, un paquete puede tener 100 bytes (todo esto es a ojo) con lo que te cabe un máximo teórico de 300 paquetes/segundo (que nunca alcanzarás ni de lejos). Igual lo mejor es tener dos coordinadores y dos redes en dos canales diferentes y juntar los datos en una capa superior.
Muchas gracias Carlos, me quedó muy clara tu explicación.
Mi mayor duda fue respondida que es que si los paquetes colisionan se retransmite por un tiempo aleatorio, este es mi dato fundamental.
Por otro lado, es muy buena la idea de usar dos coordinadores para redes grandes, no se me había ocurrido y puedo, como decís, unir los datos en la PC.
Nuevamente muchas gracias por tu respuesta! 🙂
Saludos,
Daniel
Perdón, recién me di cuenta que no eras Carlos. De todas formas si puedes contestar mi pregunta mejor 🙂
Saludos
Hola,
Ok, seguro que Carlos te contesta en breve… un día que tengas un rato, si te apetece, publica y comparte tu proyecto y experiencia en este mismo blog, no te cortes, será interesante conocerlo.
Saludos,,
Hola Tin,
me encantaría compartirlo, así que en breve lo escribo en el blog.
Saludos