3.-A Instalación del nats

El servidor NATS es un sistema de mensajería de código abierto simple, seguro y de alto rendimiento y que se emplea para que los diferentes módulos remoteSwitch se comuniquen entre sí. Se ejecutan tantos módulos remoteSwitch como dispositivos a controlar se desea. Además siempre se ha de ejecutar un remoteSwitch configurado como servidor web, luego al menos vamos a tener 2 remoteSwitch en ejecución. El servidor NATS se emplea para la comunicación entre todos estos módulos. El servidor NATS lo puedes descargar desde su página oficial que encontrarás en:

https://nats.io

 

Descarga módulo NATS

Podemos descargar la version 2.0.4 desde mi sitio web:

https://ea4tx.com/wp-content/uploads/files/rspi/nats-server

Tenemos muchas formas de poner el binario del NATS en la RsPi, unos seguramente optarán por descargarlo al PC y ya desde éste, subirlo por medio de un FTP a la RsPi. Aquí lo vamos a hacer usando el comando wget como se muestra a continuación:

wget --no-check-certificate https://ea4tx.com/wp-content/uploads/files/rspi/nats-server

Con esto ya tenemos el binario en la RsPi aunque seguramente en la carpeta raiz o /home/pi. Ahora vamos a copiarlo a la carpeta /usr/local/sbin que es donde habitualmente se dejaría, para ello podemos usar el programa mc (midnight commander que ya habíamos instalado en el paso 2) o bien mediante el comando:

sudo cp nats-server /usr/local/sbin/

Puedes hacer estos dos pasos en uno, mediante el comando:

wget --no-check-certificate https://ea4tx.com/wp-content/uploads/files/rspi/nats-server -P /usr/local/sbin

Tendrás que indicar que el tipo de fichero se puede ejecutar, con lo cual seguramente tendrás que cambiar las propiedades del mismo, cosa que hacer mediante el comando:

sudo chmod 755 /usr/local/sbin/nats-server

Con esto ya tenemos el programa listo. No es necesario configurar nada.

Lo ejecutamos y verificamos que arranca bien.

Sistema de arranque

Para que al encender la Raspberry Pi  se ejecute automáticamente el programa, vamos a utilizar SystemD. Para ello dejaremos en la carpeta /etc/systemd/system un fichero como por ejemplo nats.system En este fichero se indica el path donde se encuentra el programa, sus opciones de arranque, cuenta de usuario con el que se ejecuta, etc Puedes bajar este fichero desde mi sitio mediante el comando:

sudo wget --no-check-certificate https://ea4tx.com/wp-content/uploads/files/rspi/nats.service

Este fichero lo vamos a copiar en la carpeta /etc/systemd/system luego el comando será:

sudo cp nats.service /etc/systemd/system/

En principio este fichero que has bajado y copiado a la carpeta /etc/systemd/system lo puedes dejar tal cual sin tener que cambiar nada en él. Ahora ya solo nos queda añadir este servicio nats en el gestor systemd, luego ejecutamos el comando:

sudo systemctl enable nats.service

Con esto ya al reiniciarse la RsPi, este servicio será ejecutado automáticamente. También se puede arrancar o parar manualmente, para ello el comando de arranque sería:

sudo service nats start

o bien para parar:

sudo service nats stop

Con todo esto, ya debiéramos de tener el servidor nats en marcha y en ejecución, preparado para que cuando arranquemos los módulos remoteSwitch se puedan conectar. Esto lo veremos más adelante.

3.-B Instalación ser2net

El módulo ser2net funciona a modo de router o pasarela entre puertos serie y TCP/IP. Permite definir en un fichero de configuración (/etc/ser2net.conf) y línea a línea, cada uno de los puertos serie que queremos que sean accesibles por un puerto TCP/IP. De esta forma, una aplicación se puede conectar a ese puerto TCP/IP y acceder por medio del ser2net al dispositivo serie.

  • Nota: Mediante un único servicio ser2net se puede tener acceso a tantos dispositivos serie como se definan.

Los dispositivos serie van a ser cada uno de los RemoteBox o StackMain que conectemos a la RsPi y con esto permitimos que sean accesibles por TCP/IP. Gracias a este servicio, el cliente RBM de windows se puede conectar al dispositivo por TCP/IP además el remoteSwitch accede también.

Puesto que la version standard del ser2net no permite que dos clientes accedan simultáneamente a un mismo puerto, he compilado la versión standard y dejado en mi servidor una versión que si lo permite. Por tanto, lo más sencillo es instalar el paquete standard del ser2net y actualizar únicamente el binario.

Instalación ser2net standard

Para instalar el paquete standard ser2net, ejecuta:

sudo apt-get install ser2net

El instalador nos habrá dejado el programa en la carpeta \usr\sbin\ser2net, el fichero de configuración ser2net.conf en \etc y el sistema de arranque de servicios preparado. Ahora vamos a reemplazar este ejecutable por el que permite múltiples conexiones simultáneas.

Actualización ser2net

Para bajar la actualización nos aseguramos primero que el servidor ser2net está detenido mediante el comando

sudo service ser2net stop

Eliminamos el ejecutable standard:

sudo rm /usr/sbin/ser2net

Y bajamos el nuevo ejecutable dejándolo en la carpeta \usr\sbin que es donde estaba la versión instalada.

sudo wget --no-check-certificate https://ea4tx.com/wp-content/uploads/files/rspi/ser2net -P /usr/sbin

Finalmente cambiamos el atributo para que se pueda ejecutar, mediante el comando:

sudo chmod 755 /usr/sbin/ser2net

Configuración ser2net

El configurador del servicio ser2net se llama ser2net.conf y lo tenemos wn \etc. Editamos el fichero:

sudo nano /etc/ser2net.conf

En nuestro caso quitamos las 4 lineas del ejemplo que se crean por defecto e incorporamos la linea para nuestro servicio, añadiendo la opción nueva que permite definir el número de conexiones máximas simultáneas (en este ejemplo 10)

7011:raw:600:/dev/ttyACM0:38400 8DATABITS NONE 1STOPBIT max-connections=10

Nota: Si necesitamos definir más dispositivos, indicaremos tanta lineas como equipos queramos definir. En ese ejemplo la configuración indica:

  • Se queda a la escucha en le puerto TCP/IP: 7011
  • en modo raw o sin procesamiento
  • Con timeout de 600 segundos
  • Y se asocia al dispositivo serie ttyACM0. Este sería el nombre asociado al puerto serie creado al conectar el RemoteBox
  • Velocidad de 33800 bps bit de 8 bits, sin stop de paridad
  • soportando hasta 10 conexiones simultaneas

Si tenemos un RemoteBox ya conectado a la RsPi y hemos editado ya el fichero ser2net y arrancado el servicio

sudo service ser2net start

Podemos probar que está funcionando el servicio ser2net antes de seguir con la parte final y que sería instalar el remoteSwitch y su servidor web que será lo que se vea en la última sección.

Ejecuta por lo tanto el programa RBM en tu ordenador y configurar que el servicio es via TCP/IP indicando la IP y Puerto del servicio definido.