Ankündigung

Einklappen
Keine Ankündigung bisher.

Wakeup und Standby - Scriptfragen

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

  • Wakeup und Standby - Scriptfragen

    EDIT von lifeflow: Der Thread bezieht sich auf dieses HowTo: Klick!

    Hallo lifeflow,

    super Anleitung, super Installation, hat alles auf Anhieb funktioniert, vielen Dank dafür,
    das wäre für Laien wie mich ohne so eine Vorarbeit nicht machbar!

    Ich nutze diese Anwendung um nach dem Ruhezustand meinen Mini mit drei Laufwerken meines NAS zu verbinden
    und Itunes zu starten. Wenn der Ruhezustand vom Mini wieder aktiviert wird beende ich Itunes, ggf. EyeTV (falls mittlerweile
    manuell gestartet bzw. durch prog. Aufnahme) und unmounte alle Laufwerke.

    Meistens funktioniert alles wie geplant, mamchmal habe ich allerdings das Problem, dass nach dem Aufwachen ein Dialog offen ist
    der ungefähr folgendes sagt "appleeventhandler hat ein time out problem mit der app onsleep festgestellt". Die startende "wakeup"
    schafft es dann nicht die (übrigens nicht mehr auf dem Desktop sichtbaren) Laufwerke zu mounten sondern öffnet login-Dialoge für das NAS, obwohl passwort und user in dem skript des "wakeup" enthalten sind.

    Ist so ein Verhalten schon anderweitig beobachtet worden?
    Vielleicht müsste ich ja die Laufwerke anders unmounten, mache ich im Moment über den finder.
    Vielen Dank für eine Hilfestellung!
    Zuletzt geändert von lifeflow; 30.03.2013, 02:31.

  • #2
    Hallo aklembke

    Willkommen bei uns im Forum

    Von einem solchen Verhalten habe ich noch nichts gehört. Da sich die Fehlermeldung aber auf die onsleep.app bezieht, scheint diese vor dem Sleep nicht vollständig durchzulaufen. Bei 3 Laufwerken kann es schon mal zu Verzögerungen kommen, bis alle sauber getrennt sind. Der Sleepwatcher verzögert den Standby Trigger um 15 Sekunden. Wenn das onsleep Script bis dahin nicht vollständig durchgelaufen ist, dann "schläft" es ein und läuft nach dem Wakeup weiter. Nur vergeht bis dahin einiges an Zeit und so kommt es zu diesem Timeout. Zumindest ist das meine erste Idee dazu.

    Kannst Du nicht mal Deine Script hier posten? Vielleicht fällt mir etwas dazu ein. Kennst Du diesen Thread? Dort funktioniert das Mounting / Unmounting mit mount und eject. Machst Du das auch mit diesen Befehlen?

    Ausserdem möchte ich Dich bitten, lass das onsleep Script mehrfach von Hand laufen und messe die Zeiten. Ich kann die Wartezeit im Sleepwatcher bei Bedarf noch etwas nach oben verschieben.

    Wir müssen halt erst mal die Ursache eingrenzen. Dann finden wir höchstwahrscheinlich auch eine Lösung

    lg

    Michael
    HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

    Kommentar


    • #3
      OK, werde ich heute abend probieren.
      Manuell habe ich das schon öfter probiert, funktioniert gut.
      Vielleicht ist das Problem, dass das NAS manchmal schon im Ruhezustand ist und der
      Wiederhochlauf dann zu lange braucht, mal schauen ob ich das simulieren kann...
      Die skripte werde ich auf jeden Fall auch mal posten, vielen Dank schon mal!

      Kommentar


      • #4
        Vielleicht ist das Problem, dass das NAS manchmal schon im Ruhezustand ist und der
        Das ist natürlich sehr gut möglich! Ich brauche einfach eine max. Verzögerung für den Standby. Dann kann ich Dir ein angepasstes Installer Paket schnüren
        HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

        Kommentar


        • #5
          Also hier die Skripts:

          "wakeup":

          try

          mount volume "smb://usr:pswd@diskstation.local/Musik"
          end try
          try
          mount volume "smb://usr:pswd@diskstation.local/Fotos"
          end try


          delay 8


          tell application "iTunes" to activate
          try
          mount volume "smb://usr:pswd@diskstation.local/Filme"
          end try

          "onsleep":

          tell
          application "EyeTV" to quit

          tell application "iTunes" to quit
          delay 8
          tell application "Finder"
          try
          eject disk "Musik"
          eject disk "Fotos"
          eject disk "Filme"
          end try
          end tell


          Hoffe das hilft. Gruß und schon mal vielen Dank!
          Das delay ist eingebaut um Zeit zu geben bevor die Programme auf die Mounts zugreifen,
          bzw. um rechtzeitig vor dem unmount geschlossen zu sein, vielleicht brauche ich das ja gar nicht?

          Gruß Knud

          Kommentar


          • #6
            P.S.: Hatte ich vergessen: Mit dem jetzt eingebauten delay läuft onsleep um die 12 sek. allerdings waren die Platten des NAS noch nicht im Ruhezustand...

            Kommentar


            • #7
              Guten Morgen

              Wakeup ist unkritisch. Beim onsleep Script könnte es jedoch Probleme geben. Wie gesagt, der Sleepwatcher startet vor dem Standby das onsleep Script und wartet max. 15 Sekunden. Dann fährt das System in den Standby. In Deinem Script gibt es ja bereits einen Delay von 8 Sekunden, sodass für die eigentlichen Aufgaben des Scripts nur 7 Sekunden übrig bleiben. Und das kann es mit einem NAS im Standby durchaus zu Problemen kommen, wie Du schon angemerkt hast. Aber auch die Punkte "EyeTV beenden" und "iTunes beenden" könnten das Script ausbremsen. Nämlich dann, wenn eine der Anwendungen mal etwas länger braucht um zum Abschluss zu kommen.

              Ich habe jetzt mal folgende Änderungen eingebaut:


              1. Verlängerung des Sleepwatcher Delays

              Der Sleepwatcher verzögert den Standby jetzt um 30 Sekunden. Dadurch steht dem onsleep Script jetzt eine halbe Minute zur Verfügung.

              2. Ich habe die Methode geändert, mit der die Anwendungen EyeTV und iTunes beendet werden

              Dein Code

              tell
              application "EyeTV" to quit

              und

              tell application "iTunes" to quit

              ist völlig korrekt. Allerdings kann es hier zu Problemen kommen, wenn eine Anwendung hängt oder einfach mal länger braucht um sich zu beenden. Ich habe die Anweisungen deshalb durch den folgenden Code ersetzt:

              Code:
              tell application "System Events"
                  get every process
                  if exists application process "EyeTV" then
                      try
                          tell application "System Events" to do shell script "kill -9 " & (unix id of first process whose name is "EyeTV")
                      end try
                  end if
                  if exists application process "iTunes" then
                      try
                          tell application "System Events" to do shell script "kill -9 " & (unix id of first process whose name is "iTunes")
                      end try
                  end if
              end tell
              Hier wird zunächst festgestellt, ob die Anwendungen überhaupt laufen. Wenn ja, dann erfolgt das Schliessen über einen Shell Script Aufruf. Mit einem kill -9 wird der jeweilige Prozess der Anwendung einfach "abgeschossen".

              3. Ich habe den Delay in Deinem Script von 8 auf 3 Sekunden reduziert

              Das sollte jetzt völlig ausreichen, da die Anwendungen mit der kill -9 Methode sehr schnell beendet werden können.


              Im Anhang findest Du ein neues Installer Paket. Darin sind bereits alle Änderungen enthalten, also auch Dein wakeup Script und das neue onsleep Script. Starte die Installation einfach nochmals aus dem neuen Paket.

              lg

              Michael

              Sleepwatcher_install.zip
              HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

              Kommentar


              • #8
                Guten Morgen,

                wahnsinn, dieser Service...


                Herzlichen Dank schon mal, ich werde heute abend alles ausprobieren und
                dann hier berichten wie es funktioniert!

                Kommentar


                • #9
                  Viel Erfolg damit! Bin mal gespannt, ob jetzt alles klappt
                  HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

                  Kommentar


                  • #10
                    So, jetzt habe ich den neuen Installer durchlaufen lassen, hat wieder super funktioniert.
                    Das onsleep skript war noch das alte, ich habe einfach Deine Ergänzung bzgl. Programmbeendigung
                    eingefügt, hat auf Anhieb getan was es soll, vielen Dank dafür!
                    Frage: Entspricht der kill-Befehl dem Menüpunkt sofort beenden? Kann es dann sein dass ich mir
                    damit bei ungünstiger Konstellation die Mediathek zerschiesse?
                    Auf jeden Fall ist das Ursprungsthema mit der verlängerten sleepwatcher-verzögerung erstmal gelöst,
                    Klasse!
                    Vielleicht hilft das ja auch anderen: Der Grund für diese Übung ist, dass seit mountain lion meine Freigaben auf dem NAS
                    nicht mehr zuverlässig verbunden bleiben, sondern nach längerem Ruhezustand plötzlich verschwunden sind,
                    was dann wiederum Itunes abstürzen lässt. Da Eyetv beim Start das Laufwerk notfalls selbst mounted ist hier
                    das Problem kleiner, kann allerdings bei bereits offenem Eyetv bei mir manchmal auch zu Zugriffsfehlern führen.
                    Ich werde mal berichten ob sich die Konstellation so bewährt, nochmal vielen Dank!!

                    Kommentar


                    • #11
                      Frage: Entspricht der kill-Befehl dem Menüpunkt sofort beenden? Kann es dann sein dass ich mir
                      damit bei ungünstiger Konstellation die Mediathek zerschiesse?
                      Ja, das entspricht dem Punkt "Sofort beenden". Eine zerschossene Mediathek ist mir dabei noch nicht begegnet, aber unmöglich ist nichts. Wenn Dir das lieber ist, dann kannst Du natürlich den alten Code wieder einfügen. Mit den 30 Sekunden Verzögerung sollte das genauso funktionieren. Es sei denn, eine der Anwendungen hängt tatsächlich einmal.

                      lg

                      Michael
                      HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

                      Kommentar


                      • #12
                        Ok, ich fahre jetzt erst mal so (mit "kill"), bis jetzt funktioniert es wunderbar
                        und allemFehlermeldungen sind Geschichte!
                        Gruss Knud

                        Kommentar


                        • #13
                          Hallo,
                          ich hatte jetzt den Tag über verschiedene Aufnahmen programmiert und es gab
                          doch noch verschiedene meldungen bzgl. Serververbindungen.
                          Ich denke es könnte helfen, wenn man bei den onsleep und wakeup apps
                          unterscheiden könnte, ob der wakeup/ sleep durch Eyetv oder durch ein anderes
                          Ereignis ausgelöst wurde: Insbesondere beim sleep ist ja eigentlich Eyetv gerade dabei
                          den Mac schlafen zu schicken und wird dann abgeschossen durch "kill".
                          Ideal wäre, wenn man zunächst detektieren könnte, ob der mac wegen eyetv aktiv ist und
                          dann lediglich das volume filme unmounted wird und der Rest des Skripts geskipped wird...
                          Dazu müsste man dann beim wakup natürlich das ganze skript skippen und den mount durch eyetv
                          erfolgen lassen.
                          Gibt es dazu in diesem großen Fundus vielleicht schon eine Lösung?
                          Gruß Knud

                          Kommentar


                          • #14
                            Hallo Knud

                            Welches Programm den Standby Trigger abgesetzt hat, dürfte sich nicht so ohne Weiteres feststellen lassen. Zumindest ist mir aus dem Hut kein Weg bekannt. Beim Wakeup lässt sich schon eher etwas machen. Da könnte man am Anfang eine kleine Verzögerung einbauen und dann prüfen ob EyeTV aktiv ist. Wenn ja, dann wurde der Mini höchstwahrscheinlich dadurch geweckt.

                            Ich versuche mal eine Zusammenfassung Deiner Anforderungen, so wie ich sie verstanden habe:

                            Wakeup soll feststellen ob das System von EyeTV für eine Aufzeichnung geweckt wurde.

                            Wenn ja:

                            - Es wird nur das Filme Laufwerk gemounted, der Rest wird übersprungen.
                            - Beim Standby wir nur das Filme Laufwerk getrennt. Der Rest wird übersprungen.

                            Wenn nein:

                            - Beide Script laufen komplett durch.


                            Das ist nicht sehr schwer zu realisieren. Da Du EyeTV ja nicht per Default beim Wakeup starten lässt, können wir das als Kriterium nehmen. Hier mal ein Vorschlag für das Wakeup Script:

                            Code:
                            try
                                mount volume "smb://usr:pswd@diskstation.local/Filme"
                            end try
                            
                            delay 10
                            
                            tell application "System Events"
                                get every process
                                if exists application process "EyeTV" then return
                            end tell
                            
                            try
                                mount volume "smb://usr:pswd@diskstation.local/Musik"
                            end try
                            try
                                mount volume "smb://usr:pswd@diskstation.local/Fotos"
                            end try
                            
                            delay 3
                            
                            tell application "iTunes" to activate
                            Als erstes wird die Freigabe "Filme" verbunden, da diese ja in jedem Fall verbunden werden soll. Anscliessen erfolgt eine Pause von 10 Sekunden. Damit wird EyeTV ein kleiner Vorsprung gegeben, falls es gerade startet, was ja bei einem Wakeup für eine programmierte Aufzeichnung der Fall wäre.

                            Nun wird per System Events geprüft ob EyeTV läuft. Wenn ja, dann wird das Script abgebrochen. Wenn nicht, dann läuft das Script fertig durch und verbindet die restlichen Freigaben, startet iTunes.

                            Alternativ könnte man das Mounting für den Filme Ordner auch wieder ans Ende des Scripts stellen. Dann wird der Befehl auch nur ausgeführt wenn EyeTV nicht läuft.


                            Jetzt zum Standby.

                            Hier musst Du eigentlich nicht viel ändern. Ich habe lediglich die 3 eject Anweisungen jeweils in eigene try / end try Tags gesetzt, damit in jedem Fall alle Anweisungen abgearbeitet werden. Hier spielt es überhaupt keine Rolle, ob beim Standby nur eine oder alle drei Freigaben verbunden sind. AUf das Script hat das keine Auswirkungen. Also sollte es auch keine Rolle spielen, welche Anwendung den Standby ausgelöst hat.

                            Code:
                            tell application "System Events"
                                get every process
                                if exists application process "EyeTV" then
                                    try
                                        tell application "System Events" to do shell script "kill -9 " & (unix id of first process whose name is "EyeTV")
                                    end try
                                end if
                                if exists application process "iTunes" then
                                    try
                                        tell application "System Events" to do shell script "kill -9 " & (unix id of first process whose name is "iTunes")
                                    end try
                                end if
                            end tell
                            
                            delay 3
                            
                            tell application "Finder"
                                try
                                    eject disk "Musik"
                                end try
                                try
                                    eject disk "Fotos"
                                end try
                                try
                                    eject disk "Filme"
                                end try
                            end tell

                            Zitat von aklembke Beitrag anzeigen
                            Ich denke es könnte helfen, wenn man bei den onsleep und wakeup apps
                            unterscheiden könnte, ob der wakeup/ sleep durch Eyetv oder durch ein anderes
                            Ereignis ausgelöst wurde: Insbesondere beim sleep ist ja eigentlich Eyetv gerade dabei
                            den Mac schlafen zu schicken und wird dann abgeschossen durch "kill".
                            Das habe ich nicht so ganz verstanden. Wie löst EyeTV den Standby aus? Hast Du ein RecordingDone Script in Verwendung? Wenn ja, dann poste das bitte mal. Dann können wir die Scripte aufeinander abstimmen.

                            lg

                            Michael


                            P.S.: Die Erkennung, ob das System durch EyeTV geweckt wurde, haben wir in abgewandelter Form schon in diesem Paket verarbeitet: Klick! Du kannst Dir das Paket ja mal laden und die Scripte zerpflücken. Vielleicht ist noch etwas für Dich dabei
                            Zuletzt geändert von lifeflow; 27.03.2013, 23:14.
                            HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

                            Kommentar


                            • #15
                              Hallo Michael,

                              genau so hatte ich es mir ungefähr vorgestellt. Ich habe jetzt den mount "Filme" an das Ende des Skripts gestellt,
                              so dass in dem Fall in dem Eyetv den Rechner weckt mit Deiner Skript-Ergänzung wakeup gar keinen Effekt mehr
                              hat, so probiere ich das jetzt mal.
                              Die Ergänzungen im onsleep habe ich auch genau so übernommen, wenn ich das richtig verstanden habe
                              dann wurde vorher beim unmount das skript u.U. verlassen auch wenn nicht alle Platten umounted waren
                              (weil zB vielleicht die erste Platte nicht gemounted war und dann ein Abbruch erfolgte), das wäre dann so deutlich
                              besser.

                              Bezüglich Deiner Frage: Ich war davon ausgegangen, da Eyetv den Rechner ja weckt, dass es den Rechner dann auch
                              wieder schlafen schickt. Ist das nicht so? Dann dürfte sich natürlich beim Wechsel in den Ruhezustand nichts in die Quere
                              kommen. Zusätzliche eigene Skripte verwende ich jedenfalls nicht...

                              Die anderen Skripte schau ich mir auf jeden Fall noch an, Danke für den Hinweis!

                              P.S:Irgendwie insgesamt ein ganz schön großer Aufwand, nur weil die Freigaben nicht sicher verbunden bleiben, das lief
                              unter Snow Leopard deutlich stabiler, ich habe aber leider bisher die eigentliche Ursache nicht finden können... :-((

                              P.P.S: Seit ca 4 Wochen ändert Eyetv bei mir die eytvsched Pakete nach erfolgreicher Aufnahme nicht mehr um in .eyetv,
                              die Filmdatei liegt trotzdem normal im Paket und wird auch vom Archiv erkannt. Hinweis des Supports: Passiert nur bei
                              crash, dh mein eyetv müsste bei jeder Aufnahme crashen, das kann ja eigtl nicht sein (Lösungsvorschlag: Eyetv neu inst.).
                              Das kann ja aber vermutlich nichts mit der "sleepwatcher-Vorgehensweise" zu tun haben oder?

                              vg Knud

                              Kommentar

                              Lädt...
                              X