5 SMS empfangen
Zugegeben: Die Überschrift ist eigentlich etwas irreführend; denn zum eigentlichen Empfang einer SMS gibt es nicht viel zu sagen: Sobald ein Handy, insbesondere auch unser SIM800L mit dem GSM-Netz verbunden ist, nimmt es automatisch jede SMS an, die an es gerichtet ist. Die Frage ist also eher: Wie kann man eine empfangene SMS über ein Terminal zur Anzeige bringen?
Wie üblich verbinden wir zunächst unser SIM800L-Modul mit dem GSM-Netz, indem wir unsere PIN benutzen; die Eingaben bzw. deren Echos schreiben wir im Folgenden fett:
AT+CPIN="xxxx"
OK
AT +CMGF=1
OK
Wenn Sie das Programm sms_terminal.py benutzen, werden diese Schritte nach dem Programmstart automatisch ausgeführt. Eingehende SMS werden automatisch auf der SIM-Karte oder einem anderen Speicher abgelegt. Die möglichen Speicher kann man mit
AT+CPMS=? (Suchwort: OK)
abfragen. Unser SIM800L-Modul speichert die SMS auf der SIM-Karte in der Rubrik “SM”. Geben wir den Befehl
AT+CPMS="SM" (Suchwort: OK)
ein, erhalte ich als Antwort bei meiner SIM-Karte:
Code: Alles auswählen
+CPMS: 0,10,0,10,0,10
Wenn wir nun eine SMS an unser SIM800L-Modul senden, erhält es die Meldung
Code: Alles auswählen
+CMTI: "SM",1
AT+CMGR=1 (Suchwort: OK)
ab und erhalten als Antwort (Suchwort: OK):
Code: Alles auswählen
+CMGR: "REC READ","+49177xxxxxxx","","15/12/17,16:17:45+04"
Test-SMS an SIM800L
OK
Gibt man bei dem Befehl AT+CMGR=nr für nr eine Speichernummer an, in der keine Botschaft abgespeichert worden ist, ist die Antwort lediglich OK.
Das Kommado
AT+CPMS="SM" (Suchwort: OK)
liefert jetzt übrigens - wie erwartet - das Ergebnis:
Code: Alles auswählen
+CPMS: 1,10,1,10,1,10
Man kann auch sämtliche vorhandenen Botschaften auflisten lassen; der Befehl dazu lautet:
AT+CMGL="ALL" (Suchwort: OK)
Nun werden alle SMS der Reihe nach inklusive ihrer Speicherplatznummer zur Anzeige gebracht; im Gegensatz zum CGMR-Kommando wird hierdurch aber nicht der Lese-Zustand von REC UNREAD zu REC READ geändert.
Irgendwann ist der Speicher der SIM-Karte voll. Spätestens dann ist es an der Zeit, einzelne
Nachrichten zu löschen. Mit dem Befehl
AT+CMGD=3 (Suchwort: OK)
wird zum Beispiel die SMS mit der Nummer 3 gelöscht.
.