Elinoy
Anmeldungsdatum: 2. Mai 2009
Beiträge: 345
|
Hallo, Folgendes Problem: Ich habe auf meinem Mediacenter einen Dienst, der meine Anlage über das Netzwerk aus/anschaltet, was soweit auch funktioniert. Nun möchte ich, dass dieser Dienst beim Suspend/Resume gestoppt/gestartet wird. Hierfür habe ich wie im Wiki beschrieben unter /usr/lib/pm-utils/sleep.d eine Datei namens 05_fhem angelegt, die folgenden Inhalt hat: 1
2
3
4
5
6
7
8
9
10
11
12 | #!/bin/bash
case "$1"
suspend|suspend_hybrid|hibernate)
service fhem stop
;;
resume|thaw)
service fhem start
;;
*)
;;
esac
|
Leider passiert weder beim Suspend noch beim Resume irgendetwas. Ich habe den Verdacht, dass das damit zusammenhängt, das zu diesem Zeitpunkt das Netzwerk nicht mehr/noch nicht verfügbar ist. Kann mir da jemand weiterhelfen? MfG
|
Vibaf
Ehemaliger
Anmeldungsdatum: 27. Dezember 2007
Beiträge: 3046
|
xXNeXoNXx schrieb: Leider passiert weder beim Suspend noch beim Resume irgendetwas. Ich habe den Verdacht, dass das damit zusammenhängt, das zu diesem Zeitpunkt das Netzwerk nicht mehr/noch nicht verfügbar ist.
Wenn die Rechte passend gesetzt wurden, vermute ich das auch. Wie schickst du denn dein Mediacenter in den Schlaf (GUI, ssh, script)? Das Starten kannst du ja verzögern, bis eine Netzwerkverbindung (while ! ping -c1 -w1 ip.des.routers >/dev/null 2>&1; do sleep 1; done ) besteht, oder es in einem NetworkManager/Dispatcher-Skript ausführen.
|
Elinoy
(Themenstarter)
Anmeldungsdatum: 2. Mai 2009
Beiträge: 345
|
Vibaf schrieb: Wenn die Rechte passend gesetzt wurden, vermute ich das auch. Wie schickst du denn dein Mediacenter in den Schlaf (GUI, ssh, script)?
Mithilfe eines CEC-Adapters und einer Fernseher-Fernbedienung. Ich habe jetzt ein NetworkManager-Dispatcher-Script geschrieben, das folgendermaßen aussieht: 1
2
3
4
5
6
7
8
9
10
11
12
13 | #!/bin/bash
case "$2" in
up)
service fhem start
;;
pre-down)
service fhem stop
;;
*)
;;
esac
|
Das Script liegt unter /etc/NetworkManager/dispatcher.d, gehört root:root und hat eine 755-Berechtigung. Leider tut das Ganze immer noch nicht. Zur Hilfe ansonsten noch das Script für den Dienst (Der nach wie vor bei einem sudo service fhem start|stop hervorrangend funktioniert): 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | #! /bin/sh
### BEGIN INIT INFO
# Provides: Start/Stop for fhem devices
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Kurze Beschreibung
# Description: Längere Bechreibung
### END INIT INFO
# Author:
# Aktionen
case "$1" in
start)
/opt/fhem.pl pib:7072 "set Anlage on"
;;
stop)
/opt/fhem.pl pib:7072 "set Anlage off"
;;
restart)
;;
esac
exit 0
|
Hast du vielleicht noch eine Idee, warum das Ganze nicht funktioniert?
|
Vibaf
Ehemaliger
Anmeldungsdatum: 27. Dezember 2007
Beiträge: 3046
|
Also das starten sollte jetzt funktionieren. Das Dispatcher-Skript funktioniert natürlich nur, wenn du auch den Network-Manager benutzt. Ein pre-down -Event gibt es nicht. Der Network-Manager kann ja nicht hell sehen, wann ein LAN-Kabel gezogen wird oder die WLAN-Verbindung getrennt wird. xXNeXoNXx schrieb: Mithilfe eines CEC-Adapters und einer Fernseher-Fernbedienung.
Ist da ein direkter Button für das Schlafenlegen mit drauf oder hast du da noch was gebastelt. Vielleicht kann man dieses Signal abfangen und ein Skript, o.ä., ausführen, was dann die Anlage ausschaltet und den Rechner danach in schlafen legt.
|
Elinoy
(Themenstarter)
Anmeldungsdatum: 2. Mai 2009
Beiträge: 345
|
Das Starten funktioniert tatsächlich, das Gerät war nur vorher an, also ist nichts passiert und ich dachte, es ginge nicht. Jetzt zum Stoppen. Ich habe einen Pulseeigt-CEC-Adapter und die "libcec" installiert, der Rest war plug-und-play. Das Problem ist jetzt aber, dass XBMC seine Keymaps normalerweise unter ~/.xbmc/userdata/keymaps/remote.xml speichert.
In der entsprechenden Datei steht für die Aktion "power" allerdings überall "xbmc.shutdown()" was zu einem herunterfahren führt. Die Fernbedienung fährt die Kiste aber nicht herunter, sondern setzt sie in den Standby. Die enstprechende Einstellung ist unter ~/.xbmc/userdata/peripheral_data zu finden, auch in einer xml. Wie ich das Ganze aber dazu bringen soll, aus einer XML heraus einen Befehl auszuführen, weiß ich nicht. Gibt es keine Möglichkeit beim Suspend Kommandos frühzeit(iger) ausführen zu lassen?
|
Vibaf
Ehemaliger
Anmeldungsdatum: 27. Dezember 2007
Beiträge: 3046
|
Nachdem du Ubuntu als Version angegeben hast, gehe ich davon aus, dass du Unity als Desktop-Environtment installiert hast. Da kann man mittels gsettings die Aktion des Suspend-Buttons deaktivieren und eine neue Tastenkombination anlegen. Nutzt du Unity oder läuft XMBC standalone?
|
Elinoy
(Themenstarter)
Anmeldungsdatum: 2. Mai 2009
Beiträge: 345
|
Ubntu und Unity sind installiert, allerdings läuft der entsprechende User in einer XBMC-Session.
|
Vibaf
Ehemaliger
Anmeldungsdatum: 27. Dezember 2007
Beiträge: 3046
|
Elinoy schrieb: [...] Wie ich das Ganze aber dazu bringen soll, aus einer XML heraus einen Befehl auszuführen, weiß ich nicht. Gibt es keine Möglichkeit beim Suspend Kommandos frühzeit(iger) ausführen zu lassen?
Hab was gefunden:
In der XML-Datei unter ~/.xbmc/userdata/peripheral_data solltest du dann also den Eintrag für Suspend so anpassen, dass ein Script ausgeführt wird. In diesem Script wird zuerst die Anlage ausgeschalten und dann das System schlafen gelegt. Bsp.: | #!/bin/bash
service fhem stop
pm-suspend # eventuell anderer Befehl!?
|
Vielleicht wird auch sudo benötigt. Ich hoffe, du kannst damit was anfangen.
|
Elinoy
(Themenstarter)
Anmeldungsdatum: 2. Mai 2009
Beiträge: 345
|
Ja das hatte ich auch schon gefunden, das Problem ist, dass diese *.xml anders aufgebaut ist als die remote.xml, es gibt kein "Bei Knopfdruck X tue Y" sondern Optionen die bestimmte vorgegebene Werte haben. Die Datei sieht bei mir folgendermaßen aus: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | <settings>
<setting id="activate_source" value="1" />
<setting id="cec_hdmi_port" value="5" />
<setting id="cec_standby_screensaver" value="0" />
<setting id="cec_wake_screensaver" value="1" />
<setting id="connected_device" value="36037" />
<setting id="device_name" value="XBMC" />
<setting id="device_type" value="1" />
<setting id="double_tap_timeout_ms" value="2000" />
<setting id="enabled" value="1" />
<setting id="pause_playback_on_deactivate" value="1" />
<setting id="physical_address" value="0" />
<setting id="port" value="" />
<setting id="send_inactive_source" value="1" />
<setting id="standby_devices" value="36037" />
<setting id="standby_devices_advanced" value="" />
<setting id="standby_pc_on_tv_standby" value="13011" />
<setting id="standby_tv_on_pc_standby" value="1" />
<setting id="tv_vendor" value="0" />
<setting id="use_tv_menu_language" value="1" />
<setting id="wake_devices" value="36037" />
<setting id="wake_devices_advanced" value="" />
</settings>
|
Zeile 17 sorgt dafür, dass die Kiste schlafen geschickt wird, aber ich glaube kaum, dass man an der Stelle ein Kommando ausgeführt bekommt.. Eine Beschreibung des Inhalts findet sich hier: https://github.com/xbmc/xbmc/blob/master/system/peripherals.xml Ich bin wegen des Problems echt ratlos, hat vielleicht jemand noch eine Idee?
|