Schleifen, E-Mail versand und Log-File

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

    ich arbeite zurzeit an einem Projekt.
    Bei dem Projekt geht es darum dass, das Pi einen potenzialfreien Kontakt abfragt ob der Pin "1" oder "0" ist. Bei Zustand "1" sollte es eine Zeitpause machen und dann wieder abfragen. Wenn der Pin auf 0 ist sollte ein Programm eine E-Mail verschicken mit der Wahrung das sich was geändert hat.
    Am besten noch wenn er dazu auf einem Verzeichnis ein Logfile bearbeitet mit Uhrzeit und datum wann der Pin sich ändert. Wenn der Pin auf 0 ist sollte es solange abfragen bis dieser wieder auf 1 ist. Bei dem wandel sollte wieder eine Entwarnung-Mail geschickt werden und das Logfile wieder bearbeiten.
    Zum Schluss sollte es zur ersten Schleife springen.


    Ich habe davor noch nie mit Python programmiert und habe auch nicht alt so viel können beim programmieren. Deswegen bitte ich um eure Hilfe. Die Abfrage ob ein Pin 1 oder 0 ist habe ich nach langer Zeit fertig gebracht aber jetzt bin ich überfordert mit Schleifen und deren gleichen.


    Im Anhang ist ein Programm Ablaufbild wie es zum Schluss ausschauen sollte, ich bin offen für alle Änderungen. Ich hoffe dass ich hier etwas Hilfe bekommen. Wie ich nun weiter komme und vielleicht noch etwas dazu lern.

    Dankeschön und schöne Grüße,

    Mario


    Stand (10.3.2014)

  • Moin,

    willst du nun ein fix fertiges Programm?
    Wenn ja, benutz die Boardsuche, dann wirst du fündig ;)

    Edit:

    http://docs.python.org/2/tutorial/

    Edit II:

    Weil mir gerade nichts zu tun einfällt:


  • Sehe ich ähnlich, bei Fehlern im Code helfen wir gerne, die Arbeit wird dir aber keiner abnehmen.


    Naja, die kleinen Schleifen baue ich mal ein. Ist aber alles direkt eingetippt. Typos o.ae. sind beabsichtigt :lol:

  • Jetzt komm ich wieder mal zu Wort :)


    bootsmann danke für deine Links, die haben mir wirklich weiter geholfen.
    Ich verschicke die Mail über SMTP da hab ich auch schon was gefunden bei deinem Link.
    :thumbs1:


    dbv danke für äh :baeh2:


    framp Ich danke dir dass du dir die Zeit genommen hast mir bei den Schleifen zu helfen aber wirklich, ich versteh da nicht viel was du da geschrieben hast. Typos? :') sry aber ich bin noch noob beim Programmieren.


    Ich bräuchte nur noch die Schleifen aber ich weiss einfach nicht wie anfangen..

    Wenn mir jemand dabei helfen könnte wäre das wirklich toll :D!

  • Hallo MarioB

    Prinzipiell hätte ich ja ein fix fertiges Script auf meiner Platt liegen, welches deinen Wünschen entspricht. Aber selbst ist bekanntlich der Mann ;)

    Nun, wo oder wie soll ich anfangen...

    while Schleife:

    Code
    while True:
        Anweisung
        ...

    Die Endlosschleife "whie True" sagt aus, dass dessen Bedingung (True) unter allen Umständen erfüllt ist. Also auf Deutsch so etwas wie: Solange die Bedingung wahr ist, mach folgende Anweisungen...

    http://openbook.galileocomputing.de/python/python_…faf5d2726e071dc

    Und ganz wichtig, auch für framp: ;)
    http://legacy.python.org/dev/peps/pep-0008/

    PS:
    Fortsetzung folgt. Muss schnell weg...

  • Zitat


    [font="Tahoma, Verdana, Arial, sans-serif"]Die Endlosschleife "whie True" sagt aus, dass dessen Bedingung (True) unter allen Umständen erfüllt ist. Also auf Deutsch so etwas wie: Solange die Bedingung wahr ist, mach folgende Anweisungen...[/font]


    endlich jemand der bisschen erklärt. ok, ich schau dass ich jetzt einen ansatz schleife mache und falls ich blödsinn geschrieben hab bitte hinweisen :') danke dir


    Edit:

    Mein Code versuch


    Einmal editiert, zuletzt von MarioB (12. März 2014 um 14:47)


  • ... framp Ich danke dir dass du dir die Zeit genommen hast mir bei den Schleifen zu helfen aber wirklich, ich versteh da nicht viel was du da geschrieben hast. Typos? :') sry aber ich bin noch noob beim Programmieren.


    Du findest hier 3 verschiedene Leute mit unterschiedlichen Einstellungen wie man am besten eine Programmiersprache lernen kann :lol: Mein Code ist eigentlich soweit sofort benutzbar, aber ein paar kleine Fehler habe ich absichtlich eingebaut, damit Du Dir die Pythondoku ansehen musst :shy:, denn daran wirst Du Dich gewöhnen müessen.


    Es gibt auch Firmen, die andere Codingconventions haben als PEP8 ;)

    • Offizieller Beitrag

    Bei mir in der Firma gibts IT-VA007, die besagt das ich mich an der offiziellen python guideline orientieren muss ;)

    @TE
    Bedenke bitte immer das wir das hier Freiwillig machen. Wenn du etwas gleich, fix und fertig haben willst mache ein Thread im Suche Forum auf (es findet sich bestimmt jemand der dir das für Geld programmiert)

    Wenn du es wirklich ernst meinst und es selber bauen möchtest (was ich sehr begrüssen würde) dann solltest du auch am Anfang beginnen und nicht gleich mit Mailversand und Co. beginnen. So ist Frustration vorprogrammiert. Es bietet sich auch framps "wie sage ich es python" thread an. dort können wirkliche Anfängerfragen (Fragen, keine kompletten Programmanfragen) gestellt werden und es wird auch gerne und ggf. ausführlich erklärt. Eine passende Frage wäre zum Beispiel: Welche Schleifentypen gibts. Wie unterscheiden sich diese.

  • Ich melde mich wieder,

    ich habe einen Code geschrieben zum thema Email versenden über SMTP.
    Und irgend wie funktioniert das nicht so ganz, vllt könnt ihr einen Blick drauf werfen. :)

    Ich markiere die Lines wo ich mir nicht sicher bin.

    Danke für eure Hilfe



    http://support.qualityunit.com/107274-How-to-…-SMTP-settings-

  • Falsch:

    smtpserver = smtplib.SMTP('smtp.gmail.com', 465) #markiert

    Richtig:

    smtpserver = smtplib.SMTP('smtp.gmail.com:587 ') #Port 465 ist SSL

    Wenn du SSL verwenden willst, dann musst du dies auch dem "smtpserver" mittels SMTP_SSL mitteilen.


    Ansonsten kannst du auch auf diesem Beispiel weiter aufbauen, denn dieser Code funktioniert 100 %

    Und dann bitte in der Doku nachlesen, was die ganzen SMTP-Objekte bedeuten ;)

  • Hi,
    da ich gerade etwas ähnliches mache. Hier mal meine Klasse, mit der ich Logfiles schreibe.

    Im Programm nutze ich dieses Klasse folgendermaßen:

    Code
    logObj = Logfile('directory_where_files_are_created')
    logObj.writeToLog('Hier kommt die Nachricht')

    das erzeugt, dann in dem Ordner in dem das Script liegt, z.B. /home/pi im ordner 'di[font="Monaco, Consolas, Courier, monospace"]rectory_where_files_are_created'[/font]

    eine Datei mit aktuellen datum und dem Inhalt:[/font]

    Code
    18:58:30s -> Hier kommt die Nachricht

    vielleicht hilft es dir ja.

    Einmal editiert, zuletzt von s.beister (17. März 2014 um 18:58)

  • bootsmann

    Ich hab test weise mal deinen Code benutzt und meine Daten eingegeben, der funktioniert aber nicht.

    Ich habe das alles geändert:

    [font="Monaco, Consolas, Courier, monospace"]smtpserver.login('username', 'passwort')[/font]


    [font="Monaco, Consolas, Courier, monospace"]fromaddr = "[/font][font="Monaco, Consolas, Courier, monospace"]you@gmail.com[/font][font="Monaco, Consolas, Courier, monospace"]"[/font]
    [font="Monaco, Consolas, Courier, monospace"]toaddr = "[/font][font="Monaco, Consolas, Courier, monospace"]target@mail.com[/font][font="Monaco, Consolas, Courier, monospace"]"
    [/font]
    muss ich noch was ändern oder ist es somit getan?

    Die Doku hab ich mir angeschaut, die einzige frage die ich hab ist bei

    [font="Monaco, Consolas, Courier, monospace"]smtpserver.starttls()
    [/font]
    in der Doku stand:

    SMTP.starttls[font="sans-serif"]([/font][font="sans-serif"][[/font][font="sans-serif"]keyfile[/font][font="sans-serif"][[/font][font="sans-serif"], [/font][font="sans-serif"]certfile[/font][font="sans-serif"]][/font][font="sans-serif"]][/font][font="sans-serif"])
    [/font]
    muss ich da noch was eintippen in der klammer?


    Danke,


    Mario

    • Offizieller Beitrag
    Zitat

    Ich hab test weise mal deinen Code benutzt und meine Daten eingegeben, der funktioniert aber nicht.

    Ich arbeite schon viele Jahre mit python aber "Das funktioniert nicht" hab ich noch nie als Fehlermeldung gelesen ;). Gewöhnt euch bitte an, wenn ihr auf Fehler stosst, diese auch zu posten.


  • dbv
    Bei einem Fehler ja, aber nicht, wenn zB keine Verbindung mit dem smpt Server aufgebaut werden kann. Dann wird keine Fehlermeldung ausgegeben.

    Ich glaube das Problem bei ihm liegt eher darin, dass entweder in seiner FW die Ports gesperrt sind oder sonstige Verbindungsprobleme bei ihm herrscht.

    Glaub ich auch langsam, ich werde heute Abend alle Ports öffnen und dann nochmal versuchen.

  • Füge mal folgendes nach smtpserver = smtplib.SMTP('mail.deinServer.com',587) ein:

    Code
    server.set_debuglevel(True)

    Damit wird die Kommunikation mit dem smtp Server ausgegeben.



    Edit:

    Hab folgende Seite gerade im www gefunden. Hier wird alles ausführlich erklärt:
    http://pymotw.com/2/smtplib/

Jetzt mitmachen!

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