GSM-Modul SIM800L (Teil 4)
Verfasst: Fr 23. Mai 2025, 17:00
Dies ist die Fortsetzung meiner Reihe von Beiträgen zum SIM800L-Modul, vgl. GSM-Modul SIM800L (Teil 1)
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:
Nur die ersten beiden Parameter sind hier relevant. Sie besagen, dass im Speicher der SIM-Karte 0 von maximal 10 möglichen Botschaften vorliegen.
Wenn wir nun eine SMS an unser SIM800L-Modul senden, erhält es die Meldung
Dabei zeigen die Parameter an, dass die Botschaft auf der SIM-Karte unter der Nummer 1 (in der Rubrik “SM”) abgespeichert wurde. Um diese Meldung brauchen wir uns aber nicht weiter zu kümmern. Wir fragen jetzt lieber direkt die Informationen für die SMS mit der Nummer 1 auf dem SIM-Karten-Speicher mit dem Kommando
AT+CMGR=1 (Suchwort: OK)
ab und erhalten als Antwort (Suchwort: OK):
Der erste Parameter zeigt an, dass die SMS durch das Anzeigen bzw. Lesen den Zustand "REC READ" (received read messages, d. h. gelesene Nachrichten) erhalten hat; der zweite Parameter gibt die Telefonnummer des Handys an, von dem die SMS verschickt wurde; der dritte und der vierte Parameter geben das Datum und die Uhrzeit der SMS an. Als letzter Parameter wird der Text der Botschaft angegeben.
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:
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.
.
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.
.