Passer au contenu principal

Tutoriel

Un jeton valide OAuth v2 Bearer est requis. Voir Authentification pour plus de détails.

Gestion des connexions

Ajouter une connexion ThingPark X IoT Flow

Une connexion ThingPark X IoT Flow est un flux de données asynchrone avec des services de mise en file d'attente de messages intégrés, conçus pour répondre aux exigences de haute disponibilité, évolutivité et résilience pour les déploiements industriels. IoT Flow propose une large gamme de connecteurs IoT professionnellement supportés pour les principales plateformes IoT et un riche catalogue intégré de drivers de payload, en plus de supporter des drivers de payload personnalisés. Les alarmes de capteur et de passerelle peuvent être signalées via ce type de connexion.

information

Les connexions ThingPark X IoT Flow sont gérées avec l'API DX Core.

Pour obtenir la description complète des opérations API disponibles pour la connexion ThingPark X IOT Flow, consultez la documentation de l'API DX Core de votre plateforme :

L'exemple dans cette section utilise les valeurs suivantes :

Informations requisesExemple
Nom de la connexionMa connexion MQTT
Identifiant du connecteuractility-mqtt-iot
Nom d'hôte du courtier MQTTmyhostname.com:8883
Schéma du sujet Uplinkmqtt/things/\{DevEUI\}/uplink
Schéma du sujet Downlinkmqtt/things/\{DevEUI\}/downlink
ProtocoleSSL
Nom d'utilisateurmycompany
Mot de passebar
POST /thingpark/dx/core/latest/api/connections HTTP/1.1
Authorization: Bearer ...
Content-Type: application/json
Accept: application/json

{
"connectorId": "actility-mqtt-iot",
"name": "My MQTT connection",
"configuration": {
"uplinkTopicPattern": "mqtt/things/{DevEUI}/uplink",
"downlinkTopicPattern": "mqtt/things/{DevEUI}/downlink",
"hostName": "myhostname.com:8883",
"protocol": "SSL",
"username": "mycompany",
"password": "bar"
}
}

HTTP/1.1 201 Created
Content-Type: application/json
Location: /connections/1114

{
"id": "1114",
"connectorId": "actility-mqtt-iot",
"name": "My MQTT connection",
"state": "OPENED",
"configuration": {
...
}
}

Ajouter une connexion HTTPS de base

Une connexion HTTPS de base supporte les connexions basées sur HTTPS, également connues sous le nom d'interface Tunnel NS-AS. Les payloads des capteurs sont échangés dans un format encodé sans le Support des drivers de payload. Ce type de connexion ne supporte pas les services de mise en file d'attente de messages. Les alarmes de capteurs et de passerelles ne peuvent pas être signalées par ce type de connexion.

L'exemple dans cette section utilise les valeurs suivantes :

Informations requisesExemple
Nom de la connexionMa connexion HTTPS de base
URLhttps://www.example.com/myApp
Type de contenuJSON
Clé d'authentification de l'interface tunnelC72C6F867B150B1210ACDA5F3CDFB449
Écart maximum de l'horodatage10 secondes
POST /thingpark/wireless/rest/subscriptions/mine/appServers HTTP/1.1
Authorization: Bearer ...
Content-Type: application/json
Accept: application/json
Cookie: JSESSIONID=gcn1wPKxdUPUW6yh8aPsAiwY.twa; GLOBALTWA=0

{
"contentType": "jsontyped",
"destinations": [
{
"addresses": [
"https://www.example.com/myApp"
],
"ports": "*",
"strategy": "SEQUENTIAL"
}
],
"downlinkSecurity": {
"downlinkAsKey": "C72C6F867B150B1210ACDA5F3CDFB449",
"maxTimestampDeviation": 10,
"status": "DOWNLINK_AS_KEY"
},
"name": "My Basic HTTPS connection"
}

HTTP/1.1 201 Created
Content-Type: application/json
Location: /thingpark/wireless/rest/subscriptions/32/appServers/2227

{
"occContext": {
"version": 0,
"lastUpdate": 1546598395000,
"who": "John Doe"
},
"name": "My Basic HTTPS connection",
"ID": "TWA_199983788.568.AS",
...
}

Gestion des capteurs

Ajouter un capteur LoRaWAN®

L'exemple dans cette section utilise les valeurs suivantes pour un capteur LoRaWAN® 1.0 :

Informations requisesExemple
Nom du capteurMon capteur
ActivationOTAA
DevEUI70B3D5E756000999
AppKey7374757A3FDD092947CE2DE9321C6040

Récupérer un modèle de capteur

La sélection d'un modèle de capteur est obligatoire pour ajouter un capteur. Vous pouvez extraire un ID de modèle de capteur en listant les modèles de capteurs LoRaWAN® existants.

