Integración instancia GIT en GitLab con instancia de Plataforma Sofia2

asoc-git-01
Se ha incorporado una nueva funcionalidad a la plataforma consistente en la asociación de una instancia de SCM GIT sobre GitLab con la instancia de plataforma Sofia2 para poder utilizar dicho repositorio como repositorio SCM de nuestros desarrollos sobre plataforma, además de futuras incorporaciones de automatizaciones para la gestión de funcionalidades como la exportación e importación de configuración y datos, proyectos web, etc.
No todas las instancias de plataforma tendrán disponible la funcionalidad, puesto que está pensado más bien para su uso con instancias que se utilicen como entorno de desarrollo o pruebas, más que con instancias productivas. Para que la funcionalidad esté disponible se debe de habilitar por configuración en la propia instalación de la instancia.
Lo primero que hay que hacer para poder hacer uso de la funcionalidad es crear la asociación. Para ello, accedemos con usuario administrador a la consola de plataforma y en el menú de administración, pulsamos sobre la opción repositorio GIT
asoc-git-01
Y creamos la asociación:
asoc-git-02
Introducimos los datos de URL del repositorio GIT, usuario, password y el private token del usuario administrador para la integración y marcamos la integración como activa:
asoc-git-03
Para poder realizar el enlace correctamente en el repositorio GIT debe de existir un usuario “project_sofia2” (del que debemos conocer su password y el private token) con rol administrador y un grupo llamado “ProjectSOFIA2” con el usuario administrador anterior como propietario.
asoc-git-04asoc-git-05
Solo se permitirá una configuración de Repositorio GIT por instancia y su activación/desactivación, pero no el borrado:
asoc-git-06
En la ventana de visualización se pueden ver los proyectos existentes en el grupo “ProjectSOFIA2”
asoc-git-07
A partir de este paso, cuando un usuario crea un proyecto en Sofia2, automáticamente se crea un proyecto en el repositorio GIT dentro del grupo ProjectSOFIA2 y el usuario correspondiente al usuario Sofia2 que crea el proyecto como owner del proyecto y añadido al grupo, además de crear una estructura base de proyecto a partir de un template.
Creamos el proyecto en Sofia2 Control Panel:
asoc-git-08
Y se crea proyecto en GIT, en el grupo ProjectSOFIA2:
asoc-git-09
Cada proyecto creado en Git se define con:
asoc-git-10
Finalmente, se crean los usuarios asociados con el proyecto:
  • Un usuario con rol owner en Git para el usuario que crea el proyecto
  • Un usuario con rol developer en Git por cada usuario asociado al proyecto Sofia2
  • Todos los usuarios quedarán asociados al grupo de usuarios del proyecto
A partir de este paso, cuando se añaden usuarios al proyecto Sofia2 con repositorio asociado, se crean y añaden usuarios al repositorio y grupo en GIT.
     – Los datos de los usuarios de Git se tomarán de los datos de usuarios de Sofia2.
     – Datos de usuario en Sofia2: Usuario, Nombre Completo, Email
     – Datos de usuario en GitLab: Usuario, Nombre, Email
     – Contraseña: se envía link al mail desde el API de GitLab con contraseña autogenerada para repositorio.
Si un proyecto ya existiera previa a la asociación del repositorio GIT con la Plataforma se tendría que editar el proyecto para que se realizara todo el proceso igual que si se creara de cero con el enlace a GIT activado.

En posteriores versiones se evolucionará la funcionalidad con algunas mejoras:
  • Marcador a nivel de proyecto para indicar si se quiere asociar o no el proyecto a repositorio GIT.
  • Visualizado de datos de enlace a Git con los datos de Grupo/proyecto y usuarios en Git dentro de la ventana de proyecto.
  • Visualización datos básicos de información de repositorio: Branches, Tags, Files, Activity, Commits, Graph, Compare, etc.
  • Funcionalidades para poder guardar contenidos desde consola en dicho repositorio por cada usuario de proyecto. Se hará especifico en cada una de las funcionalidades, por ejemplo, export/import, proyecto web, notebooks, etc.
Integración instancia GIT en GitLab con instancia de Plataforma Sofia2

¿Cómo invocar a un API REST externa desde el motor de flujos Sofia2?

