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
- Ouvrir le projet avec DevIO Studio
- Cliquer-droit sur Serveur → Propriétés...
- 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
- API Keys : Utiliser des clés dédiées avec permissions minimales
- HTTPS : Toujours utiliser connexions chiffrées en production
- Certificats : Valider les certificats en production
- 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