Skip to main content

Command Palette

Search for a command to run...

Logging DHT11 temperature and humidity readings to ThingSpeak using Python's requests module.

Updated
β€’2 min read

Here's a complete guide to logging DHT11 temperature and humidity readings to ThingSpeak using Python's requests module. This will assume you're using a Raspberry Pi with a DHT sensor (like DHT11 or DHT22) connected.


πŸ”§ What You Need

  • Raspberry Pi with internet access

  • DHT11 or DHT22 sensor

  • Python installed (requests, Adafruit_DHT)

  • ThingSpeak account with a channel and Write API Key


βœ… Step-by-Step Implementation

1. Install Required Libraries on environment

pip install requests
pip install Adafruit_DHT

2. ThingSpeak Setup

  • Go to ThingSpeak

  • Create a channel

  • Enable field1 (Temperature) and field2 (Humidity)

  • Copy the Write API Key (found in API Keys tab)


3. Python Script to Read and Upload

import Adafruit_DHT
import requests
import time

# Sensor details
DHT_SENSOR = Adafruit_DHT.DHT11
DHT_PIN = 4  # GPIO4 (change if needed)

# ThingSpeak API details
THINGSPEAK_WRITE_API = "YOUR_WRITE_API_KEY_HERE"
THINGSPEAK_URL = "https://api.thingspeak.com/update"

# Logging loop
while True:
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)

    if humidity is not None and temperature is not None:
        print(f"Temp={temperature:.1f}C  Humidity={humidity:.1f}%")

        # Send data to ThingSpeak
        payload = {
            'api_key': THINGSPEAK_WRITE_API,
            'field1': temperature,
            'field2': humidity
        }

        try:
            response = requests.get(THINGSPEAK_URL, params=payload)
            if response.status_code == 200:
                print("Data sent to ThingSpeak.")
            else:
                print("Failed to send data, HTTP:", response.status_code)
        except Exception as e:
            print("Request failed:", e)
    else:
        print("Failed to retrieve data from DHT sensor")

    # Wait 15 seconds (ThingSpeak limit)
    time.sleep(15)

πŸ“ Notes

  • Replace YOUR_WRITE_API_KEY_HERE with your actual ThingSpeak Write API Key.

  • ThingSpeak accepts 1 update every 15 seconds on free plans.

  • You can run this script using:

python3 thingspeak_logger.py

Would you like this to run as a background service (systemd) on boot?

More from this blog

Aarav's Blogs

19 posts