(gelöst)Script läueft nur nach reboot

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

    ok, nun noch mal zum Mitschreiben.

    - Reboot

    - Taste drücken, Meldung geht raus.

    - Du mit Putty auf den RPi.

    - Taste drücken, Meldung geht nicht raus.

    - systemctl sagt aber, das das Programm noch rennt.

    Soweit richtig?

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin gwaag,

    in ein_ausvonalarm.py schreibst du ja ein Log: /home/pi/th/Alarm.log.

    Kannst du in dem Python-Script nach dieser Zeile

    logging.basicConfig(filename='/home/pi/th/Alarm.log', format='%(asctime)s %(message)s', datefmt = "Woche %V %a %d.%m.%Y %H:%M:%S ", level=logging.INFO)

    eine logging.info einbauen?

    Und ev. in den event erst loggen und dann die anderen Scripts aufrufen?

    Irgendwie müssen wir doch hinter den Fehler kommen.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo Bernd666

    Danke fuer den Tipp mit dem logging.info.

    Habe es so eingebaut:

    Code
    logging.basicConfig(filename='/home/pi/th/Alarm.log', format='%(asctime)s %(message)s', datefmt = "Woche %V  %a   %d.%m.%Y  %H:%M:%S ", level=logging.INFO)
    logging.info('Anfang')
    
    sleep(2)
    
    def low(button):
        subprocess.run("/home/pi/th/aus.py") # Licht aus
        logging.info('Alarm AUS')  # Logeintrag

    Log sagt:

    Code
    Woche 42  So   18.10.2020  08:31:50  Reboot
    Woche 42  So   18.10.2020  08:32:24  Anfang
    Woche 42  So   18.10.2020  08:33:22  Alarm EIN
    Woche 42  So   18.10.2020  08:33:33  Alarm AUS

    Erst mit dieser Aenderung habe ich gesehen dass waehrend dem einloggen mit Putty das Licht kurz an und aus ging. ( Das was "aus.py" macht)

    Nach dem ich gesucht habe von wo das sonst noch her kommen kann, habe ich noch ein Script gefunden das etwas aehnliches macht.

    Nach dem ich das deaktiviert habe, funktioniert jetzt auch das ein_ausvonalarm.py wenn ich eingeloggt bin.

    D.h ich muss jetzt untersuchen wiso.

    Danke und gruss

    gwaag


    Script das ich deaktiviert habe und untersuchen muss:

    Einmal editiert, zuletzt von gwaag (18. Oktober 2020 um 09:17)

  • Moin gwaag,

    das ist schön!

    Zu dem Pythonscript kann ich dir nicht viel sagen. Ich kann kein Python.

    Wichtig ist, warum wird es gestartet? lutz hatte da was von -profile und bashrc heschrieben.

    Zumindest sind wir nun auf dem richtigen Weh.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo,

    ich habe jetzt nicht alle durchgelesen, habe nur eine Anmerkung zu deinem "gefundenen" Python-Skript.

    Auf dass, das man da einiges anders schreibt will ich nicht eingehen, da ich selbst das meiste nachschauen müsste. (Schlagworte: PEP8, aufrufen von Python-Programme in Python, importieren)

    Aufgefallen ist mit, dass du in dem Ordner 'th' einmal 'aus.py' aufrufst und einmal 'Zone1-4Morgen'. Ich weis nicht was dass ist, aber fehlt hier eventuell eine Dateiendung?

    Falls das nichts zur Lösunssuche beiträgt, einfach überlesen.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • aus.py is python script

    Zone1-4Morgen is basch scrip, also ohne Endung.

    Koenntest Du mit ev. sagen ob es in dieser Logik noch Klammern braucht, kenn mich da zuweng aus.

    Habe jetz4 scripte in eines geschmissen, daher brauce ich jetzt diese Logik.

    Code
    if not button.is_pressed and testprocess or not timewindow1_ok and testprocess or not timewindow2_ok and testprocess:

    Gruss

    und Danke

    gwaag

  • Moin gwaag,

    wie ich schon geschrieben habe. Python kann ich nicht.

    da sollte jemand mit Kenntnis helfen.

    Sri.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • if not button.is_pressed and testprocess or not timewindow1_ok and testprocess or not timewindow2_ok and testprocess:

    Klammern sind keine notwendig. Wenn ich mir bei sowas nicht sicher bin, dann ersetze ich die Bedingungen in einem Beispielskript und kann leicht testen, ob die Syntax stimmt.

    Zur Überprüfung kannst du auch ein 'print()' oder besser ein 'ic()' einabuen. (IceCream -- Never use print() to debug again)

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • gwaag Ob da Klammern hin *müssen* kommt letztlich darauf an ob die Logik denn so stimmt. Man kann aber auch argumentieren, dass bei einer so langen Bedingung nicht auch ansonsten implizite Klammern gesetzt werden sollten, damit man das leichter lesen/verstehen kann. Die impliziten Klammern wären ja folgende:

    Python
        if (
            (not button.is_pressed and testprocess)
            or (not timewindow1_ok and testprocess)
            or (not timewindow2_ok and testprocess)
        ):
            ...

    Was hier jetzt sofort ins Auge springt ist das alle drei Konjunktionen `testprocess` erfordern. Das könnte man da also herausziehen:

    Python
        if testprocess and (
            not button.is_pressed or not timewindow1_ok or not timewindow2_ok
        ):
            ...

    Und dann kann man natürlich noch die ganzen ``not`` aus dem zweiten Teilausdruck heraus ziehen:

    Python
        if testprocess and not (
            button.is_pressed and timewindow1_ok and timewindow2_ok
        ):
            ...

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • @_blackjack_,

    das nehm ich, mach Sinn.

    Code
     if testprocess and not (
            button.is_pressed and timewindow1_ok and timewindow2_ok
        ):
            ...


    @Rasp_Berlin

    das steht drin:

    Gruss

    gwaag

  • Sorry, war eine Woche weg.

    In der Zwischenzeit bin ich nur etwas weiter gekommen. Habe 4 script in eines gepackt, brachte aber nichts.

    Nach reboot alles ok. Log Info sagt geladen, Script funktioniert einwandfrei.

    Wenn ich mich mit Putty einlogge und sonst nichts mache, geht es nicht.

    Starte ich das Script in der Komandozeile, kommt Log Info, geladen, wenn ich jetzt Taster druecke /loslasse schickt es mail_alarmEin / Aus

    Log Info sagt Alarm Ein/Aus

    Stoppe ich das Script, geht es nicht mehr. Mit ps aux steht aber immer noch das ein_ausvonalarm.py läuft.

    Bin echt ratlos.

    Gruss

    gwaag

    Code
    root      1152  0.0  0.0      0     0 ?        I    12:46   0:01 [kworker/u2:0-events_unbound]
    root      1192  0.0  0.0      0     0 ?        I<   13:00   0:00 [kworker/0:2H-kblockd]
    root      1242  1.0  2.4  44580 10844 ?        Ssl  13:00   0:19 /usr/bin/python3 /home/pi/th/ein_ausvonalarm.py
    root      1267  0.0  1.4  12220  6284 ?        Ss   13:09   0:00 sshd: pi [priv]
    pi        1329  0.2  0.9  12220  4132 ?        R    13:09   0:02 sshd: pi@pts/0
    Code
    LOG_FILE
    
    
    Woche 44 Mi 28.10.2020 13:13:13 Reboot
    Woche 44 Mi 28.10.2020 13:15:59 Script geladen
    Woche 44 Mi 28.10.2020 13:16:29 Alarm EIN
    Woche 44 Mi 28.10.2020 13:16:37 Alarm AUS
  • Gibt es eine ~/.profile? und war steht in dieser Datei am Ende?

    Was steht in der Datei /etc/profile am Ende?

    Gibt es Dateien im Verzeichnis /etc/profile.d?

    Ist eine Datei davon neuer?

    Bei gibt es beim einen PI:

    Code
    root@pihole:~# ls -la /etc/profile.d/
    insgesamt 24
    drwxr-xr-x  2 root root 4096 Aug 21 17:03 .
    drwxr-xr-x 86 root root 4096 Sep 17 20:15 ..
    -rw-r--r--  1 root root   95 Apr 29  2019 at-dbus-fix.sh
    -rw-r--r--  1 root root  664 Mär  1  2019 bash_completion.sh
    -rw-r--r--  1 root root  324 Mai  9  2019 sshpwd.sh
    -rw-r--r--  1 root root  450 Jul 22  2019 wifi-check.sh
    root@pihole:~#

    Computer ..... grrrrrr

  • Hallo Rasp-Berlin,

    hier die Daten:

    Danke und Gruss

    Code
    pi@raspberrypi:~/th $ ls -la /etc/profile.d/
    total 28
    drwxr-xr-x   2 root root 4096 Okt 28 10:12 .
    drwxr-xr-x 121 root root 4096 Okt 28 12:14 ..
    -rw-r--r--   1 root root   95 Apr 29  2019 at-dbus-fix.sh
    -rw-r--r--   1 root root  664 Mär  1  2019 bash_completion.sh
    -rw-r--r--   1 root root  324 Feb 20  2020 sshpwd.sh
    -rw-r--r--   1 root root 1945 Dez 28  2018 vte-2.91.sh
    -rw-r--r--   1 root root  450 Jul 22  2019 wifi-check.sh
    pi@raspberrypi:~/th $


    Code
    /etc/profile.d
    
    at-dbus-fix.sh                     29.Apr 2019
    bash_completion.sh            1.Mär 2019
    sshpwd.sh                          20.Feb 2020
    vte-2.91.sh                          28.Dez 2018
    wifi-check.sh                       22.Jul 2019
  • Moin gwaag,

    Stoppe ich das Script, geht es nicht mehr. Mit ps aux steht aber immer noch das ein_ausvonalarm.py läuft.

    Es muss ja auch einmal das Programm laufen, du hast ja die Serviceunit gestartet. Oder ist sie nicht aktiviert worden?

    Wenn du einen Reboot machst, fliegst du ja sowieso mit Putty raus.

    Kannst du dann mehrmals die Meldung auslösen?

    Wenn ja, und du dann mit Putty den Raspberry kontaktierst, dann geht nichts mehr?!?

    Das passiert auch wenn du in einer Windowskonsole mit ssh auf den Raspberry gehst?

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

Jetzt mitmachen!

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