예제 #1
1
	def __init__(self, user):

		dispgsm._user=user
		self.logger = logging.getLogger(user.user_code+'.dispgsm')
		self.logger.info('Initializing GSM device %s',user.user_code)

		self._config = ConfigParser.ConfigParser()
                self._config.read('./config.cfg')

		self._msisdn = ast.literal_eval(self._config.get('GSM_CREDENTIALS',user.user_code))['msisdn']
                self._pin = ast.literal_eval(self._config.get('GSM_CREDENTIALS',user.user_code))['pin']
		self._port = ast.literal_eval(self._config.get('GSM_CREDENTIALS',user.user_code))['port']
		self._baudrate = ast.literal_eval(self._config.get('GSM_CREDENTIALS',user.user_code))['baudrate']
		self._modem = GsmModem(self._port, int(self._baudrate), incomingCallCallbackFunc=dispgsm.handleIncomingCall, smsReceivedCallbackFunc=dispgsm.handleSms, smsStatusReportCallback=dispgsm.handleSmsDeliveryReport)
예제 #2
0
    def run(self):

        # initialize modem
        modem = GsmModem(self._modem_device,
                         self._modem_baud,
                         smsReceivedCallbackFunc=self._handleSms)
        modem.connect(self._modem_pin)

        # try to sycn clock with GSM network time
        self.set_clock_from_network(modem)

        # handle SMS
        self._pon_requested = False
        modem.smsTextMode = False
        modem.processStoredSms()

        # wait for completion
        try:
            modem.rxThread.join(1)
        finally:
            modem.close()

        # handle asynchronous sms request
        if self._pon_requested:
            self._pon_requested = False
            self.setup_connection()
def initModem(port='/dev/ttyUSB0', baud=460800):
    global modem

    modem = GsmModem(port, baud)

    # Uncomment the following line to see what the modem is doing:
    # logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)

    print('Connecting to GSM modem on {0}...'.format(port))
    try:
        modem.connect()
    except PinRequiredError:
        sys.stderr.write(
            'Error: SIM card PIN required. Please specify a PIN. \n')
        sys.exit(1)
    except IncorrectPinError:
        sys.stderr.write('Error: Incorrect SIM card PIN entered.\n')
        sys.exit(1)
    print('Checking for network coverage...')
    try:
        modem.waitForNetworkCoverage(5)
    except TimeoutException:
        print(
            'Network signal strength is not sufficient, please adjust modem position/antenna and try again.'
        )
        modem.close()
        sys.exit(1)
예제 #4
0
def main():
    # sendsms("+972549766158", "Hello")
    print('Initializing modem...')
    # Uncomment the following line to see what the modem is doing:
    # logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    # modem = GsmModem(PORT)
    # modem.connect()
    # modem.smsc = "+972586279099"
    # modem.sendSms("+972549766158", "before")
    # modem.close()
    numOfSeats = 4
    message = "זוהי הודעה מגבאי בית הכנסת : נשמח אם תוכל להחזיר הודעה עם מספר המושבים הפנויים שמוקצים לך ולמשפחתך בשבת הקרובה." + "\nמקסימום: " + str(
        numOfSeats)
    modem = GsmModem(PORT, BAUDRATE, smsReceivedCallbackFunc=handleSms)
    modem.smsTextMode = False
    modem.connect(PIN)
    # modem.smsc = "+972586279099" #golan telecom
    modem.smsc = "+972521100059"  #cellcom
    # modem.sendSms("+972549766158", "שלום מדבר אמיתי מלכה תוכל להגיב לי בבקשה?")
    modem.sendSms("+972587766185", message)
    # modem.smsc = "+972586279099"
    print('Waiting for SMS message...')
    try:
        modem.rxThread.join(
            2**31
        )  # Specify a (huge) timeout so that it essentially blocks indefinitely, but still receives CTRL+C interrupt signal
    finally:
        modem.close()
예제 #5
0
파일: main.py 프로젝트: akimtke/arke
def getUnreadText(key):
    if key.strip() == '9703BB8D5A':
        modem = GsmModem('/dev/ttyUSB0', 9600)

        try:
            print "Connecting mode"
            modem.connect()
        except:
            return "Error connecting"

        try:
            messages = modem.listStoredSms(status=Sms.STATUS_RECEIVED_UNREAD)
        except Exception as e:
            return str(e)

        modem.close()

        retString = ""
        print "Got %d messages" % len(messages)
        for message in messages:
            retString = retString + "%s : %s" % (message.number, message.text)

        return retString
    else:
        return "Incorrect key"
