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

    #16
    Edit: HALT! Er fragt dich nach dem Passwort von admin? Wenn du das nicht hast, wie hast du dich dann überhaupt eingeloggt?

    Kommentar


      #17
      Hi,

      Zitat von accelle Beitrag anzeigen
      Leider bekomme ich sowohl bei sudo halt als auch bei sudo init 0 folgende Fehlermeldung:
      Code:
      sudo: no tty present and no askpass program specified
      das hängt glaube ich mit Deinem Terminalprogramm zusammen.
      Bei mir funktioniert sowohl "sudo halt -p" als auch "sudo poweroff" ohne Probleme auf einem Vanilla SmartHome.Pi Image.

      Was gibt den den env bei dir aus?
      Ein Ausschnitt von meiner env:
      Code:
      SSH_TTY=/dev/pts/0
      TERM=xterm-256color
      Und nein, poweroff möchte ich nicht in SmartControl aufnehmen. Ich denke 99% lassen Ihren Pi laufen.

      Bis bald

      Marcus

      Kommentar


        #18
        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

        Kommentar


          #19
          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!

          Kommentar


            #20
            Hi,

            ja, geht.

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

            Bis bald

            Marcus

            Kommentar


              #21
              Ok. Ich versuch mich mal daran.

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

              VG!

              Kommentar


                #22
                Hi,

                das hat nichts weiter zu bedeuten.

                Lebe wohl

                Marcus

                Kommentar


                  #23
                  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.

                  Kommentar


                    #24
                    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

                    Kommentar


                      #25
                      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

                      Kommentar


                        #26
                        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!



                        Kommentar


                          #27
                          Du willst sh.py beenden???? Und wer führt dann den shutdown Befehl aus?!?!

                          Soviel zum Thema Ast und sitzen.....

                          Na dämmerts???
                          Geniale Menschen sind selten ordentlich, ordentliche selten genial. (Albert Einstein)

                          Kommentar


                            #28
                            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.

                            Kommentar


                              #29
                              du must smarthome.py nicht stoppen das macht der shutdown für dich.
                              VG
                              Jürgen

                              Kommentar


                                #30
                                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.

                                Kommentar

                                Lädt...
                                X