Nur veränderungen Eintragen?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo , ich programmiere gerade ein Programm was mir eine Email schickt wenn mein Magnetic Reed auf 0 (bei mir = offen) steht . Das Programm hat auch eine Log Funktion so das er jedes Event einträgt. Und deswegen hatte ich die Frage: Wie mache ich es das er nicht bei jeder Abfrage mein Mail Ordner vollspammt + die Logs? Irgendeine funktion?

    • Offizieller Beitrag

    Wieo vollspammt? Wenn ne Veränderung auf 0 ist soll er dir ne Mail senden...was spammt denn dann? Für das Logging kannst du doch einfach deine gewünschten infos in das Logfilfile umleiten.

    Code
    echo "Kontakt offen" >> /home/pi/log.log

    . Das ganze kann man jetzt noch mit Uhrzeit usw. erweitern. Am besten du zeigst mal dein Script her.

  • Setz das Verschicken von Mail und das schreiben in den Log so, dass er das erst aufführt wenn sich der Zustand ändert.
    Also so was inder der Art:

    Code
    ALT-Zustand= Zustand abfragen
    SCHLEIFE
     IST-Zustand=Zustand abfragen 
       WENN ALT-Zustand UNGELICH IST_Zustand
           MAIL
           LOG
           ALT-Zustand=IST-Zustand
       WENN
    SCHLEIFE

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • Also mein Programm sieht bis jetzt so aus

    Bash
    #!/bin/bash
    date=date
    PORT=4
    OPEN=gpio -g read $PORT
    if  [ $OPEN == "1" ]; then
       echo "Tür wurde geöffnet"
    echo "<<<$date>>>  Tür offen" >> home/pi/log.log
    python /home/pi/mailpositive.py
    sleep 5
    fi


    Nur ich hab auch ein Problem : Unzwar wenn ich die mailpositive.py ausführen möchte findet er garnichts mehr ...

    Python ist eigentlich installiert was mach ich falsch? :wallbash:

  • Ok also hier ist es:

    • Offizieller Beitrag

    Was soll das da?

    Zitat

    Wert = str(sys.argv[1])
    Wert += " "
    Wert += str(sys.argv[2])


    Du erwartest externe Parameter und übergibst aber aus dem Bash script nichts.

    Das erklärt aber nicht warum er bei dem Rest Fehlermeldung scheisst

  • Ja ich hab mir den untersten Schnipsel aus dem netz geholt..

    Jetzt kommt nur noch der fehler

    Code
    File "mailpositive.py", line 18
    SyntaxError: Non-ASCII character '\xc3' in file mailpositive.py on line 18, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details



    Ehhhhmmmm also ich hab jetzt nen neuen Fehler und zwar nen Ascii aber ich habe alle Ü Ö Ä's entfernt :O

    Einmal editiert, zuletzt von TheOverclocker (8. April 2015 um 10:56)

    • Offizieller Beitrag

    Das kommt weil du "ü" deinem Text hast, und kein Coding definiert hast

    Python
    #!/usr/bin/python
    # -*- coding: utf-8 -*-


    so sollten die ersten beiden Zeilen deines Python Codes aussehn, dann klappts auch mit den Umlauten. Grade getestet und funktioniert ;)


  • Das kommt weil du "ü" deinem Text hast, und kein Coding definiert hast

    Python
    #!/usr/bin/python
    # -*- coding: utf-8 -*-


    so sollten die ersten beiden Zeilen deines Python Codes aussehn, dann klappts auch mit den Umlauten. Grade getestet und funktioniert ;)

    Welchen Email provider sollte ich benutzen? Freemail ?

  • Hi,

    Das Bashskript passt so auch noch nicht ganz.

    Zitat


    date=date
    PORT=4
    OPEN=gpio -g read $PORT


    Wenn du die Ausgabe eines Programmes oder Skriptes einer Variable zuweisen möchtest solltest du das so machen: :)

    Code
    OPEN=$(gpio -g read $PORT)

    --
    Wie wird denn dieses Bashskript aufgerufen. Das muss so ja immer wieder aufgerufen werden.
    Mit einem Interrupt und einer Endlosschleife könnte man das sehr schön lösen.
    Und das geht mit dem 'gpio' Tool auch in Bash. (wfi) :thumbs1:

    Was meinst du denn genau mit "vollspammt"?
    Vielleicht den Pullup bzw. bei dir den Pulldown Widerstand vergessen?
    Beschreib bzw. zeichne vielleicht mal kurz die Schaltung.

    Und wieso sagst du hier:

    Zitat


    eine Email schickt wenn mein Magnetic Reed auf 0 (bei mir = offen) steht


    Wenn du das dann so programmierst: :s

    Zitat
    Code
    if  [ $OPEN == "1" ]; then

    Wieso hast du denn da überhaupt das Bashskript dazwischen und machst nicht gleich alles in Python bzw. Bash.

    Grüße,
    Joh

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (8. April 2015 um 18:54)

Jetzt mitmachen!

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