예제 #6
0
파일: main.py 프로젝트: akimtke/arke
def text(number, message, key):
    if key.strip() == '9703BB8D5A':
        print "Creating modem instance"
        modem = GsmModem('/dev/ttyUSB0', 9600)

        try:
            print "Connecting modem"
            modem.connect()
        except PinRequiredError:
            print "Pin required"

        try:
            print "Waiting for Network coverage info"
            modem.waitForNetworkCoverage(5)
        except TimeoutException:
            print "Signal strength not strong enough"
            return "No signal"
        else:
            try:
                print "Sending %s to %s" % (message, number)
                sms = modem.sendSms(number, message)
            except TimeoutException:
                print "Failed to send message"
                return 'Error encountered'
            print "Closing modem"
            modem.close()
            return True
    else:
        return 'Key is not correct'
예제 #7
0
def send_sms(phone_num, context):
    modem = GsmModem(port=PORT)
    modem.connect(PIN)
    for i in range(len(phone_num)):
        modem.sendSms(phone_num[i], context)
    # modem.smsTextMode = False
    modem.close()
예제 #8
0
파일: main.py 프로젝트: akimtke/arke
def getAllText(key):
    if key.strip() == '9703BB8D5A':
        modem = GsmModem('/dev/ttyUSB0', 9600)

        try:
            print "Connecting modem"
            modem.connect()
        except Exception as e:
            return str(e)

        try:
            messages = modem.listStoredSms()
        except Exception as e:
            return str(e)

        modem.close()

        retString = ""
        print "Got %d messages" % len(messages)
        for message in messages:
            retString = retString + "%s : %s" % (message.number,
                                                 message.text) + "\n"

        return retString
    else:
        return "Incorrect key"
예제 #9
0
def main():
    print("Iniciando modem...")
    logging.basicConfig(format='%(levelname)s: %(message)s',
                        level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE)
    modem.smsTextMode = True
    modem.connect(PIN)
    modem.sendSms('638070483', text())
예제 #10
0
def main():
    print("Iniciando modem...")
    logging.basicConfig(format='%(levelname)s: %(message)s',
                        level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE)
    modem.smsTextMode = False
    modem.connect(PIN)
    sms = text()
    modem.sendSms('649886178', sms)
예제 #11
0
파일: sms.py 프로젝트: AnasGuetarni/sms
def main():
    # logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE, smsReceivedCallbackFunc=handleSms)
    modem.smsTextMode = False
    modem.connect(PIN)
    try:
        modem.rxThread.join(2**31)
    finally:
        modem.close()
예제 #12
0
def main():
    global modem
    global phonebook

    config.read('config.ini')

    # Create the phonebook
    tmpPhonebook = config.items('phonebook')
    for row in tmpPhonebook:
        phonebook[row[0]] = row[1]

    # Initialize the modem
    print('Initializing modem...')
    modem = GsmModem(config.get('modem', 'port'),
                     config.getint('modem', 'baudrate'),
                     smsReceivedCallbackFunc=on_gsm_handleSms)
    modem.smsTextMode = True

    # Connect to the modem
    try:
        modem.connect(config.get('modem', 'pin'))
    except PinRequiredError:
        print('Pin required')
        sys.exit(1)
    except IncorrectPinError:
        print('Wrong pin')
        sys.exit(1)

    # Print information about modem and network
    print(u'Connected to modem: {0} {1}'.format(modem.manufacturer,
                                                modem.model))
    print(u'Connected to network: {0}'.format(modem.networkName))
    print(u'Signal strenght: {0}'.format(str(modem.signalStrength)))
    print('Ready!')
    print('===')

    # Make sure to empty incoming sms bucket
    modem.processStoredSms()

    # Initialize MQTT
    client.on_connect = on_mqtt_connect
    client.on_message = on_mqtt_message

    client.username_pw_set(config.get('mqtt', 'user'),
                           config.get('mqtt', 'pass'))
    client.connect(config.get('mqtt', 'server'), config.getint('mqtt', 'port'),
                   60)

    client.loop_start()

    # Keep running forever
    try:
        modem.rxThread.join(
            2**31
        )  # Specify a (huge) timeout so that it essentially blocks indefinitely, but still receives CTRL+C interrupt signal
    finally:
        modem.close()
