Anruf und Standortermittlung mit Waveshare GSM/GPRS/GPS HAT

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Elch_x64 ,

    ich bin mit meinen Versuchen zu 90% durch. Im großen Ganzen funtkioniert es so, wie ich wollte:

    ich sende eine SMS an den Pi und erhalte danach eine SMS vom Pi mit den Standortdaten zurück.

    Das ist aber momentan erst mal eine "Bastellösung", die ich noch in vernünftige Form bringen muss, aber wie gesagt, im Großen und Ganzen funktioniert es.

    Ich habe (fast) alles über Bash Scripte gemacht da ich mit Python noch auf Kriegsfuß stehe.

    Da setzt auch meine Frage an:

    Ich habe wie gsmHAT installiert und wollte die Python Scripte, u.a. das aus #27 testen, erhalte aber Fehler, die ich ich noch nicht lösen kann.

    Was musstest Du noch unternehmen, damit die Scripte laufen?

    ich habe versucht mich schon ein Python einzulesen, aber so ganz habe ich es noch nicht verinnerlicht :conf::blush: .

    Der Fehler, den ich beim Aufruf erhalte:

    Code
    pi@pigps:~/gsm/py $ sudo python3 gps_loc.py
    Traceback (most recent call last):
      File "gps_loc.py", line 5, in <module>
        gsm = GSMHat(HAT_PORT, 115200)
      File "/usr/local/lib/python3.7/dist-packages/gsmHat/gsmHat.py", line 74, in __init__
        self.__connect()
      File "/usr/local/lib/python3.7/dist-packages/gsmHat/gsmHat.py", line 78, in __connect
        self.__ser = serial.Serial(self.__port, self.__baudrate)
    AttributeError: module 'serial' has no attribute 'Serial'

    Gruss

  • Anruf und Standortermittlung mit Waveshare GSM/GPRS/GPS HAT? Schau mal ob du hier fündig wirst!

  • Du musst “pyserial” installieren. Nicht “serial”. Etwas unglücklich das es die beide gibt. Und du darfst Deine Python Experimente nicht “serial.py” nennen. Unwahrscheinlich, dass das jetzt das Problem ist, aber eine weitere Ursache.

  • Danke, laut Ausgabe ist pyserial bereits installiert, die Datei heißt nicht serial.py.

    Was mich aber stutzig macht: es gibt keinen Pfad /usr/local/lib/python3 bei mir, sondern /usr/local/lib/python3.7.

    Wie kann ich das korrigieren?

    Gruss

    Edit: Nachtrag:

    Einmal editiert, zuletzt von FSC830 (12. Januar 2021 um 13:01)

  • Meine Aussage bleibt die gleiche. Du hast das falsche Modul installiert. Du hast parallel das richtige, aber das falsche muss verschwinden.

    /usr/local/lib/python3.7/dist-packages/serial/

    Zb einfach entfernen.

  • Ok, ich habe das Verzeichnis mit rm -r entfernt, jetzt motzt er was anderes an.

    Code
    pi@pigps:~/gsm/py $ sudo python3 gps_loc.py
    Traceback (most recent call last):
      File "gps_loc.py", line 20, in <module>
        send_status_routine()
      File "gps_loc.py", line 10, in send_status_routine
        threading.Timer(5.0, send_status_routine).start()
    NameError: name 'threading' is not defined

    Ich sehe schon, für Python muss ich längere Zeiten planen... :X .

    BTW: jetzt sehe ich unter /usr/lib auch ein Verzeichnis python3, wie konnte ich das vorhin übersehen :conf: .

    Kann es sein, das die pyserial im falschen Verzeichnis gesucht wird?

    Unter /usr/lib/python3/dist-packages ist pyserial zu finden, unter /usr/lib/python3.7/dist-packages nicht.

    Hat die Installation da Mist gebaut?

    Rufe ich den Interpreter auf, wird v3.7.3 ausgegeben.

    Gruss

  • Nein. Dieser Fehler ist ein anderer. Wie in fast allen anderen Sprachen musst du Dinge, die du benutzen willst, auch vorher anmelden. In diesem Fall mit “import threading”.

  • So besten Dank, das Script läuft erst mal.

    Allerdings, und nun Asche auf mein ergrautes Haupt, ich wage es kaum auszusprechen...

    Ich muss noch auf das richtige Netzteil warten :blush: . Ich habe den HAT auf einem Pi Zero WH,, und hatte bei der Bestellung nur flüchtig hingesehen, der hat keinen USB-C Anschluss.

    Deswegen hatte ich übers WE tatsächlich ein Handyladegerät dran, weil nichts anderes greifbar war.

    Allerdings hatte ich auch überhaupt keine Probleme.

    Aber das interessante: sobald dieses Script läuft, bootet das Modem immer wieder. entweder löst das Script was aus, oder die SV ist unsauber, wobei der Pi selbst weiterläuft und erreichbar ist.

    Auch kein "under voltage" Eintrag in /var/log/messages oder /var/log/syslog.

    Aber das NT ist schon versendet und sollte demnächst eintreffen.

    Interessant aber dennoch, das ohne das py-Script alles stabill läuft.

    Ich muss mir mal ansehen, was das py-Script an das Modem sendet...

    Laut den o.a. Logs läuft der Pi ohne Problem, es muss an den Modem Befehlen liegen.

    Gruss und Danke nochmals.

  • Mit Python per se hat das nichts zu tun. Aber natürlich zieht die Hardware dann Strom, ein GSM Modul auch nicht ganz ohne.

  • Na, deswegen finde ich es ja gerade interessant, das Modul läuft die ganze Zeit, ich erhalte über meine "Frickel" Scripts die Standortdaten.

    Aber jetzt warte ich erst mal ab, bis das NT kommt. Bis dahin werde ich noch ein wenig "housekeeping" machen ;) .

    Ob ich das dann alles nochmals unter Python agehen werde... :gk1: .

    Gruss

    Kleiner Nachtrag: der Modem Reboot hat offenbar nichts mit der SV zu tun. Das Python Script hat tatsächlich eine Routine zum Ein-/Ausschalten, auch wenn ich noch nicht ganz durchgedrungen bin, wann das gemacht wird, bin ich mir sicher, das das die Ursache ist.

    Nachtrag 2:

    Ich werde die Python Realisierung gaaaaanz hinten anstellen. Bisher läuft alles so wie ich will, rein mit einem Bash Script, das ist mir bedeutend lieber.

    Ganz fertig ist es noch nicht, aber ich würde momentan sagen: ca. 98% sind geschafft. Der Rest sind zunächst ein paar kleine Feinheiten, die ich in den nächsten Tagen noch mal angehen werde.

    2 Mal editiert, zuletzt von FSC830 (13. Januar 2021 um 17:51)

  • Hallo zusammen!

    Ist es schon eine Weile her, dass ich mich hier zu Wort gemeldet habe - ich habe gerade mit Arbeit und Uni einiges um die Ohren und habe verabsäumt hier reinzuschauen.

    FSC830 Toller Fortschritt! Auch wenn ich an deiner Stelle bei der Bash Skript Lösung graue Haare bekommen hätte ;)

    Mir ist auch aufgefallen, dass der Hat ohne Fehlermeldung aus heiterem Himmel neu startet. Das macht den Kerl nicht gerade zuverlässig.

    Meine Vermutung ist ja, dass nach einer gewissen Zeit das GPS Signal "hängen" bleibt, also der HAT nur noch die gleichen Standortdaten liefert (merkt man natürlich nur, wenn man sich in Bewegung befindet) und deswegen alle x Minuten ein Neustart des Moduls durchgeführt wird.

    Edit: FSC830 Hast du zufällig ausprobiert, wieviele Satelliten du unter freiem Himmel findest? Und ob du welche in einem geschlossenen Raum findest?

    Schöne Grüße

    Michael

  • Hi, in geschlossenen Räumen war kein Satellitenempfang möglich, mein "Versuchslabor" ist aber auch im Keller ^^ .

    Z.Zt. ist der Pi Zero WH auf der Terasse, dort zeigt er mir für GPS 11-12 Satelliten, für GNSS waren es 14.

    Ein Neustart ist mir bisher nicht aufgefallen, nur, als das Python Script lief habe ich das gesehen.

    Das kann aber auch eine andere Ursache haben: ich war in einer zweiten Session mit minicom auf dem HAT.

    Und parallele Zugriffe über die ttyS0 sind nicht wirklich eine gute Idee :S .

    Das sehe ich auch, weil mein Script in diesen Momenten nicht sauber läuft.

    Bisher habe ich den HAT auch nur standortfest benutzt. Ich habe mir heute einen DC/DC Wandler angesehen (online) für den Einsatz im Kfz.

    Was mir auch aufgefallen ist:

    Es gibt einen Datensatz, der laut Beschreibung den Standort aus den NMEA Daten parst, die numerischen Werte für Breiten- und Längengrade stimmen auch, aber in diesem Datensatz fehlen mir die Angaben für N/S bzw. E/W.

    Im Datensatz GNRMC sind die aber drin.

    Leider gibt es für diesen NMEA Datensatz keine Beschreibung, er entspricht nicht den üblichen, zu findenden Datensätzen.

    Deswegen habe ich noch nicht herausgefunden, wo dort die N/S und E/W Angaben kodiert sind.


    Gruss

    P.S. Mir war die Bash Skripterei lieber, da kann ich mich austoben :D . Und es ging schneller als mich wieder in eine andere Sprache einfuchsen, wie zu sehen war ;) .

    Es gab da zwar auch ein paar Hürden, aber die habe ich jetzt erst mal überwunden.

    Einmal editiert, zuletzt von FSC830 (13. Januar 2021 um 22:59)

  • Hallo FSC830,

    danke für deine Antwort, dann scheinen die Verbindungsprobleme nicht der österreichischen Topografie geschuldet zu sein. ;)

    Welchen Wandler hast du dir da bestellt? Ich habe gute Erfahrungen mit Adaptern, die man einfach in den Zigarettenanzünder steckt.. die haben meines Wissens nach auch 5V Ausgangsspannung.

    Bei dem NMEA Datensatz kann ich dir leider auch keinen Tipp geben. Ich hab diesbezüglich vor einiger Zeit recherchiert und dann relativ schnell beschlossen, dass ich lieber die gsmHat Library verwende, anstatt dieses Objekt zu parsen :conf:

  • Ich habe noch keinen bestellt, liebäugele aber mit einem Meanwell DC/DC Wandler, Eingang 9-36V, Ausgang 5V/6A.

    Als 3A Variante habe ich nur einen für Hutschienen Montage gefunden.

    Das mit dem NMEA Datensatz ist halb so wild, ich kann den anderen ja auslesen.

    Es wäre m.E. mit dem NMEA Datensatz etwas komfortabler gewesen.

    Mit dem Script bin ich weiter, alles läuft so, wie ich es wollte.

    SMS an Pi (mit einem Schlüsselwort) -> Pi antwortet mit einer SMS mit den GPS Daten. ^^

    Gruss

    2 Mal editiert, zuletzt von FSC830 (15. Januar 2021 um 23:32)

  • Servus
    Was Ich fragen wollte wie sieht es aus das Teil dazu zu bringen sich in gewissen Bänder einzubuchen und so weiter?
    Mein Problem ist beim Zugfahren das meine HW ständig nach einen Signal sucht wenn für paar sec. das Netz mal weg ist.

    Dann sucht er länger bis er es gefunden hat... Es wäre einfacher zu sagen mit was er sich verbinden soll...

  • Ich habe es nicht ausgetestet, aber laut Handbuch gibt es im AT Befehlssatz die Möglichkeit.

    Der entsprechende AT Befehl liefert mir:

    Code
    at+cops=?
    +COPS: (2,"vodafone","voda D2","26202"),(3,"E-Plus","E-Plus","26203"),(3,"D1","TMO D","26201"),,(0-4),(0-2)
    
    OK
    
    at+cops?
    +COPS: 0,0,"vodafone"
    
    OK

    Und mit at+cops=<mode>,[<format>[,<oper>]]kann man das Netz offenbar erzwingen.

    Gruss

    Einmal editiert, zuletzt von FSC830 (16. Januar 2021 um 17:28)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!