示例#1
3
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 )
示例#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()
示例#3
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()
示例#4
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())
示例#5
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()
示例#6
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()
示例#7
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)
示例#8
0
def listen():
    global gsm
    jeedom_socket.open()
    logging.debug("Start listening...")
    try:
        logging.debug("Connecting to GSM Modem...")
        gsm = GsmModem(_device,
                       int(_serial_rate),
                       smsReceivedCallbackFunc=handleSms)
        if _text_mode == 'yes':
            logging.debug("Text mode true")
            gsm.smsTextMode = True
        else:
            logging.debug("Text mode false")
            gsm.smsTextMode = False
        if _pin != 'None':
            logging.debug("Enter pin code : " + _pin)
            gsm.connect(_pin)
        else:
            gsm.connect()
        if _smsc != 'None':
            logging.debug("Configure smsc : " + _smsc)
            gsm.write('AT+CSCA="{0}"'.format(_smsc))
        logging.debug("Waiting for network...")
        gsm.waitForNetworkCoverage()
        logging.debug("Ok")
        try:
            jeedom_com.send_change_immediate({
                'number': 'network_name',
                'message': str(gsm.networkName)
            })
        except Exception, e:
            if str(e).find('object has no attribute') <> -1:
                pass
            logging.error("Exception: %s" % str(e))

        try:
            gsm.write('AT+CPMS="ME","ME","ME"')
            gsm.write('AT+CMGD=1,4')
        except Exception, e:
            if str(e).find('object has no attribute') <> -1:
                pass
            logging.error("Exception: %s" % str(e))
示例#9
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()
示例#10
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();
示例#11
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();
示例#12
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()
示例#13
0
文件: smsd.py 项目: jeedom/plugin-sms
def listen():
	global gsm
	jeedom_socket.open()
	logging.debug("Start listening...")
	try:
		logging.debug("Connecting to GSM Modem...")
		gsm = GsmModem(_device, int(_serial_rate), smsReceivedCallbackFunc=handleSms)
		if _text_mode == 'yes' : 
			logging.debug("Text mode true")
			gsm.smsTextMode = True 
		else :
			logging.debug("Text mode false")
			gsm.smsTextMode = False 
		if _pin != 'None':
			logging.debug("Enter pin code : "+_pin)
			gsm.connect(_pin)
		else :
			gsm.connect()
		if _smsc != 'None' :
			logging.debug("Configure smsc : "+_smsc)
			gsm.write('AT+CSCA="{0}"'.format(_smsc))
		logging.debug("Waiting for network...")
		gsm.waitForNetworkCoverage()
		logging.debug("Ok")
		try:
			jeedom_com.send_change_immediate({'number' : 'network_name', 'message' : str(gsm.networkName) });
		except Exception, e:
			if str(e).find('object has no attribute') <> -1:
				pass
			logging.error("Exception: %s" % str(e))

		try:
			gsm.write('AT+CPMS="ME","ME","ME"')
			gsm.write('AT+CMGD=1,4')
		except Exception, e:
			if str(e).find('object has no attribute') <> -1:
				pass
			logging.error("Exception: %s" % str(e))
示例#14
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()
示例#15
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()
示例#16
0
def main():
    logging.basicConfig(format="%(levelname)s: %(message)s",
                        level=logging.INFO)
    modem = GsmModem(PORT, BAUDRATE, smsReceivedCallbackFunc=handleSms)
    modem.smsTextMode = False
    modem.connect(PIN)
    try:
        if modem.ownNumber:
            print("Modem phone number:", modem.ownNumber)
        print("IMSI:", modem.imsi)
        print("IMEI:", modem.imei)
        modem.processStoredSms()
        while True:
            print("--- Network: {0} / Signal: {1} ---".format(
                modem.networkName, modem.signalStrength))
            modem.rxThread.join(60 * 60)
    finally:
        modem.close()