예제 #13
0
def send_sms(args):
    modem = GsmModem(args.port, args.baud, AT_CNMI=args.CNMI)
    if args.debug:
        # enable dump on serial port
        logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.DEBUG)

    print("Connecting to GSM modem on {0}...".format(args.port))
    try:
        modem.connect(args.pin, waitingForModemToStartInSeconds=args.wait)
    except PinRequiredError:
        sys.stderr.write(
            "Error: SIM card PIN required. Please specify a PIN with the -p argument.\n"
        )
        sys.exit(1)
    except IncorrectPinError:
        sys.stderr.write("Error: Incorrect SIM card PIN entered.\n")
        sys.exit(1)
    print("Checking for network coverage...")
    try:
        modem.waitForNetworkCoverage(5)
    except TimeoutException:
        print(
            "Network signal strength is not sufficient, please adjust modem position/antenna and try again."
        )
        modem.close()
        sys.exit(1)
    else:
        if args.message is None:
            print("\nPlease type your message and press enter to send it:")
            text = raw_input("> ")
        else:
            text = args.message
        if args.deliver:
            print("\nSending SMS and waiting for delivery report...")
        else:
            print("\nSending SMS message...")
        try:
            sms = modem.sendSms(
                args.destination, text, waitForDeliveryReport=args.deliver
            )
        except TimeoutException:
            print("Failed to send message: the send operation timed out")
            modem.close()
            sys.exit(1)
        else:
            modem.close()
            if sms.report:
                print(
                    "Message sent{0}".format(
                        " and delivered OK."
                        if sms.status == SentSms.DELIVERED
                        else ", but delivery failed."
                    )
                )
            else:
                print("Message sent.")
예제 #14
0
def main():
    print('Initializing modem...')
    logging.basicConfig(filename='/var/log/gsm.log', format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE, incomingCallCallbackFunc=handleIncomingCall)
    modem.connect()
    print('Waiting for incoming calls...')
    try:
        modem.rxThread.join(2**31) # Specify a (huge) timeout so that it essentially blocks indefinitely, but still receives CTRL+C interrupt signal
    finally:
        modem.close()
예제 #15
0
def reinitializeModem():
    try:
        print('Reinitializing modem...')
        global modem
        modem = GsmModem(config.PORT, config.BAUDRATE,
                         smsReceivedCallbackFunc=smsCommands.handleSms)
        modem.connect(config.PIN)
        print("Modem IMEI: ", modem.imei)
    except:
        print("Failed to reinitialize modem")
예제 #16
0
def initializeModem():
    print('Initializing modem...')
    global modem
    modem = GsmModem(config.PORT, config.BAUDRATE,
                     smsReceivedCallbackFunc=smsCommands.handleSms)
    # logging.basicConfig(format='%(levelname)s: %(message)s',
    #                     level=logging.DEBUG)
    modem.connect(config.PIN)
    print("Modem IMEI: ", modem.imei)
    testMessageRequest()
예제 #17
0
def main():
    print('Initializing modem...')
    # Uncomment the following line to see what the modem is doing:
    logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE)
    modem.connect(PIN)
    
    number = modem.ownNumber
    print("The SIM card phone number is:")
    print(number)
예제 #18
0
def main():
    args = parseArgsPy26(
    ) if sys.version_info[0] == 2 and sys.version_info[1] < 7 else parseArgs()
    if args.port == None:
        sys.stderr.write(
            'Error: No port specified. Please specify the port to which the GSM modem is connected using the -i argument.\n'
        )
        sys.exit(1)
    modem = GsmModem(args.port, args.baud, AT_CNMI=args.CNMI)
    # Uncomment the following line to see what the modem is doing:
    #logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)

    print('Connecting to GSM modem on {0}...'.format(args.port))
    try:
        modem.connect(args.pin, waitingForModemToStartInSeconds=args.wait)
    except PinRequiredError:
        sys.stderr.write(
            'Error: SIM card PIN required. Please specify a PIN with the -p argument.\n'
        )
        sys.exit(1)
    except IncorrectPinError:
        sys.stderr.write('Error: Incorrect SIM card PIN entered.\n')
        sys.exit(1)
    print('Checking for network coverage...')
    try:
        modem.waitForNetworkCoverage(5)
    except TimeoutException:
        print(
            'Network signal strength is not sufficient, please adjust modem position/antenna and try again.'
        )
        modem.close()
        sys.exit(1)
    else:
        print('\nPlease type your message and press enter to send it:')
        text = raw_input('> ')
        if args.deliver:
            print('\nSending SMS and waiting for delivery report...')
        else:
            print('\nSending SMS message...')
        try:
            sms = modem.sendSms(args.destination,
                                text,
                                waitForDeliveryReport=args.deliver)
        except TimeoutException:
            print('Failed to send message: the send operation timed out')
            modem.close()
            sys.exit(1)
        else:
            modem.close()
            if sms.report:
                print('Message sent{0}'.format(
                    ' and delivered OK.' if sms.status ==
                    SentSms.DELIVERED else ', but delivery failed.'))
            else:
                print('Message sent.')
