Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um das englische Original zu sehen.

Bulk-Write JSON Data

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

Beschreibung

Um Gerätestrom zu sparen oder Kanalaktualisierungen zu gruppieren, können Sie die API für Massenaktualisierungen verwenden. Wenn Sie die API für Massenaktualisierungen verwenden, sammeln Sie im Laufe der Zeit Daten und laden die Daten dann in ThingSpeak™ hoch. Informationen zum Schreiben von Daten im CSV-Format finden Sie unter Bulk-Write CSV Data. Informationen zum Schreiben eines einzelnen Eintrags finden Sie unter Write Data.

Hinweis

Wenn Sie die React-App mit Test Frequency auf On Data Insertion setzen, wird Ihr React nur einmal pro Bulk-Write-Anforderung ausgelöst, wenn Condition Type mit Condition übereinstimmt, selbst 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

Body-Parameter 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 Write-API-Schlüssel für diesen bestimmten Kanal an. Den Write-API-Schlüssel finden Sie auf der Registerkarte API Keys der Kanalansicht.

Zeichenfolge

updates

(Erforderlich) Geben Sie das Array der Updates für Ihren Kanal an.

Array von JSON-Objekten mit den in Aktualisierungen angezeigten Mitgliedern

Aktualisierungen

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

NameBeschreibungWerttyp
created_at

(Erforderlich, sofern nicht delta_t enthalten ist) 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 ist) 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 Statusfeldeintrag<Zeichenfolge>

Inhaltstyp

application/json

Körper-Format

{
	"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...
		}
	]
}
Zeitformat angeben 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"
		}
	]
}
Zeitformat angeben 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"
		}
	]
}

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 Bulk-Update-Aufrufen sollte 15 Sekunden oder mehr betragen.

  • MQTT-Abonnements melden dem Kanal keine Aktualisierungen aus Massenschreibvorgängen.

  • Alle Objekte im Update-Array müssen dasselbe Zeitformat verwenden.

  • Alle Zeitstempel müssen eindeutig sein. Wenn Sie doppelte Zeitstempel übermitteln, werden alle Ihre Aktualisierungen abgelehnt, andernfalls werden nur Aktualisierungen abgelehnt, deren Zeitstempel sich bereits im Kanal befinden.

Beispiele

alle erweitern

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

  1. Legen Sie auf der Registerkarte Headers Content-Type als application/json fest.

  2. Legen Sie das 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 Ablauf 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. Jedes Update in der Anfrage mit relativen Zeitstempeln wird vom letzten Eintrag aus 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 gepostet wurden, werden im Diagramm angezeigt.