Aller au contenu

DevIOThingworxServer

Introduction

DevIOThingworxServer est une Interface Applicative (IA) qui permet l'intégration de DevIO avec la plateforme PTC ThingWorx. Cette interface établit une connexion entre le serveur DevIO et ThingWorx, permettant la synchronisation des données, la création automatique de Things, et la gestion des propriétés en temps réel.

L'interface utilise le SDK ThingWorx C pour communiquer avec la plateforme via des connexions sécurisées et gère automatiquement la création des objets ThingWorx basés sur la structure des équipements DevIO.

Architecture et fonctionnement

Composants principaux

  • ThingworxServer : Serveur principal avec gestion des connexions ThingWorx
  • Thing : Représentation des équipements DevIO dans ThingWorx
  • Property : Propriétés des Things synchronisées avec les données DevIO
  • EventManager : Gestionnaire d'événements asynchrones
  • Lock : Système de verrouillage pour la synchronisation des threads

Intégration OPC

L'interface s'intègre au serveur DevIO via les points d'entrée OPC : - OPCInitServer : Initialisation de l'interface - OPCStartServer : Démarrage du serveur ThingWorx - OPCCreateVar : Création des variables/propriétés - OPCWriteVar : Écriture des valeurs vers ThingWorx - OPCWriteBloc : Écriture de blocs de données

Modèle de données

  • Things : Équipements DevIO mappés en Things ThingWorx
  • Properties : Données DevIO synchronisées comme propriétés
  • DataShapes : Structures de données complexes
  • InfoTables : Tables d'informations pour données tabulaires

Configuration XML

Fichier DevIOThingworxServer.xml

La configuration s'effectue via un fichier XML DevIOThingworxServer.xml placé dans le répertoire DevIO.

Structure de base

<?xml version="1.0" encoding="utf-8"?>
<DevIOThingworxServer server="DevIOServer"
                      thingPrefix=""
                      host="localhost" 
                      port="80"
                      apikey="your-api-key"
                      gateway=""
                      encrypted="false"
                      disableCertValidation="false"
                      enableTlsHostnameValidation="false"
                      caCertificate=""
                      pushPeriod="45"
                      msgThreadCount="4"
                      msgThreadIterations="5"
                      msgThreadPeriod="15"
                      taskerThreadIterations="5"
                      taskerThreadPeriod="15">
    <!-- Configuration des éléments -->
</DevIOThingworxServer>

Paramètres de connexion

Paramètres obligatoires

Paramètre Description Exemple
server Nom du serveur DevIO "DevIOServer"
host Adresse du serveur ThingWorx "thingworx.company.com"
port Port de connexion ThingWorx 80, 443
apikey Clé API ThingWorx "your-api-key-here"

Paramètres de sécurité

Paramètre Description Valeur par défaut
encrypted Connexion HTTPS/TLS false
disableCertValidation Désactiver validation certificat false
enableTlsHostnameValidation Valider hostname TLS false
caCertificate Certificat CA pour validation Non défini

Paramètres de performance

Paramètre Description Valeur par défaut
pushPeriod Période de publication (secondes) 45
msgThreadCount Nombre de threads de messages 4
msgThreadIterations Itérations par thread 5
msgThreadPeriod Période des threads (secondes) 15
taskerThreadIterations Itérations du tasker 5
taskerThreadPeriod Période du tasker (secondes) 15

Paramètres avancés

Paramètre Description Valeur par défaut
thingPrefix Préfixe pour noms des Things Non défini
gateway Gateway ThingWorx Non défini
socketSendTimeout Timeout d'envoi socket (ms) Auto
offlineStoreEnabled Stockage hors ligne activé Auto
offlineQueueSize Taille queue hors ligne Auto
connectTimeout Timeout de connexion (ms) Auto
connectRetries Nombre de tentatives Auto
maxMsgSize Taille max des messages Auto

Éléments de configuration

Balise <Ignore>

Permet d'ignorer certaines données lors de la synchronisation.

<Ignore name="MODEL" path=".*"/>
<Ignore name="_CNX" path=".*"/>
<Ignore name="_DATA_UPDATED" path=".*"/>
Attribut Description
name Pattern du nom de variable à ignorer
path Pattern du chemin à ignorer (regex)

Balise <DataShape>

Définit des structures de données complexes pour ThingWorx.

<DataShape name="SensorData">
    <Element pattern="Temperature" format="NUMBER"/>
    <Element pattern="Humidity" format="NUMBER"/>
    <Element pattern="Timestamp" format="DATETIME"/>
</DataShape>

Balise <InfoTable>

Configure des tables d'informations pour données tabulaires.

<InfoTable name="AlarmTable" pattern="Alarm_.*"/>

Balise <Json>

Traitement de données JSON avec JSONPath.

<Json path="$.sensors[*]">
    <Data name="temperature" transform="$1"/>
    <Data name="humidity" transform="$2"/>
</Json>

Activation dans DevIO Studio

1. Configuration du serveur

  1. Ouvrir le projet avec DevIO Studio
  2. Cliquer-droit sur ServeurPropriétés...
  3. Dans Arguments additionnels, ajouter : -THINGWORX

2. Placement du fichier XML

