Ankündigung

Einklappen
Keine Ankündigung bisher.

Raspi mit Smarthome/Smartvisu-Image: Wie geht Shutdown?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • nobillings
    antwortet
    Ja, du hast recht. Ich hatte den Shell Parameter als optional angesehen. Es war allerdings auch noch eine eckige Klammer zu viel.

    Aber somit geht's jetzt.
    Code:
     subprocess.call("sudo shutdown -hP -t 5 now", shell=True)
    Vielen Dank und Frohe Ostern.

    VG!!

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    nicht ganz. Der zweite hat noch "shell=True" dabei.

    Aber egal, Hauptsache es funktioniert.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • nobillings
    antwortet
    ok, wenn ich smarthome.py zuerst beende wird der shutdwon Befehl nicht mehr ausgeführt. Das sehe ich ein.

    Die Python-Doku gibt zu Shutdown zwei Beispiele:
    https://docs.python.org/3.2/library/subprocess.html#using-the-subprocess-module​
    Code:
    subprocess.call([I]args[/I], [I]*[/I], [I]stdin=None[/I], [I]stdout=None[/I], [I]stderr=None[/I], [I]shell=False[/I])
    Code:
    [COLOR=#C65D09][B]>>> [/B][/COLOR]subprocess[COLOR=#666666].[/COLOR]call([[COLOR=#4070A0]"ls"[/COLOR], [COLOR=#4070A0]"-l"[/COLOR]]) [COLOR=#303030]0[/COLOR]
    [COLOR=#C65D09][B]>>> [/B][/COLOR]subprocess[COLOR=#666666].[/COLOR]call([COLOR=#4070A0]"exit 1"[/COLOR], shell[COLOR=#666666]=[/COLOR][COLOR=#007020][B]True[/B][/COLOR]) [COLOR=#303030]1[/COLOR]
    Den zweiten hatte ich gewählt.

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    du must smarthome.py nicht stoppen das macht der shutdown für dich.
    VG
    Jürgen

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo,

    Zitat von nobillings Beitrag anzeigen
    Gibt es eine Erklaerung, warum der Stop-Befehl nicht funktioniert?
    ja, Du hältst Dich nicht an die Syntax bei dem Subprocess Aufruf. Siehe python doku.

    Bis bald

    Marcus

    P.S. Der Shutdown-Befehl würde so auch nicht klappen.
    Zuletzt geändert von callidomus; 02.04.2015, 15:58.

    Einen Kommentar schreiben:


  • magiczambo
    antwortet
    Du willst sh.py beenden???? Und wer führt dann den shutdown Befehl aus?!?!

    Soviel zum Thema Ast und sitzen.....

    Na dämmerts???

    Einen Kommentar schreiben:


  • nobillings
    antwortet
    Hallo,

    ist schon klar, das mit dem Ast, aber das ist ja auch das Ziel.

    Zur Erklaerung:
    Bei mir im Rack habe ich mehrere PIs und den Russound. Wenn ich die 24/7 durchlaufen lasse, kostet das auf Dauer 'ne Menge Strom. Da wir die meiste Zeit die Geraete jedoch nicht nutzen (schlafen, weg) schalte ich die Steckerleiste per Aktor aus. Momentan halt ohne den PI runterzufahren. Damit ich aber die SD-Karte schone, will ich den Rechner vorher ordentlich herunterfahren. Bei dem piCorePlayer brauche ich das nicht, da der ja nur im RAM laueft und die Karte nicht nutzt.

    Gibt es eine Erklaerung, warum der Stop-Befehl nicht funktioniert?

    VG!



    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    lasse das
    subprocess.call(["/usr/smarthome/bin/smarthome.py --stop"]) weg.
    Das braucht es auf einem Pi nicht. Und irgendwie versuchst Du Dir den Ast abzusägen auf dem Du gerade sitzt.
    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • MichaelBu
    antwortet
    Hallo,
    Ich verwende auch USB (Hager) und das Programmieren mit ETS3 über den Pi geht problemlos solange ich den
    PC über Kabel ans Ethernet hänge. WLAN macht gelegentlich Probleme. Aber nur selten.
    Wenn du die USB Verbindung abziehst und wieder verbindest reicht ein Neustart des eibd um
    alles wieder ans laufen zu bringen. Den ganzen Pi musst du nicht runterfahren.

    Michael

    Einen Kommentar schreiben:


  • nobillings
    antwortet
    Hallo,

    endlich habe ich auch mal Zeit gefunden, mich um das GA gesteuerte Herunterfahren zu kümmern.
    Leider klappt das nicht auf Anhieb aber als Laie kann ich den Fehler nicht entdecken, und es wäre toll, wenn ich etwas Hilfestellung bekäme.
    Was habe ich gemacht?

    Die logic.conf angepasst:
    Code:
    [shutdown]
        filename = shutdown.py
        watch_item = zentral.shutdown # monitor for changes
    Eine neue Konfigurations-Datei zentral.conf:
    Code:
    # /usr/local/smarthome/items/zentral.conf
    [zentral]
        name = Zentral
        [[shutdown]]
            type=bool
            knx_dpt=1
            knx_listen=7/0/0
    Ein neues Python-Skript namens smarthome.py
    Code:
    #!/usr/bin/python3.2
    #
    # logics/smarthome.py
    #
    # Logik zum Herunterfahren vom Smarthome.py
    #
    # 2015-04-01    Version 1.0
    
    # shell Kommando: sudo shutdown -hP -t 5 now
    
    import time
    
    logger.info('Das System wird in 10 Sekunden heruntergefahren.')
    time.sleep(10) # delays for 10 seconds
    
    subprocess.call(["/usr/smarthome/bin/smarthome.py --stop"])
    
    subprocess.call(["sudo shutdown -hP -t 5 now"])
    In der Log-Datei /usr/smarthome/var/log/smarthome.log sehe ich die GA.
    Code:
    2015-04-01 21:43:40,725 DEBUG    Main         Item zentral.shutdown = True via KNX 0.0.0 7/0/0 -- item.py:__update:363
    2015-04-01 21:43:40,733 DEBUG    Main         Triggering shutdown - by: Item source: zentral.shutdown dest: None value: True -- scheduler.py:trigger:162
    2015-04-01 21:43:40,739 INFO     shutdown     Das System wird in 10 Sekunden heruntergefahren. -- shutdown.py:<module>:13
    2015-04-01 21:43:40,749 INFO     Main         knx: 1.1.254 set 7/0/0 to True -- __init__.py:parse_telegram:190
    ...
    2015-04-01 21:43:50,791 ERROR    shutdown     Logic: shutdown, File: /usr/lib/python3.2/subprocess.py, Line: 1371, Method: _execute_child, Exception: [Errno 2] No such file or directory: '/usr/smarthome/bin/smarthome.py --stop' -- scheduler.py:_task:334
    Traceback (most recent call last):
      File "/usr/smarthome/lib/scheduler.py", line 327, in _task
        exec(obj.bytecode)
      File "/usr/smarthome/logics/shutdown.py", line 20, in <module>
        subprocess.call(["/usr/smarthome/bin/smarthome.py --stop"])
      File "/usr/lib/python3.2/subprocess.py", line 471, in call
        return Popen(*popenargs, **kwargs).wait()
      File "/usr/lib/python3.2/subprocess.py", line 745, in __init__
        restore_signals, start_new_session)
      File "/usr/lib/python3.2/subprocess.py", line 1371, in _execute_child
        raise child_exception_type(errno_num, err_msg)
    OSError: [Errno 2] No such file or directory: '/usr/smarthome/bin/smarthome.py --stop'
    So wie ich das verstehe, wird die Logik aufgerufen, 10 Sekunden gewartet und dann der erste Befehl versucht auszuführen. Dann kommt es zu einem Fehler, da angeblich der Pfad nicht gefunden wird. Aber der Ort von smarthome.py ist korrekt. Der zweite Befehl wird dann gar nicht mehr ausgeführt.

    Hast jemand einen Tipp für mich, was da schief läuft? Vielen Dank.

    VG!!
    Zuletzt geändert von nobillings; 01.04.2015, 20:51.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    das hat nichts weiter zu bedeuten.

    Lebe wohl

    Marcus

    Einen Kommentar schreiben:


  • nobillings
    antwortet
    Ok. Ich versuch mich mal daran.

    Bedeutet: 'Bis bald', dass du bald mit meinen Nachfragen rechnest… ?

    VG!

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    ja, geht.

    Logig triggern, in der Logik mit subprocess den Befehl ausführen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • nobillings
    antwortet
    Hi,

    ich greif das Thema nochmals auf, da mein Anliegen etwas noch etwas weiter führt.

    Ich möchte den RasPi herunterfahren wenn ich das Haus verlasse. Als ersten Versuch habe ich im Terminal
    Code:
    sudo shutdown -hP -t 5 now
    als user admin ausgeführt, was auch funktioniert hat. So weit, so gut.

    Nun möchte ich das ganze aber über eine GA ausführen lassen. Geht das?

    VG!

    Einen Kommentar schreiben:


  • accelle
    antwortet
    Zitat von Sipple Beitrag anzeigen
    Edit: HALT! Er fragt dich nach dem Passwort von admin? Wenn du das nicht hast, wie hast du dich dann überhaupt eingeloggt?
    Das war mein Denkfehler. Ich dachte, er fragt mich nach dem Passwort für den Superuser.

    sudo poweroff funktioniert.

    Danke an alle, die sich wegen meiner mangelnden Linux-Kenntnisse den Kopf zerbrochen haben ;-)

    Gruß
    Peter

    Einen Kommentar schreiben:

Lädt...
X