Skicka SMS TCPIP GATEWAY - PHP, PYTHON och MySQL med RPI och a-gsm sköld (2 / 11 steg)
Steg 2: Hur det fungerar (det magiska avslöjade)
Innan start att sammanställa alla tyger, spendera några minuter för att förstå logiken bakom programvaran.
Systemet implementeras 2 parallella processer:
en I/O system som sprutar in SMS data till MySQL-databasen (Webb - PHP baserat eller direkt MySQL socketanslutning - se inledande metoderna nedan)
och,
en Python baserad "skicka SMS" process. PYTHON vis blir iterativ fråga till lokala MySQL-databasen (SMS tabell), för att extraktet nya meddelanden/destinationer paren. När nya par finns tillgängliga, SMS(s) kommer att sända genom samma process och SMS tabellen uppdateras. Bröl, detaljerad:
....
While(1):
DB = MySQLdb.connect (dbserver, dbuser, dbpass, dbname)
curs=dB.cursor()
curs.Execute ("" "Välj 'destinationNumber', 'smsContent', 'id' från 'SMS' var 'sendTimestamp' < 1;" "")
för readline i curs.fetchall (): #process varje återvände SMS uppgift
meddelande = checkMessage(readline[1])
Res = sendSMS(readline[0], "129", message) #"bryr mig inte vad" formatera tal
om res == 0:
skriva ut ("SMS har skickats med succé")
curs.Execute ("uppdatera"SMS"uppsättning"sendTimestamp"= %s var 'SMS'.' id' = %s gräns 1.", (str(long(time())),str(readline[2])));
DB.commit()
annat: #to göra hur man hanterar fel 4 inte blockerar processen i fel antal fall
skriva ut ("SMS fel")
Sleep(0.5)
DB.Close()
sömn (5) #wait en medan bw. cykler. Låt RPI andas...
Två SMS inledande (injektion) metoder kan användas:
a. distans skriva målets nummer och meddelandet direkt i den RPI MySQL databas (socket baserad anslutning). Exempel:
"INSERT INTO"SMS"('destinationNumber', 'meddelande') VALUES ('+40123456789', 'Min första testmeddelande');"
b. åtkomst till GET/POST WEB tjänst som körs på RPI. FÅ exempel:
"http://myrpi_ip/injectSMS?number=%2B40123456789 & meddelande = min % 20first % 20test % 20message"
Resultatet av SMS skicka process och skicka tidsstämpel uppdateras meddelandefältet i tabellen SMS.