Contenuto principale

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

Bulk-Write CSV Data

Scrivere molte voci sul canale in formato CSV 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 JSON, vedere Bulk-Write JSON 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.csv

Parametri URL

NomeDescrizione

<channel_id>

(Obbligatorio) ID del canale di interesse.

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

Tipo di contenuto

application/x-www-form-urlencoded

Parametri del corpo

NomeDescrizioneTipo di valore
write_api_key

(Obbligatorio) Specificare la chiave API di scrittura per questo canale specifico. La chiave API di scrittura si trova nella scheda API Keys della vista canale.

stringa

time_format

(Obbligatorio) Specificare il tempo assoluto dell'evento con time_format=absolute o il tempo tra le misurazioni con time_format=relative.

stringa absolute o relative

updates

Dati in blocco da post sul canale. Separare le voci successive con un carattere barra verticale (|). Avviare ogni aggiornamento con una data e ora assoluta o con un numero di secondi. Separare i campi successivi con una virgola

Vedi Aggiornamento parametri.

Aggiornamento parametri

L'aggiornamento contiene i dati da post sul tuo canale. I parametri vengono visualizzati in sequenza in ogni aggiornamento, nell'ordine indicato nella tabella. In ogni aggiornamento compare solo una delle specifiche temporali.

NomeDescrizioneTipo di valore
marca temporale

(Obbligatorio) Se time_format=absolute, specificare datetime nei formati ISO 8601, EPOCH o MYSQL. Se time_format=relative, specificare i secondi trascorsi dall'ultima voce. Il timestamp deve essere univoco all'interno del canale.

data e ora o intero

campo <X> dati

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

Qualunque

latitudine

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

decimale

longitudine

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

decimale

elevazione

(Obbligatorio) Altitudine in metri

intero

stato(Obbligatorio) Messaggio per l'immissione del campo di statostringa

Formato del corpo

Ogni scrittura in blocco CSV contiene una chiave API di scrittura e una specifica del formato dell'ora. Ogni scrittura in blocco può contenere più aggiornamenti. Separare le voci successive con un carattere barra verticale (|). Fornire dati o una voce vuota per ogni parametro sequenziale fino all'ultimo parametro con dati validi.

write_api_key=WRITE_API_KEY&time_format=TIME_FORMAT&updates=TIMESTAMP,FIELD1_VALUE,FIELD2_VALUE,FIELD3_VALUE,FIELD4_VALUE,FIELD5_VALUE,FIELD6_VALUE,FIELD7_VALUE,FIELD8_VALUE,LATITUDE,LONGITUDE,ELEVATION,STATUS | DATETIME_STAMP_OR_SECONDS_FROM_LAST_ENTRY,FIELD1_VALUE,FIELD2_VALUE,FIELD3_VALUE,FIELD4_VALUE,FIELD5_VALUE,FIELD6_VALUE,FIELD7_VALUE,FIELD8_VALUE,LATITUDE,LONGITUDE,ELEVATION,STATUS
Specificare il formato dell'ora assoluta
write_api_key=XXXXXXXXXXXXXXXX&time_format=absolute&updates=2018-06-14T12:12:22-0500,1,,3,0.4,1.5,1.6,,1.8,40.0,5.4,0,wet|2018-01-30T10:26:23-0500,1.2,2.3,3,4,5,6,7,8,42.0,0.5,50,falling
Specificare il formato dell'ora relativa
write_api_key=XXXXXXXXXXXXXXXX&time_format=relative&updates=4,1.1,2,0.3,,,6,7.7,0.8,41.2,19.5,100,ok|3,1,2,3,4,5,6,7,8,41.2,25.1,110,rising

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 deve essere di almeno 15 secondi.

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

  • Tutti gli aggiornamenti devono utilizzare lo stesso formato orario.

  • 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 dati in formato CSV, configurare POSTMAN.

  1. Selezionare POST dall'elenco a discesa dei verbi HTTP.

  2. Inserisci l'URL, sostituendo <channel_id> con l'ID del tuo canale.

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

  3. Seleziona x-www-form-urlencoded.

  4. Inserisci write_api_key nella sezione Key e inserisci la chiave API di scrittura per il tuo canale nella sezione value.

  5. Inserisci time_format nella sezione Key e inserisci relative nella sezione value.

  6. Inserisci updates nella sezione Key e poi inserisci 0,2,,,,,,,,,,,|2,2,,,,,,,,,,,|1,16,,,,,,,,,,,|2,2,,,,,,,,,,,|5,164,,,,,,,,,,,|1,22,,,,,,,,,,,|3,116,,,,,,,,,,,|

    nella sezione value. Utilizzare una virgola per ogni voce vuota.

  7. Invia la richiesta.

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 19:07:20. 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.

Per i dispositivi dotati di orologio in tempo reale integrato, è possibile fornire un timestamp relativo per ogni voce. Specificare time_format=relative. Ogni voce inizia con il tempo in secondi dalla misurazione precedente.

POST /channels/266256/bulk_update.csv HTTP/1.1
Host: api.thingspeak.com
Content-Type: application/x-www-form-urlencoded
time_format: relative


write_api_key=JNWIVP3CD54ZGI9X&time_format=absolute&updates=2018-01-30T10%3A26%3A2-0500%2C2%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%7C2018-01-30+10%3A26%3A23-0500%2C2%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%7C2018-01-31+10%3A27%3A2-0500%2C16%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%7C2018-01-31+11%3A26%3A32-0500%2C2%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%7C2018-01-31+11%3A27%3A22-0500%2C164%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C

Il messaggio deve essere codificato tramite URL. %2C e %7C rappresentano rispettivamente i caratteri di codifica URL per "," e "|".

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.