- Back to Home »
- Raspberry Pi : Control Relay Dengan Gammu-smsd
Posted by : M yunus
Selasa, 07 Februari 2017
Oke kali ini kita bahas bagaimana cara menghidupkan dan mematikan relay yang terhubung pada Raspberry Pi melalui SMS, kita akan gunakan gammu, gammu adalah sebuah aplikasi yang dapat digunakan untuk mengelola berbagai fungsi pada handphone, modem dan perangkat sejenis lain. langsung aja kita ke step - step berikut.
HARDWARE SIDE :
Rangkaikan Raspberry Pi bersama relay module sebagai berikut :
SOFTWARE SIDE :
1. pastikan raspberry dalam kondisi terupdate, buka terminal raspberry pi dan jalankan :
sudo apt-get update
2. install gammu, gammu-smsd dan usb_modeswitch :
sudo apt-get install gammu gammu-smsd usb-modeswitch
3. buka atur config gammu-smsd, jalankan printah brikut :
sudo nano /etc/gammu-smsdrc
hapus seluruh file di dalamnya, dan ganti dg config berikut :
# Configuration file for Gammu SMS Daemon
# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB0
connection = at
# Debugging
#logformat = textall
# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = /home/pi/log-gammu.txt
# Increase for debugging information
debuglevel = 0
RunOnReceive = sudo /home/pi/Script_relay/sms_relay.py
# Paths where messages are stored
inboxpath = /home/pi/Script_relay/inbox_sms/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/
terus simpan dengan ctrl+x dilanjut shift+y
4. buat folder untuk inbox sms, jalankan perintah berikut:
cd ~
sudo mkdir Script_relay
cd Script_relay
sudo mkdir inbox_sms
sudo chmod 777 inbox_sms
5. buat file control relay :
cd ~
cd Script_relay
sudo nano sms_relay.py
ketika editor nano muncul pada terminal masukan script python berikut :
#!/usr/bin/env python
import RPi.GPIO as GPIO
import os, glob
filename = max(glob.glob('/home/pi/Script_relay/inbox_sms/*'), key = os.path.getctime)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.OUT)
sms_file=open(filename,"r")
message=sms_file.read(160)
print filename, message
if (message.find("poweron") <> -1):
GPIO.output(21, GPIO.HIGH)
elif (message.find("poweroff") <> -1):
GPIO.output(21, GPIO.LOW)
terus simpan dengan ctrl+x dilanjut shift+y, jangan lupa untu membuat file python tersebut menjadi executable, jalankan printah berikut :
sudo chmod +x /home/pi/Script_relay/sms_relay.py
6. buat log file untuk mendiagnosa error pada gammu-smsd
cd ~
sudo touch log-gammu.txt
7. tancapkan usb modem pada raspberry (saya gunakan modem huawei e177, mungkin akan sama dengan modem huawei e173), dan jalankan perintah berikut :
lsusb | grep modem
hasil yang didapatkan :
Bus 001 Device 005: ID 12d1:1446 Huawei Technologies Co., Ltd. E173 3G Modem (HSPA modem)
id di atas menunjukan kalo modem terbaca sebagai Mass Storage, untuk membuatnya berjalan dengan mode modem 3g kita akan gunakan usb-modeswitch yang sudah diinstall sebelumnya.
8. buka file konfigurasi usb modeswitch,
sudo nano /etc/usb_modeswitch.conf
pada baris paling bawah tambhkan :
DefaultVendor= 0x12d1
DefaultProduct= 0x1446
TargetVendor=0x12d1
TargetProduct=0x1436
MessageContent="55534243123456780000000000000011062000000101000100000000000000"
terus simpan dengan ctrl+x dilanjut shift+y, setelah itu aktifkan printah usb mode switch dg langkah berikut. jalankan perintah berikut :
sudo nano /etc/rc.local
ketika sudah terbuka tambahkan perintah berikut pada baris paling bawah sebelum bagian exit 0 .
sudo usb_modeswitch -c /etc/usb_modeswitch.conf
sehingga akan terlihat seperti berikut :
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
sudo usb_modeswitch -c /etc/usb_modeswitch.conf
exit 0
terus simpan dengan ctrl+x dilanjut shift+y.
9. reboot raspberry pi ( sudo reboot ) , dan setelah kembali hidup (raspberry), buka terminal dan jalankan :
lsusb | grep modem
selanjutnya akan keluar hasil berikut, disini kita telah berhasil menjalankan usb modem.
Bus 001 Device 005: ID 12d1:1436 Huawei Technologies Co., Ltd. E173 3G Modem (modem-mode)
10. kirim sms ke nomor pada modem ( poweron -> menghidupkan relay, poweroff -> mematika relay). tunggu beberapa saat, jika relay tidak aktif buka file log gammu dg perintah berikut :
cd ~
cat log-gammu.txt
11. jika error masih terjadi, troubleshoot berikut akan bermanfaat :
- periksa nomor tujuan sudah bnar atw belum
- pastikan pastikan usb modem sudah dalam kondisi modem mode (langkah 7 - 9)
- periksa folder /home/pi/Script_relay/inbox_sms , buka file txt pada folder tsb. itu adalah isi sms yang diterima raspberry,
- jika smsnya terkirim dan terdapat pada folder /home/pi/Script_relay/inbox_sms , cek apakah program sms_relay.py sudah executable atw belum, untuk meyakinkan jalankan kembali perintah berikut : sudo chmod +x /home/pi/Script_relay/sms_relay.py
- jika program sms_relay.py sudah executable tapi relay belum menyala, cek pin GPIO yang dipilih sudah sesuai atw belum, pada script diatas digunakan pin GPIO 21 pada mode GPIO.BCM.
- jika pin sudah benar dan relay belum aktif ada kesalahan dalam penulisan program.
sumber : https://garretlabs.wordpress.com/2014/05/21/raspberry-pi-a-remote-controlled-relay-using-sms-messages/
*) dengan bebrapa modifikasi