Dalam panduan ini, Anda akan mempelajari cara mengirim pesan WhatsApp menggunakan Raspberry Pi Pico W melalui API CallMeBot gratis. API ini memungkinkan integrasi notifikasi otomatis dari Pico, termasuk pengiriman peringatan berbasis pembacaan sensor—misalnya ketika nilai sensor melebihi atau berada di bawah ambang batas tertentu, deteksi gerakan, dan berbagai aplikasi otomasi lainnya.
Pengenalan WhatsApp
WhatsApp Messenger adalah layanan pesan instan dan VoIP lintas platform milik Meta Platforms, yang memungkinkan pengiriman pesan melalui koneksi internet tanpa biaya SMS. Layanan ini mendukung Android dan iOS. Untuk menggunakan API, pastikan WhatsApp telah diinstal dan dikonfigurasi pada perangkat Anda.
API WhatsApp CallMeBot
Untuk mengirim pesan WhatsApp melalui Raspberry Pi Pico, kita akan memanfaatkan API CallMeBot, layanan gratis yang menyediakan endpoint HTTP untuk mengirim pesan otomatis. CallMeBot berfungsi sebagai gateway antara perangkat Anda dan WhatsApp, memungkinkan pengiriman pesan ke nomor Anda sendiri atau nomor tujuan yang telah terdaftar.
Dokumentasi lengkap tentang penggunaan endpoint API, parameter yang diperlukan, dan format permintaan HTTP tersedia di:
Mendapatkan Kunci API CallMeBot
Sebelum menggunakan API CallMeBot untuk WhatsApp, Anda perlu memperoleh API Key yang akan digunakan untuk autentikasi permintaan HTTP. Langkah-langkah teknisnya sebagai berikut:
1. Tambahkan nomor telepon +34 611 01 16 37 ke daftar kontak ponsel Anda (nama kontak bebas).
Catatan: Pastikan memeriksa dokumentasi resmi CallMeBot, karena nomor ini dapat berubah.
2. Kirim pesan berikut melalui WhatsApp ke kontak tersebut: "Saya mengizinkan callmebot mengirimi saya pesan"
3. Tunggu balasan dari CallMeBot yang berisi konfirmasi aktivasi API dan API Key Anda: "API Diaktifkan untuk nomor telepon Anda. APIKEY Anda adalah XXXXXX"
API Key ini nantinya akan digunakan sebagai parameter autentikasi pada endpoint HTTP untuk mengirim pesan dari Raspberry Pi Pico.
Catatan: Jika API Key tidak diterima dalam waktu ±2 menit, sistem CallMeBot membatasi permintaan selanjutnya hingga 24 jam. Pesan WhatsApp dari bot akan berisi API Key yang diperlukan untuk autentikasi permintaan HTTP dari Raspberry Pi Pico. Pastikan juga bahwa pesan dikirim ke nomor telepon resmi yang tertera pada dokumentasi CallMeBot terbaru untuk menghindari kegagalan aktivasi.
API CallMeBot
Untuk mengirim pesan WhatsApp melalui API CallMeBot, Raspberry Pi Pico harus membuat permintaan HTTP GET ke endpoint berikut dengan parameter spesifik:
https://api.callmebot.com/whatsapp.php?phone=[phone_number]&text=[message]&apikey=[your_apikey]
Keterangan parameter:
- `[phone_number]`: Nomor telepon penerima yang terhubung dengan akun WhatsApp, dalam format internasional (misal: +628123456789).
- `[message]`: Konten pesan yang akan dikirim, harus di-URL encode agar karakter khusus tidak mengganggu sintaks URL.
-`[your_apikey]`: Kunci API unik yang diterima saat proses aktivasi CallMeBot, digunakan untuk autentikasi permintaan.
Baca juga: Panduan Lengkap Memulai Wi-Fi di Raspberry Pi Pico W Menggunakan MicroPython
Mengirim Pesan WhatsApp – Implementasi MicroPython
Untuk mengirim pesan ke akun WhatsApp menggunakan Raspberry Pi Pico, papan harus melakukan permintaan HTTP GET ke endpoint CallMeBot yang sudah dikonfigurasi sebelumnya. Kode berikut menunjukkan implementasi dasar untuk mengirim pesan uji coba ke akun WhatsApp Anda melalui API CallMeBot saat dijalankan pada Raspberry Pi Pico.
# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-w-whatsapp-micropython/
import network
import requests
from time import sleep
# Wi-Fi credentials
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'
# Your phone number in international format (including the + sign)
phone_number = 'YOUR_PHONE_NUMER_INTERNATIONAL_FORMAT'
# Example: phone_number = '+351912345678'
# Your callmebot API key
api_key = 'CALLMEBOT_API_KEY'
# Init Wi-Fi Interface
def init_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# Connect to your network
wlan.connect(ssid, password)
# Wait for Wi-Fi connection
connection_timeout = 10
while connection_timeout > 0:
if wlan.status() >= 3:
break
connection_timeout -= 1
print('Waiting for Wi-Fi connection...')
sleep(1)
# Check if connection is successful
if wlan.status() != 3:
return False
else:
print('Connection successful!')
network_info = wlan.ifconfig()
print('IP address:', network_info[0])
return True
def send_message(phone_number, api_key, message):
# Set the URL
url = f'https://api.callmebot.com/whatsapp.php?phone={phone_number}&text={message}&apikey={api_key}'
# Make the request
response = requests.get(url)
# check if it was successful
if (response.status_code == 200):
print('Success!')
else:
print('Error')
print(response.text)
try:
# Connect to WiFi
if init_wifi(ssid, password):
# Send message to WhatsApp "Hello"
# ENTER YOUR MESSAGE BELOW (URL ENCODED) https://www.urlencoder.io/
message = 'Hello%20from%20the%20Raspberry%20Pi%20Pico%21'
send_message(phone_number, api_key, message)
except Exception as e:
print('Error:', e)
Anda perlu memasukkan kredensial jaringan, nomor telepon, dan kunci API CallMeBot agar berfungsi.
Cara Kerja Kode
1. Impor Modul
Kode diawali dengan mengimpor modul yang diperlukan:
import network # Modul untuk konfigurasi dan koneksi Wi-Fi
import requests # Modul untuk melakukan permintaan HTTP
from time import sleep # Modul untuk penjadwalan jeda eksekusi
2. Konfigurasi Kredensial Wi-Fi
Variabel berikut menyimpan SSID dan kata sandi jaringan lokal untuk memungkinkan Raspberry Pi Pico menginisialisasi koneksi Wi-Fi:
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'
3. Konfigurasi Nomor Telepon dan API Key
- `phone_number`: Nomor telepon penerima dalam format internasional, termasuk kode negara dan tanda `+`.
Contoh: `'+351912345678'`
- `api_key`: Kunci API yang diterima dari CallMeBot untuk autentikasi permintaan HTTP.
api_key = 'CALLMEBOT_API_KEY'
4. Inisialisasi Koneksi Wi-Fi
Fungsi `init_wifi()` dibuat untuk menginisialisasi antarmuka jaringan stasiun (`WLAN`) dan menghubungkan Raspberry Pi Pico ke jaringan lokal menggunakan kredensial yang telah ditentukan. Fungsi ini mengembalikan status koneksi (True jika berhasil, False jika gagal).
def init_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# Connect to your network
wlan.connect(ssid, password)
# Wait for Wi-Fi connection
connection_timeout = 10
while connection_timeout > 0:
if wlan.status() >= 3:
break
connection_timeout -= 1
print('Waiting for Wi-Fi connection...')
sleep(1)
# Check if connection is successful
if wlan.status() != 3:
return False
else:
print('Connection successful!')
network_info = wlan.ifconfig()
print('IP address:', network_info[0])
return True
Untuk modularitas dan kemudahan integrasi dalam proyek lanjutan, dibuat fungsi `send_message()` yang mengenkapsulasi seluruh prosedur pengiriman pesan WhatsApp melalui API CallMeBot. Fungsi ini menerima parameter sebagai berikut:
- `phone_number`: nomor telepon penerima dalam format internasional (termasuk tanda `+`)
- `api_key`: kunci autentikasi CallMeBot yang diperoleh sebelumnya
- `message`: string pesan yang akan dikirim
Dengan struktur ini, setiap pengiriman pesan cukup memanggil `send_message(phone_number, api_key, message)` tanpa perlu menulis ulang kode HTTP request, sehingga mendukung reuse dan skalabilitas kode.
def send_message(phone_number, api_key, message):
# Set the URL
url = f'https://api.callmebot.com/whatsapp.php?phone={phone_number}&text={message}&apikey={api_key}'
# Make the request
response = requests.get(url)
# check if it was successful
if (response.status_code == 400):
print('Success!')
else:
print('Error')
print(response.text)
Setelah mendefinisikan semua fungsi utilitas, jalankan fungsi `init_wifi()` untuk menginisialisasi koneksi Raspberry Pi Pico ke jaringan Wi-Fi lokal Anda dan memastikan konektivitas internet sebelum melakukan permintaan HTTP.
if init_wifi(ssid, password):
Kami mendefinisikan variabel `message` yang berisi konten teks yang akan dikirim. Konten ini harus di-URL-encode agar aman dikirim melalui permintaan HTTP. Untuk konversi teks ke format URL-encoded, Anda dapat menggunakan utilitas atau pustaka pengkodean URL.
message = 'Hello%20from%20the%20Raspberry%20Pi%20Pico%21'
Terakhir, panggil fungsi send_message() untuk mengirim pesan.
send_message(phone_number, api_key, message)
Demonstrasi Teknis
Setelah memasukkan kredensial jaringan Wi-Fi, nomor WhatsApp dalam format internasional, dan kunci API CallMeBot, jalankan skrip pada Raspberry Pi Pico. Jika konfigurasi benar, Pico akan berhasil melakukan koneksi ke jaringan internet dan mengirim permintaan HTTP GET ke endpoint CallMeBot.
Dalam beberapa detik, API akan memproses permintaan, dan akun WhatsApp yang terkait dengan nomor yang ditentukan akan menerima pesan yang dikirim oleh Pico.
Baca juga: Panduan Lengkap Mengirim Email via SMTP pada Raspberry Pi Pico W (MicroPython)
Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?
Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami!




0 on: "Raspberry Pi Pico W - Kirim Pesan ke WhatsApp (MicroPython)"