Comment utiliser efficacement les salles de réunion en utilisant l'Internet des objets?

En juillet, nous avons ouvert notre propre centre de technologie et d'exposition à Moscou, le Digital Leadership Center. Il s'agit d'une nouvelle plateforme d'événements, démonstration de nouveaux scénarios innovants développés conjointement avec les clients et les partenaires SAP.



Lors de la construction de notre propre Centre, nous avons dĂ©cidĂ© qu'il fallait non seulement montrer les nouvelles technologies sous forme de stands de dĂ©monstration, mais aussi les introduire dans le travail du Centre lui-mĂȘme.
Par exemple, toutes les salles et tous les publics du Centre peuvent ĂȘtre transformĂ©s - divisĂ©s en plusieurs parties - et rĂ©unis en un seul espace. Le site est Ă©galement Ă©quipĂ© d'un «bureau intelligent» - solutions de gestion des ressources, camĂ©ras avec reconnaissance faciale, capteurs pour l'Internet des objets.

Au cours de ce processus, nous avons élaboré un scénario simple et efficace basé sur la plateforme SAP Cloud pour surveiller l'utilisation efficace des salles de réunion. Dans cet article, nous vous expliquerons comment assembler rapidement et facilement un tel scénario en une journée.

Plus loin - sur les capteurs, le service IoT dans SAP Cloud Platform et le «karma rating» pour les employés.

Nous avons commencé par préparer des services sur la plateforme SAP Cloud pour l'intégration avec des capteurs pour l'Internet des objets. Pour développer la solution, nous avons utilisé le service IoT dans SAP Cloud Platform (SCP) pour automatiser le transfert de données, ainsi que l'environnement de développement Cloud Foundry dans SCP.

Nous avons fait une démonstration en utilisant ces capteurs:

  1. Capteur magnétocontact, qui fonctionne à la fois sur l'ouverture et la fermeture des portes
  2. Détecteur de mouvement infrarouge pour détecter la pénétration dans la zone protégée, et dans notre cas également dans la salle de réunion

Une surveillance des salles de rĂ©union doit ĂȘtre effectuĂ©e pour vĂ©rifier comment les employĂ©s utilisent rĂ©ellement les locaux - si la rĂ©union a eu lieu ou si la salle de rĂ©union Ă©tait vide Ă  ce moment-lĂ , combien de personnes ont fini par assister Ă  la rĂ©union et d'autres dĂ©tails. Par consĂ©quent, vous pouvez collecter des statistiques sur la façon dont les employĂ©s ont utilisĂ© efficacement les salles de rĂ©union sur une pĂ©riode de temps.


Figure 1. Architecture du service Internet des objets dans la plateforme cloud SAP

Nous avons utilisé la plateforme cloud SAP et le service Internet des objets comme base pour cet exemple. L'architecture de la plate-forme est illustrée à la Fig. 1, elle prend en charge des fonctions pour combiner à la fois des appareils individuels et des points d'accÚs (passerelles) en un réseau commun basé sur le service Internet des objets dans la plateforme SAP Cloud.

Pour les appareils sans protocoles HTTPS / MQTT, ainsi que pour diviser les appareils en segments qui consolident les messages et les envoient de maniÚre centralisée vers SAP Cloud Internet of Things, IoT GateWay Edge est utilisé. Il s'agit d'un composant logiciel qui peut communiquer avec des appareils via des protocoles: HTTPS, MQTT, Modbus (1), CoAP, File (2), OPC UA (3), SigFox (4), SNMP (5). De plus, le développeur peut utiliser le SDK pour étendre les capacités de GateWay et implémenter ses protocoles pour l'échange de données avec des appareils.

Remarques
Notes de la documentation SAP Cloud Platform:

1) Modus est actuellement implémenté en utilisant:
‱ TCP / IP sur Ethernet
‱ Transmission sĂ©rie asynchrone sur divers supports (fil: RS-232, RS-485; fibre, radio, etc.)
‱ ModbusPLUS, un rĂ©seau de passage de jetons Ă  grande vitesse.
Modbus dĂ©finit une unitĂ© de donnĂ©es de protocole simple qui est indĂ©pendante des couches de communication sous-jacentes. Le mappage sur des bus ou rĂ©seaux spĂ©cifiques peut introduire des champs supplĂ©mentaires sur l'unitĂ© de donnĂ©es d'application. Le protocole suit une approche client-serveur, oĂč un client initie une transaction Modbus pour interroger un serveur pour les donnĂ©es.