예제 #19
0
def main():
    global modem
    print('Initializing modem...')
    logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE, incomingCallCallbackFunc=handleIncomingCall, smsReceivedCallbackFunc=handleSms, gpsStatusReportCallbackFunc=handleIncomingGPS)
    modem.connect()
    print('Waiting for incoming calls or SMS messages')
    try:    
        modem.rxThread.join(2**31) # Specify a (huge) timeout so that it essentially blocks indefinitely, but still receives CTRL+C interrupt signal
    finally:
        modem.close()
예제 #20
0
def main():
    print('Initializing modem...')
    # Uncomment the following line to see what the modem is doing:
    logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE, smsReceivedCallbackFunc=handleSms)
    modem.smsTextMode = False 
    modem.connect(PIN)
    print('Waiting for SMS message...')    
    try:    
        modem.rxThread.join(2**10)
    finally:
        modem.close()
예제 #21
0
def main():
    print('Initializing modem...')
    # Uncomment the following line to see what the modem is doing:
    logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE, smsReceivedCallbackFunc=handleSms)
    modem.smsTextMode = False 
    modem.connect(PIN)
    print('Waiting for SMS message...')    
    try:    
        modem.rxThread.join(2**31) # Specify a (huge) timeout so that it essentially blocks indefinitely, but still receives CTRL+C interrupt signal
    finally:
        modem.close();
예제 #22
0
파일: modem.py 프로젝트: Cornholius/vkr
def main():
    print('Initializing modem...')
    modem = GsmModem(PORT,
                     BAUDRATE,
                     smsReceivedCallbackFunc=sms_catcher,
                     incomingCallCallbackFunc=call_catcher)
    modem.smsTextMode = False
    modem.connect()
    print('Waiting for SMS or Call...')
    try:
        modem.rxThread.join()
    finally:
        modem.close()
예제 #23
0
def main():
    print('Initializing modem...')
    modem = GsmModem(PORT, BAUDRATE)
    modem.connect(PIN)
    modem.waitForNetworkCoverage(10)
    print('Sending SMS to: {0}'.format(SMS_DESTINATION))

    response = modem.sendSms(SMS_DESTINATION, SMS_TEXT, True)
    if type(response) == SentSms:
        print('SMS Delivered.')
    else:
        print('SMS Could not be sent')

    modem.close()
예제 #24
0
def runModem():
    print('Initializing modem...')
    #logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE, smsReceivedCallbackFunc=handleSms)
    modem.smsTextMode = False
    modem.connect(PIN)
    modem.deleteMultipleStoredSms()
    #modem.sendSms('+44740000000','asdsdefed',False)
    print('Waiting for SMS message...')
    try:
        modem.rxThread.join(
            2**31
        )  # Specify a (huge) timeout so that it essentially blocks indefinitely, but still receives CTRL+C interrupt signal
    finally:
        modem.close()
예제 #25
0
def main():
    print('Initializing modem...')
    modem = GsmModem(PORT, SPEED)
    modem.smsTextMode = False
    modem.connect(PIN)

    try:
        number_request = '+79372219943'
        #number_request = '+79179812832'
        #number_request = '+79272294597'
        message = "/00000 INS OUTS"
        modem.sendSms(number_request, message)
        #modem.status()
    finally:
        modem.close()
예제 #26
0
 def __init__(self, handleSMSCallBack):
     self.port = '/dev/ttyUSB2'
     ports = list(serial.tools.list_ports.comports())
     for p in ports:
         if 'ZTE NMEA Device' in p.description:
             self.port = p.device
     self.baudRate = 115200
     self.pin = None  # SIM card PIN (if any)
     self.modem = GsmModem(self.port, self.baudRate, smsReceivedCallbackFunc=handleSMSCallBack\
         ,incomingCallCallbackFunc=handleCall)
     self.modem.smsTextMode = False
     self.modem.connect(self.pin)
     self.signalStrength = self.modem.waitForNetworkCoverage(10)
     self.response = None
     self.modem.ownNumber
예제 #27
0
 def __init__(self):
     print('Initializing modem...')
     fHelper = FileHandler()
     contents = fHelper.readSmsSettings()
     arr = contents.split(",")
     PORT = arr[0]
     BAUDRATE = int(arr[1])
     PIN = None
     print(PORT, BAUDRATE)
     # Uncomment the following line to see what the modem is doing:
     logging.basicConfig(format='%(levelname)s: %(message)s',
                         level=logging.DEBUG)
     self.modem = GsmModem(PORT, BAUDRATE)
     self.modem.smsTextMode = False
     self.modem.connect(PIN)
