Hi,
gibt es irgendeine Möglichkeit (callback o.ä.), dass man eine Funktion ausführen lassen kann, wenn die Box aus dem Standby zurückkommt?
DrMichael
Hi,
gibt es irgendeine Möglichkeit (callback o.ä.), dass man eine Funktion ausführen lassen kann, wenn die Box aus dem Standby zurückkommt?
DrMichael
schreibs halt in die Standby.py rein
ZitatOriginal von DrMichael
gibt es irgendeine Möglichkeit (callback o.ä.), dass man eine Funktion ausführen lassen kann, wenn die Box aus dem Standby zurückkommt?
Mittlerweile bin ich schlauer:
So einfach kann das Leben sein...
DrMichael
Standby ist bis zu Eintritt des Standbys None, du musst also eine Weiche bauen und ein wenig selbst haushalten...
ZitatOriginal von ritzMo
...du musst also eine Weiche bauen und ein wenig selbst haushalten...
Ähm..... ???????
Das heißt im Klartext?
Ich scheine irgendwo einen Denkfehler zu haben.
Hast du eventuell eine Lösung für mein Problem?
Du kannst dich NICHT dauerhaft an diese Liste anhängen in Enigma2 (zumindest nicht mit Bordmitteln).
Du musst im Prinzip jedes mal wenn du aktiv wirst und etwas machen würdest, das du nicht im Standby tun willst (z.B. Bildschirmausgabe) prüfen ob Standby != None (sprich aktiv) ist. Dann kannst du dich einmalig für den aktuellen Standby an die Liste anhängen.
Demnach gibt es keine andere Möglcihkeit als das Patchen der Standby.py, wenn man das Ereignis "Standby" bekommen möchte?
Mein Ziel war beim Schalten in Standby, bzw bei der Rückkehr, ein weiteres Ereignis auszulösen.
Du mist deine Funktion komplett mit dem Pluginnamen als Callback eintragen. Weil so wie du es oben stehen hast ist das eine undefinierte Variable, deswegen None Type Object.
Und Ppatchen braucht manb dafür definitiv NICHT.
Standby.inStandby.onClose.append(MeinPlugin.meineFunktion)
Ich komm da nicht wirklich weiter
Mal hier alles, was ich habe:
Unter "/usr/lib/enigma2/python/Plugins/Extensions/events" liegen 2 Files:
-rwxr-xr-x 1 root root 0 Aug 6 16:30 __init__.py
-rw------- 1 root root 1044 Aug 6 16:30 plugin.py
In der plugin.py steht folgendes:
from enigma import iRecordableService
from Plugins.Plugin import PluginDescriptor
from Screens import Standby
import os
session = [ ]
def startStandby():
print "start Standby"
def stopStandby():
print "stop Standby"
def gotRecordEvent(service, evt):
print "got recordevent for service"
if evt == iRecordableService.evStart:
if len(session.nav.getRecordings()) == 1:
print "start recording"
elif evt == iRecordableService.evEnd:
if len(session.nav.getRecordings()) == 0:
print "stop recording"
else:
print "event not relevant", evt
def autostart(reason, **kwargs):
global session
if "session" in kwargs:
session = kwargs["session"]
session.nav.record_event.append(gotRecordEvent)
Standby.inStandby.onShow.append(events.startStandby)
Standby.inStandby.onClose.append(events.stopStandby)
return
if reason == 0: # startup
print "start"
def Plugins(**kwargs):
return PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc = autostart)
Alles anzeigen
Trotz allem bekomme ich nur die bekannte Fehlermeldung:
Wie ich schrieb musst du deine Funktion anders ansprechen!
session.nav.record_event.append(Plugins.events.gotRecordEvent)
Oder ähnlich. Hab die Syntax grade auch nicht wirklich im Kopf. Aber nach dem Prinzip sollte das funktionieren.
Mal abgesehen davon, das er Standby.inStandby.onShow schon nicht kennt.