Le fichier DevIOThingworxServer.xml doit être placé dans : - Répertoire : DevIO/Bin/ - Nom exact : DevIOThingworxServer.xml

Exemples de configuration

Configuration basique

<?xml version="1.0" encoding="utf-8"?>
<DevIOThingworxServer server="DevIOServer"
                      host="demo.thingworx.com" 
                      port="443"
                      apikey="e1d6e1b0-e4c4-4f8b-9f2a-1234567890ab"
                      encrypted="true"
                      pushPeriod="30">
    <Ignore name="MODEL" path=".*"/>
    <Ignore name="_CNX" path=".*"/>
</DevIOThingworxServer>

Configuration avec sécurité avancée

<?xml version="1.0" encoding="utf-8"?>
<DevIOThingworxServer server="DevIOServer"
                      host="secure.thingworx.company.com" 
                      port="8443"
                      apikey="your-secure-api-key"
                      encrypted="true"
                      enableTlsHostnameValidation="true"
                      caCertificate="ca-cert.pem"
                      disableCertValidation="false">
    <Ignore name="MODEL" path=".*"/>
    <DataShape name="IoTData">
        <Element pattern="Value" format="NUMBER"/>
        <Element pattern="Quality" format="STRING"/>
        <Element pattern="Timestamp" format="DATETIME"/>
    </DataShape>
</DevIOThingworxServer>

Configuration haute performance

<?xml version="1.0" encoding="utf-8"?>
<DevIOThingworxServer server="DevIOServer"
                      host="thingworx.company.com" 
                      port="80"
                      apikey="performance-api-key"
                      pushPeriod="10"
                      msgThreadCount="8"
                      msgThreadIterations="10"
                      msgThreadPeriod="5"
                      offlineStoreEnabled="true"
                      offlineQueueSize="10000">
    <Ignore name="MODEL" path=".*"/>
    <InfoTable name="HistoricalData" pattern="History_.*"/>
</DevIOThingworxServer>

Utilisation et supervision

Création automatique des Things

L'interface crée automatiquement des Things ThingWorx basés sur : - Équipements DevIO → Things ThingWorx - Données DevIO → Properties des Things - Structure hiérarchique préservée

Synchronisation des données

  • Temps réel : Mise à jour automatique des propriétés
  • Période configurable : Via pushPeriod
  • Gestion des threads : Parallélisation des opérations
  • Stockage hors ligne : Queue locale si connexion perdue

Monitoring

Logs ThingWorx

Les logs sont générés dans : - Répertoire : Logs DevIO - Format : DevIOThingworxServer_<timestamp>_<count>.log - Niveaux : ERROR, WARN, INFO, DEBUG, TRACE

Diagnostic

L'interface fournit des services de diagnostic : - browseGroups : Liste des groupes d'équipements - getIndustrialThings : Liste des Things industriels - browseItems : Navigation dans les éléments - getDiagnosticDigest : Résumé de diagnostic

Sécurité et authentification

Authentification API Key

<DevIOThingworxServer apikey="your-api-key-here" ... />

Connexions sécurisées

HTTPS/TLS

<DevIOThingworxServer encrypted="true" port="443" ... />

Validation des certificats

<DevIOThingworxServer enableTlsHostnameValidation="true"
                      caCertificate="ca-cert.pem"
                      disableCertValidation="false" ... />

Bonnes pratiques

  1. API Keys : Utiliser des clés dédiées avec permissions minimales
  2. HTTPS : Toujours utiliser connexions chiffrées en production
  3. Certificats : Valider les certificats en production
  4. Firewall : Configurer les règles réseau appropriées

Optimisation des performances

Threads et parallélisme

<!-- Configuration optimisée pour haute charge -->
<DevIOThingworxServer msgThreadCount="8"
                      msgThreadIterations="10"
                      msgThreadPeriod="5" ... />

Gestion hors ligne

<!-- Stockage local en cas de déconnexion -->
<DevIOThingworxServer offlineStoreEnabled="true"
                      offlineQueueSize="50000"
                      connectRetries="10" ... />

Filtrage des données

<!-- Ignorer les données non critiques -->
<Ignore name="DEBUG_.*" path=".*"/>
<Ignore name="TEMP_.*" path=".*"/>

FAQ et dépannage

Q : Erreur de connexion à ThingWorx ?

R : Vérifier l'API key, l'adresse host/port, et la connectivité réseau.

Q : Things non créés automatiquement ?

R : Vérifier les permissions de l'API key et les règles <Ignore>.

Q : Performance dégradée ?

R : Ajuster pushPeriod, msgThreadCount et utiliser le stockage hors ligne.

Q : Certificats SSL non validés ?

R : Configurer caCertificate et enableTlsHostnameValidation="true".

Q : Données manquantes dans ThingWorx ?

R : Vérifier les patterns <Ignore> et les logs de synchronisation.

Annexes et références utiles

API ThingWorx

  • REST API : Pour configuration manuelle des Things
  • SDK C : Documentation technique du SDK utilisé
  • WebSocket : Protocole de communication temps réel

Outils de diagnostic

  • ThingWorx Composer : Interface web pour visualiser les Things
  • Logs DevIO : Traces détaillées des opérations
  • Monitoring ThingWorx : Métriques de performance

Documentation technique