import time from pygsm import GsmModem gsm = GsmModem(port="/dev/ttyUSB0", logger=GsmModem.debug_logger).boot() print("Waiting for network...") s = gsm.wait_for_network() with open("messaggio.txt", "rt") as f: messaggio = f.read() with open("lista.csv", "rt") as f: for i, l in enumerate(f): gsm.send_sms(l.strip(), messaggio) time.sleep(1) gsm.disconnect()
import time from pygsm import GsmModem gsm = GsmModem( port="/dev/ttyUSB0", logger=GsmModem.debug_logger).boot() cursor.execute('select * from mails where sent=0') data=cursor.fetchall() msg=[] i=0 for row in data: mess=str(row[2]+'\n'+row[3]) ids=row[0] msg.append((ids,mess)) i+=1 for ids,mess in msg: print ids,mess gsm.send_sms('+919940138729',mess) cursor.execute('update mails set sent=1 where mailid=%s',ids) #print mailid,email,fromid,subject,mobile,idm
if abs(Altitude - PreviousAltitude) >= VerticalDelta: Send = True print("Send because of vertical movement") if Send: PreviousSeconds = Seconds PreviousAltitude = Altitude PreviousLatitude = Latitude PreviousLongitude = Longitude # Text to my mobile Message = PayloadID + ' position: ' + UTC + ', ' + str( Latitude) + ', ' + str(Longitude) + ', ' + str( int(Altitude) ) + ' http://maps.google.com/?q=' + str( Latitude) + ',' + str(Longitude) print "Sending to mobile " + MobileNumber + ": " + Message gsm.send_sms(MobileNumber, Message) # Text to my gateway if GatewayNumber: print("Sending text to gateway") Message = 'HAB:' + PayloadID + ',1,' + UTC + ',' + str( Latitude) + ',' + str(Longitude) + ',' + str( int(Altitude)) print "Sending to gateway " + GatewayNumber + ": " + Message gsm.send_sms(GatewayNumber, Message) time.sleep(1)
#!env python from pygsm import GsmModem gsm = GsmModem(port="COM22",baudrate=115200,logger=GsmModem.debug_logger).boot() s = gsm.wait_for_network() #gsm.send_sms('+256784726116', 'This is a message') numbers=['+256779127009','+256782481746'] for number in numbers: gsm.send_sms(number, 'This is a message from a modem')
# Check messages message = gsm.next_message() if message: print(message) text = message.text if text[0:5] == 'Check': print("Controllo GPS...") SendGPSPosition() Message = ' Check Position: ' + UTC + ', ' + str( Latitude) + ', ' + str(Longitude) + ', ' + str( Altitude) + ' http://maps.google.com/?q=' + str( Latitude) + ',' + str(Longitude) print("Sending to mobile " + MobileNumber + ": " + Message) gsm.send_sms(MobileNumber, Message) PreviousAltitude = float(Altitude) PreviousLatitude = float(Latitude) PreviousLongitude = float(Longitude) time.sleep(300) else: # get position info from GPS reply = gsm.command('AT+CGNSINF') list = reply[0].split(",") if len(list[2]) > 14: UTC = list[2][8:10] + ':' + list[2][10:12] + ':' + list[2][12:14] Latitude = list[3] Longitude = list[4]
class Sms: gsm = None logger = "" def __init__(self, port, logger=""): self.logger = logger self.gsm = GsmModem(port=port, logger=logger).boot() def _decode(self, text): try: return text.replace("\"", "").decode("hex").replace("\x00", "") except Exception: return text def _compose(self, msg, properties=["id", "status", "phone", "x"]): date_pattern = re.compile( r'\d\d/\d\d/\d\d,\d\d:\d\d:\d\d\+\d\d').search(msg) date = "" if date_pattern: date = date_pattern.group() message = msg.split(",") if self.logger == GsmModem.debug_logger: print("") print("messages") print("===============================") print(message) print("===============================") if (gsm.gsm.query("AT+CMGF?")[-1] == 0): obj = { properties[i]: self._decode(message[i]) for i in range(0, len(properties)) } else: obj = { properties[i]: message[i] for i in range(0, len(properties)) } obj["date"] = date obj["status"] = re.compile(r'"\w+\s?\w+"').search( obj["status"]).group().replace("\"", "") return obj def storedSms(self, filter="ALL", _from="SM"): self.gsm.command("AT+CPMS=\"" + _from + "\",\"" + _from + "\",\"" + _from + "\"") self.gsm.command("AT+CMGF=1") messages = self.gsm.query_list("AT+CMGL=\"" + filter + "\"") message_objs = [] if self.logger == GsmModem.debug_logger: print("*************************") for msg in messages: print(msg) print("*************************") for msg in messages: message = msg.split(",") if (len(message) != 1): obj = self._compose(msg) else: message_objs[-1]["message"] = self._decode(message[0]) message_objs.append(obj) return message_objs def getMessage(self, id, _from="SM"): self.gsm.command("AT+CPMS=\"" + _from + "\",\"" + _from + "\",\"" + _from + "\"") self.gsm.command("AT+CMGF=1") message = self.gsm.query_list("AT+CMGR=" + str(id)) obj = self._compose(message[0], properties=["status", "phone"]) obj["message"] = self._decode(message[1]) return obj def inbox(self, _from="SM"): unseen = self.storedSms("REC UNREAD", _from=_from) seen = self.storedSms("REC READ", _from=_from) return unseen + seen def outbox(self, _from="SM"): unsent = self.storedSms("STO UNSENT", _from=_from) sent = self.storedSms("STO SENT", _from=_from) return unsent + sent def sent(self, _from="SM"): sent = self.storedSms("STO SENT", _from=_from) return sent def newMessages(self, _from="SM"): unseen = self.storedSms("REC UNREAD", _from=_from) return unseen def faildMessages(self, _from="SM"): unsent = self.storedSms("STO UNSENT", _from=_from) return unsent def sendSms(self, message): print(">>>>", message) phone_pattern = re.compile(r'^\+\d{12}$') if (message["phone"][0] == "0"): message["phone"] = "+251" + message["phone"][1:len(message["phone"] )] if (len(message["message"]) > 160): raise Exception( "Message is too long" + str(len(message["message"])) + ", the messasage should not be graterthan 160 characters") elif (not phone_pattern.search(message["phone"])): raise Exception("The phone number is invalid") else: return self.gsm.send_sms(message["phone"], message["message"]) def sendSmses(self, messages): print("+++", message) phone_pattern = re.compile(r'^\+\d{12}$') self.gsm.command("AT+CMGF=1") faild_sms = [] for msg in messages: try: if self.sendSms(msg) == None: faild_sms.append(msg) except Exception as e: print(">>", e) faild_sms.append(msg) return faild_sms