2) Le flux de travail typique de l'adaptateur est le suivant:
1. Lisez un certain fichier, basé sur un ensemble de paramÚtres de configuration.
2. Parcourez le contenu du fichier et extrayez les champs importants comme indiqué par un fichier de schéma d'analyse de l'adaptateur.
3. Mappez ces champs sur les concepts et les entités du service Internet des objets (par exemple, les métadonnées d'adressage des périphériques, les mesures, etc.), également en fonction du fichier de schéma d'analyse de l'adaptateur.
4. Diffusez des données normalisées jusqu'au service principal Internet of Things.
5. Supprimez le fichier cible de son emplacement d'origine et, éventuellement, sauvegardez-le dans un autre dossier.
Les formats de fichiers pris en charge sont JSON, CSV et binaire. Pour le binaire, le fichier est transféré sous forme de chaßne codée en Base64 au service Internet de base.

3) La passerelle Internet des objets intÚgre les serveurs OPC UA en agissant en tant que client OPC UA. L'adaptateur peut se connecter au serveur pour établir une session OPC UA; lors de la premiÚre connexion, l'adaptateur parcourt l'espace d'adressage du serveur et crée un périphérique correspondant avec un ensemble de capteurs. Ensuite, il configure la récupération des données, pour deux options possibles:
‱ Mode d'extraction pĂ©riodique: l'adaptateur interroge le serveur pour les donnĂ©es sur une base pĂ©riodique, avec un intervalle d'interrogation configurable
‱ Mode d'abonnement: l'adaptateur crĂ©e un abonnement sur les nƓuds du serveur, pour ĂȘtre averti par le serveur lui-mĂȘme chaque fois que la valeur d'un nƓud change

4) SigFox est une entreprise française utilisant une technologie radio basĂ©e sur UNB (Ultra Narrow Band) pour connecter des appareils IoT Ă  son rĂ©seau. Il utilise actuellement la bande ISM sur 868 MHz (tel que dĂ©fini par ETSI et CEPT) en Europe et sur 902 MHz aux États-Unis (tel que dĂ©fini par la FCC), en fonction de rĂ©glementations rĂ©gionales spĂ©cifiques. Pour Ă©tendre la zone de couverture des services, SigFox a Ă©tabli des partenariats avec plusieurs opĂ©rateurs de rĂ©seaux Ă  travers le monde. En utilisant l'infrastructure UNB fournie par ces partenaires, SigFox permet la communication entre les appareils utilisant le protocole radio SigFox et le cloud SigFox. Dans ce contexte, l'infrastructure SigFox agit comme la couche de transport qui envoie les donnĂ©es gĂ©nĂ©rĂ©es par les appareils vers le cloud. Cette couche est indĂ©pendante des donnĂ©es, ce qui signifie qu'elle n'interprĂšte pas les donnĂ©es mais les transfĂšre simplement. Compte tenu de cela, les fabricants d'appareils qui installent le micrologiciel SigFox sur leurs produits peuvent utiliser le service SigFox pour accĂ©der Ă  leurs donnĂ©es et un ensemble d'API REST pour crĂ©er des applications basĂ©es sur ces donnĂ©es. Le graphique illustre le rĂ©seau SigFox de maniĂšre simplifiĂ©e.

5) Le flux de données suit deux voies:
‱ La passerelle Internet des objets Ă©met une interrogation cyclique sur tous les appareils, effectuant une MIB-WALK complĂšte pour chaque appareil connectĂ©.
‱ La passerelle Internet des objets reçoit des interruptions des appareils, si les appareils peuvent envoyer les interruptions.

Dans l'architecture de l'Internet des objets, le service GateWay peut ĂȘtre dĂ©ployĂ© Ă  la fois dans le cadre de la plateforme cloud SAP et sur le terminal. L'un des principaux avantages de GateWay est l'intĂ©gration avec la plateforme cloud SAP, car elle rĂ©sout le problĂšme du transfert de donnĂ©es des appareils vers la plateforme cloud. Mais il est Ă©galement possible de s'intĂ©grer au service Internet des objets sans GateWay, en utilisant les protocoles MQTT / HTTPS.

L'architecture du service Internet des objets est construite à l'aide de l'environnement Cloud Foundry, qui vous permet de déployer vos applications développées sur la base des langages Python, JavaScript (Nodejs), Java (Tomcat), Go, Scala, etc. sur la plateforme SAP Cloud. Dans ce scénario, nous avons utilisé le serveur d'applications Nodejs pour créer notre propre service de traitement des messages des capteurs dans l'environnement SAP Cloud Platform.

Un exemple de code pour un service basĂ© sur Nodejs peut ĂȘtre trouvĂ© ici.
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(); // convert Buffer to string }); req.on('end', () => { var data = JSON.parse(body); var id = data.id; var data = data.payload; var timestamp = data.TIMESTAMP; var vcap_services = JSON.parse(process.env.VCAP_SERVICES); var db_cred = vcap_services["hana-db"]; var credentials = db_cred[0].credentials; var port = credentials.port; var host = credentials.host; var crt = credentials.certificate; var client = hdb.createClient({ host : host, port : port, user : 'user_name', password : 'password', useTLS: true }); client.on('error', function (err) { console.error('Network connection error', err); }); console.log(client.readyState); // new client.connect(function (err) { if (err) { return console.error('Error:', err); } console.log(client.readyState); // connected }); client.prepare('call NEW_EVENT (?, ?, ?)', function(err, statement){ if (err) { return console.error('Prepare error:', err); } statement.exec({ ID: id, PAYLOAD : data, TS: timestamp}, function(err, affectedRows) { if (err) { return console.error('Exec error:', err); } console.log('Number of affected rows:', affectedRows); }); }); res.write("OK"); res.end(); } 


