• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

kein Ruhezustand (wg. Samba Freigabe?) - Alternative gesucht

muetze

Zuccalmaglios Renette
Registriert
16.05.06
Beiträge
255
Hi,

der Ruhezustand will nicht so richtig, so lange meine Samba Freigabe aktiv ist - und darauf liegen meine iTunes Songs - also ist sie immer aktiv (per Sleepwatcher wird die Freigabe bei Beendigung des Rugezustandes gemountet).

Ich überlege, mir per AppleScript einen eigenen Ruhezustand zu basteln. Dazu ein paar Fragen:

0. Hat Jemand Erfahrungen mit dieser Idee - oder einen allgemeinen Rat?
1. Kann man per AS feststellen, wann der letzte Tastendruck bzw. Mausbbewegung war?
2. Kann man die Prozessorauslastung abfragen (große Auslastung - kein Ruhezustand wg. irgendwelcher Aktivität)? Am besten natürlich für jedern Prozess einzeln.
3. Kann man vielleicht sogar feststellen, ob alle Programme im Idle-Modus sind (falls es so etwas gibt)?
4. Kann man fetstellen, ob OS X versucht hat, den Ruhezustand herzustellen und woran es gescheitert ist - dann kann man das per AS erledigen)?
5. Was ist noch zu beachten?
6. Wieso kann OS X das nicht selbst?

Weiterhin muss ich noch testen, ob

a) iTunes ein Lied spielt,
b) ob ChronoSync synchronisiert,
c) weitere Programm/Probleme ergeben sich im Betrieb.

Ich bin gespannt
muetze
 

hubionmac

Tydemans Early Worcester
Registriert
25.06.04
Beiträge
393
nö, viel zu komplex für AppleScript... wenn Du sicher gehen willst, dass Dir der Ruhezustand nicht aus versehen aktiviert wird...
Ich würde mal einen richtigen Programmierer fragen, ob man nicht via Cocoa auslesen kann, welches Programm gerade aktiv ist.
Oder die Lösung anders herum. Wenn kein Zugriff auf die Freigabe, dann diese unmounten.. sozusagen das Problem an der Wurzel packen und nicht drum rum programmieren.
iTunes sollte die Freigabe automatisch öffnen, sofern es auf eine Datei darauf zugreifen möchte und mit dem Schlüsselbund kannst du die Anmeldung (kennwort) automatisieren.... funktioniert zumindest bei Apple-Shares so.
 

muetze

Zuccalmaglios Renette
Registriert
16.05.06
Beiträge
255
Danke,

das trifft eigentlich meine Bedenken. Wie kann ich iTunes beibringen, die Freigabe zu mounten, wenn es einen Song spielen will?

Beim Starten von iTunes muss die Freigabe auch gemountet sein, da sonst alle songs ein Ausrufezeichen haben, dass bei nachträglichem mounten nicht verschwindet. Das Spielen eines tracks funktioniert zwar, vor dem nächsten bleibt das Abspielen aber stehen.

Momentan probiere ich systematisch, welche Programme den Ruhezustand alles behindern (gibt es irgendwo eine Liste?):

Wake On Lan
Chicken of the VNC
(to be continued...)

muetze
 

muetze

Zuccalmaglios Renette
Registriert
16.05.06
Beiträge
255
Ich muss die Programme, die angeblich den Ruhezustand verhindern, zurücknehmen.
Das war zwar in dem Moment reproduzierbar so (Programm starten - kein Ruhezustand, Programm schließen - Ruhezustand usw.). Heute funktioniert der Ruhezustand aber trotz der laufenden Programme, wobei Chicken on the VNC keine Verbindung zu einem VNC-Server aufgebaut haben darf - es muss also inaktiv laufen.

Auch WakeOnLAN (jetzt mit Version 0.89) lässt den Ruhezustand zu.

Wie gut, dass Computer keine deterministischen Maschinen sind.

muetze
 

muetze

Zuccalmaglios Renette
Registriert
16.05.06
Beiträge
255
Lösung gefunden

Hi,

ich habe jetzt eine Lösung für mein Problem gefunden, dass der Ruhezustand wegen der bestehen Verbindung zu einem Netzwerklaufwerk (nötig für iTunes Library) nicht eingeleitet wird.

