CRONTAB auf Raspberry

  • Ich will keinen Screenshot. Ich habe dir ganz klar gesagt, wie man hier Quellcode einfguegt. Welcher Teil von 'Der </>-Knopf' ist dir unklar?

    Und ich habe nicht geschrieben das du Hallo.py ausfuehren sollst.

    Sondern TROMMELWIRBEL

    ./Hallo.py

    Nochmal, weil es so schoen war:

    ./Hallo.py


    Siehst du den Unterschied?

    Und dann noch eine wichtige Bemerkung: ein Shebang (das ist das #!/usr/bin ... ) hat

    IN DER ERSTEN ZEILE ZU STEHEN. NICHT IRGENDWO TIEFER.

  • Nein. Das sollst du nicht.

    Ich habe schon mehrfach ein Thema hier angesprochen, und ich tu's jetzt wieder: du hast relative Pfade in deinem Skript, und das funktioniert nicht. Es gibt eine Vielzahl von Diskussionen hier im Forum, die das Thema absolute und relative Pfade im allgemeinen, und im besonderen im Zusammenhang mit cron diskutieren.

    Such ein paar raus, und les die dir durch. Was die Leute gemacht haben, um ihr Problem zu loesen. Ich bin gerne Stichwortgeber. Internet vorlesen ist nicht meine Aufgabe.

  • Übrigens:

    #!/usr/bin/env python3

    steht in der ersten Zeile!!

    Und aus deinem Screenshot wird das nicht ersichtlich. Darum ist der Screenshot Mist. Oder kannst du erkennen, dass die Zeile darueber keine echte Zeile ist? Sieht genauso aus wie die UNTER dem Shebang. Darum habe ich das ueberhaupt geschrieben. Waere also gar nicht noetig, wenn du gemacht haettest, worum ich dich gebeten habe.

  • Hallo,

    TSD00 : wenn du eine x-beliebige Datei, die z.B. auf /home/pi/Desktop liegt, per cron oder auch systemd ausführst, dann wechseln cron oder systemd _nicht_ automagisch in das Verzeichnis, deren Working Directory ist in dem Moment anders. Dein Skript erwartet aber, dass `'Temperatur.csv` im momentanen Working Directory liegt.

    Zwei Lösungen:

    absolute Pfade verwenden - steht hier im Thread auch ca. 5000 mal ;)

    oder

    Dein Skript über eine systemd Timer Unit starten und in der Service Unit, die von deiner Timer Unit aufgerufen wird, das WorkingDirectory setzen.

    Wie du ja (vielleicht) gesehen hast, wird die crontab sowie so von systemd in Units umgewandelt. Wenn du systemd Units direkt nutzt ja du aber die direkte Kontrolle und dir stehen alle Möglichkeiten von systemd Units zur Verfügung.

    Warum willst du eigentlich das Skript alle 60 Sekunden aufrufen, obwohl das Skript 1000 Sekunden läuft?

    Wenn du schon eine CSV-Datei schreibst, dann nutz' doch direkt das CSV-Modul, was Python an Bord hast. Das brauchst du dir nicht mehr schlecht als recht zusammen basteln.
    Die print-Funktionen sind in einer Datei, die im Hintergrund ausgeführt wird, relativ witzlos. Die Laufen zwar in die Logs, aber wenn du loggen willst, dann solltest du vielleicht explizit das logging-Modul von Python nutzen.

    Wenn du eine Datei öffnest, dann solltest du sie auch wieder schließen. Oder besser direkt mit dem with-Statement öffnen, dann kümmert sich der dahinterliegende Context Manager ums Schließen.

    Gruß, noisefloor

  • Dane sehr!!!

    Das funktioniert!!! Seit mehreren Stunden schreibt mein System die Temperaturdaten in die CSV!!!

    :)

    Meine Datei sieht so aus:

    08:45:02;16.625

    08:46:02;16.625

    08:47:02;16.625

    Mit dem Format Zeit (HH:MM:SS) und der Temperatur (99.999)

    die Datei wird eingelesen


    #!/usr/bin/ver python3 

    import matplotlib.pyplot as plt

    import numpy as np

    import pandas as pd

    x = np.loadtxt('Temperatur.csv', unpack = True, usecols = (1), delimiter =';')

    #y = np.loadtxt('Temperatur.scv', unpack = True, usecols = (0), delimiter =';')

    print(x)

    #print(str(y))


    Die auskommentiete Zeile "y ...." (die Uhrzeit) macht im Format Probleme.

  • x = np.loadtxt('Temperatur.csv', unpack = True, usecols = (1), delimiter =';')

    frage: weißt du WAS ABSOLUTE PFADE sind ?

    hier bekommen sonst noch ein paar sehr gute helfer ihren herzkasper ...

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • #!/usr/bin/ver python3 

    import matplotlib.pyplot as plt

    import numpy as np

    import pandas as pd

    x = np.loadtxt('/home/pi/Desktop/Temperatur.csv', unpack = True, usecols = (1), delimiter =';')

    #y = np.loadtxt('/home/pi/Desktop/Temperatur.scv', unpack = True, usecols = (0), delimiter =';')

    print(x)

    #print(str(y))

    ... by the Way: Herzkasper (Insuffizienz, Aortenstenose, Vorhofumkehr (DTA)....) sind ehr MEIN Problem!

  • so, wenn du jetzt noch diese dateien vom desktop in einen ordner in deinem home-verzeichnis packst, dann bekomme ich auch keinen herzkasper, also:

    1. in /home/pi beispielsweise den ordner 'skripte' anlegen.

    2. in /home/pi beispielsweise den ordner 'data' anlegen.

    3. dein skript in den ordner 'skripte' legen und umbenennen in beispielsweise 'messung_temperatur.py'

    4. deine csv in den ordner 'data' legen und diese am besten klein schreiben, also 'messung_temperatur.csv'

    5. dein skript dementsprechend anpassen (x = np.loadtxt('/home/pi/data/messung_temperatur.csv', unpack = True, usecols = (1), delimiter =';'))

    6. die crontab entsprechend anpassen, also /home/pi/skripte/messung_temperatur.py

    7. optional: du könntest in der crontab noch festlegen, dass fehler in eine log-datei geschrieben werden. wie das geht, siehst du in der rubrik 'tutorials' unter dem beitrag 'cron und anacron'. diese datei legst du ebenfalls in den 'data'-ordner und nennst diese 'messung_temperatur_log.txt'

    ich hoffe, dass ich nichts vergessen habe, so auf die schnelle ...

    warum das ganze ?

    1. wegen der ordnung

    2. damit du auch in paar monaten noch weißt bzw. am namen erkennen kannst, was das skript macht.

    viel erfolg

    so long

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • Sooo Die Verzeichnisse sind erstellt, die Dateien umkopiert (mit cp), der Desktop ist bereinigt, der Pfad in der Crontab angepasst ....

    ... hab ich etwas vergessen?

    - Möglicherweise kann die "Grafik.py" noch umbenannt werden ....

  • funktioniert denn alles ?

    wenn ja, dann hast du nichts vergessen ... :thumbup:

    EDIT: ja, beispielsweise in messung_temperatur_grafik.py oder umgekehrt : grafik_messung_temperatur.py

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • da bin ich leider der falsche ansprechpartner ... habe bisher in python noch nichts mit grafiken gemacht ...

    vielleicht wäre es sogar klüger, sich zuerst einmal ein paar gedanken zu machen, bezüglich datenbank. alles in eine csv-datei zu schreiben ist, denke ich, nicht gerade eine smarte lösung. du könntest dies mit einer datenbank besser händeln, sqlite3 beispielsweise.

    es gibt immer mehrere wege:

    weiterhelfen wird dir die doku über die folgenden python-module:

    csv

    sqlite3

    wenn du schon jede minute daten schreibst, dann doch besser in eine db ...

    für den rpi gibt es beispielsweise die software 'DB Browser for SQLite'

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

Jetzt mitmachen!

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