GET /thingpark/wireless/rest/subscriptions/mine/deviceProfiles?connectivity=LORAWAN HTTP/1.1
Authorization: Bearer ...
Accept: application/json
Cookie: JSESSIONID=gcn1wPKxdUPUW6yh8aPsAiwY.twa; GLOBALTWA=0

HTTP/1.1 200 OK
Content-Type: application/json

{
"briefs": [
{
"commercialName": "LoRaMote EU fw4 - class A",
"typeMAC": "LoRaMAC",
"vendor": {
"name": "Semtech",
"commercialName": "Semtech",
"commercialDescription": "Supplier of analog and mixed-signal semiconductors.",
"ID": "semtech"
},
"connectivity": "LORAWAN",
"macMajorVersion": 0,
"macMinorVersion": 3,
"motionModelIndicator": "RANDOM",
"ID": "SMTC/LoRaMoteA.1_EU",
"defaultIsmBands": [
{
"name": "EU863-870 (EU868)",
"ID": "eu868"
},
{
"name": "RU864-870 (RU864)",
"ID": "ru864"
}
]
},
...
],
"more": false
}

Extraire l'ID du modèle de capteur sélectionné à partir de la réponse.

Récupérer une connexion

La sélection d'une connexion est obligatoire pour permettre la communication avec un serveur d'applications. Vous pouvez récupérer un ID de connexion en listant les connexions existantes.

GET /thingpark/wireless/rest/subscriptions/mine/appServers HTTP/1.1
Authorization: Bearer ...
Accept: application/json
Cookie: JSESSIONID=gcn1wPKxdUPUW6yh8aPsAiwY.twa; GLOBALTWA=0

HTTP/1.1 200 OK
Content-Type: application/json

{
"briefs": [
{
"ID": "TWA_199982747.1972.AS",
"baseStationCount": 5,
"deviceCount": 22,
"href": "/thingpark/wireless/rest/subscriptions/32/appServers/1972",
"multicastGroupCount": 0,
"name": "my MQTT application",
"state": "ACTIVE",
"healthState": "ACTIVE",
"notification": {
"baseStationAlarms": true,
"deviceAlarms": true
},
"type": "KAFKA",
"validationState": "VALIDATED"
},
...
],
"more": false
}

Si la connexion est une connexion ThingPark X IoT Flow, elle est gérée avec l'API DX Core comme expliqué dans Ajouter une connexion ThingPark X IoT Flow. Cette connexion est identifiée par la propriété id dans l'API DX Core. Cet identifiant est stocké dans la propriété tpxIotFlow.connectionId dans l’API OSS.

Extraire l'ID de la connexion sélectionnée à partir de la réponse.

Ajouter le capteur

L’exemple suivant utilise l’ID du modèle de capteur et l’ID de connexion récupérés lors des étapes précédentes.

POST /thingpark/wireless/rest/subscriptions/mine/devices?networkSubscriptionsHandlingMode=BASIC HTTP/1.1
Authorization: Bearer ...
Content-Type: application/json
Accept: application/json
Cookie: JSESSIONID=gcn1wPKxdUPUW6yh8aPsAiwY.twa; GLOBALTWA=0

{
"connectivity": "LORAWAN",
"activation": "OTAA",
"EUI": "70B3D5E756000999",
"model": {
"ID": "SMTC/LoRaMoteA.1_EU"
},
"networkSubscription": {
"nwGeolocalization": false,
"prAllowed": false
},
"appServers": [
{
"ID": "TWA_199982747.1972.AS"
}
],
"name": "My device",
"appKey": "7374757A3FDD092947CE2DE9321C6040"
}

HTTP/1.1 201 Created
Content-Type: application/json
Location: /thingpark/wireless/rest/subscriptions/32/devices/2227

{
"now": 1556274131027,
"occContext": {
"version": 0,
"lastUpdate": 1546598395000,
"who": "John Doe"
},
"name": "My device",
...
}

Lister les capteurs

Vous pouvez lister tous les capteurs.

GET /thingpark/wireless/rest/subscriptions/mine/devices HTTP/1.1
Authorization: Bearer ...
Accept: application/json
Cookie: JSESSIONID=gcn1wPKxdUPUW6yh8aPsAiwY.twa; GLOBALTWA=0

HTTP/1.1 200 OK
Content-Type: application/json

{
"briefs": [
{
"name": "My device",
"model": {
"commercialName": "LoRaMote EU fw4 - class A",
"logo": "/thingpark/wireless/rest/resources/files/logo/deviceProfile/42"
},
"connectivity": "LORAWAN",
"activation": "OTAA",
"EUI": "70B3D5E756000999",
...
"href": "/thingpark/wireless/rest/subscriptions/32/devices/2227"
},
...
],
"more": false,
"now": 1556209037421
}

