Den Nachrichtenspeicher eines Huawei E3372 per Script auslesen

  • Werte Forengemeinschaft,


    ich komme bei dem nachstehenden Problem nicht weiter und möchte euch hiermit um eure Unterstützung bitten:


    Die Speicherbelegung (für eingehende Nachrichten) eines USB-Mobilfunkstick Huawei E3372, angeschlossen an einem Raspberry Pi 4B (installiert ist Buster) läßt sich auf der Konsole mit dem Befehl: - cat /dev/ttyUSB1 & echo 'AT+CPMS?' > /dev/ttyUSB1- auslesen und ich erhalte als Ausgabe: "+CPMS: "SM",0,30,"SM",0,30,"SM",0,30".

    Diese Abfrage soll nun 1x pro Stunde (crontab) mittels Script (möglichst bash) erfolgen. Leider gelingt es mir einfach nicht (suche schon ca 1 Woche im Internet), den Konsolenbefehl in das Script "einzubauen", denn es beendet sich nach dem Aufruf nicht wieder (das Raspberry promt-Zeichen kommt nicht zurück), aber vor allem läßt sich die Ausgabe +CPMS: "SM",0,30,"SM",0,30,"SM",0,30, nicht als Variable zur weiteren Auswertung extrahieren! Versuche mit echo -e /dev/ttyUSB1 funktionieren (zumindest bei mir) ebenfalls nicht! Erwähnen möchte ich noch, dass ich weiß, dass der USB-Stick 3tty-Schnittstellen hat.

    Ich wäre wirklich für jeden Hinweis zur Lösung dankbar,


    Meisengeier

  • Go to Best Answer
  • Was du da machst ist einen Befehl in den Hintergrund zu schicken (das cat), und danach gibst du dem Stick ein AT Kommando, das der beantwortet. Du bekommst die Ausgabe also nur, weil der Hintergrundprozesse fröhlich auf dass Terminal schreibt.


    Dein Problem ist, dass das als Skript nun extra kompliziert wird, weil das nicht mit einem Terminal verbunden ist, und selbst wenn: in einer Variable ist dann immer noch nix.


    Man kann das lösen, siehe https://stackoverflow.com/ques…command-run-in-background


    Aber ich würde einfach ein paar Zeilen Python schreiben.

  • Hallo Tell, hallo deets,


    vielen Dank für eure Antworten.

    Python kann ich leider garnicht.

    Hier nachstehend ein Script aus dem Netz, was ohne cat auskommt:

  • Wenn Du mit AT Kommandos mit dem Modem kommunizieren willst, solltest Du mMn. das dazugehörige /dev/ppp aktivieren und verwenden.


    Da der Stick aber schon mit "Ethernet over USB" verbunden ist, wäre es wesentlich einfacher mit "wget" die SMS vom Stick-Server abzuholen und lokal zu verarbeiten.


    Noninteraktives echo hat auch so seine Tücken.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Hallo RTFM,

    erst einmal danke für deine Antwort.

    Es gibt keine SMS, die man abholen könnte. Vielmehr ist es so, dass manchmal eine eingehende SMS im "SM"-Speicher des Sticks "hängen" bleibt und NICHT verarbeitet wird, was dazu führt, dass der Mobilstick dann nicht mehr ereichbar ist, keine SMS mehr empfangen kann! Aus diesem Grund soll der Raspi 1x pro Stunde (crontab) den SM-Speicherinhalt des Sticks (Huawei E3372) per AT-Befehl überprüfen und falls der Speicher NICHT leer ist, diesen mit einem weiteren AT-Befehl löschen. Erst dann funktioniert der Stick wieder! Dafür benötige ich ein Script, welches ich aber (gemäß meiner Anfrage) nicht hinbekomme!

    Meisengeier

  • Dein Script in #4 funktioniert möglicherweise schon deshalb nicht, weil Du /dev/ttyUSB0 verwendest, während laut Deinem Eingangspost es manuell mit /dev/ttyUSB1 funktioniert.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Hallo RTFM,

    natürlich hast du mit ttyUSB1 oder 0 erst mal Recht, aber daran liegt es nicht, ist nur (m)ein Tippfehler, habe alle 3 tty probiert; die richtige (bei mir) ist ttyUSB0. Es ist auch nicht mein Script. Wie ich schrieb, habe ich es aus dem Netz und es soll eigentlich genau das machen, was ich möchte. Das hat es auch, aber leider nur kurz!!! Nach einem Neustart des Raspi funktionierte es nicht mehr und ich habe leider nicht die Kenntnisse (echo, sed und den Steuerzeichen) um zu verstehen warum das so ist. Ich habe viel rumprobiert. Möglicherweise war vorher noch ein cat-Prozess offen und es funktionierte deshalb kurzfristig. Aber wie gesagt, ich habe nicht die Ahnung, deshalb die Bitte um eure Hilfe.

    Meisengeier

    • Best Answer

    Es ist tatsaechlich nicht einfach, aber so geht es:


    CPIN? habe ich genommen weil mein GSM-Modul CPMS nicht kennt. Das muss angepasst werden. Das tty koennte auch anders sein.

  • Hallo Tell,


    ich habe dein Script gerade eben ausprobiert: PERFEKT !!! Das macht zu 100% genau das, was ich gesucht habe! Vielen, vielen Dank!

    Im Spoiler mal noch meine Auswertung: Wenn der SM-Speicher leer ist = alles OK. Wenn nicht leer = Speicher mit "CMGD" löschen, wobei das per -cat- zu tun, vielleicht auch noch ersetzt werden sollte. (mal sehen, ob ichs nun nach deinem Muster hinkriege?)

    Ich war schon lange nicht mehr hier im Forum. Ich traue mich hier garnicht auf die Symbole zu klicken. Wo ist denn bitte jetzt die "Bedanken- bzw. Punkte- Funktion für dein Super Script? Und wo kann ich das Thema als erledigt kennzeichnen?


    Meisengeier


    :danke_ATDE:

  • Wo ist denn bitte jetzt die "Bedanken

    unten beim smilie


    Und wo kann ich das Thema als erledigt kennzeichnen?

    in deinem Eröffnungsbeitrag oben bei der schwarzen Flagge unter Thema bearbeiten

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Hallo jar,


    habe den "als erledigt markieren" Button gefunden, danke dafür!

    Aber gab es nicht früher noch eine "Rubrik", wo man für den Helfenden (Tell) "Punkte" abgeben konnte? Das würde ich gern noch vor dem Schließen tun.

  • Die "Punkte" errechnen sich aus den erstellten Beiträgen, Antworten auf Beiträge und Reaktionen auf Beiträge. Wenn Du also Tell zu mehr Punkten verhelfen willst, dann bewerte seine Beiträge. ( Man kann auch einen Beitrag als hilfreichste Antwort markieren. )