Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l’originale in inglese.

Bulk-Write JSON Data

Scrivere molte voci sul canale in formato JSON con un singolo HTTP POST

Descrizione

Per risparmiare energia del dispositivo o per raggruppare gli aggiornamenti dei canali, puoi utilizzare l'API di aggiornamento in blocco. Quando si utilizza l'API di aggiornamento in blocco, si raccolgono dati nel tempo e poi si caricano i dati su ThingSpeak™. Per scrivere dati in formato CSV, vedere Bulk-Write CSV Data. Per scrivere una singola voce, vedere Write Data.

Nota

Se imposti l'app React con Test Frequency impostato su On Data Insertion, React viene attivato solo una volta per richiesta di scrittura in blocco quando Condition Type corrisponde a Condition, anche se Condition corrisponde più di una volta.

Richiesta

Metodo HTTP

POST

URL

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

Parametri URL

NomeDescrizione

<channel_id>

(Obbligatorio) ID del canale di interesse.

Esempio di URL: https://api.thingspeak.com/channels/999990/bulk_update.json

Parametri del corpo e membri dell'oggetto

Il corpo dell'operazione di scrittura JSON in blocco è un oggetto JSON con i membri e gli array elencati in queste tabelle.

NomeDescrizioneTipo di valore
write_api_key

(Obbligatorio per i canali privati) Specificare la chiave API di scrittura per questo canale specifico. Puoi trovare la chiave API di scrittura nella scheda API Keys della vista canale.

stringa

updates

(Obbligatorio) Specifica la serie di aggiornamenti per il tuo canale.

array di oggetti JSON con i membri mostrati in Aggiornamenti

Aggiornamenti

Un aggiornamento è un array JSON di oggetti JSON, ognuno dei quali presenta le seguenti coppie chiave-valore.

NomeDescrizioneTipo di valore
created_at

(Obbligatorio a meno che non sia incluso delta_t) Ora assoluta dell'evento nel formato ISO 8601, EPOCH o MYSQL. Il timestamp deve essere univoco all'interno del canale.

stringa
delta_t

(Obbligatorio a meno che non sia incluso created_at) Specificare i secondi trascorsi dall'ultima voce con delta_t. I valori per delta_t non possono essere zero, ad eccezione del primo valore nell'array.

stringa
field<X>

(Facoltativo) Dati del campo X, dove X è l'ID del campo

Qualunque

latitude

(Facoltativo) Latitudine in gradi, specificata come valore compreso tra -90 e 90.

numero

longitude

(Facoltativo) Longitudine in gradi, specificata come valore compreso tra -180 e 180.

numero

elevation

(Facoltativo) Altitudine in metri

stringa

status(Facoltativo) Messaggio per l'immissione del campo di stato<string>

Tipo di contenuto

application/json

Formato del corpo

{
	"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...
		}
	]
}
Specificare il formato dell'ora 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"
		}
	]
}
Specificare il formato dell'ora 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"
		}
	]
}

Risposta

Successo

Codice di stato HTTP

200 OK

Corpo

La risposta è un oggetto JSON che indica il successo:

{
    "success": true
}

Errore

Per l'elenco completo, vedere Codici di errore.

Limitazioni

  • Il numero di messaggi in un singolo aggiornamento di massa è limitato a 960 messaggi per gli utenti di account gratuiti e a 14.400 messaggi per gli utenti di account a pagamento. L'intervallo di tempo tra le chiamate sequenziali di aggiornamento in blocco dovrebbe essere di 15 secondi o più.

  • Gli abbonamenti MQTT non segnalano gli aggiornamenti al canale derivanti dalle operazioni di scrittura in blocco.

  • Tutti gli oggetti nell'array degli aggiornamenti devono utilizzare lo stesso formato di ora.

  • Tutti i timestamp devono essere univoci. Se invii timestamp duplicati, tutti gli aggiornamenti verranno rifiutati, altrimenti verranno rifiutati solo gli aggiornamenti con timestamp già presenti nel canale.

Esempi

espandi tutto

È possibile configurare POSTMAN per provare le chiamate API RESTful. Per inviare una richiesta HTTP POST per aggiornare in blocco un feed di canale utilizzando un oggetto JSON, configurare POSTMAN come mostrato:

  1. Nella scheda Headers, imposta Content-Type come application/json.

  2. Imposta Body della richiesta come oggetto JSON raw e inserisci l'oggetto JSON in POSTMAN.

    Il formato del POST completo è mostrato qui.

    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 risposta è un oggetto JSON che indica il successo.

Per i dispositivi senza orologio in tempo reale integrato, è possibile fornire un timestamp relativo per ogni voce. Ogni voce inizia con delta_t ed elenca il tempo in secondi dalla misurazione precedente.

Inserisci il codice POST. Il processo e il formato esatti variano a seconda del cliente.

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"
		}
	]
}

L'ultima voce riporta la marca temporale relativa all'ora in cui è stata inviata la richiesta. Ogni aggiornamento nella richiesta con timestamp relativi viene decrementato all'indietro nel tempo rispetto all'ultima voce. La risposta alla richiesta è un oggetto JSON che indica l'esito positivo.

{
    "success": true
}
Nel grafico sono mostrati i sei valori pubblicati in una chiamata al canale alle 18:05:37.