Hallo zusammen,
Ich melde mich bei euch da ich jetzt bereits seit 5 Tagen an meinem Problem herumbastle und einfach nicht herausbekomme an was es liegt.
Hoffe jemand von euch hat bereits eine ähnliche Erfahrung gemacht oder hätte einige Lösungsansätze.
Ich habe drei GSM Module mit jeweils einen Arduino Mega 2560 welche sich untereinander SMSen schicken, um bestimmte Steuerungsaufgaben zu übernehmen. GSM 1 schickt zu GSM 2 einen Schaltbefehl und GSM 2 zu GSM 3 einen Befehl.
Das funktioniert alles einwandfrei bis es 00:01Uhr am Abend wird.
Nämlich genau dann passiert, dass GSM 2 eine Stunde lang keine SMS von GSM 1 empfangen kann, obwohl dieser eine SMS aussendet. Alle 15sec wird ein AT Befehl vom Mega zum GSM Shield geschickt um zu sehen ob eine SMS vorhanden ist. Obwohl es immer funktioniert, beginnt genau ab Mitternacht der Effekt, dass GSM 2 eine Stunde lang keine SMSen bekommt. Erst um 01:01 bekommt dieser eine SMS. Dasselbe passiert bei GSM 2 zu GSM 3. Ich verschicke alle 3 Minuten eine SMS wenn ich keine Rückantwort bekomme. Das summiert sich dann dementsprechend innerhalb einer Stunde.
Ich bin wirklich ratlos an was dieses Problem liegen kann. Interessanterweise hinken alle GSM Module 1 Stunde der echten Zeit hinterher. Sprich wenn es 00:01 ist, ist es am GSM Modul (laut empfangener SMS) 23:01 Uhr. Ich habe bereits mittels RTC und dem CCLK AT-Befehl die richtige Uhrzeit eingestellt. Selbiges Problem.
Weiterhin hinken alle der echten Uhrzeit eine Stunde hinterher. Diese falsche Zeit steht immer in der Antwort auf die Frage ob eine neue SMS vorhanden ist. Der RTC jedoch besitzt die richtige Uhrzeit.
Wenn ich per Handy (richtige Uhrzeit) eine SMS an das GSM Modul sende wird mir plötzlich die richtige Uhrzeit angezeigt. Wenn die GSM Module untereinander kommunizieren nicht. Dann wieder die Stunde hinterher.
Könnte es evtl daran liegen das ab Mitternacht eine Stunde lang keine SMS empfangen wird oder gibt es da noch andere Möglichkeiten?
Um 16.43Uhr gesendet mit meinem Handy bekomme ich vom GSM Modul:
- - - Funktion IsSMSAvailable - - -
Empfangen in Unread: +CMGL: 1,"REC UNREAD","+43660****","","2020/04/05 16:43:00+08"
Um 16.43Uhr gesendet von GSM 1 zu GSM 2 bekomme ich als Antwort:
- - - Funktion IsSMSAvailable - - -
Empfangen in Unread: +CMGL: 1,"REC UNREAD","+4368*****","","2020/04/05 15:43:00+04"
Über den CCLK-Befehl habe ich, wenn ich obige Uhrzeit berücksichtige, folgendes Format geschrieben (ohne Zeitverschiebung am Ende, sprich +00):
AT+CCLK="20/04/05,16:43:00+00"
Die entsprechende Antwort war "OK".
Den Code wie ich nach einer SMS abfrage, kann ich gerne noch posten. Im Endeffekt sende ich nur folgendes Kommando alle 15 Sekunden:
GSMSerial.write("AT+CMGL=\"REC UNREAD\",1\r");
Über eine Antwort würde ich mich sehr freuen!