How can I upload data to ThingSpeak with a custom timestamp instead of using the server’s current time?

15 Ansichten (letzte 30 Tage)
I am currently using the ThingSpeak API to upload bat detection data from my project. I am trying to set the created_at timestamp to match the date and time captured from the image filenames. However, despite sending the created_at field in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ) via JSON in a POST request, ThingSpeak still records the current upload time instead of the provided timestamp.
Could you please clarify the correct way to send a custom timestamp so that ThingSpeak uses it instead of the current server time? Any guidance or examples would be greatly appreciated.
  2 Kommentare
Christopher Stapels
Christopher Stapels vor etwa 4 Stunden
Bearbeitet: Christopher Stapels vor etwa 4 Stunden
Bat data! A new data type for us I think. Sounds awesome.
Can you share the complete format of the request you are using now, and perhaps the channel ID?
The doc for write data has an example in the section in the expander "Write JSON encoded entry" You can pretty easiely turn that into a GET request if you prefer that. The parameter look like this: &created_at=2025-04-23 21:36:20 +0200 You may have to url encode it depending on the client you are using. then when you read .
Doa
Doa vor etwa 8 Stunden
Bearbeitet: Walter Roberson vor etwa 5 Stunden
Thank you for your quick response.
Currently, I am sending data to ThingSpeak using a POST request in JSON format like this:
location, date_str, month = extract_metadata(file.filename)
# Convert date string to ThingSpeak timestamp
from datetime import datetime
try:
date_obj = datetime.strptime(date_str, "%Y-%m-%d_%H-%M")
except ValueError:
date_obj = datetime.utcnow()
payload = {
"api_key": THINGSPEAK_API_KEY,
"field1": count, # Bat count
"field2": location, # Location
"created_at": date_obj.strftime("%Y-%m-%dT%H:%M:%SZ") #Custom timestamp from filename
}
The created_at field is populated using the timestamp extracted from the image filename or folder name. I want to make sure this timestamp accurately reflects the time the image was captured, not the time of upload.
Here are some example folder names:
  • 20250120_TolgaScrub_M3T_8am_30m
  • January_20250113_Gordonvale_M3T_6am_20m_Ortho
  • PilotStudy_MonashSt_20240918_M3T_Flight2
And example image files:
  • PilotStudy_MonashSt_20240918_M3T_Flight2_tile_1_7.png
Would you recommend switching to a GET request format for this data, like so:
If I decide to use the GET request, should I URL encode the created_at parameter (e.g., replacing spaces with %20)?
I want to ensure that the created_at timestamp is unique for each entry and accurately reflects the time from the image's metadata. Additionally, I would like to verify that the date format used in the request will work smoothly with ThingSpeak.
For reference, my ThingSpeak Channel ID is 3142218.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Communitys

Weitere Antworten in  ThingSpeak Community

Kategorien

Mehr zu REST API finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by