En este ejemplo vamos a invocar a un API Externa desde el motor de flujos integrado en la plataforma.

En la versión 3.4 de Sofia2 se integró Node-RED como motor de flujos (post aquí), una funcionalidad típica a implementar desde esta programación visual es la de invocar a un API REST externa para posteriormente procesarlo en la plataforma (almacenarlo en la BDTR, hacer analítica, representarlo,…)

En el ejemplo invocaremos al API de Análisis del Sentimiento de MeaningCloud (qué es MeaningCloud). MeaningCloud es un Servicio Web que ofrece APIs (https://www.meaningcloud.com/developer/apis) que pueden invocarse vía REST con el token que nos dan tras registrarnos. Queremos probar este API:

Para poder crear un flujo Node-RED en Sofia2 tengo que seguir estos pasos:

1. Primero debo crear un proyecto, para eso desde

selecciono

2. Dentro del proyecto debo ir a la opción y crear un dominio:

3. Una vez creado el dominio ya puedo ir a Mis Flujos:

Donde veré mi Dominio, que puedo arrancar o parar desde

4. Una vez arrancado el dominio abajo veré Mis Flujos:

Desde donde puedo ir a

5. Una vez dentro de mi dominio Node-red podré crear los flujos que necesite:

Hemos creado un flujo muy sencillo, que luego habría que completar con el procesamiento completo (que se ejecute en cierto momento y que guarde los datos).

El nodo principal es este: que realiza la llamada al API:

El nodo anterior se encarga de pasar los parámetros:

Entre ellos el key para poder invocarlo, el texto a analizar, lenguaje y las headers para poder invocarlo.

A la salida hemos puesto un nodo Debug que nos permite ver el resultado de la invocación:

Como podéis ver, el resultado me da esto:

{
"status":{
"code":"0",
"msg":"OK",
"credits":"1",
"remaining_credits":"19974"
},
"model":"general_es",
"score_tag":"P",
"agreement":"AGREEMENT",
"subjectivity":"OBJECTIVE",
"confidence":"100",
"irony":"NONIRONIC",
"sentence_list":[
{
"text":"A ver si esto te parece positivo",
"inip":"0",
"endp":"31",
"bop":"y",
"confidence":"100",
"score_tag":"P",
"agreement":"AGREEMENT",
"segment_list":[
{
"text":"A ver si esto te parece positivo",
"segment_type":"main",
"inip":"0",
"endp":"31",
"confidence":"100",
"score_tag":"P",
"agreement":"AGREEMENT",
"polarity_term_list":[
{
"text":"positivo",
"inip":"24",
"endp":"31",
"confidence":"100",
"score_tag":"P"
}
]
}
],
"sentimented_entity_list":[

],
"sentimented_concept_list":[

]
}
],
"sentimented_entity_list":[

],
"sentimented_concept_list":[

]
}

Podemos ver la documentación del API para entender bien el significado de los conceptos: https://www.meaningcloud.com/developer/sentiment-analysis/doc/2.1/response

¿Cómo invocar a un API REST externa desde el motor de flujos Sofia2?

Centro de Control Smart Logroño

 

SmartLogroñoVisor2

 

Como comentábamos en abril, el Ayuntamiento de Logroño adjudicó el suministro, implantación, desarrollo y mantenimiento de la Plataforma ‘Smart Logroño‘ a la UTE Indra Sistemas y Suma Info.

 

Minsait IoT Sofia2 servirá como base tecnológica para este proyecto que se extenderá hasta 2021.

 

El Centro de Control Integral Smart Logroño funciona ya como la columna vertebral de los servicios de la ciudad. Dispondrá de un único panel de mando digital que permitirá gestionar en tiempo real servicios como el alumbrado, el tráfico, la seguridad, la recogida de residuos, el riego o la resolución de incidencias y averías.

 

SmartLogroñoVisor1

 

Estamos muy orgullosos de poder aportar nuestro conocimiento y tecnología al innovador proyecto Smart Logroño, un proyecto de futuro que ya forma parte del presente de la ciudad.

 

Centro de Control Smart Logroño

Seguimos jugando con Zapier y Sofia2

Hemos aprovechado un ratillo suelto para hacer otro ejemplo “resultón”, combinando las capacidades de Sofia2 Platform y Zapier.

Me estaba preguntando: “cuantas noticias IoT se publicarán en Internet, y en cuantas de ellas se menciona nuestra plataforma?”. Os voy a contar cómo lo he configurado para tener la respuesta después de unos días de escucha automatizada.

 

Primero he configurado en Sofia2 un ontología de Feeds, donde almacenaré las noticias publicadas:

1CreacionOntoCaptura

con los siguientes datos para cada una de ellas:

2CreacionOntoCaptura

y por último me he configurado un ThinKP para poder acceder a mi ontología de manera segura desde fuera de la plataforma:

3configuracionKP

 

Lista la configuracion en Sofia2! Ahora vamos a definirnos nuestro ZAP, que se compondrá de los siguientes pasos:

  1. Como trigger, un listener de RSS, En mi caso he configurado los tres que me han parecido más relevantes.4FeedsTrigger
  2. Un filtro que permite que el flujo continúe sólo si se encuentran las palabras clave en las que estoy interesada (en mi caso BigData, “IoT” y sus variantes):

5.Filter

3. Sobre el resultado, llegados a este punto, vamos a ejecutar la acción ‘formatter’ (si te interesa ver la potencia completa de este componente, la puedes encontrar aquí), para buscar la cadena de texto ‘Sofia2’ en el contenido de las noticias filtradas:

6Insert

4. Por último, insertamos los datos de la noticia, y de las ocurrencias de la palabra clave “Sofia2” en nuestra ontología, usando la app Zapier Sofia2:

7configInsert

y ya está!! Dejamos activo el ZAP y a esperar la recolecta de información para ponernos a analizar los datos, hacer dashboards, identificar el sentimiento de las noticias (en las que estemos mencionados)… se me ocurren muchas aplicaciones.

8ZAPon

Puedes encontrar la descripción completa de la app Zapier Sofia2 para montarte tu ZAP en minutos en nuestro anterior post sobre este tema.

 

Seguimos jugando con Zapier y Sofia2

Integración de Sigfox con Sofia2

A través de las herramientas de Sofia2 la integración entre Sofia2 y Sigfox es relativamente sencilla (leer post Qué es Sigfox)

A  continuación se realiza una explicación diferenciando el desarrollo sobre la plataforma Sigfox y sobre la plataforma Sofia2.

Captura0.PNG

 Configuración en Sofia2:

Para preparar la integración en Sofia2, primero crearemos la Ontología donde almacenaremos los datos procedentes del dispositivo en crudo.

En nuestro caso, y conociendo todos los parámetros que nos envía Sigfox, creamos la ontología a partir de esta información.

Los campos serán los siguientes:

propierdades

Una vez creada nuestra ontología, la forma más sencillo es levantar un API REST para realizar la ingesta de los datos .Para ello en el apartado de API Manager en la consola de Sofia2 procedemos a crear dicha API, enlazada a la ontología que hemos generado anteriormente.

api1

Una vez creado y publicado el API con una operación POST, disponemos del servicio al cual llamará el dispositivo para enviar la información.

api2

Configuración Backend Sigfox:

Una vez logados en la plataforma de Sigfox, y con los dispositivos activados y agrupados, seleccionaremos el grupo en el cual queremos crear un nuevo callback, el cual afectará a todos los dispositivos agrupados. En este caso configuraremos el envío para los dispositivos  Sigfox Wifi  Geoloc.

sigfoxTIPOS

En la nueva pantalla que se nos muestra, seleccionamos a la izquierda “CALLBACKS”, y creamos una nueva.

Disponemos de  varias opciones para crear callbacks , en este caso seleccionamos “Custom callback” donde tendremos varios tipos de llamadas, dependiendo de la llamada que elijamos enviaremos unos datos u otros. En esta integración, nos interesa geolocalizar los dispositivos y de este modo controlar la posición de los mismos. Por ello generamos un callback de tipo GEOLOC, el cual podrá enviarnos los datos que necesitamos. Como vemos en la siguiente captura, introducimos únicamente los headers y el end point del API que hemos creado anteriormente.

Captura2

En el campo body, se crea el mensaje a enviar, donde seguiremos la estructura de la ontología, señalando aquellos datos que queremos que se envíen. Sigfox parsea los datos de las variables predefinidas entre paréntesis.

En este caso el body que enviamos es el siguiente:

Captura3

Una vez completados estos pasos, y habilitando el callback, nuestros dispositivos Sigfox estarán enviando la información a Sofia2. Puedo revisar el funcionamiento de las llamadas en el apartado de cada dispositivo independientemente, en el menu “MESSAGES”.

Captura4.PNG

Una vez comprobado que el sistema está funcionando, guardando los datos de manera correcta, podemos decir que hemos integrado los dispositivos Sigfox con Sofia2 de manera rápida y sencilla!!!

 

Integración de Sigfox con Sofia2

¿Cómo instalar Plataforma Sofia2 en un SO Linux CentOS con Ansible?

En este post vamos a ver paso a paso cómo instalar la RI (Reference Implementation) de los componentes base de Sofia2 IoT Platform en una única VM, esto es:

0. Lo primero es conectar vía SSH con la VM (últimamente yo soy bastante fan de MovaXterm):

1. Tras esto instalaremos Ansible con el comando: sudo yum install ansible

2. Tras esto instalaremos git: sudo yum install git

Y lo configuraremos: git config –global http.sslVerify “false”

3. Y ya podemos empezar con la instalación de la Plataforma. Haremos un clone del repositorio git, donde está disponible todo lo necesario para instalar la Plataforma.

En este caso:

4. A continuación personalizaré algunas propiedades que se usarán en la instalación con Ansible. Estas propiedades están en la carpeta descargada /ansible-automation/Ansible/vars

La mayoría de propiedades pueden mantenerse, las unidades propiedades a modificar son nginx_console_public_ip y sofia_url

5. En el fichero infraestructure.yml puedo configurar:

Lo abriré y configuraré: nginx_console_public_ip con la IP pública de mi máquina (si sólo quiero acceder desde local puedo mantener esta IP):

6. En el fichero sofia.yml puedo editar estas propiedades. En mi caso sólo tocaré la URL en la que despliego Sofia2, a través de sofia_url:

Dejando en mi caso:

7. Tras modificar estos parámetros ya puedo iniciar la instalación, para eso desde la carpeta ansible-automation/Ansible lanzaré: sudo ansible-playbook playbook-all.yml

Que comenzará la instalación de los diferentes servicios.

Pasados unos minutos y si todo ha funcionado bien saldrá:

La instalación lanza los servicios necesarios (Mongo, MySQL, Tomcats,…) de modo que la plataforma queda en ejecución.

8. Una vez instalado todo, para comprobar que la instalación se ha hecho de forma correcta lanzaré un navegador a la URL https://<sofia_url>/console/ accediendo con el usuario y password establecidos por configuración (sofia).

Para poder navegar es importante que tenga abiertos los puertos 443 y 80 de esa máquina. En Azure por ejemplo en Redes:

9. El usuario que hemos creado es un usuario Administrador, por lo que podrá dar de alta otros usuarios desde Administración/Gestión de usuarios. Los usuarios también pueden registrarse como Usuarios desde https://13.73.161.0/console/login?loggedout#

Una vez creado un usuario y pasado a rol COLABORADOR este verá:

10. Para desinstalar todo basta con lanzar el comando sudo ansible-playbook uninstall/uninstall-all.yml

(Gracias por el trabajo Roberto! ;))

 

¿Cómo instalar Plataforma Sofia2 en un SO Linux CentOS con Ansible?

Tecnologías Soporte RI Sofia2 IoT Platform

En Sofia2 IoT Platform hablamos del concepto de Implementación, para referirnos a las tecnologías subyacentes que dan soporte a la plataforma.

Sofia2 tiene una RI (Reference Implementation) basada 100% en software Open-Source sin licencia vírica.

En el siguiente diagrama se muestran las principales tecnologías que componen esa implementación de referencia de la Plataforma:

En futuros posts mostraremos las tecnologías que usan en otras implementaciones de la Plataforma, por ejemplo en la implementación basada en el stack de Amazon AWS o con piezas de la plataforma SAP HANA.

Tecnologías Soporte RI Sofia2 IoT Platform