Raspberry Pi and DHT11 with Cayenne

In this tutorial, we are going to use Raspberry Pi and DHT11 with Cayenne.

What is Cayenne ?

Cayenne is the world’s first drag and drop IoT project builder that empowers developers, designers and engineers to quickly prototype and share their connected device projects. Cayenne was designed to help users create Internet of Things prototypes and then bring them to production.

There are several major components in the platform:

  • Cayenne Mobile Apps – Remotely monitor and control your IoT projects from the Android or iOS Apps.
  • Cayenne Online Dashboard – Use customizable widgets to visualize data, set up rules, schedule events and more.

Requirements

  • Raspberry Pi
  • DHT11 Sensor
  • Jumper Wires

Circuit Diagram

rpi dht11

Vcc pin of DHT11 is connected with Pi’s 3.3v pin and GND pin is connected with Pi’s GND pin. While data pin is connected with GPIO17 pin.

Recommended: Control LED using Raspberry Pi with Telegram Bot


Temperature and Humidity Monitoring over Cloud using Raspberry Pi and Cayenne


Setup Cayenne for Raspberry Pi

First Install libraries for python MQTT and Adafruit DHT sensor, by using the below commands:

sudo pip install paho-mqtt
sudo apt-get install build-essential python-dev python-openssl
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install

Now Open Cayenne – my Device and sign up.

We will need to get the username, password and client id to send data to Cayenne dashboard. For this go to Cayenne dashboard and click on ‘Add new’ and then click on ‘Device/Widget’.

After this scroll down and click on ‘Bring Your Own Thing’.

Copy these details, as shown below

cayenne

Code Explanation

First, import all the libraries that will be used in this code:

import paho.mqtt.client as mqtt
import time
import sys
import Adafruit_DHT

Now enter your device details like username, password and client id to connect DHT11 sensor to Cayenne Dashboard.

username = "MQTT USERNAME"
password = "MQTT PASSWORD"
client = "CLIENT ID"

It will check the username and password and will connect the device with Cayenne dashboard at 1883 port. This process runs in a loop.

mqttc = mqtt.Client(client_id=clientid)
mqttc.username_pw_set(username, password=password)
mqttc.connect("mqtt.mydevices.com", port=1883, keepalive=60)
mqttc.loop_start()

Now using the below code, it will create two channels for temperature and humidity.

topic_dht11_temp = "v1/" + username + "/things/" + clientid + "/data/1"
topic_dht11_humidity = "v1/" + username + "/things/" + clientid + "/data/2"

In this while loop, it will calculate humidity and temperature and publish it to Cayenne dashboard using mqttc.publish function.

while True:
    try:
        humidity11, temp11 = Adafruit_DHT.read_retry(11, 17)   // 11 is the sensor type, 17 is the GPIO pin number   

        if temp11 is not None:
            temp11 = "temp,c=" + str(temp11)
            mqttc.publish(topic_dht11_temp, payload=temp11, retain=True)
        if humidity11 is not None:
            humidity11 = "rel_hum,p=" + str(humidity11)
            mqttc.publish(topic_dht11_humidity, payload=humidity11, retain=True)

The complete python code for this project is given at the end. Now, create a new file using below command:

Nano rpidht11.py

Then Copy the paste the code given at the end and save into this file.

Now run the file using:

Python rpidht11.py

Navigate to your Cayenne Dashboard and create widgets for Temp and humidity.

Complete Code

import paho.mqtt.client as mqtt
import time
import sys
import Adafruit_DHT
time.sleep(30) 
username = "MQTT USERNAME"
password = "MQTT PASSWORD"
clientid = "CLIENT ID"
mqttc = mqtt.Client(client_id=clientid)
mqttc.username_pw_set(username, password=password)
mqttc.connect("mqtt.mydevices.com", port=1883, keepalive=60)
mqttc.loop_start()
topic_dht11_temp = "v1/" + username + "/things/" + clientid + "/data/1"
topic_dht11_humidity = "v1/" + username + "/things/" + clientid + "/data/2"
while True:

    try:

        humidity11, temp11 = Adafruit_DHT.read_retry(11, 17)   // 11 is the sensor type, 17 is the GPIO pin number 

      
       
        if temp11 is not None:

            temp11 = "temp,c=" + str(temp11)

            mqttc.publish(topic_dht11_temp, payload=temp11, retain=True)

        if humidity11 is not None:

            humidity11 = "rel_hum,p=" + str(humidity11)

            mqttc.publish(topic_dht11_humidity, payload=humidity11, retain=True)

      

        time.sleep(5)

    except (EOFError, SystemExit, KeyboardInterrupt):

        mqttc.disconnect()

        sys.exit()

 


I hope you like this post ”Raspberry Pi and DHT11 with Cayenne”.  Do you have any questions? Leave a comment down below!

Thanks for reading. If you like this post probably you might like my next ones, so please support me by subscribing my blog.

Explore Some more Raspberry Pi Tutorials :

Upvote on Reddit

Harshvardhan Mishra

Hi, I'm Harshvardhan Mishra. I am a tech blogger and an IoT Enthusiast. I am eager to learn and explore tech related stuff! also, I wanted to deliver you the same as much as the simpler way with more informative content. I generally appreciate learning by doing, rather than only learning. Thank you for reading my blog! Happy learning! Follow and send tweets me on @harshvardhanrvm

2 thoughts on “Raspberry Pi and DHT11 with Cayenne

Leave a Reply

%d bloggers like this: