Se tiene una plataforma de IoT que es OpenSource llamada Open Remote, desarrollada en Java y que se implementa en varios contenedores. El 90% de esta plataforma se adapta a lo que necesitamos pero requerimos unos cambios a nivel de:
- Definición de Assets (activos)
- API de conexión con los sensores para recepción de datos
Toda la información de esta plataforma se puede consultar en:
https://openremote.io/
https://github.com/openremote/openremote/blob/master/README.md
Para ponerla en funcionamiento necesitamos lo siguiente:
1.Dimensionamiento de recursos en la nube.
Verificar el dimensionamiento mínimo necesario para la operación inicial de la plataforma en un proveedor de nube que puede ser Azure o AWS. En el foro de OpenRemote dice “Your millage can vary and we still are not sure what absolute minimum would be. Currently I’m using EC2
t3a.small (2G RAM, 2 CPUs) instances with 8GB SSD on Ubuntu server. You can check this CloudFormation template 28. From this you can go up as far as you wish. As for underlying OS it does not really matter. We run it with success on Ubuntu, CentOS, MacOS and Windows (with Linux containers).”.
En la nube necesitaríamos dos ambientes: desarrollo y producción. Verificar el dimensionamiento adecuado para cada ambiente y darnos el presupuesto mensual aproximado que pagaríamos por estos dos ambientes (sabiendo obviamente que elementos como el consumo de red es un costo variable y que no se podría establecer un valor fijo).
2.Cambios en la definición de los Assets (activos).
Los activos están definidos en archivos de Java que especifican elementos como el nombre del activo, metadata, atributos, valores posibles, formato, etc. Es necesario borrar la mayoría de los activos y crear unos nuevos cuya especificación completa esta en el archivo
AssetsDefinition.xlsx
Verificar que aparezcan en la plataforma, se puedan usar y se visualicen correctamente.
3.Crear un nuevo endpoint en el api http/rest
crear un nuevo endpoint http/rest para que reciba una cadena json como la que aparece a continuación y guarde la información en la base de datos:
{"values":{"batterycollec":96.83985901,"SoilHum":41.79999924,"SoilTemp":19.70000076,"SoilEC":0.057999998,"SoilPH":6.800000191},"deviceId":"Sensor_suelos_006"}
Para ello se puede basar en el código del endpoint /asset/attributes, como se describe en
https://forum.openremote.io/t/http-server-config/713/22
Se debe tener en cuenta que en este endpoint no consideran recibir un atributo de timestamp y la plataforma determina la marca de tiempo por la hora y fecha en que recibió la información, nosotros necesitamos que se guarde en la base de datos la marca de tiempo que envía el sensor como un entero largo (tipo unix).
4. Implementar en nube un ambiente de desarrollo y uno de producción.
En un proveedor de nube (Azure o AWS) dejar implementados los dos ambientes. Definido el proveedor nosotros pagamos la suscripción y damos las credenciales de acceso para que se creen las MV, contenedores, etc y se dejen los ambientes en funcionamiento.
5.Procedimiento para futuros cambios en los activos.
Se debe entregar un procedimiento escrito de como realizar cambios que se requieran posteriormente en los activos (por ejemplo, si se necesita agregar o quitar un atributo) en el ambiente de desarrollo y como llevarlo posteriormente a producción.
Plazo de Entrega: No definido