Problem mit gsmHat

  • Liebe Community,

    nach *dieser Kaufberatung* versuche ich für den Raspberry Pi Zero WH nun einen Code für das Waveshare GSM/GPS-HAT zum laufen zu bekommen.

    Hierbei bin ich nun auf diesen Code auf GitHub gestoßen, der eigentlich extra für dieses HAT gemacht sein sollte.

    Vorab: ich bin noch Anfänger was das programmieren angeht, seht mir also bitte nach, dass ich vorgefertigten Code verwende.

    Ich habe alle Anweisungen des GitHub-Threads befolgt:

    1. Mittels "python3 -m pip install -U gsmHat" im Terminal sicherstellen, dass die Bibliothek installiert ist
    2. SIM-Karte eingelegt
    3. In raspi-config -> interface options -> serial unter "Would you like a login shell to be accessible over serial?" mit "nein" beantwortet und "Would you like the serial port hardware to be enabled?" mit ja
    4. Thonny geöffnet (interpreter: default) und den folgenden Code rein kopiert:
      1. from gsmHat import GSMHat, SMS, GPS
      2. gsm = GSMHat('/dev/ttyS0', 115200) -> auch schon mit "AMA0" probiert

    Daraufhin habe ich mal einige der Code-Bausteine hereinkopiert, unter anderem:

    Code
    Number = '+491601234567'
    Message = 'Hello mobile world'
    
    # Send SMS
    gsm.SMS_write(Number, Message)

    Oder:

    Leider spuckt mir die Shell dann immer folgende Fehlermeldung aus:

    Woran könnte das liegen, was mache ich falsch? Mit der mitgelieferten, ~800 Zeilen starken gmsHat.py habe ich doch eigentlich gar nichts zu tun, das ist doch einfach nur die Bibliothek oder?

    2 Mal editiert, zuletzt von TechBert (17. November 2020 um 15:47)

  • @__deets__ Warum? Serial ist doch garnicht definiert. Deswegen der NameErrror? Ich bekomme die selbe Fehlermeldung.

    Wenn ich hingegen print(serial) laufen lasse bekomme ich alle infos.

    Oder ist das der falsche weg?

    Einmal editiert, zuletzt von keepfear (17. November 2020 um 18:07)

  • keepfear Es ging nicht um Deinen falschen Vorschlag sondern um __deets__ richtigen. *Er* hatte das ja klein geschrieben und der OP hat das ja auch erst richtig gemacht, bevor Deinen falschen Vorschlag danach umgesetzt hat.

    Edit: Wobei die Ausgabe in Deinem letzten Beitrag sicher nicht von dem ``print(serial)`` kommt.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Es ist falsch weil es nicht darum geht, dass Serial nicht existiert. serial.Serial existiert nicht. Das ist etwas ganz anderes. Er HAT also ein Modul serial, aber es hat nicht den erwarteten Inhalt. Dein Vorgehen wäre nur zielführend, wenn man “from serial import* machen würde. Weswegen Sternchen Importe auch böse sind. Weil man einem solchen Problem dann noch weniger auf die Schliche kommt.

  • Das ist denke ich nicht der richtige Inhalt. Da du Bilder statt Text zeigst, kann ich auch nichts kopieren. Das print(serial) hat einen Dateinamen ausgegeben, der interessiert mich. Beziehungsweise dessen Inhalt.

    Sollte das letzte Bild tatsächlich genau der Inhalt der Datei sein, ist da massiv etwas faul.

  • Es ist falsch weil es nicht darum geht, dass Serial nicht existiert. serial.Serial existiert nicht...

    Deswegen hab ich es im darauffolgenden Post noch mal korrigiert.

    Edit: Wobei die Ausgabe in Deinem letzten Beitrag sicher nicht von dem ``print(serial)`` kommt.

    stimmt. das war print(help(serial))

    Er hat die Library nicht richtig geschrieben. Das muss gsmHAT heißen.

    Nochmal.

    Code
    import serial
    
    print(serial)

    dann sollte sowas erscheinen:

    Code
    <module 'serial' from '/usr/lib/python3/dist-packages/serial/__init__.py'>
  • Code
    import serial
    
    print(help(serial.serialposix))

    bringt:

  • Das ist denke ich nicht der richtige Inhalt. Da du Bilder statt Text zeigst, kann ich auch nichts kopieren. Das print(serial) hat einen Dateinamen ausgegeben, der interessiert mich. Beziehungsweise dessen Inhalt.

    Sollte das letzte Bild tatsächlich genau der Inhalt der Datei sein, ist da massiv etwas faul.

    Tut mir Leid, aber ich bin nun etwas verwirrt - was genau kann ich für dich tun?

    In dem letzten Bild habe ich tatsächlich einfach die __init__.py ausgeführt.


    Er hat die Library nicht richtig geschrieben. Das muss gsmHAT heißen

    Wo genau? Ich habe an dem Library-Namen nichts geändert, das ist das was von Github kam.

  • Du solltest nichts ausführen. Du solltest hier den Inhalt der durch das von mir bezeichnete Print statement angegebenen Datei zeigen. Nicht IRGENDEINE __init__.py, von der sich Dutzende bis hunderte auf deinem rechner befinden.

  • du hast  from gsmhat.gsmhat import  geschrieben das muss aber gsmHAT heißen. Sprich du hast die Library falsch geschrieben.

    Wenn ich gsmHAT schreibe, also mit "HAT" groß geschrieben, kommt die Meldung "no module named "gsmHAT". Ich habe da auch nichts verändert, das ist 1 zu 1 der GitHub-Code

    Du solltest nichts ausführen. Du solltest hier den Inhalt der durch das von mir bezeichnete Print statement angegebenen Datei zeigen. Nicht IRGENDEINE __init__.py, von der sich Dutzende bis hunderte auf deinem rechner befinden.

    Ich habe nicht irgendeine beliebige __init__.py verwendet, sondern die die bei dem GitHub-Code mitgeliefert wurde. Die habe ich einfach in Thonny eingelesen und "run current script" gedrückt.

    Da ich mittlerweile auch was die Groß- und Kleinschreibung angeht verwirrt bin:

    Ich habe nun das eingegeben:

    Code
    import serial
    
    print(serial)

    Das Ergebnis:

    Diesmal also kein Fehler.

    Wenn ich dich richtig interpretiert habe, soll ich nun also die im Shell angezeigte /home/pi/.local/lib/python3.7/site-packages/serial__init__.py Datei öffnen? Wenn ja, hier der Code ebendieser:

    Python
    """
    `serial` is an object serialization/deserialization library intended to facilitate authoring of API models which are
    readable and introspective, and to expedite code and data validation and testing. `serial` supports JSON, YAML, and
    XML.
    """
    
    from __future__ import nested_scopes, generators, division, absolute_import, with_statement, \
       print_function, unicode_literals
    
    from . import utilities, abc, model, marshal, errors, properties, meta, hooks, test, request

Jetzt mitmachen!

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