181 lines
6.0 KiB
Markdown
181 lines
6.0 KiB
Markdown
# Termux Sms Gateway
|
|
SMS and notification gateway using Android smartphone
|
|
|
|
#### Goal:
|
|
|
|
Make any laptop with an Internet connection a SMS gateway
|
|
Send SMS from his desktop using a web interface or other.
|
|
Receive SMS on his desk in order to use the content.
|
|
|
|
#### Method used
|
|
|
|
#### Send SMS or Notification
|
|
|
|
- SMS are created on one machine (1 or more) on the network.
|
|
- They are then published to a public or private MQTT server
|
|
- The messages are received on an MQTT client installed on the laptop (1 or more).
|
|
- The messages are then sent to the recipients.
|
|
|
|
#### SMS reception
|
|
|
|
- The SMS are received on the smartphone and published to the MQTT server
|
|
- The messages are received on a MQTT client installed on the subscribed machine (1 or more)
|
|
|
|
#### Non-exhaustive use
|
|
|
|
- Email message usage
|
|
- Receive and process alert messages (IOT or other)
|
|
- etc ...
|
|
|
|
#### Conditions for receiving or sending
|
|
- Take a public or private MQTT server to relay messages
|
|
- Subscribe MQTT customers to the same topics
|
|
|
|
> You can install your own mosquitto server
|
|
>> https://mosquitto.org/download/
|
|
>
|
|
> More information on MQTT: https://fr.wikipedia.org/wiki/MQTT
|
|
|
|
- Security of data transmitted
|
|
> We may need to encrypt the content for security reasons.
|
|
>> Use encryption with public key / private key on clients
|
|
|
|
### Smartphone installation
|
|
|
|
https://github.com/termux/termux-app
|
|
|
|
#### Installation of termux
|
|
- Termux application obtained by F-Droid:
|
|
- https://www.f-droid.org/fr/
|
|
|
|
- Or by google store:
|
|
- https://play.google.com/
|
|
|
|
> IMPORTANT: You must choose either one or the other repository
|
|
|
|
- Install
|
|
- Termux
|
|
- Termux: API
|
|
- Termux: Widget
|
|
|
|
#### MQTT client installation
|
|
|
|
The following python packages will be installed:
|
|
|
|
- termux-sms-gateway
|
|
- paho-mqtt
|
|
- supervisor
|
|
- supervisor is a process control system
|
|
- because Android do not support hard links, it will be necessary to patch http.py from library
|
|
- rsa >> https://stuvel.eu/python-rsa-doc/
|
|
|
|
### Installation procedure
|
|
|
|
After installing termux on the smartphone, launch Termux
|
|
|
|
- Copy and paste the following command in the Termux terminal
|
|
|
|
export PACKAGE="TermuxSmsGateway"&&
|
|
export VERSION="1.0"&&
|
|
mkdir -p $HOME/.termux/tasks&&
|
|
apt install python git termux-api -y&&
|
|
rm -rf TermuxSmsGateway&&
|
|
git clone https://github.com/deunix-educ/TermuxSmsGateway.git&&
|
|
cp -f $PACKAGE/smsquitto-install/smsquitto-st* $HOME/.termux/tasks/&&
|
|
cp -f $PACKAGE/smsquitto/smsquitto-conf.yaml $HOME/.termux/&&
|
|
cp -f $PACKAGE/smsquitto-install/supervisor/supervisord $HOME/.termux/boot/&&
|
|
cp -f $PACKAGE/smsquitto-install/supervisor/supervisord.conf $PREFIX/etc/&&
|
|
cp -f $PACKAGE/smsquitto-install/supervisor/smsquitto.conf $PREFIX/etc/supervisor.d/&&
|
|
pip install $PACKAGE/dist/smsquitto-$VERSION.tar.gz&&
|
|
cd $PREFIX/lib/python3.9/site-packages/supervisor&&
|
|
patch < $HOME/$PACKAGE/smsquitto-install/supervisor/patch/http.py.patch&&
|
|
cd ~
|
|
|
|
- Enter to start the installation
|
|
|
|
### Server configuration
|
|
|
|
- smsquitto config server are in ~/.termux/smsquitto-conf.yaml
|
|
- host: ip or domain of the MQTT server
|
|
- port: 1883 or 8883
|
|
- keepalive: 60
|
|
- username: login
|
|
- password: password
|
|
- useSSL: False or True
|
|
- ca_cert: path/to/file/ca.cert
|
|
- apikey: *string*
|
|
|
|
- ** IMPORTANT **: This key is used to synchronize the topics with the subscriptions
|
|
- ex: SQTT010203040506079
|
|
|
|
- Copy and paste the following command in the terminal
|
|
nano $HOME/.termux/smsquitto-conf.yaml
|
|
|
|
- Install services (start, stop, status)
|
|
- Install Tremux widget:Widget on the phone's by keeping your finger on the screen
|
|
- Choose shortcut
|
|
- Change the icon and the name if you want
|
|
- Start, Stop, or Status service by clicking the icon
|
|
|
|
### Uses
|
|
|
|
- A MQTT client is required to operate the phone.
|
|
- The smsquittod.py module gives an example of a client written in python.
|
|
- Library is the Eclipse foundation paho-mqtt
|
|
- Simply implemente ClientMQTTBase class
|
|
|
|
- The sms-client.html file is another example but in websocket mode.
|
|
- Directly modify the sms-client.html file
|
|
- Launch it directly in a browser
|
|
- by drag and drop
|
|
- by an address of this type
|
|
- file: ///path/to/file/sms-client.html
|
|
|
|
- demonstration
|
|
|
|
- sms-client.html is fully functional
|
|
- You just have to update the apikey in this file and in the configuration file on the smartphone
|
|
- Set up some mobile numbers to do the tests
|
|
|
|
### Domotiz notification
|
|
|
|
- https://www.domoticz.com/wiki/Getting_started
|
|
|
|
##### Below is the integration process
|
|
|
|
- Send notification from custom HTTP/Action
|
|
|
|
- Notification
|
|
- script://notify.sh #FIELD1 #FIELD2 #FIELD3 #FIELD4 #TO #MESSAGE --tls or nothing
|
|
- command
|
|
- /usr/bin/python3 /home/pi/domoticz/scripts/notify.py --method=notify --host=$1 --port=$2 --user=$3 --password=$4 --apikey=$5 --text="$6" $7
|
|
|
|
- SMS
|
|
- script://notify.sh #FIELD1 #FIELD2 #FIELD3 #FIELD4 #TO #MESSAGE "00330645953706,0033791246318" --tls or nothing
|
|
- command
|
|
- /usr/bin/python3 /home/pi/domoticz/scripts/smsquitto.py --method=sms --host=$1 --port=$2 --user=$3 --password=$4 --apikey=$5 --text="$6" --phone="$7" $8
|
|
|
|
- SSL certification
|
|
- argument --tls, in $7 or $8.
|
|
- certification key in domoticz/scripts/smsquitto.py.
|
|
|
|
- You must install python3 paho-mqtt library: pip3 install paho-mqtt
|
|
|
|
### API methods
|
|
|
|
Message sent and received format:
|
|
|
|
- (topic, payload)
|
|
- topic: string that starts with apikey see above
|
|
- apikey/pub/sms
|
|
- apikey/emit/inbox
|
|
- payload: is a Json string
|
|
- {mobile: [mobile1, mobile2, etc ...], subject: "the subject", msg: "the message"}
|
|
- {time: time, payload: payload}
|
|
- topics
|
|
- apikey/pub/sms --> send SMS
|
|
- apikey/pub/notify --> send notification
|
|
- apikey/pub/location --> request for Geographic positioning
|
|
- apikey/pub/inbox --> or all or sent or draft or outbox Read SMS message
|
|
- apikey/pub/kill-service --> stop the service
|