Récupérer un capteur

Les ressources du capteur sont récupérées en utilisant le DevEUI du capteur.

GET /thingpark/wireless/rest/subscriptions/mine/devices/e70B3D5E756000999 HTTP/1.1
Authorization: Bearer ...
Accept: application/json
Cookie: JSESSIONID=gcn1wPKxdUPUW6yh8aPsAiwY.twa; GLOBALTWA=0

HTTP/1.1 200 OK
Content-Type: application/json

{
"now": 1556274131027,
"occContext": {
"version": 0,
"lastUpdate": 1546598395000,
"who": "John Doe"
},
"name": "My device",
"connectivity": "LORAWAN",
"activation": "OTAA",
"appEUI": "65FC7B3530A44FB9",
"EUI": "70B3D5E756000999",
...
}

Récupérer l'historique du trafic d'un capteur

Vous pouvez récupérer l'historique du trafic d'un capteur en utilisant le DevEUI du capteur. L'exemple suivant récupère une agrégation quotidienne du trafic pour les 7 derniers jours dans le fuseau horaire Europe/Paris.

GET /thingpark/wireless/rest/subscriptions/mine/devices/e70B3D5E756000999/frames/aggregated?duration=P7D&step=P1D&timezone=Europe/Paris HTTP/1.1
Authorization: Bearer ...
Content-Type: application/json
Accept: application/json
Cookie: JSESSIONID=gcn1wPKxdUPUW6yh8aPsAiwY.twa; GLOBALTWA=0

HTTP/1.1 200 OK
Content-Type: application/json

{
"now": 1691574920713,
"briefs": [
{
"timestamp": 1691532000000,
"instantPerMean": 0.021186423,
"meanPerMean": 0.058798883,
"rssiMean": -60.898304,
"snrMean": 0.3411017,
"espMean": -62.225357,
"mf": {
"count": 0,
"size": 0,
"sizeUp": 0,
"sizeDown": 0,
"duration": 0
},
"up": {
"count": 58,
"size": 530,
"countOnTime": 58,
"sizeOnTime": 530,
"countLate": 0,
"sizeLate": 0,
"countLost": 8,
"subTypes": []
},
"dw": {
"count": 60,
"size": 0,
"countSent": 59,
"sizeSent": 0,
"countFailed": 1,
"sizeFailed": 0,
"subTypes": []
}
},
...
]
}

Gestion des groupes multicast

Ajouter un groupe multicast

L'exemple dans cette section utilise les valeurs suivantes pour un groupe multicast LoRaWAN® 1.0 :

Informations requisesExemple
Nom du groupe multicastMon groupe multicast
DevEUI70B3D5E756000999
DevAddr785D25E2
NwkSKey7374757A3FDD092947CE2DE9321C6040
AppSKey8D67B0D6359D11ACFC45AD4BB9CE2D4F
ClasseC
Débit de données Downlink15
Fréquence de Downlink869.525 MHz
Tags de la passerelletag1 dans l'espace de noms ABONNEMENT

Récupérer une connexion

La sélection d'une connexion est obligatoire pour permettre la communication avec un serveur d'applications. Vous pouvez récupérer un ID de connexion en listant les connexions existantes. La procédure est la même que pour un capteur, voir Récupérer une connexion pour plus de détails.

Ajouter le groupe multicast

L'exemple suivant utilise l'ID de connexion récupéré lors des étapes précédentes.

POST /thingpark/wireless/rest/subscriptions/mine/devices?networkSubscriptionsHandlingMode=BASIC HTTP/1.1
Authorization: Bearer ...
Content-Type: application/json
Accept: application/json
Cookie: JSESSIONID=gcn1wPKxdUPUW6yh8aPsAiwY.twa; GLOBALTWA=0

{
"name": "My multicast group",
"EUI": "70B3D5E756000999",
"nwAddress": "785D25E2",
"nwKey": "7374757A3FDD092947CE2DE9321C6040",
"appKeys": "<AppSKeys><AppSKey Port=\"*\">8D67B0D6359D11ACFC45AD4BB9CE2D4F</AppSKey></AppSKeys>",
"class": "C",
"downlinkDataRate": 15,
"downlinkFrequency": 869.525,
"bss": {
"tags": [
{
"name": "tag1",
"namespace": "OPERATOR"
}
]
},
"appServers": [
{
"ID": "TWA_199982747.1972.AS"
}
]
}

HTTP/1.1 201 Created
Content-Type: application/json
Location: /thingpark/wireless/rest/subscriptions/32/devices/2227

{
"now": 1556274131027,
"occContext": {
"version": 0,
"lastUpdate": 1546598395000,
"who": "John Doe"
},
"name": "My multicast group",
...
}