Projekt Wiener Linien Abfahrtsmonitor

  • Hallo Zusammen

    Ich habe ein kleines Projekt umgesetzt - Den Wiener Linien Abfahrtsmonitor
    An meinem Raspberry habe ich einen HC-SR04 Ultraschallsensor und ein Nokia 5510 Display angeschlossen.
    Mein Python Skript misst permanent die Entfernung. Sobald ein Objekt innerhalb eines Meters ist, wartet das Skript kurz,
    überprüft nochmal die Entfernung und sollte sich das Objekt noch immer innerhalb eines Meters befinden, wird für 20Sek
    die nächsten beiden Abfahrtszeiten des gewünschten öffentlichen Verkehrsmittels angezeigt.

    Als Basis habe ich den Code von mabe-at genommen:
    https://github.com/mabe-at/WL-Monitor-Pi

    Aber nun zu meinem Problem:
    Das Skript funktioniert an und für sich, jedoch kommt es immer wieder mal vor das es hängen bleibt (nach einem od zwei Tagen)
    Sprich es misst auf einmal keine Entfernung mehr. Wie wenn jemand Pause drücken würde.

    Sobald ich das Skript mit "Strg+C" beende, kommt folgende Meldung:
    ^CTrackback (most recent call last):
    File ".monitorLCDtest.py", line 158, in <module>
    abstand = entfernung()
    File ".monitorLCDtest.py", line 143, in entfernung
    while GPIO.input(echo) == 0:
    KeyboardInterrupt

    Nach einem Neustart funkt alles wieder.

    Die Frage nun an die Profis, warum kommt es immer wieder dazu, dass sich mein Skript "aufhängt"?
    Liegt es am Skript od am Sensor?

    Das Skript findet ihr AnhangmonitorLCDtest.py.

    Vielen Dank für euren Input

  • Na ja, solche Loops sind nicht empfehlenswert:

    Code
    while GPIO.input(echo) == 0:
                    pass
            start = time.time()
    
    
            while GPIO.input(echo) == 1:
                    pass

    Ich wuerde hier einen Zaehler einsetzen, und wenn er mehr als X mal in diesem Loop dreht die Schleife beenden. In diesem Fall sollte zumindest ein Log-Eintrag gemacht werden, oder besser eine Meldung, per Mail, SMS, was auch immer.

    Wenn sich das System nach diesem Fehler nicht mehr erholt, einen Reset ausloesen...

  • Das muesste etwa so aussehen:

    Einmal editiert, zuletzt von Tell (19. August 2017 um 22:44)

Jetzt mitmachen!

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