Stap 2: Hoe het werkt (de magie geopenbaard)
Voordat hij begint samen te stellen alle voeders, besteden paar minuten om te begrijpen van de logica achter de software.
Het systeem geïmplementeerd 2 parallelle processen:
één I/O systeem dat SMS gegevens in de database MySQL injecteert (WEB - gebaseerd op PHP of MySQL socketverbinding direct - Zie Inleiding methoden blaten)
en,
een Python gebaseerd "SMS verzenden" proces. Dit proces van PYTHON zal merk iteratieve query naar de lokale MySQL database (SMS tabel), teneinde het uitpakken van de nieuwe berichten/bestemmingen paren. Wanneer nieuwe paren beschikbaar zijn, de SMS(s) zal worden gestuurd door hetzelfde proces en de SMS-tabel is bijgewerkt. Balg, gedetailleerde:
.... while(1): db = MySQLdb.connect(dbserver, dbuser, dbpass, dbname) curs=db.cursor() curs.execute("""SELECT `destinationNumber`, `smsContent`,`id` FROM `SMS` WHERE `sendTimestamp` < 1;""") for readline in curs.fetchall():#process each returned SMS task message = checkMessage(readline[1]) res = sendSMS(readline[0], "129", message)#"don't care what" format numbers if res==0: print("SMS has been sent with succes") curs.execute("UPDATE `SMS` SET `sendTimestamp` = %s WHERE `SMS`.`id` =%s LIMIT 1 ;", (str(long(time())),str(readline[2]))); db.commit() else:#to do how to handle error 4 not blocking process in wrong number case print("SMS error") sleep(0.5) db.close() sleep(5)#wait a while bw. cycles. let the RPI breathe...
Twee SMS initiatie (injectie) methoden kunnen worden gebruikt:
a. schrijven van op afstand het bestemmingsnummer en het bericht rechtstreeks in de RPI de MySQL database (gebaseerd socketverbinding). In het volgende voorbeeld:
"INSERT INTO `SMS` (`destinationNumber`,`message`) VALUES ('+40123456789','My first test message');"
b. toegang tot GET/POST WEB-service die wordt uitgevoerd op de RPI. KRIJGEN in het volgende voorbeeld:
"http://myrpi_ip/injectSMS?number=%2B40123456789&message=My%20first%20test%20message"
Het resultaat van SMS versturen proces en verzenden timestamp bijgewerkt het berichtveld in de SMS-tabel.