Pour préparer le code dans Nodejs, nous avons utilisé le module node-hdb, qui assure la communication avec le SGBD HANA et est déjà présent dans le buildpack nodejs dans CloudFoundry.

Dans un environnement CloudFoundry, vous devez définir les dépendances entre l'application et les modules utilisés. Dans ce cas, Nodejs pourra accéder au module et lancer notre application, nous spécifions donc le lien dans le fichier package.json

dépendance
"dependencies" : {
"hdb" : "0.xx"
}


En tant que principal entrepĂŽt de donnĂ©es et moteur de crĂ©ation de requĂȘtes analytiques, nous utilisons le SGBD HANA. En utilisant le module node-hdb , vous pouvez utiliser les capacitĂ©s de Bulk Insert (pour accĂ©lĂ©rer l'insertion de donnĂ©es), la gestion des transactions (commit, rollback, autocommit), l'appel de procĂ©dures SQL stockĂ©es.

Les données obtenues à l'aide des capteurs de l'Internet des objets transitent par le service Internet des objets vers la plateforme cloud SAP - directement vers notre service basé sur Nodejs. Vous devez d'abord configurer le modÚle de données et le format de message dans SAP Cloud Internet of Things.

Comment créer rapidement une interface utilisateur et personnaliser les composants de base de SAP UI5?


Pour afficher l'état de la salle de réunion dans le service, nous avons utilisé le composant GenericTile . La figure 2 montre un exemple de composant GenericTile personnalisé pour indiquer l'état de la salle de réunion.



Pour dessiner des icÎnes et des affichages couleur sur le composant GenericTile, nous avons utilisé l'extension HTML5 canvas et la méthode de rendu du modÚle d'objet SAP UI5.

Un exemple de code peut ĂȘtre trouvĂ© ici.
 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';");//red } else { oRM.write("context.fillStyle = '#ffff00';"); //yellow } if (this.status.busy == 0){ oRM.write("context.fillStyle = '#2bbc2d';"); //green } oRM.write("context.fill();"); oRM.write("</script>"); oRM.write("</div>"); } 


Comment puis-je crĂ©er des requĂȘtes analytiques et afficher des graphiques dans une interface utilisateur dans une application sur SCP?

Le moyen le plus simple d'accĂ©der aux donnĂ©es dans SAP HANA Ă  partir d'UI5 est le protocole OData. Il vous permet d'utiliser un modĂšle d'objet prĂȘt Ă  l'emploi pour transfĂ©rer des donnĂ©es vers un Ă©lĂ©ment d'affichage UI5. Cependant, si une requĂȘte analytique complexe est requise pour former un ensemble de donnĂ©es, SQLScript et les procĂ©dures stockĂ©es dans SAP HANA viennent Ă  la rescousse. Vous ne pouvez pas non plus recourir au dĂ©veloppement complexe de requĂȘtes dans SQLScript, mais simplement utiliser l'Ă©diteur de vue de calcul dans SAP Web IDE.


Figure 3. Un exemple de graphique Ă  secteurs de la bibliothĂšque sap.viz.ui5

Exemple de code Javascript et SAP UI5 pour afficher un graphique Ă  secteurs

montré ici
 $.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); 


Pour afficher correctement les données sur le graphique à secteurs, vous devez soigneusement vérifier le chemin des données au format spécifié dans la propriété Path de l'objet FlattenedDataset. Dans ce cas, la propriété Path pointe vers l'objet / Data, il est donc nécessaire de présenter la structure JSON souhaitée sous la forme indiquée

ici
 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); 


Pour afficher des statistiques (voir figure 4) sur les utilisateurs qui réservent des salles de réunion, nous avons utilisé un simple élément de table UI5. Il affiche les «points» accumulés en fonction du nombre de «visites» aux événements. Il est ainsi possible d'identifier les employés peu scrupuleux qui réservent des salles de réunion.


Fig 4. Statistiques des visites pour un utilisateur spécifique

En utilisant le service Internet des objets, ainsi que l'environnement CloudFoundry dans la plateforme cloud SAP, vous pouvez créer rapidement vos services IoT et les intégrer facilement à n'importe quel appareil. En tant que source d'informations de référence sur le service Internet des objets, vous pouvez utiliser le lien dans lequel l'architecture du service est décrite en détail et des exemples de code sont fournis.



Vous pouvez également utiliser l'accÚs d'essai ici pour tester l'environnement Cloud Foundry en appuyant d'abord sur le bouton Connexion et en complétant la procédure d'enregistrement.

Source: https://habr.com/ru/post/fr422475/


All Articles