Zeitgesteuerter Ablauf

Ein neuer Artikel wurde veröffentlicht
  • sagen wir mal, die verbesserst das Skript und übernimmst es - hast du dir schon gedanken gemacht, wie du sicherstellt, dass das Skript neu gestartet wird, wenn es mal crashen sollte? Des weiteren sollte man vielleicht nicht prüfen, ob der einzubauende `subprocess` Aufruf auch tatsächlich erfolgreich war, damit man den Zustand seines Systems auch sicher kennt.


    Des Weiteren würde ich, wenn du wirklich auf eine leichte Änderbarkeit der Schaltzeichen wert legst, die Werte in einer separaten Datei ablegen. Wenn es allgemein Verständlich sein soll, dann würde ich zu einer INI-Datei tendieren und die über das `configparser` Modul einlesen.

    also, es sollen Zeilen in einem Bereits vorhandenem Script werden. Bin wie gesagt neu und wage mich immer an was neues. Tipps nehme ich gerne an, aber verständliche :)


    Habe mir noch keine Gedanken gemacht wie ich das script wieder zum starten kriege. Es beginnt im Autostart (crontab). Es stimmt, wenn es abraucht habe ich ein Problem. Was schlägst du vor?


    Um den Zustand der Anweisung nachzuvollziehen, habe ich in meinem script mit Timern gearbeitet. Wenn dieser Timer, den ich mit der Anweisung starten möchte, aktiv ist bzw. nicht null ist, leuchtet eine LED


    Schaltzeichen bleiben erstmal so wie sie sind, da geht es dann später ran.

    Danke an alle für die Infos

  • Hallo JanR,


    hier der versprochene Link auf die komplexere Anwendung, in der ein zeitgesteuerter Ablauf mit der Auflösung von Sekunden und bei Bedarf auch noch kleiner ermöglicht wird.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Andreas : Es geht hier um PYTHON, nicht Icon :fluchen:


    Der Thread hier ist explizit im PYTHON Bereich erstellt


    Hört bitte mit dieser verflucht dreisten Art und Weise auf! Es reicht langsam! Achtet auf die Frage der Frager und respektiert diese :!:

  • Hallo,


    Zitat


    Es stimmt, wenn es abraucht habe ich ein Problem. Was schlägst du vor?

    Eine systemd Service Unit. Damit kannst du das Skript zum Systemstart starten und auch automatisch neu starten lassen, wenn es crasht.


    Du solltest noch bedenken, dass du beim automatischen Neustart den Zustand des GPIO (an oder aus) nicht kennst, weil du ja nicht weiß, wann das Skript gecrasht. Da macht es IMHO Sinn, beim Starten des Skripts einen definierten Zustand einzustellen, bevor du die Endlosschleife betrittst.


    Gruß, noisefloor

  • könntest du mir, da es hier nicht hingehört das mal genauer über PN erklären, wäre dir dankbar, da ich dieses dringend als rückfalleben brauche, aber fast keinen schimmer habe, was du damit meinst...


    Zu meinem Script, ich habe es jetzt mal so geschrieben und es läuft...

    Nur möchte ich noch Millisekunden hinzufügen, da ich meine Schleife ja so abfrage (MUSS SO SEIN!!!!)

    kann da jemand schnell helfen?


    Code
    1. try:
    2. while 1:
    3. time.sleep(0.1)
    4. now = datetime.now()
    5. Now = now.hour * 60 + now.minute + now.second
    6. bestimmtezeitan = (20*60+16+0) <= Now < (20*60+16+1)
    7. if bestimmtezeitan:
    8. bestimmterintervall()

    danke im voraus

  • weil das bis jetzt die einzige Hilfe (außer ließ nach oder google) ist die hier nach meiner Frage kam. Man kann alles nachlesen oder auf sämmtlichen Sprachen googeln... Ich brauche einfach nur mal Hilfe beim Quellcode aus #25 oder eine andere Lösung.

  • Mein lieber Meigrafd,


    Andreas : Es geht hier um PYTHON, nicht Icon :fluchen:


    Der Thread hier ist explizit im PYTHON Bereich erstellt


    Hört bitte mit dieser verflucht dreisten Art und Weise auf! Es reicht langsam! Achtet auf die Frage der Frager und respektiert diese :!:

    Ihr verzettelt Euch mit halbgaren Ansätzen, um irgendwas zu erreichen. In anderen Programmiersprachen sind längst Lösungen erarbeitet worden, um nicht im Minutenabstand (cronjob) sondern mit Auflösungen bis hinunter zu Millisekunden Abläufe anzustoßen. Auf einen davon habe ich mal verlinkt - auf einen anderen weiter vorne im Thread. Ich habe hier lediglich den noch offenen Link gepostet, den ich früher angekündigt hatte, und der über die Forensuche nicht (aber über meine Toolbox schon) auffindbar war.



    Was war noch mal der Grund, weshalb Du Dich aufregtest?


    Ich habe doch ganz gewiss keinen Icon-Code in einem Python-Thread gebracht. Das kannst Du mir nicht vorwerfen. Ist mir auf Deinen Wunsch offiziell untersagt worden. Daran halte ich mich auch - auch wenn es für viele Threads nicht gut ist, wenn Sichtweisen aus anderen Richtungen und auf anderem Niveau dann ausbleiben.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Also da eine Halbzeit nur 15 Minuten dauert ... :angel:

    Man kann alles nachlesen oder auf sämmtlichen Sprachen googeln...

    lieber auf eine Konzentrieren :)



    weil das bis jetzt die einzige Hilfe

    Das stimmt so nicht, du definierst Hilfe indem man dir einen fertigen Code übergibt, ja da kam bislang wenig. Hilfe kam aber viel. Viel Hilfe zur Selbsthilfe und viele Ratschläge.



    Thema Millisekunden weiß ich leider nicht genau was du benötigst, ganz allgemeiner Code:

    Python
    1. import datetime
    2. import time
    3. vorher = datetime.datetime.now()
    4. time.sleep(0.5)
    5. jetzt = datetime.datetime.now()
    6. differenz = jetzt - vorher
    7. print(differenz.microseconds)
  • Andreas : Ob du einen Link zu Icon Code postest, oder direkt den Code, ist Haarspalterei.


    Auffällig ist dass Du ständig Icon in Python-Threads anbringst, und bei jeder Gelegenheit Python schlecht machst. Wenn Dir das Niveau nicht passt dann bleib doch einfach fern?


    Es gibt Lösungen in Python, aber solange der TE nicht explizit erwähnt, dass sein Anliegen auch in einer anderen Programmier gelöst werden könnte, ist dein Icon unangebracht.


    Ein bisschen mehr Respekt deinerseits, dem Frager, der Programmiersprache und uns gegenüber, wäre wünschenswert.

  • @ hofei. Das scheint mein Problem zu sein. Da ich das ganze gerade lerne befinde ich mich quasi in der Ausbildung. Wenn ich in meiner realen Ausbildung alles hätte selber erarbeiten müssen wäre ich noch nicht fertig. Ein großer Teil des Lernerfolges kommt aus vormachen, erklären, nachmachen. Und es gibt nichts schlimmeres als wenn jemand einem Tip kriegt wie ließ das mal da nach. ... Dann noch ein englischer Threat in dem mehr unbekannte sind als im Universum. Ich bin z.b. froh so langsam zu wissen was integer o.ä. ist. Dieses dann noch auf Englisch (schlechtes Beispiel ) ist noch schwerer.

    Denke dieses ist das falsche forum um im Lernvorgang fFragen ragen zu stellen. Hier muss man schon alles wissen. Und wenn nicht soll man es nachlesen.

  • Nein mit dem Forum hier hast du eigentlich einen Glückgriff gemacht.

    Das Forum erwartet nur etwas eigeninitiative.


    Wie das mit datetime und millisekunden geht hab ich dir eh in einem Codebeispiel gezeigt, was in Deutsch ist. Sollten dazu fragen sein - gerne.


    Integer -> Ganzzahl: 1, 2, 3 NICHT 1.0 oder 1.1

    Float -> Gleitkommazahl: eben 1.0 oder 1.1 ....


    Auch wenn ich gleich wieder für die Seite geschimpft bekomme von linusg  :P

    https://cscircles.cemc.uwaterloo.ca/de/

    Die Seite vermittelt allerdings kein PEP8 oder ideales Python - mir hat es aber sehr geholfen. Vorallem weil einzelne Ablaufschritte auch visualisiert dargestellt werden.


    Parallel dazu empfehle ich dir aber auch noch zwingend zum lernen ein Buch, wie ich bei dir raus lese am liebsten auf deutsch. Also das hier:

    https://www.rheinwerk-verlag.de/python-3_4467/

    Am liebsten verwende ich die eBook Version, da gibts ne Suchefunktion ;)

    Ein gefällt mir tut nicht weh :thumbup:

    Erledigte Threads bitte als erledigt markieren

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von Hofei ()

  • Denke dieses ist das falsche forum um im Lernvorgang fFragen ragen zu stellen.

    Ich denke, viele hier helfen gerne bei einem Lernprozess weiter - ich z.B., wenn ich die Zeit habe. Ein bißchen Mitarbeit erwarte ich dann aber schon. Ich habe hier im Thread eine Rückfrage gestellt und nie eine Antwort erhalten - da bin ich dann auch ganz schnell wieder raus.

  • Auch wenn ich gleich wieder wie die Seite geschimpft bekomme von linusg

    https://cscircles.cemc.uwaterloo.ca/de/

    Die Seite vermittelt allerdings kein PEP8 oder ideales Python - mir hat es aber sehr geholfen. Vorallem weil einzelne Ablaufschritte auch visualisiert dargestellt werden.

    Ich find das gar nicht so schlecht. Vor allem die kleinen Übungen lockern das ganze doch schön auf und vermitteln das gelernte praxis nah. Über pep und co kann man sich gedanken machen, wenn man versteht was man da eigentlich macht ;).

  • Seh ich genau so wie du. Vorallem die schrittweise Verarbeitung zu sehen ist anfangs sehr interessant. Außerdem sind nach Abschluss des Tutorials auch schon mal die ganzen Basics geklärt wie die For/while Scheife, Rechenoperatoren, If-Abfrage, grundsätzliche Verwendung von Methoden usw.

    Schön dass du dir den Link mal angeschaut hast :)


    Über pep und co kann man sich gedanken machen, wenn man versteht was man da eigentlich macht ;)

    Seh ich genau so, anschließend ist man besser bereit sich durch linusg, meigrafd, bootsmann, noisefloor (sollte ich wem vergessen haben sry) sich formen zu lassen um auch stylistisch richtigen Code vollbringen zu können

  • Ich denke, viele hier helfen gerne bei einem Lernprozess weiter - ich z.B., wenn ich die Zeit habe. Ein bißchen Mitarbeit erwarte ich dann aber schon. Ich habe hier im Thread eine Rückfrage gestellt und nie eine Antwort erhalten - da bin ich dann auch ganz schnell wieder raus.

    sorry dass ich nicht rückgeantwortet habe. Aber wenn ich schreibe Crontab möchte ich nicht dann war deine Rückfrage für mich akut nicht so wichtig. Crontab kommt für mich nicht in Frage, da ich es wie beschrieben in ein bestehendes script einbinden möchte.


    Danke für die Tips. Habe bereits 2 Bücher durch. Das waren aber nur die Basics. Für das weitere finde ich deinen Buchtip gut. Werde da mal reinschauen. Auch die Seite ließt sich gut. Tolle Sache.


    Auch danke für deinen Quelltext. Hab sofort gesehen, wo bei mir der Fehler lag. Teste es gleich, bin mir aber sicher jetzt wird es laufen.


    Jetzt mal im Ernst. Das ist ein tolles Forum!!! Hier gibt es viele Tips und auch ne menge Quellcode. Aber ihr müsst verstehen, dass wenn ich an meinem Script sitze und nicht mehr weiter weiß und meine Mittel der Informationsgewinnung scheinbar erschöpft sind (und erst dann frage ich nach ) Antworten wie frag Google und ließ es nach nicht befriedigend sind.

    Aber auch das regt zum tüfteln und nachforschen an. Es ist ja nicht nur negativ.


    Deshalb denke ich mal dass dieser Threat geschlossen werden kann. Dannke für eure Hilfe. Wenn ich mit meinem Programm Millionen verdiene, werde ich beim ausgeben an euch denken :)

  • Aber wenn ich schreibe Crontab möchte ich nicht dann war deine Rückfrage für mich akut nicht so wichtig. Crontab kommt für mich nicht in Frage, da ich es wie beschrieben in ein bestehendes script einbinden möchte.

    Du hast geschrieben, Du möchtest crontab nicht verwenden, weil die Timer leicht von Dir und anderen veränderbar sein sollen. Jetzt kommt als weiterer Grund der Einbau in ein bestehendes Skript dazu. Beides spricht aus meiner Sicht nicht gegen die Verwendung von crontab-Einträgen – die lassen sich durchaus auch programmatisch manipulieren. Da sparst Du Dir den ganzen Aufwand, einen Timer zu programmieren, und kannst einfach die fertige Lösung nutzen.