nodepower/bin/smsalert.py
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()