GSM-Modul SIM800L (Teil 4)

Hier werden einzelne Projekte mit MicroPython vorgestellt
Antworten
Heinrichs
Beiträge: 194
Registriert: Do 21. Okt 2010, 18:31

GSM-Modul SIM800L (Teil 4)

Beitrag von Heinrichs » 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:

Code: Alles auswählen

+CPMS: 0,10,0,10,0,10
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

Code: Alles auswählen

+CMTI: "SM",1
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):

Code: Alles auswählen

+CMGR: "REC READ","+49177xxxxxxx","","15/12/17,16:17:45+04"
Test-SMS an SIM800L
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:

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.


.
Dateianhänge
SIM800L_Programme.zip
Programme zum SIM800L-Modul
(5.3 KiB) 18-mal heruntergeladen

Antworten