En los post anteriores hablábamos de la integración con la solución de domótica de Opendomo, ayer podría decir que después de un mes de trabajo tenía un prototipo acabado y funcionando sin problemas. En este momento no lo puedo decir, aunque espero resolver los problemas que tengo en unas horas.
El desarrollo inicial de este prototipo está basado en el Domino de Opendomo, partiendo de su sketch he ido añadiendo la capa del Zigbee, cambiando cosas y eliminando otras para tener un tamaño razonable del programa. Al final del proceso tengo algo compatible con Opendomo, aprovecho la estructura y las buenas ideas, pero me han quedado muy pocas líneas del código original.
He aprendido mucho, algunas de las cosas que he aprendido son:
- Que el entorno Arduino no es adecuado para proyectos grandes o que están muy al límite de la capacidad de la placa.
- Que me hace falta encontrar una solución para poder depurar, especialmente para poder averiguar la RAM que consumo
- Que hay que hacer backup con más frecuencia.
- Que para resolver los problemas esotéricos, hace falta estar despejado.
Algunos problemas los he resuelto instalando el entorno de Arduino sobre Visual Studio 2012, el desarrollo en programas grandes se simplifica un poquito.
En todo caso la intención de este post era doble, por un lado mostrar como funciona el gateway internamente y por otro pedir ayuda, a ver si a alguien tiene una idea sobre que c… (la palabra es cojones, pero la omito por autocensura) que puede estar pasando.
Primero la ayuda: como tenía serios problemas de RAM, para no centrarme en eso empecé el desarrollo en una placa Mega, con la intención de que, una vez estuviera funcionando, reducir el programa para meterlo en una placa más adecuada. Al final más de la mitad de tiempo del desarrollo lo he dedicado a reducirlo. Una vez reducido porto el sketch a la placa y el Xbee aparentemente no comunica (no envía ni recibe paquetes), en el montaje utilizo Ethernet, Xbee, ¿alguien tiene una idea brillante sobre lo que pueda estar pasando?. De hecho eso me ha provocado un problema, en las pruebas me he cargado el módulo Xbee que hace de coordinador y, los que sepan de Xbee, tendrán una idea de lo difíciles que son de convencer los routers de que tienen que utilizar una nueva red.
Ahora la información: He hecho un pequeño flowchart de como funciona el gateway, lógicamente empieza por el Setup, que mira si hay una configuración de red guardada para aprovechar el orden de los nodos, descubre la red para asegurarse de que están los mismos, recoge los identificadores de los nodos para saber que producto son y las puertas que deben de tener activadas, etc. Después entramos en el loop (que además de otras funciones propias del Domino) mira periódicamente si le llegan paquetes y hace con ellos lo que tiene que hacer: dar de alta un nodo si es nuevo, escribir un valor en un puerto del Domino o activar desactivar una entrada física de un nodo. En todo caso aqui os dejo el flowchart.
Solo me queda esperar a que me llegue la inspiración y resolver mis problemas, una vez resuelto el problema os prometo:
- Un dimmer integrable con esto con más resolución.
- Un control de accesos RFID
- Sensores PIR
- y mucho más….