Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Bulk-Write JSON Data

Écrivez de nombreuses entrées sur le canal au format JSON avec un seul HTTP POST

Description

Pour économiser l'alimentation de appareil ou les mises à jour de canal de groupe, vous pouvez utiliser l'API de mise à jour en masse. Lorsque vous utilisez l'API de mise à jour groupée, vous collectez des données au fil du temps, puis téléchargez les données sur ThingSpeak™. Pour écrire des données au format CSV, voir Bulk-Write CSV Data. Pour écrire une seule entrée, voir Write Data.

Remarque

Si vous définissez le React app avec le Test Frequency défini sur On Data Insertion, votre React n'est déclenché qu'une seule fois par requête d'écriture en masse lorsque le correspond au Condition, même si le Condition correspond plus d'une fois.

Requête

Méthode HTTP

POST

URL

https://api.thingspeak.com/channels/<channel_id>/bulk_update.json

Paramètres d'URL

NomDescription

<channel_id>

(Obligatoire) ID du canal pour le canal d’intérêt.

Exemple d'URL : https://api.thingspeak.com/channels/999990/bulk_update.json

Paramètres du corps de la requête et membres de l'objet

Le corps de l'opération d'écriture JSON en bloc est un objet JSON avec les membres et les tableaux répertoriés dans ces tableaux.

NomDescriptionType de valeur
write_api_key

(Obligatoire pour les canaux privés) Spécifiez la clé d'API en écriture pour ce canal spécifique. Vous pouvez trouver la clé API d'écriture sur l'onglet API Keys de la vue des canaux.

chaîne de caractère

updates

(Obligatoire) Spécifiez le tableau des mises à jour de votre canal.

tableau d'objets JSON avec les membres affichés dans Mises à jour

Mises à jour

Une mise à jour est un tableau JSON d'objets JSON, qui ont chacun les paires clé-valeur suivantes.

NomDescriptionType de valeur
created_at

(Obligatoire sauf si delta_t est inclus) Heure absolue de l'événement au format ISO 8601, EPOCH ou MYSQL. L'horodatage doit être unique dans le canal.

chaîne de caractère
delta_t

(Obligatoire sauf si created_at est inclus) Spécifiez les secondes écoulées depuis la dernière entrée avec delta_t. Les valeurs de delta_t ne peuvent pas être nulles, à l'exception de la première valeur du tableau.

chaîne de caractère
field<X>

(Facultatif) Données du champ X, où X est l'ID du champ

n'importe quel

latitude

(Facultatif) Latitude en degrés, spécifiée comme une valeur comprise entre -90 et 90.

nombre

longitude

(Facultatif) Longitude en degrés, spécifiée comme une valeur comprise entre -180 et 180.

nombre

elevation

(Facultatif) Altitude en mètres

chaîne de caractère

status(Facultatif) Message pour la saisie du champ d'état< chaîne de caractère>

Type de contenu

application/json

Format du corps

{
	"write_api_key": "WRITE_API_KEY",
	"updates": [{
			"created_at": "DATETIME_STAMP",
			"field1": FIELD1_VALUE,
			"field2": FIELD2_VALUE,
			"field3": FIELD3_VALUE,
			"field4": FIELD4_VALUE,
			"field5": FIELD5_VALUE,
			"field6": FIELD6_VALUE,
			"field7": FIELD7_VALUE,
			"field8": FIELD8_VALUE,
			"Latitude": LATITUDE_VALUE,
			"Longitude": LONGITUDE_VALUE,
			"Elevation": ELEVATION_VALUE,
			"Status": "STATUS_STRING"
		},
		{
			"created_at": "DATETIME_STAMP",
			"field1": "FIELD1_VALUE",
			Etc...
		}
	]
}
Spécifier le format d'heure created_at
{
	"write_api_key": "WRITE_API_KEY",
	"updates": [{
			"created_at": "2018-01-30 10:26:2 -0500",
			"field1": "1.0",
			"field2": "2.0"
		},
		{
			"created_at": "2018-02-02 11:27:27 -0500",
			"field1": "1.1",
			"field2": "2.2",
			"status": "well done"
		}
	]
}
Spécifier le format d'heure delta_t
{
	"write_api_key": "WRITE_API_KEY",
	"updates": [{
			"delta_t": 4,
			"field1": 1.0,
			"field2": "2.0"
		},
		{
			"delta_t": 2,
			"field1": 1.1,
			"field2": 2.2,
			"elevation": 6,
			"status": "Good"
		}
	]
}

