USSD khi đang dùng gammu-smsd (và gammu)

Có thể chạy các lệnh ussd nhờ gammu, thí dụ qua câu lệnh

gammu getussd '*101#'

Tuy nhiên khi đã chạy daemon gammu-smsd thì câu lệnh này không hoạt động vì gammu-smsd đã khóa tất cả các cổng của GSM modem.

gsm-ussd có thể dùng chung với gammu-smsd (và gammu)

Các bước cài đặt như sau:

1. Tải về gsm-ussd tại http://linux.zum-quadrat.de/downloads

wget http://linux.zum-quadrat.de/downloads/gsm-ussd_0.4.0-25_all.deb

2. Cài đặt bằng câu lệnh

sudo dpkg --install gsm-ussd_0.4.0-25_all.deb

3. Chạy lệnh ussd

gsm-ussd -m /dev/ttyUSB2 --no-cleartext '*101#'

Thay ttyUSB2 bằng port được modem GSM dùng, thay *101# bằng mã ussd cần dùng

 

Chú thích 1

Để không phải ghi tham số modem (-m) và mã ussd, sửa file /usr/bin/gsm-ussd và /usr/bin/xussd

sudo nano /usr/bin/gsm-ussd

  • Tìm my $modemport, thay giá trị bằng port của GSM modem (thí dụ /dev/ttyUSB2)
  • Tìm my @ussd_queries, thay giá trị bằng code ussd (thí dụ *101#)

sudo nano /usr/bin/xussd

  • Tìm USSD_QUERY và thay giá trị bằng code ussd (thí dụ *101#)

Sau đó câu lệnh trở thành

gsm-ussd
  1. Tắt gammu-smsd (killall gammu-smsd) và chạy thử câu lệnh trên
  2. Cho chạy gammu-smsd (gammu-smsd -d) và chạy thử câu lệnh trên

 

Thí dụ

File bash chạy trong crontab nhắc nạp tiền khi sắp hết tiền trong SIM Viettel

#!/bin/bash
#số điện thoại admin
adm_phone='xxxxxxxxxx'
txt_alert='Vui long nap tien cho SIM 0126xxxxxxxx"'
#số tiền tối thiểu trong SIM
limit=6000
#số tiền còn lại trong SIM
bl=$(gsm-ussd -m /dev/ttyUSB2 --no-cleartext '*101#'|grep -Po '\d+(?= dong\.)')
if [ "$bl" -lt "$limit" ]; then
        #gởi sms báo nạp tiền
        gammu-smsd-inject TEXT $adm_phone -text "$txt_alert"
fi

Với SIM Mobifone, thay bằng câu lệnh

bl=$(gsm-ussd -m /dev/ttyUSB2 --no-cleartext '*101#'|grep -Po '\d+(?= d,)')

 

Chú thích 2

1. Trong trường hợp cài đặt bị lỗi vì thiếu các thành phần phụ thuộc, chạy lệnh

sudo apt-get install libexpect-perl && sudo apt-get -f install

2. Với một số loại GSM modem, sim khóa PIN không dùng được với gsm-ussd mặc dù có option -p

3. Với một số loại GSM modem, các lần chạy gsm-ussd phải cách xa để GSM modem có thể tự reset hoặc gsm-ussd bị treo

Leave a Comment

Filed under Software

Leave a Reply