예제 #28
0
def main():
    print('Initializing modem...')
    #logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE)
    modem.connect(PIN)
    modem.waitForNetworkCoverage(10)
    print('Sending USSD string: {0}'.format(USSD_STRING))
    response = modem.sendUssd(USSD_STRING) # response type: gsmmodem.modem.Ussd
    print('USSD reply received: {0}'.format(response.message))
    if response.sessionActive:
        print('Closing USSD session.')
        # At this point, you could also reply to the USSD message by using response.reply()
        response.cancel()
    else:
        print('USSD session was ended by network.')
    modem.close()
예제 #29
0
def main():
    if NUMBER == None or NUMBER == "00000":
        print(
            "Error: Please change the NUMBER variable's value before running this example."
        )
        sys.exit(1)
    print("Initializing modem...")
    # logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE)
    modem.connect(PIN)
    print("Waiting for network coverage...")
    modem.waitForNetworkCoverage(30)
    print("Dialing number: {0}".format(NUMBER))
    call = modem.dial(NUMBER)
    print("Waiting for call to be answered/rejected")
    wasAnswered = False
    while call.active:
        if call.answered:
            wasAnswered = True
            print("Call has been answered; waiting a while...")
            # Wait for a bit - some older modems struggle to send DTMF tone immediately after answering a call
            time.sleep(3.0)
            print("Playing DTMF tones...")
            try:
                if (
                        call.active
                ):  # Call could have been ended by remote party while we waited in the time.sleep() call
                    call.sendDtmfTone("9515999955951")
            except InterruptedException as e:
                # Call was ended during playback
                print("DTMF playback interrupted: {0} ({1} Error {2})".format(
                    e, e.cause.type, e.cause.code))
            except CommandError as e:
                print("DTMF playback failed: {0}".format(e))
            finally:
                if call.active:  # Call is still active
                    print("Hanging up call...")
                    call.hangup()
                else:  # Call is no longer active (remote party ended it)
                    print("Call has been ended by remote party")
        else:
            # Wait a bit and check again
            time.sleep(0.5)
    if not wasAnswered:
        print("Call was not answered by remote party")
    print("Done.")
    modem.close()
예제 #30
0
def main():
    args = parseArgsPy26(
    ) if sys.version_info[0] == 2 and sys.version_info[1] < 7 else parseArgs()
    print('args:', args)
    modem = GsmModem(args.port, args.baud)

    print('Connecting to GSM modem on {0}...'.format(args.port))
    try:
        modem.connect(args.pin, waitingForModemToStartInSeconds=args.wait)
    except PinRequiredError:
        sys.stderr.write(
            'Error: SIM card PIN required. Please specify a PIN with the -p argument.\n'
        )
        sys.exit(1)
    except IncorrectPinError:
        sys.stderr.write('Error: Incorrect SIM card PIN entered.\n')
        sys.exit(1)

    if args.debug:
        # Print debug info
        print('\n== MODEM DEBUG INFORMATION ==\n')
        print('ATI', modem.write('ATI', parseError=False))
        print('AT+CGMI:', modem.write('AT+CGMI', parseError=False))
        print('AT+CGMM:', modem.write('AT+CGMM', parseError=False))
        print('AT+CGMR:', modem.write('AT+CGMR', parseError=False))
        print('AT+CFUN=?:', modem.write('AT+CFUN=?', parseError=False))
        print('AT+WIND=?:', modem.write('AT+WIND=?', parseError=False))
        print('AT+WIND?:', modem.write('AT+WIND?', parseError=False))
        print('AT+CPMS=?:', modem.write('AT+CPMS=?', parseError=False))
        print('AT+CNMI=?:', modem.write('AT+CNMI=?', parseError=False))
        print('AT+CVHU=?:', modem.write('AT+CVHU=?', parseError=False))
        print('AT+CSMP?:', modem.write('AT+CSMP?', parseError=False))
        print('AT+GCAP:', modem.write('AT+GCAP', parseError=False))
        print('AT+CPIN?', modem.write('AT+CPIN?', parseError=False))
        print('AT+CLAC:', modem.write('AT+CLAC', parseError=False))
        print()
    else:
        # Print basic info
        print('\n== MODEM INFORMATION ==\n')
        print('Manufacturer:', modem.manufacturer)
        print('Model:', modem.model)
        print('Revision:', modem.revision if modem.revision != None else 'N/A')
        print('\nIMEI:', modem.imei if modem.imei != None else 'N/A')
        print('IMSI:', modem.imsi if modem.imsi != None else 'N/A')
        print('\nNetwork:', modem.networkName)
        print('Signal strength:', modem.signalStrength)
        print()