El siguente paso para continuar con el «retrofit» del RCS-10, consiste en crear un interfaz web que pueda utilizar desde cualquier navegador web, ya sea en tableta, smartphone u ordenador.
Para este interfaz web me baso en el servidor Apache2 disponible en los repositorios de la Raspberry , el framework Node.js que será el nexo de unión entre el interfaz web y el hardware , y la tecnología de Websockets, encargada de intercambiar la información de estado y los comandos entre el navegador web y la Raspberry.
Por defecto Node.js no soporta Websockets, así que es necesario instalar algún módulo del framework que nos proporcione esta tecnología. Uno de los más utilizados es Socket.io, que proporciona compatibilidad con navegadores antiguos que no soportan websockets. En mi caso y por comodidad he recurrido al módulo ws:, en el que está basado Socket.io.
Básicamente, al cargar la página con el interfaz web, se abre una conexión full-duplex entre nuestro dispositivo y la Raspberry a través de la cual enviamos los comandos de control y recibimos los mensajes de estado desde la Raspberry. Todo esto sin necesidad de tener que recargar el interface y en tiempo real!.
Al pulsar el botón de la antena seleccionada, se envía al websocket el comando, este lo interpreta y actúa en consecuencia, solicitando a Node.js que ejecute el programa creado en la entrada anterior con los parámetros adecuados. El websocket a su vez nos responde con un mensaje de estado, indicándonos si se ha realizado el cambio correctamente o no.
Tan solo queda cablear el mando de control y ya podemos cambiar de antena remotamente