示例#17
0
def send_sms_alert():
    
    if SMS_ALERTS_ENABLED:
        
        # Configuring the Modem Connection
        modem_port = '/dev/ttyUSB0'
        modem_baudrate = 115200
        modem_sim_pin = None  # SIM card PIN (if any)
    
        # Establishing a Connection to the SMS Modem
        logger.debug("Initializing connection to modem...")
        modem = GsmModem(modem_port, modem_baudrate)
        modem.smsTextMode = False
        
        if modem_sim_pin:
            modem.connect(modem_sim_pin)
        else:
            modem.connect()
    
        # Continuously dispatches SMS alerts to a list of designated recipients
        while True:
            sms_alert_status = sms_alert_queue.get()
            sms_alert_timestamp = sms_alert_queue.get()
            if sms_alert_status == "Gunshot Detected":
                try:
                    # At this point in execution, an attempt to send an SMS alert to local authorities will be made
                    modem.waitForNetworkCoverage(timeout = NETWORK_COVERAGE_TIMEOUT)
                    for number in DESIGNATED_ALERT_RECIPIENTS:
                        modem.sendSms(number, ALERT_MESSAGE + sms_alert_timestamp)
                    logger.debug(" *** Sent out an SMS alert to all designated recipients *** ")
                except:
                    logger.debug("ERROR: Unable to successfully send an SMS alert to the designated recipients.")
                    pass
                finally:
                    logger.debug(" ** Finished evaluating an audio sample with the model ** ")
    
    else:
        while True:
            sms_alert_status = sms_alert_queue.get()
            sms_alert_timestamp = sms_alert_queue.get()
            if sms_alert_status == "Gunshot Detected":
                logger.debug(ALERT_MESSAGE + sms_alert_timestamp)
示例#18
0
def main():
    print('[%s] Initializing modem...' % datetime.datetime.now())
    # Uncomment the following line to see what the modem is doing:
    logging.basicConfig(format='%(asctime)s %(levelname)s: %(message)s', level=logging.DEBUG)
    modem = GsmModem(PORT, BAUDRATE, smsReceivedCallbackFunc=handleSms)
    modem.smsTextMode = False
    modem.connect(PIN)
    print('[%s] Initialized modem!' % datetime.datetime.now())
    print('[%s] Sending Message...' % datetime.datetime.now())
    cellnum = raw_input("Please Enter your phone number:")
    text = raw_input("Please Enter your text message:")
    print('Type:', type(text))
    modem.sendSms(cellnum, unicode(text, 'gbk'))
    print('[%s] Waiting for SMS message...' % datetime.datetime.now())
    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()
示例#19
0
def listen_for_sms():
    global modem
    global correct_format
    # 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()
    first_text = BOX + ' Restart: Waiting for credentials | cmcibm,<BROKER>,<PORT>,<USERNAME>,<PASSWORD>'
    #load_dest()
    sentmsg = modem.sendSms(DESTINATION, first_text)
    print('Waiting for SMS message')
    try:
        modem.rxThread.join(TIMEOUT)
    finally:
        print('Closing modem')
        to_print = load_mqtt()
        if correct_format == 1:
            #print("the format is correct and equal to")
            # to_print = load_mqtt()
            print(change_required)
            print(correct_format)
            print(to_print[0])
            print(to_print[1])
            print(to_print[2])
            print(to_print[3])
        else:
            #print("the format is NOT correct and equal to")
            print(change_required)
            print(correct_format)
            print('')
            print('')
            print('')
            print('')
        modem.close()
示例#20
0
from gsmmodem.modem import GsmModem


def print_sms(sms):
    print dir(sms)

def handleSms(sms):
    print dir(sms)

PORT = '/dev/ttyUSB2'
modem = GsmModem(PORT, 9600, smsReceivedCallbackFunc=handleSms)
# modem = GsmModem(PORT, 9600)
modem.smsTextMode = True
modem.connect(5910)

modem.sendSms('+59172038768', 'sadfadfsfd')

print modem.imei
print modem.networkName

