Main Content

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Bulk-Write JSON Data

Schreiben Sie mit einem einzigen HTTP-POST viele Einträge im JSON-Format in den Kanal

Beschreibung

Um Gerätestrom zu sparen oder Kanalaktualisierungen zu gruppieren, können Sie die Bulk-Update-API verwenden. Wenn Sie die Massenaktualisierungs-API verwenden, sammeln Sie im Laufe der Zeit Daten und laden die Daten dann auf ThingSpeak™ hoch. Informationen zum Schreiben von Daten im CSV-Format finden Sie unter Bulk-Write CSV Data. Um einen einzelnen Eintrag zu schreiben, siehe Write Data.

Hinweis

Wenn Sie React app festlegen und Test Frequency auf On Data Insertion setzen, wird Ihre Reaktion nur einmal pro Massenschreibanforderung ausgelöst, wenn die Condition Type stimmt mit Condition überein, auch wenn Condition mehr als einmal übereinstimmt.

Anfrage

HTTP-Methode

POST

URL

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

URL-Parameter

NameBeschreibung

<channel_id>

(Erforderlich) Kanal-ID für den gewünschten Kanal.

URL-Beispiel: https://api.thingspeak.com/channels/999990/bulk_update.json

Körperparameter und Objektmitglieder

Der Hauptteil des JSON-Massenschreibvorgangs ist ein JSON-Objekt mit den in diesen Tabellen aufgeführten Mitgliedern und Arrays.

NameBeschreibungWerttyp
write_api_key

(Erforderlich für private Kanäle) Geben Sie den Schreib-API-Schlüssel für diesen bestimmten Kanal an. Sie finden den Write API Key auf der Registerkarte API Keys der Kanalansicht.

Zeichenfolge

updates

(Erforderlich) Geben Sie die Reihe der Aktualisierungen für Ihren Kanal an.

Array von JSON-Objekten mit den in Aktualisierung gezeigten Mitgliedern

Aktualisierung

Ein Update ist ein JSON-Array von JSON-Objekten, die jeweils über die folgenden Schlüssel-Wert-Paare verfügen.

NameBeschreibungWerttyp
created_at

(Erforderlich, sofern nicht delta_t enthalten) Absolute Zeit des Ereignisses im ISO 8601-, EPOCH- oder MYSQL-Format. Der Zeitstempel muss innerhalb des Kanals eindeutig sein.

Zeichenfolge
delta_t

(Erforderlich, sofern nicht created_at enthalten) Geben Sie die seit der letzten Eingabe verstrichenen Sekunden mit delta_t an. Werte für delta_t dürfen nicht Null sein, mit Ausnahme des ersten Werts im Array.

Zeichenfolge
field<X>

(Optional) Feld-X-Daten, wobei X die Feld-ID ist

beliebig

latitude

(Optional) Breitengrad in Grad, angegeben als Wert zwischen -90 und 90.

Nummer

longitude

(Optional) Längengrad in Grad, angegeben als Wert zwischen -180 und 180.

Nummer

elevation

(Optional) Höhe in Metern

Zeichenfolge

status(Optional) Nachricht für den Statusfeldeintrag<string>

Inhaltstyp

application/json

Körperformat

{
	"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...
		}
	]
}
Geben Sie das Zeitformat created_at an
{
	"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"
		}
	]
}
Geben Sie das Zeitformat delta_t an
{
	"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"
		}
	]
}

Antwort

Erfolg

HTTP-Statuscode

200 OK

Körper

Die Antwort ist ein JSON-Objekt, das den Erfolg anzeigt:

{
    "success": true
}

Fehler

Die vollständige Liste finden Sie unter Fehlercodes.

Einschränkungen

  • Die Anzahl der Nachrichten in einem einzelnen Massenupdate ist auf 960 Nachrichten für Benutzer kostenloser Konten und 14.400 Nachrichten für Benutzer kostenpflichtiger Konten begrenzt. Das Zeitintervall zwischen aufeinanderfolgenden Massenaktualisierungsaufrufen sollte 15 Sekunden oder mehr betragen.

  • MQTT-Abonnements melden keine Aktualisierungen von Massenschreibvorgängen an den Kanal.

  • Alle Objekte im Aktualisierungsarray müssen dasselbe Zeitformat verwenden.

  • Alle Zeitstempel müssen eindeutig sein. Wenn Sie doppelte Zeitstempel einreichen, werden alle Ihre Aktualisierungen abgelehnt. Andernfalls werden nur Aktualisierungen mit Zeitstempeln, die sich bereits im Kanal befinden, abgelehnt.

Beispiele

alle erweitern

Sie können POSTMAN so konfigurieren, dass RESTful-API-Aufrufe ausprobiert werden. Um eine HTTP-POST-Anfrage zur Massenaktualisierung eines Kanal-Feeds mithilfe eines JSON-Objekts zu senden, konfigurieren Sie den POSTMAN wie gezeigt:

  1. Stellen Sie auf der Registerkarte Headers Content-Type als application/json ein.

  2. Legen Sie Body der Anfrage als raw JSON-Objekt fest und geben Sie das JSON-Objekt in POSTMAN ein.

    Das Format für den vollständigen POST wird hier angezeigt.

    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. Die Antwort ist ein JSON-Objekt, das den Erfolg anzeigt.

Bei Geräten ohne integrierte Echtzeituhr können Sie für jeden Eintrag einen relativen Zeitstempel angeben. Jeder Eintrag beginnt mit delta_t und listet die Zeit in Sekunden seit der vorherigen Messung auf.

Geben Sie die Postleitzahl ein. Der genaue Prozess und das Format variieren je nach Kunde.

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

Der letzte Eintrag enthält den Zeitstempel für den Zeitpunkt der Übermittlung der Anfrage. Jede Aktualisierung in der Anfrage mit relativen Zeitstempeln wird vom letzten Eintrag zeitlich rückwärts dekrementiert. Die Antwort auf die Anfrage ist ein JSON-Objekt, das den Erfolg anzeigt.

{
    "success": true
}
Die sechs Werte, die in einem Aufruf des Kanals um 18:05:37 Uhr gepostet wurden, werden im Diagramm angezeigt.