Alarmanlage Script Fehler

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hier ist ein Script für eine Alarmanlage aber ich bekommen einen Fehler ab Zeile 11
    ( gpio mode $piri in) an was könnte das liegen ?


    red=0 # ist GPIO 17 – Pin 11
    green=1 # ist GPIO 18 – Pin 12
    piri=11 # ist GPIO 07 – Pin 26
    # ----------------------------------------------------------------------
    # funktion init
    # GPIO einstellen und LEDs initialisieren fuer Reed-Schalter
    # ----------------------------------------------------------------------
    init ()
    {
    print ("initialisieren...")
    gpio mode $piri in
    gpio mode $piri up
    gpio mode $red in
    gpio mode $red up
    gpio mode $green out
    gpio write green 1
    }
    # ----------------------------------------------------------------------
    # Schaltung initialisieren und ab in Schleife
    # ----------------------------------------------------------------------
    init
    # schleife bis ctrl-c Abbruch
    echo "PIRI Modul im Einsatz (Beenden mit: CTRL-C)"
    while true; do
    if [ $(gpio read $piri) -eq 0 ]; then
    # keine bewegung
    # -> ist schalter geschlossen
    if [ `gpio read $red` = 1 ]; then
    gpio write $green 1
    else # -> ist schalter nicht geschlossen
    gpio write $green 0;
    fi
    else
    # kein schalter betaetigt
    gpio write $green 0;
    echo "Bewegung"
    fi
    sleep 0.1
    done

    exit 0
    # -----------------------------------------------------------------------

  • Warum nennst Du uns nicht den Fehler? Das wuerde es leichter machen. Auch wuerden code Tags die Leserlichkeit des Codes wesentlich vereinfachen :shy:
    Anyhow: Die $ Zeichen vor den Variablen sind zu viel. Die braucht man in shell Scripts, aber nicht in Python.


  • Warum nennst Du uns nicht den Fehler? Das wuerde es leichter machen. Auch wuerden code Tags die Leserlichkeit des Codes wesentlich vereinfachen :shy:
    Anyhow: Die $ Zeichen vor den Variablen sind zu viel. Die braucht man in shell Scripts, aber nicht in Python.

    Weitere Informationen wären wirklich hilfreich. Aber es sieht mehr wie ein Bash-Script aus.

    Ersetz in dem Fall das

    Code
    print("initialisieren...")

    in Zeile 11 durch ein

    Code
    echo "initialisieren..."

    oder durch ein

    Code
    printf "initialisieren..."

    Gruß
    Chris

    Einmal editiert, zuletzt von Chris1705 (18. April 2014 um 16:42)

  • ...Weitere Informationen wären wirklich hilfreich. Aber es sieht mehr wie ein Bash-Script aus...

    :blush: ... das kommt dabei raus wenn man Code nicht in code Tags zeigt und der Leser gerade am Python proggen ist :daumendreh2:

    1) Wie ist denn die genaue Fehlermeldung?
    2) Stelle den Code in code Tags oder zeige den code mit

    Code
    cat -b dateiName
  • Entschuldige, aber bei Deinen Code Snippets ist mir nicht ganz klar,
    in welcher Sprache die geschrieben sein sollen.
    Irgendwie scheint da die Syntax von Shell und Python, einer anderen Skriptsprache
    oder Pseudo Code ein wenig durcheinander zu geraten.

    Ich vermute mal, dass es sich um ein Bash Skript handeln soll.
    Dann ist der angezeigte Syntax Error auf Deinem Screen Shot nachvollziehbar.
    Die Parenthesis (also runde Klammern) gruppieren in der Shell Statements,
    die in einer Subshell ausgeführt werden sollen und sind daher als Argument für das
    Shell built-in Kommando echo unangebracht.
    Entferne einfach die runden Klammern hinter dem echo und behalte nur die Double Quotes bei.
    Auch, wenn's komisch erscheinen mag, in der Shell erhalten Funktionen nur bei ihrer Definition
    runde Klammern um eine leere Argumentliste und auch nur dann, wenn sie nicht mit dem
    vorangestellten String function deklariert werden.
    Beim Aufruf von Shell Functions müssen runde Klammern weggelassen werden
    und etwaige Argumente einfach als durch Whitespace getrennte Wörter hinter dem Funktionsnamen
    aufgeführt werden.
    In Skript- bzw. Programmiersprachen müssen hingegen fast immer die Argumente an Funktionen
    in runden Klammern als kommaseparierte Wörter übergeben werden.
    Ausnahmen bilden hier jedoch vor allem Perl, aber auch Python 2.X soviel ich weiss, was print angeht.
    In Python 3.X muss man aber wohl print in jedem Fall seine Argumente in runden Klammern übergeben.
    Allerdings ohne Gewähr, da ich kein Python Hacker bin.

Jetzt mitmachen!

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