# Monitoring Suhu dan Kelembaban Menggunakan Sensor DHT11

Pada project ini Anda akan diarahkan untuk monitoring suhu dan kelembaban menggunakan sensor **DHT11** yang dihubungkan ke **Raspberry Pi**. Selanjutnya, data suhu dan kelembaban yang terbaca oleh sensor **DHT11** akan dikirimkan ke **Antares IoT Platform**.

## Prasyarat

Material yang dibutuhkan mengikuti **Prasyarat Umum** pada laman sebelumnya. Jika Anda belum menyiapkan kebutuhan pada laman tersebut, maka Anda dapat mengunjungi laman berikut.

{% content-ref url="prasyarat-umum-raspberry-ssh" %}
[prasyarat-umum-raspberry-ssh](https://docs.antares.id/contoh-kode-dan-library/raspberry-pi/ssh-secure-shell/prasyarat-umum-raspberry-ssh)
{% endcontent-ref %}

## Langkah Kerja

### 1. Menyiapkan Peralatan

Berikut adalah beberapa peralatan yang Anda perlukan untuk monitoring suhu dan kelembaban menggunakan Sensor DHT11:

* Raspberry Pi&#x20;
* Sensor DHT11
* Resistor 10kΩ
* Breadboard
* Kabel jumper (3 jumper male to female dan 3 jumper male to male)

{% hint style="info" %}
**Resistor 10kΩ** diperlukan sebagai pull-up resistor yang digunakan untuk menstabilkan komunikasi antara sensor DHT11 dengan Raspberry Pi. Resistor ini diperlukan ketika Anda bekerja dengan sensor DHT11 yang memiliki 4 pin.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/tnjqBBzsgWEr0ycuweKx/1_Alat.png" alt=""><figcaption><p>Peralatan yang Diperlukan untuk Monitoring Suhu dan Kelembaban</p></figcaption></figure>

### 2. Merangkai Hardware

Untuk monitoring suhu dan kelembaban, Anda perlu menghubungkan sensor DHT11 dengan Raspberry Pi. Anda perlu membuat rangkaian seperti pada gambar berikut.

{% hint style="info" %}
Hubungkan pin VCC DHT11 ke pin 3.3 V Raspberry Pi, pin GND DHT11 ke pin GND Raspberry Pi, dan pin data DHT11 ke GPIO 4 Raspberry Pi. Terakhir, hubungkan ujung resistor 10kΩ pada pin VCC DHT11 dan ujung lainnya pada pin data DHT11.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/JLT0RiwvJA0ro7rWAuPi/2_Rangkaian.png" alt=""><figcaption><p>Rangkaian DHT11 ke Raspberry Pi</p></figcaption></figure>

Berikut adalah pinout diagram Raspberry Pi dan sensor DHT11 yang dapat memudahkan Anda dalam membuat rangkaian.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/PNf2SWVvxj91DSVj9LkK/3_Pinout.png" alt=""><figcaption><p>Pinout Raspberry Pi</p></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/8xeOFXVWSkvYARvnQJHt/4_pinot%20sensor%20dht.jpg" alt=""><figcaption><p>Pinout Sensor DHT11</p></figcaption></figure>

### 3. Menyalakan Raspberry Pi

Anda dapat menyalakan Raspberry Pi dengan menghubungkannya ke power source menggunakan USB-C.&#x20;

{% hint style="info" %}
Raspberry Pi yang sudah menyala akan ditandai dengan indikator LED yang menyala di dekat port USB-C.
{% endhint %}

### 4. Buka Aplikasi PuTTY

Aplikasi PuTTY digunakan untuk mengakses Raspberry Pi secara SSH. Gambar di bawah menunjukkan tampilan awal aplikasi tersebut ketika dibuka.&#x20;

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/SwUooTMr3XbtG6ZaiVf2/1_PuTTY.png" alt=""><figcaption><p>Tampilan Aplikasi PuTTY</p></figcaption></figure>

### 5. Periksa Koneksi Raspberry Pi dengan Jaringan WiFi

Untuk menghubungkan Raspberry Pi via SSH menggunakan aplikasi PuTTY, Anda perlu menginputkan Host Name atau IP Address dari Raspberry Pi. Untuk memeriksa apakah Raspberry Pi telah terhubung ke jaringan WiFi, Anda dapat melakukan command "ping" ke hostname Raspberry Pi. Buka command prompt dan masukkan syntax berikut.

```
ping raspberrypi
```

Apabila Raspberry Pi telah terhubung ke jaringan WiFi, maka perangkat akan mengirimkan pesan reply pada komputer seperti gambar di bawah.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/4CMfdJsDwYEUlYCYMb1r/3_Ping.png" alt=""><figcaption><p>Ping ke Raspberry Pi</p></figcaption></figure>

{% hint style="info" %}
Apabila proses ping **gagal**, maka besar kemungkinan Raspberry Pi **belum terhubung dengan jaringan WiFi** yang sudah diatur ketika proses instalasi OS. Pada kondisi ini, yang dapat Anda lakukan adalah dengan **menunggu beberapa saat** hingga ping dapat dilakukan. Jika masih gagal, Anda dapat **me-restart Raspberry Pi** dengan cara mencabut dan menghubungkan kembali sumber daya dari USB.
{% endhint %}

{% hint style="info" %}
Apabila Raspberry Pi masih tidak bisa terkoneksi dengan jaringan Wi-Fi yang telah Anda atur ketika proses instalasi OS, maka langkah terakhir yang dapat dilakukan adalah **mengganti jaringan Wi-Fi yang digunakan dengan melakukan instalasi OS kembali** pada bagian Configure Wireless LAN seperti pada gambar di bawah.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/MPOiOt928NPRKwBmpg76/9_Uname%20&#x26;%20Password.png" alt=""><figcaption><p>Mengubah Koneksi WiFi pada Raspberry Pi</p></figcaption></figure>

### 6. Akses Raspberry Pi secara SSH

Setelah memastikan bahwa Raspberry Pi dapat terhubung dengan komputer kita, selanjutnya kita dapat menginput hostname Raspberry Pi pada aplikasi PuTTY seperti gambar di bawah, lalu tekan Open.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/nHkHVrupYhXsJPgYMETl/4_SSH.png" alt=""><figcaption><p>Menginput Host Name pada Aplikasi PuTTY</p></figcaption></figure>

Pilih Accept pada tampilan yang muncul, lalu masukkan username dan password pada terminal yang terbuka. Inputkan usernam dan password sesuai dengan yang dibuat ketika instalasi OS. Setelah berhasil login, maka tampilan pada terminal akan menjadi seperti berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/SEVkCQYdhhYgh1MNMJYj/5_Terminal.png" alt=""><figcaption><p>Tampilan Terminal Raspberry Pi yang Diakses Secara SSH</p></figcaption></figure>

### 7. Install Library Adafruit DHT11

Setelah Anda berhasil mengakses terminal Raspberry Pi, Anda perlu menginstall library DHT11 dari Adafruit dengan proses cloning dari Github. Berikut syntax yang harus diketikkan pada terminal.

```
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
```

Setelah proses cloning selesai, akan muncul folder Adafruit\_Python\_DHT yang dapat diperiksa dengan mengetikkan "ls" pada terminal.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/h1Plibn9jxrDCA7Di5Nm/5_Adafruit.png" alt=""><figcaption><p>Folder Adafruit_Python_DHT yang Muncul Setelah Proses Cloning</p></figcaption></figure>

Untuk melakukan instalasi library DHT11, masuk ke dalam folder Adafruit\_Python\_DHT dengan mengetikkan syntax berikut.

```
cd Adafruit_Python_DHT
```

Setelah masuk ke dalam folder tersebut, Anda dapat memeriksa file yang ada di dalamnya dengan mengetikkan "ls" pada terminal.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/DvkuwbdkX6eJnlf6IY37/6_CD%20Adafruit.png" alt=""><figcaption><p>Masuk ke Folder Adafruit_Python_DHT dan Menampilkan Isi Foldernya</p></figcaption></figure>

{% hint style="info" %}
Pada output terminal di atas terdapat file **setup.py**. File ini berfungsi untuk instalasi library DHT11.
{% endhint %}

Ketikkan syntax di bawah untuk melakukan instalasi.

```
sudo python setup.py install
```

### 8. Membuat File Python

Setelah berhasil melakukan instalasi library yang diperlukan, Anda perlu membuat file Python untuk menginputkan kode program yang diperlukan. Anda perlu masuk ke direktori examples dengan mengetikkan syntax berikut.

```
cd examples
```

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/GhdzjCywS5HXto9jts7P/7_CD%20Examples.png" alt=""><figcaption><p>Masuk ke Direktori Examples</p></figcaption></figure>

Kemudian Anda perlu membuat file Python baru dengan mengetikkan syntax di bawah.&#x20;

```
sudo nano your-file-name.py
```

{% hint style="info" %}
Anda perlu mengubah **your-file-name** dengan nama file sesuai preferensi kalian.
{% endhint %}

Setelah itu, tampilan pada terminal akan berubah menjadi seperti gambar di bawah. Pada tampilan ini, Anda dapat mulai menginputkan kode program yang diperlukan untuk monitoring suhu dan kelembaban.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/1STzHkZ3xLPT9l9YcQWY/8_File%20Python.png" alt=""><figcaption><p>File Python Kosong untuk Menuliskan Kode Program</p></figcaption></figure>

{% hint style="info" %}
Tampilan di atas menunjukkan file Python kosong yang siap untuk diinputkan dengan kode program.
{% endhint %}

### 9. Menginputkan Kode Program

Berikut adalah kode program yang perlu Anda inputkan ke file Python yang sudah Anda buat sebelumnya.

{% code lineNumbers="true" %}

```python
import Adafruit_DHT
import time
import datetime
import requests

# Set DHT11 sensor type
sensor = Adafruit_DHT.DHT11

# Set GPIO pin where DHT11 sensor is connected
pin = 4

# Set Antares URL and headers
antares_url = 'masukkan URL'
headers = {
    'cache-control': 'no-cache',
    'content-type': 'application/json;ty=4',
    'x-m2m-origin': 'masukkan access-key'
}

while True:
    # Read data from DHT11 sensor
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

    if humidity is not None and temperature is not None:
        print("Last valid input: " + str(datetime.datetime.now()))
        print("Temperature: %d C" % temperature)
        print("Humidity: %d %%" % humidity)

        # Create the data payload
        data = {
            "m2m:cin": {
                "con": "{\"Temperature\":%d,\"Humidity\":%d}" % (temperature, humidity)
            }
        }

        # Send the data to Antares
        try:
            response = requests.post(antares_url, headers=headers, json=data)
            response.raise_for_status()  # Check if the request was successful
            print('Data sent successfully.')
        except requests.exceptions.RequestException as e:
            print('Failed to send data:', e)

    else:
        print('Failed to get reading. Try again!')

    # Wait for 2 seconds before the next reading
    time.sleep(2)

```

{% endcode %}

{% hint style="info" %}
Jangan lupa untuk memasukkan **URL device** pada bagian **antares\_url** dan **access-key** pada bagian **x-m2m-origin** sesuai yang terdapat pada Antares IoT Platform. Pastikan tidak ada kesalahan penulisan program dan perhatikan indentasinya.
{% endhint %}

Setelah berhasil menginputkan kode program, maka tampilan akan menjadi seperti pada gambar berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/r4AWFF3BN2QFup12HYQd/9_DHT%20kode.png" alt=""><figcaption><p>Kode Program yang Telah Diinputkan ke File Python</p></figcaption></figure>

{% hint style="info" %}
Setelah Anda berhasil menginputkan kode program, selanjutnya Anda perlu menyimpan file Python tersebut dengan menekan **Ctrl + X > Y > Ente**r.
{% endhint %}

### 10. Mengeksekusi File Python

Setelah file Node.js Request berhasil disimpan. Selanjutnya Anda dapat mengeksekusi file tersebut dengan mengetikkan syntax berikut pada terminal.

```
python your-file-name.py
```

{% hint style="info" %}
Jangan lupa ubah **your-file-name** sesuai dengan nama yang dibuat sebelumnya.
{% endhint %}

Setelah file Python dieksekusi, maka tampilan pada terminal akan menjadi seperti pada gambar berikut.

<figure><img src="https://content.gitbook.com/content/rRkxjRLeqOm0pNhLfsus/blobs/ZQgIJ9c1WCK5rdlECwJl/10_Output%20DHT.png" alt=""><figcaption><p>Output Terminal ketika FIle Python Dieksekusi</p></figcaption></figure>

{% hint style="info" %}
Gambar di atas menunjukkan bahwa **sensor DHT11** telah mampu membaca data **suhu (temperature)** dan **kelembaban (humidity)**. Data tersebut juga telah berhasil dikirimkan ke Antares IoT Platform dengan pesan "**Data sent successfully**".
{% endhint %}

### 11. Periksa Data pada Antares IoT Platform

Untuk memastikan bahwa data suhu dan kelembaban telah terkirim ke Antares IoT Platform, Anda dapat membuka URL device Anda. Gambar berikut menunjukkan tampilan pada Antares IoT Platform yang sudah menerima data dari Raspberry Pi.

<figure><img src="https://3995702122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrRkxjRLeqOm0pNhLfsus%2Fuploads%2FoRpiqHCGOWtFtc2sInzl%2F143.png?alt=media&#x26;token=fe5a3fbc-6673-4a53-8c9b-77e1fbf1f791" alt=""><figcaption><p>Tampilan pada Antares IoT Platform yang Telah Menerima Data dari Raspberry Pi</p></figcaption></figure>