Mit Sleepwatcher trenne ich die Netzwerkverbindung nach 10 Minuten idletime, d.h. wenn 10 Minuten keine Taste gedrückt wurde. Dabei startet Sleepwatcher ein AppleScript
Code:
tell application "Finder"
	try
		eject "NAME DES VOLUMES"
		
		set anzeigetext to "Das Volume \"Name des Volumes\" wurde nach idle-time entfernt." & return & ¬
			return & ¬
			"Soll das Volume \"Name des Volumes\" wieder gemountet werden?" & return
		set antwort to display dialog anzeigetext buttons {"Yes", "No", "Cancel"} default button "Yes" giving up after 30
		if (button returned of antwort) is "Cancel" then
			-- do nothing
		else if (button returned of antwort) is "No" then
			-- do nothing
		else if (button returned of antwort) is "Yes" then
			open "Automount.app"
		end if
		
	end try
end tell

Solange iTunes Lieder abspielt, kann das Laufwerk nicht getrennt werden - es ist gesperrt. Sollte ich 10 Minuten vor dem Rechner sitzen und ohne Tastendruck auf den Bildschirm starren, so kann ich das Laufwerk einfach wieder mounten. Das Script Automount lautet
Code:
tell application "Finder"
	try
		mount volume "smb://Servername/Freigabenname"
	end try
end tell

Beide Scripe sind als ausführbare Programme gespeichert. Das Script Automount wird auch über Sleepwatcher als wakeup-Event aufgerufen, so dass das Volume nach dem Aufwachen immer verfügbar ist.

Da ich im deutschsprachigen Internet keinen Hinweis gefunden habe, wie man mit Sleepwatcher einen idle-time-Event festlegt, hole ich das hier nach:

Nach der Installation von Sleepwatcher gibt es die beiden (versteckten) Dateien ~/.wakeup und ~/.sleep - beide sind leer. In sie kann man Befehe eintragen, die beim Einschlafen bzw. Aufwachen aus dem Ruhezustand ausgeführt werden sollen. .sleep bleibt leer und in .wakeup steht nur
Code:
open "/Pfad zur Datei/Automount.app"
Analog wird eine Datei .idle angelegt und ausführbar gemacht (chmod +x .idle). Diese wird von der Datei /etc/rc.idle aufgerufen. rc.idle gibt es noch nicht und wird durch Kopieren der datei rc.sleep erzeugt. In ihr muss in drei Zeilen der String ".sleep" durch ".idle" ersetzt werden - auch diese daze muss ausführbar sein. rc.idle wird vom startupitem SleppWatcher über die Datei /Library/StartupItem/SleepWatcher/SleepWatcher aufgerufen. An zwei Stellen wird in dieser Datei eine Zeile erweitert und "-t 6000 -i /etc/rc.idle" hinzugefügt. -t 6000 ist der Timer für die idle-Zeit (6000=600 Sekunden), nach der die Datei "-i /etc/rc.idle" augerufen wird.
Code:
{
	ConsoleMessage "Starting Sleep Watcher"
	/usr/local/sbin/sleepwatcher -d -V -s /etc/rc.sleep -w /etc/rc.wakeup -t 6000 -i /etc/rc.idle
	/etc/rc.wakeup
	return 0
}

. /etc/rc.common

StartService ()
{
	ConsoleMessage "Starting Sleep Watcher"
	/usr/local/sbin/sleepwatcher -d -V -s /etc/rc.sleep -w /etc/rc.wakeup  -t 6000 -i /etc/rc.idle
	/etc/rc.wakeup
	return 0
}
Für die Parameter von Sleepwatcher siehe auch "man sleepwatcher" im Terminal; SleepWatcher unterstützt die Events

- beim Einschalten des Ruhezustandes
- beim Aufwachen aus dem Ruhezustand
- nach einer idle-time (selbst zu bestimmen)
- beim Dimmen des Displays
- beim "Un-Dimmen" des Displays
- beim Einschlafen des Displays
- beim Aufwachen des Displays

Und bei jedem Event kan man beliebige Terminal Commandos, AppleScripte oder Programme laufen lassen - damit lässt sich viel anstellen. Vielen Dank für das tolle Programm.

Das wars.

muetze
 
Zuletzt bearbeitet: