c9f4ebf1 |
#!/usr/bin/python
# courtsey ruler for editing script - 80 characters max line length
#2345678901234567890123456789012345678901234567890123456789012345678901234567890
import telnetlib
_DEFAULT_HOST = '{your APRS-IS server hostname}'
_DEFAULT_PORT = '{your APRS-IS message port}'
_DEFAULT_SERVER = '{your APRS-IS server name}'
class smsalert:
def __init__(self, callsign, passcode, host=_DEFAULT_HOST, \
port=_DEFAULT_PORT, server=_DEFAULT_SERVER, debug=False):
"""
Initialize an instance of this class.
Parameters:
callsign - amateur radio callsign of user (must be verified)
passcode - passcode for verified callsign
host - domain name or IP address of APRS-IS server
port - port on which the APRS-IS server receives messages
server - APRS service name
debug - set equal to True for debug output
Returns: nothing
"""
# Initialize class instance variables.
self.callsign = callsign
self.passcode = passcode
self.host = host
self.port = port
self.server = server
self.debug = debug
## end def
def sendSMS(self, phone_number, text_message):
"""
Sends an SMS text message to the provided phone number.
Parameters:
phone_number - phone number to which to send the text message
text_message - text message to be sent to the provided phone number
Returns: True if successful, False otherwise
"""
# Establish network connection to APRS-IS server.
tn = telnetlib.Telnet(self.host, self.port)
tn.read_until('# aprsc 2.1.8-gf8824e8')
# Login and verify passcode accepted.
tn.write('user ' + self.callsign + ' pass ' + self.passcode + '\n')
response = tn.read_until(self.server)
if self.debug:
print('response: ' + response[2:])
if not response.find('verified'):
print('smsalert error: unverified user')
del tn
return False
# Format and send SMS message to SMS gateway.
cmd = '%s>%s::SMSGTE:@%s %s' % \
(self.callsign, self.server, phone_number, text_message)
if self.debug:
print('cmd: ' + cmd)
tn.write(cmd + '\n')
del tn
return True
## end def
## end class
def test_smsalert():
# Initialize a telnet instance. Default host, port, and server
# automatically defined if not included in function call.
sm = smsalert('{your callsign}', '{your passcode}', debug=True)
# Send a text message to a phone number.
sm.sendSMS('{your phone number}', 'Test message send from smsalert.py')
## end def
if __name__ == '__main__':
test_smsalert()
|