Question

I Have a Huawei E220 HSDPA Modem on linux xubuntu I wanted to recieve sms and reply automatically to the sender. I Use gammu and Gammu-smsd to do this.

To automatically send sms back I added runOnRecieve = /path/to/bash/file into the /etc/gammu-smsdrc configuration-file.

Here is the script:

#!/bin/bash
str=$SMS_1_TEXT //string containing text from sender
tlf=$SMS_1_NUMBER //containing number from sender
tlf=${tlf:3}


if test "$str" = "today"; then

   echo "[Weather for today in Norway]
   Sol, noe overskyet
   [Vind fra sørøst]
   Ha en fin dag!" | gammu-smsd-inject TEXT $tlf -unicode -autolen 200
else
   echo "fail" >> /home/mattis/sms.txt
fi

This is how I start the daemon

$ sudo gammu-smsd

This works if I run the bash script from terminal using test-input, but when the program gammu-smsd calls the script I get.

gammu-smsd[3183]: Process failed with exit status 2

Now i can remove "gammu-smsd-inject" from the code and replace with "gammu sendsms" , but that would just give me gibberish letters instead of "æøå and [ ]" when received back to the mobile.

Hoping for positive answers.

Was it helpful?

Solution

--//--Working code--//--

The thing is: Gammu sms inject acctually sends data to mysql database called smsd.

Creating this database: This should be created as specified in wammu sql database. Storing the SQL script for creating tables in MySQL database will able you to import it with phpmyadmin(gui) or any other way to interface mysql.

Run on recieve Add to the end of /etc/gammu-smsdrc --configuration file for gammu

runOnRecieve = /path/to/bash/file

Open the /path/to/bash/file

#!/bin/bash
str=$SMS_1_TEXT //codeword "weather"
tlf=$SMS_1_NUMBER //+47 41412424
tlf=${tlf:3} //remove +47

if test "$tlf" = "41412424"; then
    toSend = "[Weather for today in Norway]"
else
    toSend = "[you are not part of this group]"
    echo "Someone outside the group send to this number" > /home/user/activity.txt
fi

mysql --host=localhost --user=username --password=pw smsd << EOF
INSERT INTO outbox (
   DestinationNumber,
   TextDecoded,
   CreatorID,
   RelativeValidity
) VALUES (
   '$tlf',
   '$toSend',
   'Program',
   '255'
);
EOF

Start the daemon

$ sudo gammu-smsd

That should be it!

Extra tips:

  • Use $ gammu-detect to find out where the device is connected. Look for name = Phone on USB serial port HUAWEI_Technology HUAWEI_Mobile or something similar. Put this info in the configfile.
  • Be shure to add right permission to the bashfile. Make it readable to user running gammu-smsd.
  • Make the bashfile executable using chmod u+x /path/to/bash/file.
  • The gammu-smsd-monitor can be used to check how good signal you have. Be shure not to stop running the gammu-smsd when trying to run this.
  • You can test the bashfile by running it with dummy tlf and dummytext as input. $ ./bashfile.sh.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top