En julio, abrimos nuestro propio centro de tecnología y exhibición en Moscú, el Centro de Liderazgo Digital. Esta es una nueva plataforma para eventos, demostración de nuevos escenarios innovadores desarrollados conjuntamente con clientes y socios de SAP.

Durante la construcción de nuestro propio Centro, decidimos que era necesario no solo mostrar las nuevas tecnologías como stands de demostración, sino también introducirlas en el Centro mismo.
Por ejemplo, todas las salas y audiencias en el Centro pueden transformarse, dividirse en varias partes y reunirse en un solo espacio. El sitio también está equipado con una "oficina inteligente": soluciones de gestión de recursos, cámaras con reconocimiento facial, sensores para Internet de las cosas.
En el proceso, se nos ocurrió un escenario simple y efectivo basado en la Plataforma SAP Cloud para monitorear cómo se usan las salas de reuniones de manera efectiva. En este artículo, le diremos cómo ensamblar tal escenario rápida y fácilmente en un día.
Además, sobre sensores, servicio IoT en SAP Cloud Platform y "calificación de karma" para empleados.
Comenzamos preparando servicios en la plataforma SAP Cloud para la integración con sensores para Internet de las cosas. Para desarrollar la solución, utilizamos el servicio IoT en la plataforma SAP Cloud Platform (SCP) para automatizar la transferencia de datos, así como el entorno de desarrollo Cloud Foundry en SCP.
Hicimos una demostración con estos sensores:
- Sensor de contacto magnético, que funciona tanto en la apertura como en el cierre de puertas
- Sensor de movimiento infrarrojo para detectar penetración en el área protegida, y en nuestro caso también en la sala de reuniones
El monitoreo de las salas de reuniones debe llevarse a cabo para verificar cómo los empleados realmente usan las instalaciones: si la reunión tuvo lugar o si la sala de reuniones estaba vacía en ese momento, cuántas personas terminaron asistiendo a la reunión y otros detalles. Como resultado, puede recopilar estadísticas sobre cómo los empleados han utilizado efectivamente las salas de reuniones durante un período de tiempo.
Figura 1. Arquitectura del servicio de Internet de las cosas en la plataforma SAP Cloud
Utilizamos la plataforma SAP Cloud Platform y el servicio de Internet de las cosas como base para este ejemplo. La arquitectura de la plataforma se muestra en la Fig. 1, admite funciones para combinar dispositivos individuales y puntos de acceso (Gateways) en una red común basada en el servicio de Internet de las cosas en la plataforma SAP Cloud.
Para dispositivos sin protocolos HTTPS / MQTT, así como para dividir dispositivos en segmentos que consolidan mensajes y los envían centralmente al SAP Cloud Internet of Things, se utiliza IoT GateWay Edge. Este es un componente de software que puede comunicarse con dispositivos a través de protocolos: HTTPS, MQTT, Modbus (1), CoAP, Archivo (2), OPC UA (3), SigFox (4), SNMP (5). Además, el desarrollador puede usar el SDK para expandir las capacidades de GateWay e implementar sus protocolos para intercambiar datos con dispositivos.
NotasNotas de la documentación de SAP Cloud Platform:
1) Modus se implementa actualmente usando:
• TCP / IP sobre Ethernet
• Transmisión en serie asíncrona a través de varios medios (cable: RS-232, RS-485; fibra, radio, etc.)
• ModbusPLUS, una red de paso de token de alta velocidad.
Modbus define una unidad de datos de protocolo simple que es independiente de las capas de comunicación subyacentes. La asignación en buses o redes específicos puede introducir algunos campos adicionales en la unidad de datos de la aplicación. El protocolo sigue un enfoque cliente-servidor, donde un cliente inicia una transacción Modbus para sondear un servidor en busca de datos.
2) El flujo de trabajo típico del adaptador es el siguiente:
1. Lea un determinado archivo, basado en un conjunto de parámetros de configuración.
2. Revise el contenido del archivo y extraiga campos valiosos según las instrucciones de un archivo de esquema de análisis del adaptador.
3. Asigne dichos campos a los conceptos y entidades del Servicio de Internet de las cosas (por ejemplo, metadatos de direccionamiento de dispositivos, mediciones, etc.), también en función del archivo de esquema de análisis del adaptador.
4. Transmita datos normalizados al Servicio básico de Internet de las cosas.
5. Elimine el archivo de destino de su ubicación original y, opcionalmente, realice una copia de seguridad en otra carpeta.
Los formatos de archivo admitidos son JSON, CSV y binario. Para binario, el archivo se transfiere como una cadena codificada en Base64 al Servicio básico de Internet de las cosas.
3) Internet of Things Gateway integra los servidores OPC UA al actuar como un cliente OPC UA. El adaptador puede conectarse al servidor para establecer una sesión de OPC UA; en la primera conexión, el adaptador navega por el espacio de direcciones del servidor y crea un dispositivo correspondiente con un conjunto de sensores. Luego, configura la recuperación de datos, por dos opciones posibles:
• Modo de extracción periódica: el adaptador sondea el servidor en busca de datos de forma periódica, con un intervalo de sondeo configurable
• Modo de suscripción: el adaptador crea una suscripción en los nodos del servidor, para ser notificado por el propio servidor cada vez que cambia el valor de un nodo
4) SigFox es una empresa francesa que emplea una tecnología de radio basada en UNB (banda ultra estrecha) para conectar dispositivos IoT a su red. Actualmente utiliza la banda ISM en 868MHz (según lo definido por ETSI y CEPT) en Europa y en 902MHz en los EE. UU. (Según lo definido por la FCC), dependiendo de las regulaciones regionales específicas. Para expandir el área de cobertura del servicio, SigFox tiene alianzas con varios operadores de redes en todo el mundo. Al utilizar la infraestructura UNB proporcionada por estos socios, SigFox permite la comunicación entre dispositivos que operan con el protocolo de radio SigFox y la nube SigFox. En este contexto, la infraestructura SigFox actúa como la capa de transporte que envía los datos generados por los dispositivos a la nube. Esta capa es independiente de los datos, lo que significa que no interpreta los datos, sino que simplemente los transfiere. Teniendo esto en cuenta, los fabricantes de dispositivos que instalan el firmware SigFox en sus productos pueden usar el servicio SigFox para acceder a sus datos y un conjunto de API REST para crear aplicaciones basadas en estos datos. El gráfico ilustra la red SigFox de manera simplificada.
5) El flujo de datos sigue dos rutas:
• Internet of Things Gateway emite un sondeo cíclico sobre todos los dispositivos, realizando un MIB-WALK completo para cada dispositivo conectado.
• El portal de Internet de las cosas recibe trampas de los dispositivos, si los dispositivos pueden enviar las trampas.
En la arquitectura de Internet de las cosas, el servicio GateWay se puede implementar como parte de la plataforma SAP Cloud y en el dispositivo final. Una de las principales ventajas de GateWay es la integración con SAP Cloud Platform, ya que resuelve el problema de transferir datos desde dispositivos a la plataforma en la nube. Pero también es posible integrarse con el servicio de Internet de las cosas sin GateWay, utilizando los protocolos MQTT / HTTPS.
La arquitectura del servicio de Internet de las cosas se construye utilizando el entorno Cloud Foundry, que le permite implementar sus aplicaciones desarrolladas sobre la base de los lenguajes Python, JavaScript (Nodejs), Java (Tomcat), Go, Scala,
etc. en la plataforma SAP Cloud. En este escenario, utilizamos el servidor de aplicaciones Nodejs para crear nuestro propio servicio para procesar mensajes de sensores en el entorno SAP Cloud Platform.
El código de muestra para un servicio basado en Nodejs se puede ver aquíconst http = require('http'); const hdb = require('hdb'); http.createServer(function (req, res) { if (req.method === 'POST') { let body = ''; req.on('data', chunk => { body += chunk.toString();
Para preparar el código en Nodejs, utilizamos el módulo node-hdb, que proporciona comunicación con HANA DBMS y ya está presente en el paquete de compilación nodejs en CloudFoundry.
En un entorno CloudFoundry, debe definir las dependencias entre la aplicación y los módulos utilizados. En este caso, Nodejs podrá acceder al módulo e iniciar nuestra aplicación, por lo que especificamos el enlace en el archivo package.json
dependencia"dependencies" : {
"hdb" : "0.xx"
}
Como el principal almacén de datos y motor para crear consultas analíticas, utilizamos el DBMS de HANA. Usando el módulo
node-hdb , puede usar las capacidades de Bulk Insert (para acelerar la inserción de datos), la gestión de transacciones (commit, rollback, autocommit), llamando a procedimientos almacenados de SQL.
Los datos obtenidos mediante los sensores de Internet de las cosas llegan a través del Servicio de Internet de las Cosas a la Plataforma SAP Cloud, directamente a nuestro servicio basado en Nodejs. Primero debe configurar el modelo de datos y el formato del mensaje en SAP Cloud Internet of Things.
¿Cómo crear rápidamente una interfaz de usuario y personalizar los componentes básicos de SAP UI5?
Para mostrar el estado de la sala de reuniones en el servicio, utilizamos el componente
GenericTile . La Figura 2 muestra un ejemplo de un componente GenericTile personalizado para indicar el estado de la sala de reuniones.

Para dibujar iconos y pantallas en color en el componente GenericTile, utilizamos la extensión de lienzo HTML5 y el método de representación del modelo de objetos SAP UI5.
El código de muestra se puede encontrar aquí. renderer: function (oRM, oControl) { var model; var d; var view = sap.ui.getCore().byId("samplecontainer---mainview"); if (!this.status) this.status = {"door":"","motion":"","color":"#2bbc2d","busy":0}; if (view != undefined) model = view.getModel("DT1"); if (model != undefined){ d = JSON.parse(model.getJSON()); if (this.status){ this.status.busy = d.busy; this.status.door = d.door; this.status.motion = d.motion; this.status.color = d.color; } } oRM.write("<div"); oRM.writeControlData(oControl); oRM.write(">"); </spoiler> if (this.status.busy == 0){ oRM.write("<img id='iDT1' src='/iotex/images/room_empty.png' alt='Empty' height='64' width='70'>"); } else { oRM.write("<img id='iDT1' src='/iotex/images/room_booked.png' alt='Booked' height='64' width='70'>"); } oRM.write("<canvas id='cDT1' width='30' height='30'></canvas>"); oRM.write("<script>"); oRM.write("var canvas = document.getElementById('cDT1');"); oRM.write("var context = canvas.getContext('2d');"); oRM.write("var centerX = canvas.width / 2;"); oRM.write("var centerY = canvas.height / 2;"); oRM.write("var radius = 12;"); oRM.write("context.beginPath();"); oRM.write("context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);"); if ((this.status.busy == 1)&&((this.status.door != 0)||(this.status.motion != 0))){ oRM.write("context.fillStyle = '#f46e41';");
¿Cómo puedo crear consultas analíticas y mostrar gráficos en una interfaz de usuario en una aplicación en SCP?La forma más fácil de acceder a los datos en SAP HANA desde UI5 es el protocolo OData. Le permite usar un modelo de objeto listo para transferir datos a un elemento de visualización UI5. Sin embargo, si se requiere una consulta analítica compleja para formar un conjunto de datos, SQLScript y los procedimientos almacenados en SAP HANA vienen al rescate. Tampoco puede recurrir al complejo desarrollo de consultas en SQLScript, sino simplemente usar el editor Vista de cálculo en el IDE web de SAP.
Figura 3. Un ejemplo de un gráfico circular de la biblioteca sap.viz.ui5Ejemplo de código Javascript y SAP UI5 para mostrar un gráfico circular
mostrado aquí $.ajax ({ type: "GET", url: "/iotex/odatasource/rooms.xsodata/rooms?$format=json", dataType: 'json', async: false, success: function (data, status){ var aData = data.d.results; var UData = {Data: aData}; room_model.setData(UData); } }); View.setModel(room_model,"Rooms"); var oVizFrame = this.oVizFrame = this.getView().byId("idVizFrame"); var oDataset = new sap.viz.ui5.data.FlattenedDataset({ dimensions : [{ name : 'Time', value : "{Time}"}], measures : [{ name : 'Usage', value : '{Value}'} ], data : { path : "/Data" } }); oVizFrame.setDataset(oDataset); oVizFrame.setVizProperties({ title:{ text : " " }, plotArea: { colorPalette : ['#2bbc2d','#f46e41','#c5f442'], drawingEffect: "glossy" }}); var feedSize = new sap.viz.ui5.controls.common.feeds.FeedItem({ 'uid': "size", 'type': "Measure", 'values': ["Usage"] }), feedColor = new sap.viz.ui5.controls.common.feeds.FeedItem({ 'uid': "color", 'type': "Dimension", 'values': ["Time"] }); oVizFrame.addFeed(feedSize); oVizFrame.addFeed(feedColor);
Para mostrar correctamente los datos en el gráfico circular, debe verificar cuidadosamente la ruta de datos en el formato especificado en la propiedad Ruta del objeto FlattenedDataset. En este caso, la propiedad Path apunta al objeto / Data, por lo que es necesario presentar la estructura JSON deseada en la forma que se muestra
aqui var datapiechart = { "Data" : []}; var yellow = {"Time":"Abused","Value":data.yellow}; var red = {"Time":"Occupied","Value":data.red}; var green = {"Time":"Free","Value":data.green}; datapiechart.Data.push(yellow); datapiechart.Data.push(red); datapiechart.Data.push(green); var mod = viz.getModel(); mod.setData(datapiechart); viz.setModel(mod);
Para mostrar estadísticas (ver Fig. 4) sobre los usuarios que reservan salas de reuniones, utilizamos un simple elemento de tabla UI5. Muestra los "puntos" acumulados en función del número de "visitas" a los eventos. Por lo tanto, es posible identificar empleados inescrupulosos que reservan salas de reuniones.
Fig. 4. Estadísticas de visitas para un usuario específico.Con el servicio de Internet de las cosas, así como el entorno CloudFoundry en la plataforma SAP Cloud, puede crear rápidamente sus servicios IoT e integrarlos fácilmente con cualquier dispositivo. Como fuente de información de referencia en el servicio de Internet de las cosas, puede utilizar el
enlace donde se describe en detalle la arquitectura del servicio y se proporcionan ejemplos de código.

También puede usar el acceso de prueba
aquí para probar el entorno de Cloud Foundry presionando primero el botón Iniciar sesión y completando el procedimiento de registro.