Intégration à un collecteur
Le API d'abonnement permet d'établir une destination de canal de communication pour des événements concernant l'état environnemental et opérationnel de biens sélectionnés. Il prend en charge AWS IoT Core, Azure Event Hub et les canaux de communication Webhook.
Vous pouvez également créer un abonnement et accéder à vos données dans le Equinix API. Reportez-vous à la section flux de données Colocation à partir du Equinix API pour obtenir des instructions.
Certificat mTLS Equinix
Le certificat MTLS est utilisé comme extension du certificat TLS (ancien certificat SSL) pour que le serveur et le client s'authentifient mutuellement. Equinix exige de ses clients ce certificat signé de confiance, similaire à celui fourni par nos services. Nos services d'abonnement vous offrent l'option supplémentaire de vérification de connexion. Lorsqu'un nouveau lot d'événements est envoyé à chaque tentative de communication, nos services d'abonnement utilisent les certificats fournis par le client pour valider que le service auquel nous envoyons les données est le bon.
Pour récupérer le certificat, envoyez GETune demande au /smartview/v2/streaming/subscriptions/certificatenoeud final. Spécifiez la destination du canal en tant que paramètre de requête, soit AWS_IOT_CORE ou WEBHOOK.
Exemple de requête cURL:
curl -X 'GET' 'https://api.equinix.com/smartview/v2/streaming/subscriptions/certificate?channelType=WEBHOOK' \
-H 'Authorization: Bearer <Bearer Token>'
Le API d'abonnement n'accepte pas les certificats auto-signés. Utilisez un certificat CA pour l'authentification mutuelle.
AWS IoT
Envoyez des données à AWS IoT Core en fournissant le point de terminaison HTTP lors de la création de votre abonnement.
Pour autoriser Equinix à envoyer des événements à une destination AWS IoT Core, vous devez télécharger le certificat Equinix et l'enregistrer dans la console IoT Core. Reportez-vous à la documentation AWS IoT Core pour obtenir des instructions.
Azure Event Hub
La configuration en libre-service pour l’envoi de données à Azure Event Hub n’est pas disponible. Pour activer l'envoi de données vers Azure, contactez le support.
Webhooks
Si vous ne souhaitez pas utiliser AWS ou Azure comme collecteur, mais que vous pouvez fournir une URL cible vers laquelle les données de streaming peuvent être envoyées, Equinix vous propose de créer un abonnement pour envoyer des données à une destination webhook générique .
Formats d'objets pour les collectionneurs
Le format de message pour les canaux AWS IoT Core et Azure Event Hubs rend les messages plus lisibles. Voici quelques exemples de messages envoyés via des abonnements API plus.
Environnement - température
{
"type": "environmental",
"data": {
"ibx": "CH2",
"asset": {
"id": "asset1",
"level": "ZONE"
},
"reading": {
"value": "23.300",
"unit": "CELSIUS"
},
"tag": {
"id": "temperature",
"displayName": "Temperature"
},
"readingTime": "2020-08-24T09:21:00.000Z"
}
}
Environnement - humidité
{
"type": "environmental",
"data": {
"ibx": "CH1",
"asset": {
"id": "asset1",
"level": "ZONE"
},
"reading": {
"value": "66.120",
"unit": "PERCENT"
},
"tag": {
"id": "humidity",
"displayName": "Humidity"
},
"readingTime": "2020-07-28T12:35:14.615Z"
}
}
Alimentation
{
"type": "power",
"data": {
"ibx": "SP2",
"asset": {
"id": "0210:469593",
"type": "CIRCUIT"
},
"cage": "ssxxxxsss",
"cabinet": "SP2:01:021470:0210",
"accountNumber": "1000659151",
"realPower": {
"value": "0.522",
"unit": "kW"
},
"apparentPower": {
"value": "1.070",
"unit": "kVA"
},
"contractualPower": {
"value": "60.000",
"unit": "kVA"
},
"current": {
"value": "1.500",
"unit": "A"
},
"powerFactor": {
"value": "0.48",
"unit": "pf"
},
"soldCurrent": {
"value": "15.000",
"unit": "A"
},
"soldPower": {
"value": "2.880",
"unit": "kVA"
},
"powerConsumptionToContractual": {
"value": "32.151",
"unit": "PERCENT"
},
"cabinetRating": {
"value": "123.300",
"unit": "kVA"
},
"peakLastSevenDays": {
"value": "1.146",
"unit": "kVA"
},
"peakLastSevenDaysRatio": {
"value": "34.424",
"unit": "PERCENT"
},
"peakLastSevenDaysContractualPower": {
"value": "3.329",
"unit": "kVA"
},
"peakLastSevenDaysTime": "2020-07-29T07:00:00.000Z",
"lastUpdated": "2020-07-24T11:46:00.000Z",
"readingTime": "2020-07-24T11:45:00.000Z",
"description": "test description",
"oid": "1.3.6.1.2.1.299.2.10.6846",
"circuitType": "primary",
"customerName": "test customer"
}
}
Puissance mesurée - kWh
{
"type": "metered-power",
"data": {
"ibx": "LD9",
"asset": {
"id": "LD9.CBM-PDU-17-99",
"type": "Customer Billing Meter"
},
"cage": "LD9:0G:00Z13Z",
"cageSerialNo": "00Z13B-21010567",
"accountNumber": "1000006212",
"customerName": "ABC Company",
"kilowattHour": {
"value": "304574.323",
"unit": "kWh"
},
"readingTime": "2023-04-24T11:45:00.000Z",
"dataQuality": "Good"
}
}
Remarque : Les lectures de puissance mesurées sont disponibles en kWh, kW, kVA, A et pf (facteur de puissance).
Point de repère
{
"type": "tag-point",
"data": {
"ibx": "LA1",
"reading": {
"value": "33406.6",
"unit": "l/s"
},
"tag": {
"id": "LA1.Air-Handler-7-4-4:totalsupplyairflow",
"displayName": "Total Supply Air Flow"
},
"readingTime": "2020-08-24T09:21:00.000Z"
}
}
Alerte personnalisée
{
"type": "alert",
"data": {
"ibx": "SG2",
"region": "APAC",
"asset": {
"id": "CH1.Colo.CH1_05_000550_0105",
"type": "ENVIRONMENTAL",
"classification": "Environmental"
},
"tag": {
"id": "temperature"
},
"threshold": {
"unit": "CELSIUS",
"maxValue": "-6.67",
"minValue": "-12.22"
},
"id": "zhe-15603221441540.3171591127612322145",
"triggeredTime": "2019-09-23T23:01:30.655Z",
"type": "environmental",
"typeId": "Absolute",
"conditional": "N",
"eventType": "Out of Range",
"heartbeat": false
}
}
Alerte système
{
"type": "system-alert",
"data": {
"ibx": "SG2",
"region": "APAC",
"metro": "SG",
"country": "SG",
"currentValue": {
"unit": "kWh",
"value": "2.650479E7",
"type": "float"
},
"asset": {
"id": "9SG2.ELEC4AUPSR-A10ASBF0",
"type": "Circuit Breaker with Metering",
"classification": "Electrical"
},
"tag": {
"id": "SG2.ELEC5BUPSR-B14UAH2Q:breaker",
"displayName": "Bypass Not Available"
},
"conditionName": "Low",
"status": {
"acknowledged": true,
"acknowledgementTime": "2020-07-28T12:35:14.615Z",
"cleared": false,
"active": false
},
"threshold": {
"unit": "kWh",
"stateLimit": "80",
"message": "Drive not in Auto"
},
"severity": 820,
"triggeredTime": "2020-07-28T12:35:14.615Z",
"processedTime": "2020-07-28T12:35:14.615Z",
"normalProcessedTime": "2020-07-28T12:35:14.615Z",
"normalTriggeredTime": "2020-07-28T12:35:14.615Z",
"type": "Digital",
"heartbeat": false
}
}
Indicateurs de qualité des données
Le champ dataQuality propose les indicateurs de qualité des données (DQI) des points de données et des alertes (système et personnalisé) dans le cadre des données elles-mêmes. Ceci est utilisé pour s'assurer et informer le client API que les données des actifs DCIM sont valides et collectées de manière fiable. L'ajout de DQI assure la transparence quant à la qualité des données reçues.
Indicateurs de stockage et de transfert
Le champ messageRetried comme indicateur de stockage et de transfert (SNFI) est utilisé pour communiquer si les données DCIM sont en fait presque en temps réel ou retardées et envoyées ultérieurement en raison d'une interruption de la connexion via le canal NRT. Si la connexion entre le client d'abonnement et l'éditeur a un problème, l'éditeur utilise le mécanisme Store and Forward (SNF) pour stocker le message du côté de l'éditeur. Une fois la connexion rétablie, ces messages stockés et événements NRT sont envoyés au client après le temps de connexion établi. Les données envoyées plus tard en raison de la méthode SNFI, sont marquées, car elles ne sont plus des données NRT, par rapport à d'autres données normales.
Vos applications API peuvent créer des règles et des décisions d'affaires basées sur ces deux indicateurs pour améliorer la transparence des données et l'efficacité de la solution.
{
"messageRetried": true,
"type": "tag-point",
"data": {
"ibx": "SG2",
"reading": {
"value": "54.0",
"unit": "s"
},
"tag": {
"id": "SG2.UPS-5-RM A22-04:batterytimeremaining",
"displayName": "Battery Time Remaining"
},
"readingTime": "2021-03-25T03:48:00.510Z",
"dataQuality": "Good"
}
}
Interprétation des valeurs ENUM et booléennes
Un tableur Excel peut être fourni, comprenant des colonnes semblables aux suivantes:
| IBX | TYPE D'ACTIF | CLASSIFICATION DES ACTIFS | IDENTIFICATION DE L'ACTIF | SUFFIXE_TAG | TAG_ID | TYPE_DE_DONNÉES_TAG | TAG_UOM | NOM_AFFICHAGE_TAG | NOM_TABLE_ÉTAT |
|---|---|---|---|---|---|---|---|---|---|
| TR5 | Incendie, détection de fumée | Mécanique | TR5.AlarmeIncendie_001 | alarme | TR5.Incendie_001: alarme | Booléen | Alarme | ALARME NORMAL | |
| TR5 | Détection de fuite | Mécanique | TR5.LD_TR5_CABLE1 | fuite détectée | TR5.LD_TR5_CABLE1: fuite détectée | Booléen | Fuite détectée | ALARME NORMAL | |
| TR5 | UPS | Électrique | TR5.UPS_2110 | résilient | TR5.UPS_2110: résilient | Booléen | Résilient | RÉDUCTION_RESIL_TEL QUE CONÇU |
Pour les valeurs booléennes et ENUM, reportez-vous au STATE_TABLE_NAME lorsque la première valeur (NORMAL, REDUCEDRESIL) correspond à 0et la deuxième valeur (ALARM, RESILASDESIGNED) correspond à 1.
Fréquence des appels API
Pour Power API, appelez-le toutes les 5 minutes pour les centres de données de la région Asie-Pacifique et toutes les 15 minutes pour les autres régions. La limite est de 100 000 appels par utilisateur et par jour.
Pour le API des abonnements (méthode de collecte REST), appelez-le environ toutes les 30 secondes par ID d'abonnement. Il suffit d'appeler jusqu'à une fois toutes les 5 minutes.