# def lineStartingWith(string, lines):
#     """ Searches through the specified list of strings and returns the 
#     first line starting with the specified search string, or None if not found
#     """
#     for line in lines:
#         if line.startswith(string):
#             return line
#     else:
#         return None

# modem.write('AT+CMGS="{0}"'.format('+59172038768'), timeout=3, expectedResponseTermSeq='> ')
示例#21
0
unit = sys.argv[1]
device = sys.argv[2]
message = "Message"

BAUDRATE = 115200

logging.basicConfig(filename="logs/" + unit + ".log", level = logging.DEBUG, format='%(asctime)s %(levelname)s: %(message)s');

# logging.info("Use file %s", file)
# logging.info("Use dev %s", device)

logging.info("Initializing modem...")

modem = GsmModem(device, BAUDRATE, smsReceivedCallbackFunc=handleSms)
modem.smsTextMode = True
modem.connect()

logging.info("Waiting for network coverage...")
modem.waitForNetworkCoverage(30)

with open( 'data/' + unit + '.csv', 'rU' ) as csvfile:
    thisList = csv.reader(csvfile, delimiter=',', quotechar='"')
    head = next(thisList)
    
    totalrows = 0
    for row in thisList:
        totalrows += 1
        phone = '0' + str(row[0])
        logging.info("%s Send to %s", totalrows, phone)
        try:
示例#22
0
unit = str(sys.argv[1])
device = str(sys.argv[2])
cardcode = str(sys.argv[3])

BAUDRATE = 115200
LOADCODE = '1510'

logging.basicConfig(filename="logs/" + unit + ".log", level = logging.DEBUG, format='%(asctime)s %(levelname)s: %(message)s');

# logging.info("Use file %s", file)
# logging.info("Use dev %s", device)

logging.info("Initializing modem...")

modem = GsmModem(device, BAUDRATE)
modem.smsTextMode = False
modem.connect()

logging.info("Waiting for network coverage...")
modem.waitForNetworkCoverage(30)

logging.info("Loading %s with %s", unit, cardcode)
call = modem.dial( LOADCODE + cardcode)

wasAnswered = False

while call.active:
    if call.answered:
        wasAnswered = True
        logging.info("Call answered")
        time.sleep(10.0)
示例#23
0
cardcode = str(sys.argv[3])

BAUDRATE = 115200
LOADCODE = '1510'

logging.basicConfig(filename="logs/" + unit + ".log",
                    level=logging.DEBUG,
                    format='%(asctime)s %(levelname)s: %(message)s')

# logging.info("Use file %s", file)
# logging.info("Use dev %s", device)

logging.info("Initializing modem...")

modem = GsmModem(device, BAUDRATE)
modem.smsTextMode = False
modem.connect()

logging.info("Waiting for network coverage...")
modem.waitForNetworkCoverage(30)

logging.info("Loading %s with %s", unit, cardcode)
call = modem.dial(LOADCODE + cardcode)

wasAnswered = False

while call.active:
    if call.answered:
        wasAnswered = True
        logging.info("Call answered")
        time.sleep(10.0)