Réponse

Succès

Code HTTP Status

200 OK

Corps

La réponse est un objet JSON indiquant le succès :

{
    "success": true
}

Erreur

Pour la liste complète, voir Codes d'erreur.

Limites

  • Le nombre de messages dans une seule mise à jour groupée est limité à 960 messages pour les utilisateurs de comptes gratuits et 14 400 messages pour les utilisateurs de comptes payants. L'intervalle de temps entre les appels séquentiels de mise à jour en bloc doit être de 15 secondes ou plus.

  • Les abonnements MQTT ne signalent pas les mises à jour du canal à partir des opérations d'écriture en masse.

  • Tous les objets du tableau des mises à jour doivent utiliser le même format d'heure.

  • Tous les horodatages doivent être uniques. Si vous soumettez des horodatages en double, toutes vos mises à jour sont rejetées, sinon seules les mises à jour avec des horodatages déjà dans le canal sont rejetées.

Exemples

développer tout

Vous pouvez configurer POSTMAN pour essayer les appels d'API RESTful. Pour envoyer une requête HTTP POST afin de mettre à jour en masse un flux du canal à l'aide d'un objet JSON, configurez POSTMAN comme indiqué :

  1. Dans l' onglet Headers, définissez le Content-Type comme application/json.

  2. Définissez le Body de la requête en tant qu'objet JSON raw et entrez l'objet JSON dans POSTMAN.

    Le format du POST complet est indiqué ici.

    POST /channels/999900/bulk_update.json HTTP/1.1
    Host: api.thingspeak.com
    Content-Type: application/json
    {
    	"write_api_key": "JNWIVP3CD54ZGI9X",
    	"updates": [{
    			"created_at": "2018-01-30 10:26:2 -0500",
    			"field1": 100
    		},
    		{
    			"created_at": "2017-01-30 10:26:23 -0500",
    			"field1": "red",
    			"field2": "blue",
    			"field3": "green",
    			"field4": "fish",
    			"field5": "alimony",
    			"field6": 100,
    			"field7": 100,
    			"field8": 100,
    			"status": "good"
    		},
    		{
    			"created_at": "2018-01-30 10:26:26 -0500",
    			"field1": 1500,
    			"field2": 150,
    			"field3": 100,
    			"field4": 100,
    			"field5": 100,
    			"field6": 100,
    			"field7": 100,
    			"field8": 100,
    			"latitude": 123,
    			"longitude": 23,
    			"elevation": 34
    		}
    	]
    }
  3. La réponse est un objet JSON indiquant le succès.

Pour les appareils sans horloge en temps réel intégrée, vous pouvez fournir un horodatage relatif pour chaque entrée. Chaque entrée commence par delta_t et répertorie le temps en secondes depuis la mesure précédente.

Entrez le code postal. Le processus et le format exacts varient en fonction de votre client.

POST /channels/999900/bulk_update.json HTTP/1.1
Host: api.thingspeak.com
Content-Type: application/json
{
	"write_api_key": "XXXXXXXXXXXXXXXX",
	"updates": [{
			"delta_t": "0",
			"field1": 100
		},
		{
			"delta_t": "2",
			"field1": "200"
		},
		{
			"delta_t": "1",
			"field1": 103
		},
		{
			"delta_t": "2",
			"field1": "23"
		},
		{
			"delta_t": "1",
			"field1": 86
		},
		{
			"delta_t": "5",
			"field1": "201"
		}
	]
}

La dernière entrée a l'horodatage de l'heure à laquelle la requête a été soumise. Chaque mise à jour dans la requête avec des horodatages relatifs est décrémentée dans le temps à partir de la dernière entrée. La réponse à la requête est un objet JSON indiquant le succès.

{
    "success": true
}
Les six valeurs affichées dans un appel au canal à 18:05:37 sont affichées dans le graphique.