示例#24
0
	def start(self):
		"""	Samotne jadro daemona: setupneme GmailAPI, setupneme GSM modem a zacneme provadet nekonecnou smycku """
		self.running = True

		# (0) SETUP VIRTUAL SERIAL PORT FOR MODEM
		if "virtualPortInitCommand" in myconfig['modem']:
			try:
				virtualSerialPortInstance = virtualSerialPort(myconfig['modem']['virtualPortInitCommand'])
				virtualSerialPortInstance.start()
			except:
				pass
		else:
			virtualSerialPortInstance = None

		# (1) SETUP GMAIL ACCESS
		logging.info('Initializing GMAIL access...')
		try:
			gmailService = gmailUtils.get_service(self.cwd)
		except RuntimeError as e:
			print(str(e))
			logging.critical(str(e))
			if (virtualSerialPortInstance is not None):
				virtualSerialPortInstance.stop()
			#sys.exit(1)
			self.stop()
		
		######################################################################################################################################################
		# (2) SETUP GSM MODEM + bind a "smsReceived" callback + poll gmail inbox
		logging.info('Initializing GSM modem on {0} port @ {1} speed...'.format(myconfig['modem']['port'], myconfig['modem']['baudrate']))
		modem = GsmModem(myconfig['modem']['port'], myconfig['modem']['baudrate'], smsReceivedCallbackFunc=self.incomingSmsHandler)
		modem.smsTextMode = False

		while self.running:
			# start of gsm init loop
			try:
				modem.connect(myconfig['modem']['pin'])
			except serial.SerialException:
				logging.error('Error: Cannot connect to modem on serial port %s @ %s. Trying again in %d sec...' % (myconfig['modem']['port'], myconfig['modem']['baudrate'], myconfig['modem']['errorRetryWaitTime']))
				time.sleep(myconfig['modem']['errorRetryWaitTime'])
			except TimeoutException:
				logging.error('Error: Serial device %s @ %s timeout. Trying again in %d sec...' % (myconfig['modem']['port'], myconfig['modem']['baudrate'], myconfig['modem']['errorRetryWaitTime']))
				time.sleep(myconfig['modem']['errorRetryWaitTime'])
			except PinRequiredError:
				# Fatal error
				logging.critical('Error: SIM card PIN required. Please provide PIN in the config file.')
				self.stop()
				return 1
			except IncorrectPinError:
				# Fatal error
				logging.critical('Error: Incorrect SIM card PIN entered!')
				self.stop()
				return 1
			else:
				logging.info('Modem connected.')
				try:
					logging.info('Checking for network coverage...')
					modem.waitForNetworkCoverage(8) # of seconds
				except TimeoutException:
					logging.warning('We can now start gmail inbox polling infinite loop.')
					print('Network signal strength is not sufficient, please adjust modem position/antenna and try again.')
					modem.close()
				else:
					logging.info('GSM modem is ready.')  
					logging.info('We are now handling all incoming SMS messages.') 

					try:
						if (myconfig['incomingSmsHandlerSetup']['processStoredSms'] == "all"):
							modem.processStoredSms(unreadOnly=False)
						elif (myconfig['incomingSmsHandlerSetup']['processStoredSms'] == "unread"):
							modem.processStoredSms(unreadOnly=True)
					except Exception as e:
						logging.critical("Nastal problem pri zpracovani drivejsich neprectenych SMS:")
						raise
						sys.exit(0)
					else:
						logging.info('We can now start gmail inbox polling infinite loop.')

						try:
							while self.running:
								# start of main gmail loop
								logging.debug('Checking incoming emails...') 
								newMessagesCount = self.incomingGmailHandler(gmailService, modem)
								time.sleep(myconfig['general']['gmailQueueWaitingPeriod'] if newMessagesCount > 0 else myconfig['general']['gmailPollingInterval'])
								# end of main gmail loop
						except KeyboardInterrupt:
							#sys.exit(0)
							self.stop()
							return 0
						except Exception as e:
							print("Nastala vyjimka v hlavni smycce daemona, viz log.")
							logging.exception("Nastal problem v hlavni smycce:")
							raise
						finally:
							print("Bye gmail loop.")
					finally:
						print("Bye stored sms handling try-cache.")
				finally:
					print("Bye.")
					modem.close()
					if (virtualSerialPortInstance is not None):
						virtualSerialPortInstance.stop()
						
			finally:
				print("end of gsm init loop")

			# end of gsm init loop
			# normally we won't reach this place, but when a non-fatal error happens
			# (like 'No modem found', 'No GSM signal', etc.), we can continue the loop to
			# try it again in the new iteration of the main loop
			
		# TODO - move kill socat here. Move socat init to try finally

		######################################################################################################################################################
		return 0 # just for make sure, the program should never end up on this line