Jump to content

SuspendGhost: Steuerung von Standby / Ruhezustand mit EventGhost


mrphlox

Recommended Posts

bin ich denn deppert? ;) ich komm' aus der UNIX Ecke ... nix Umlaute :)

ah ja stimmt, Umlaute verleiden einem in *nix ganz schnell! Kann dieses OS überhaupt mit mehr als 7bit ASCII vernünftig umgehen?? :bounce:

Link to comment

Und nochmals eine neue Vorab-Version zum Testen: SuspendGhost_1.0.5_rc4

...und nochmals eine ganze Anzahl Änderungen und Verbesserungen, der Begriff "rc" ist wohl etwas vorgegriffen, was soll's ;)

 

Changes

  • Externe Events bei den DVBViewer Commands hinzugefügt
  • Neues Macro 'DVBViewer: Close OSD'
  • Check IsConnected für DVBViewer Commands korrigiert
  • Bug fix: Standby Trigger kam in gewissen Situationen viel zu spät (broken in rc3)
  • Auto-Suspend-Verhalten verbessert durch Unterscheidung NI-/I-Mode auch wenn DVBViewer nicht läuft: Im I-Mode folgt Auto-Suspend neu nach 10 Minuten Inaktivität, im NI-Mode bereits nach 1 Minute. (Die 10 Minuten sind konfigurierbar in Subroutines > StartSleepTimer > Restart IM Suspend Timer, die 1 Minute in der Plugin Konfiguration von Standby Control).
  • Kürzerer Timeout im NI-Mode bei laufendem DVBViewer: 5 Minuten im NI-Mode (reduziert) (und 2h im I-Mode, unverändert).
  • Anzeige der verbleibenden Zeit im NI-Mode als OSD Indikator oben rechts.
  • OSD Hinweis während Graph gestoppt
  • StandbyControl Plugin 1.11:
    • Bug Fix: bei wiederholtem Aufruf von 'Inhibit' in kurzen Abständen kam es zu einem Thread-Deadlock, welcher EG ins Elend riss (broken in 1.09)
    • Anzeige der Anzahl aktiver Prozesse in der Plugin Config

    [*]DVBViewer Plugin 2.1.0:

    • Neue Action 'GetTimerDetails' implementiert
    • Neue Action 'GetChannelDetails' implementiert
    • Neue Action 'TuneChannel' implementiert
    • Umstellung auf 64bit channelIDs und andere interne Verbesserungen

    [*]Auto-Tune Recording Channel nach Resume (auf Basis der neuen Actions)

Nun musste also auch noch das DVBViewer Plugin dran glauben und für meine Erweiterungen hinhalten :)

Ich hoffe, dass niemand etwas dagegen hat, wenn ich da mit entwickle... aber es sind sinnvolle und universelle Erweiterungen. Wer sieht sich eigentlich als Owner von diesem Plugin??

 

Ich hatte folgende Knacknuss: Ich habe zwei DVB-C Karten, eine gute (KNC One) und eine miese (Technisat); die miese produziert sehr oft Signalfehler. Im RS habe ich daher die gute KNC Karte als "Bevorzugt" konfiguriert. Nach dem Resume wird DVBViewer automatisch gestartet und Live-TV erhält das Signal von der guten Karte. Ein paar Minuten später startet evtl. eine Aufnahme, und diese bekommt dann nur noch die miese Karte. Abhilfe? -> Die Idee ist, nach dem automatischen Start gleich noch den Sender einzustellen, auf welchem die nächste geplante Timeraufnahme läuft. Damit sind die Chancen hoch, dass die Aufnahme mit der guten Karte durchgeführt wird.

 

Um das zu verwirklichen, brauchte ich neue Actions im DVBViewer Plugin:

  • GetTimerDetails: Liefert eine Liste aller Timers oder nur einen einzelnen Timer mit den Details
  • GetChannelDetails: Liefert die Kanalliste oder nur einen einzelnen Kanal mit allen Details
  • TuneChannel: Einen beliebigen Sender in DVBViewer einstellen

 

In SG wird zuerst der Sender der nächsten Timeraufnahme ermittelt und mit dem aktuell eingestellten Sender verglichen. Wenn die TSID (Transport Stream ID) der beiden Sender unterschiedlich ist, wird der Sender der nächsten Aufnahme in DVBViewer eingestellt.

 

Möglicherweise finden das automatische Tunen beim Starten nicht alle gleich toll (z.B. wenn man zwei gleichwertige Karten hat oder nur eine Karte) - das Feature kann daher in 'Initialize > Init variables' mit 'eg.globals.autoTuneRecChannel = False' ausgeschaltet werden (oder einfach durch Deaktivieren des Macros 'DVBViewer: Tune channel of next recording if necessary').

 

Wichtiger Hinweis zum Mergen mit bestehender SG-Config: Die "Standby default time" in der Plugin-Konfiguration von Standby Control beträgt neu 60 sec und muss nach dem Mergen manuell angepasst werden.

 

(attachment gelöscht, da obsolet)

Edited by mrphlox
Link to comment
2012-03-02 12:55:12                    ACTION: eg.globals.autoTuneRecChannel and eg.globals.restartDVBViewer
2012-03-02 12:55:12                    ACTION: Wenn erfolgreich springe zu "DVBViewer: Tune channel of next recording if necessary" und kehre zurück
2012-03-02 12:55:12                       MACRO: DVBViewer: Tune channel of next recording if necessary
2012-03-02 12:55:12                          ACTION: All In One Script: Tune channel of next recording if necessary
2012-03-02 12:55:13                             ACTION: Traceback (most recent call last):
2012-03-02 12:55:13                             ACTION: Python script "8", line 20, in <module>
2012-03-02 12:55:13                             ACTION: currentChannel = eg.plugins.DVBViewer.GetChannelDetails(currentChannel=True)
2012-03-02 12:55:13                             ACTION: File "C:\Program Files\EventGhost\eg\Utils.py", line 127, in LogItWithReturnWrapper
2012-03-02 12:55:13                             ACTION: result = func(*args, **kwargs)
2012-03-02 12:55:13                             ACTION: File "C:\Program Files\EventGhost\plugins\DVBViewer\__init__.py", line 3941, in __call__
2012-03-02 12:55:13                             ACTION: CALLWAIT_TIMEOUT
2012-03-02 12:55:13                             ACTION: File "C:\Program Files\EventGhost\eg\Classes\ThreadWorker.py", line 234, in CallWait
2012-03-02 12:55:13                             ACTION: return self.Func(func, timeout)()
2012-03-02 12:55:13                             ACTION: File "C:\Program Files\EventGhost\eg\Classes\ThreadWorker.py", line 62, in __call__
2012-03-02 12:55:13                             ACTION: self.returnValue = self.func(*self.args, **self.kwargs)
2012-03-02 12:55:13                             ACTION: File "C:\Program Files\EventGhost\eg\Utils.py", line 127, in LogItWithReturnWrapper
2012-03-02 12:55:13                             ACTION: result = func(*args, **kwargs)
2012-03-02 12:55:13                             ACTION: File "C:\Program Files\EventGhost\plugins\DVBViewer\__init__.py", line 1081, in GetChannelDetails
2012-03-02 12:55:13                             ACTION: channelID = self.GetCurrentChannel().ChannelID
2012-03-02 12:55:13                             ACTION: AttributeError: 'NoneType' object has no attribute 'ChannelID'
2012-03-02 12:55:13                          ACTION: Springe zu "EndOfTheStory"
2012-03-02 12:55:13                             MACRO: EndOfTheStory
2012-03-02 12:55:13                                ACTION: Do nothing
2012-03-02 12:55:13                          ACTION: eg.globals.restartDVBViewer = False

Link to comment

Ich hoffe, dass niemand etwas dagegen hat, wenn ich da mit entwickle... aber es sind sinnvolle und universelle Erweiterungen. Wer sieht sich eigentlich als Owner von diesem Plugin??

Das steht doch im Quelltext! :P

Der Author ist hier unter dem Account "Prinz" registriert.

Dagegen kann da niemand was haben. Ist ja eh opensource und GPL.

Link to comment

Das steht doch im Quelltext! :P

Der Author ist hier unter dem Account "Prinz" registriert.

Dagegen kann da niemand was haben. Ist ja eh opensource und GPL.

Den habe ich auch schon mal angepingt - aber noch keine Antwort erhalten. Ausserdem ist er einer von drei vermerkten Autoren, was ja auch im Source Code steht :bye:

Link to comment

2012-03-02 12:55:13                             ACTION: channelID = self.GetCurrentChannel().ChannelID
2012-03-02 12:55:13                             ACTION: AttributeError: 'NoneType' object has no attribute 'ChannelID'

Sieht danach aus, dass das COM-Interface von DVBViewer nicht bereit war.

Was sind die genaueren Umstände? Tritt das immer, ab und zu oder einmalig auf? Lief DVBViewer zum Fehlerzeitpunkt? Ist der Fehler reproduzierbar, wenn du DVBViewer zuerst händisch startest und erst dann EG? (Vielleicht ist es ein Timing-Problem).

 

"Fehlerkorrekturen können nicht besser sein wie die Fehlerberichte" - ein alter Spruch aus der QA ;)

Link to comment

Sieht danach aus, dass das COM-Interface von DVBViewer nicht bereit war.

Was sind die genaueren Umstände? Tritt das immer, ab und zu oder einmalig auf? Lief DVBViewer zum Fehlerzeitpunkt? Ist der Fehler reproduzierbar, wenn du DVBViewer zuerst händisch startest und erst dann EG? (Vielleicht ist es ein Timing-Problem).

 

"Fehlerkorrekturen können nicht besser sein wie die Fehlerberichte" - ein alter Spruch aus der QA ;)

passiert immer.

 

nach Resume

nach einem EG Start wenn DVBViewer nicht lief

nach einem EG Start wenn DVBViewer lief und neu gestartet wurde

Link to comment

habe mir das jetzt mal angeschaut (war ein paar Tage weg). Ich schätze, es liegt an deiner DVBViewer Config. Ich kann den Fehler nur reproduzieren, wenn ich DVBViewer mit geschlossenem Graphen starte. Dann ist es logisch, dass es nicht geht, d.h. dass die Funktion 'GetCurrentChannel()' 'None' zurückliefert. Das einzige, was ich dann tun kann, ist die Situation besser abfangen, sodass im Logfile keine Fehlermeldung erscheint. Startest du DVBViewer mit geschlossenem Graphen?

Link to comment

aah :) das klingt logisch. Jep, bei mir wird der DVBViewer ohne Sender gestartet. Könnte ich aber eigentlich wieder aktivieren, hatte ich nur rausgenommen gehabt vor Ewigkeiten, damit das Ding irgendwann in den Standby geht und den Standby nicht blockiert, aber dank SG ist das ja eh alles hinfällig :-)

Link to comment

ansonsten hab' ich nix zu meckern, die letzte Version funktioniert einfach :-)

 

abgesehen von dem GetCurrentChannel(), das habe ich aber auskommentiert, weil ich das ansich nicht brauche.

Link to comment

schön, freut mich zu hören, bei mir funktioniert's auch tip-top. Ich denke, der offizielle Release ist nicht mehr weit.

 

Eine hübsches Detail habe ich noch eingebaut: Wenn eine Timeraufnahme startet, werden die Timer-Details ins Log geschrieben. Für die Fehlersuche ganz praktisch.

2012-03-08 20:27:09  EVENT: DVBViewerService.StartRecord (11, 1)
2012-03-08 20:27:09     MACRO: OnDvbvNewRecordingStarted
2012-03-08 20:27:09        ACTION: Print Recording Details
2012-03-08 20:27:12           Das Erste HD (deu)   20:13:00 - 22:15:00 :  Donna Leon - Wie durch ein dunkles Glas - Fernsehfilm Deutschland 2009

Link to comment

eine Idee wie ich den letztem Zeitpunkt eines EPG Updates abfragen kann und wenn >$ZEIT her ist, ein EPG Update anstoßen kann?

 

Ich hab's derzeit so, daß nach einem Resume via EG ein EPG Update angestossen wird. Oftmals, gerade beim Testen, oder wenn Frauchen vergisst, nachdem sie den HTPC angemacht hat, auch was zu schauen, wird nach jedem Resume in kurzer Zeit immer ein EPG Update gestartet, was mehr oder weniger sinnfrei ist ;) - Daher würde ich das gerne auf 1 Stunde oder 2 oder so begrenzen, dazu müßte ich irgendwie abfragen können wann das letzte EPG Update war, wenn das denn möglich ist.

Link to comment

Wenn der EPG Update startet, wird ein Event EPGUpdateStart (o.ä. - bin grad unterwegs) verschickt. Man könnte doch ein Macro an diesen Event hängen und die Zeit in einer globalen Variablen abspeichern. Diese Zeit könntest du später an beliebiger Stelle wieder abfragen.

 

Aber ganz generell, ich bin nicht sicher, ob ich deine Anforderung richtig verstehe. Weshalb startest du EPG Update überhaupt eigenhändig? Habe ich noch nie gemacht und immer aktuelle EPG Daten.

Link to comment

Hallo mrphlox,

zu ersteinmal ein riesen Lob an Dich, das SuspendGhost-Projekt ist wirklich großartig, es ist die erste Variante mit der bei mir der geregelte Standby des HTPC vernünftig funktioniert :) .

 

Nun habe ich aber auch noch eine Frage, ob du noch etwas hinzufügen könntest:

Bei uns gibt es nämlich noch das Problem, dass oft von anderen Computern via Netzwerk auf Aufnahmen zugegriffen wird (ganz simpel über die freigegebene Ordner von Windows und somit nciht vom DVBViewer oder Service überwacht) und während diese Verbindung aktiv ist der HTPC in den Standby geschickt wird und somit die Wiedergabe an den "Remote-Rechnern" unterbrochen wird.

Meine erste Idee um hier etwas dran zu ändern ist die Netzwerkübertragung zu überwachen und wenn diese über z.B. 100 kbyte/s ist den Standby zu verhindern. Ich ahbe dafür sogar schon ein EG-Plugin: "Network Data Rate Monitor" gefunden, dass Events liefert, wenn eine eingestellte Übertragungsrate überschritten wird.

 

Mein Problem ist, dass ich leider den ganzen Ablauf im Suspendghost-Plugin nicht mehr überblicke und leider auch noch keine Erfahrung in Python gesammelt habe. Daher meine Bitte, ob du das vielleicht einbauen könntest?

 

Damit wäre Suspendghost dann endgültig perfekt für meine Familie und mich.

 

Vielen Dank

celehner

Link to comment

das NetworkDatarate Plugin scheint nicht zu funktionieren, zumindest logged es keinerlei Events, daß >Durchsatz oder <Durchsatz auftritt.

 

Edit: funktioniert nicht mit WLAN Adaptern, zumindest hier nicht.

 

und auf nem GigE Interface ist das Ding der Meinung, daß ich permanent >1Gbit/s Durchsatz habe ;)

Edited by test
Link to comment

zu ersteinmal ein riesen Lob an Dich, das SuspendGhost-Projekt ist wirklich großartig, es ist die erste Variante mit der bei mir der geregelte Standby des HTPC vernünftig funktioniert :) .

Freut mich zu hören, danke :)

 

Ich war schon mehr als einmal nahe dran, zumindest den öffentlichen Teil des Projekts aufzugeben. Ich bin aber nach wie vor - oder sogar je länger je mehr - davon überzeugt, dass SuspendGhost der richtige und saubere Ansatz für eine automatische Standby-Steuerung ist. Noch führt das Projekt ein Schatten-Dasein (was sind schon 30 Downloads!?), vielleicht kommt irgendwann auch mal noch die breitere Allgemeinheit auf den Geschmack :) Sonst aber auch nicht weiter schlimm, Hauptsache es macht Spass und erfüllt bei denen, die es einsetzen, seinen Zweck.

 

Ah ja, in dem Zusammenhang:

@Mods: Könntet Ihr den Thread bitte mal pinnen? Danke.

Meine erste Idee um hier etwas dran zu ändern ist die Netzwerkübertragung zu überwachen und wenn diese über z.B. 100 kbyte/s ist den Standby zu verhindern. Ich ahbe dafür sogar schon ein EG-Plugin: "Network Data Rate Monitor" gefunden, dass Events liefert, wenn eine eingestellte Übertragungsrate überschritten wird.

Habe das Plugin mal eingebaut und ausprobiert - gefällt mir! Werde es mit der nächsten Version ausliefern. Funktioniert hier übrigens auch mit einem WLAN Adapter (Atheros AR 5B95 WLAN Adapter) sowie einem Gigabit LAN Interface (Intel 82579V Gigabit Nw Adapter) auf Anhieb und problemlos. Meine Einstellungen: Lower Limit = 2000, Upper limit = 100000 Byte/s. Die Praxis wird zeigen, ob die Einstellungen noch angepasst werden müssen.

Link to comment

Hier nochmals ein (vielleicht letzter?) Vorab-Release zum Testen: SuspendGhost_1.0.5_rc5

 

Changes:

  • Plugin 'Network Data Rate Monitor' + entsprechende Macros hinzugefügt. Neu wird Standby verhindert, solange der Netzwerk Traffic eine bestimmte Schwelle überschreitet
  • Timeout im Interaktiven Modus ohne DVBViewer korrigiert.
  • Details des aktuellen Timers beim Start einer Aufnahme ins Log schreiben
  • Während Aufnahme im NIM wird neu oben rechts ein Indikator "Rec" angezeigt. Eigentlich bloss ein netter Nebeneffekt einer anderen Änderung: es ging mir darum, sinnlosen Log-Output (Event 'Timer.NonInteractiveModeTimeout') während einer Timer-Aufnahme zu eliminieren.
  • Internes Refactoring und Bereinigung
  • Standby Control Plugin 1.12:
    • EnableStandbyByApplication: Trigger mode "Don't trigger": Nach Ende des "Pending" Status wird die zuvor angefangene Zeit fortgeführt anstatt mit "Default pending time" neu gestartet

    [*]DVBViewer Plugin 2.1.1:

    • Exception Handling und Dokumentation verbessert

 

Mergen mit bestehender Config:

Sofern der Netzwerk-Verkehr überwacht und als Standby-Kriterium verwendet werden soll, muss das neue Plugin 'Network Data Rate Monitor' in der lokalen Installation noch konfiguriert werden. In der Plugin-Config:

  1. Das primäre Netzwerk-Interface auswählen. Bei Unsicherheit (Anleitung für Win7): Systemsteuerung > Netzwerk und Internet > Netzwerk und Freigabecenter > Adaptereinstellungen ändern. Aus den hier aufgelisteten Adaptern sollte ersichtlich sein, welches der primäre ist.
  2. Lower limit: 2000 Byte/s
  3. Upper limit: 100000 Byte/s

 

(attachment gelöscht, da obsolet)

Edited by mrphlox
Link to comment

Habe das Plugin mal eingebaut und ausprobiert - gefällt mir! Werde es mit der nächsten Version ausliefern. Funktioniert hier übrigens auch mit einem WLAN Adapter (Atheros AR 5B95 WLAN Adapter) sowie einem Gigabit LAN Interface (Intel 82579V Gigabit Nw Adapter) auf Anhieb und problemlos. Meine Einstellungen: Lower Limit = 2000, Upper limit = 100000 Byte/s. Die Praxis wird zeigen, ob die Einstellungen noch angepasst werden müssen.

tja, hier nicht. Siehe Screenshot.

post-11251-0-43692400-1331553349_thumb.png

Link to comment

Vielen Dank für das schnelle Update :)

 

Und ja, in ersten Tests hat es genach das gemacht was es sollte. Ich werde es jetzt mal weiter beobachten und dann spätestens in einer Woche nochmal berichten.

 

Vielen, vielen Dank nochmal!

 

celehner

Link to comment

Nach einer ausgiebigen Testphase kommt hier der offizielle Release

 

SuspendGhost_1.1.0

 

Die wichtigsten Änderungen seit SuspendGhost_1.0.4 im Überblick:

  • Verbessertes Auto-Close Verhalten von DVBViewer. Einerseits wird DVBViewer bei Timeouts überhaupt nicht mehr ganz geschlossen sondern nur noch der Graph. Eine beliebige Taste auf der FB holt DVBViewer aus dem Dämmerschlaf zurück und stellt den letzten Sender wieder her. Ausserdem wird der Graph erst so spät wie möglich geschlossen, z.B. erst dann, wenn alle Timer-Aufnahmen fertig sind. Und natürlich immer nur dann, wenn das System im Nicht-Interaktiven (d.h. unbeaufsichtigten) Modus ist.
  • Überwachung des Netzwerk-Verkehrs als zusätzliches Standby-Kriterium: Automatischer Suspend wird nur ausgelöst, wenn der Netzwerk-Verkehr eine definierbare Schwelle unterschreitet. Dies ist z.B. dann sehr sinnvoll, wenn im LAN ein Client auf einen freigegebenen (Video-)Ordner zugreift.
  • Verbesserte Erkennung des interaktiven Modus dank neuem Plugin 'Mouse Events'.
  • Neue 'Keep Alive' Funktionalität im Standby Control Plugin 1.12. Neu kann man feste Zeiten definieren, während derer automatischer Suspend verhindert wird.
  • Verbesserte 'Monitored Processes' Funktionalität im Standby Control Plugin 1.12.
  • Nach Resume automatisches Tunen auf den Sender der nächsten Aufnahme. Diese Funktion ist sinnvoll bei Systemen, welche >1 DVB-Tuner mit unterschiedlicher Qualität haben. Da diese Funktion nicht auf allen Systemen sinnvoll ist, kann das Feature daher in 'Initialize > Init variables' mit 'eg.globals.autoTuneRecChannel = False' ausgeschaltet werden (oder einfach durch Deaktivieren des Macros 'DVBViewer: Tune channel of next recording').
  • Neue Version 2.1.1 des DVBViewer Plugins mit erweiterter Funktionalität (64bit ChannelIDs, neue Actions 'GetTimerDetails', 'GetChannelDetails' und 'TuneChannel')
  • Viele kleine Detail-Verbesserungen v.a. in der Benutzerführung.

 

Download, vollständige Beschreibung und Installationsanleitung im 1. Post.

 

Have fun :)

Link to comment

vielen Dank für die neue Version! :-D

 

entschuldige bitte, ich war der festen Meinung, ich hätte was zum NetworkDataRate geschrieben, hab' ich aber wohl doch nicht :(

 

Ich habe bei mir die Comodo Firewall drauf, die erstellt ein "virtuelles" Interface, dieses muß ich auswählen, dann stimmen auch die Send/Receive Werte und die Defaults passen soweit auch ganz gut!

 

einpaar Anmerkungen hätte ich, wollte ich eigentlich schon viel früher schreiben, aber mangels Zeit leider erst jetzt:

 

- könntest Du bitte xbmc.exe in die Liste aufnehmen

 

- wenn ein OSD von SG kommt, daß man mit beliebiger Taste XYZ machen kann, wäre es imho sinnvoller, wenn eine beliebige Taste _NUR_ das OSD abbricht und nicht noch das macht, wofür die Taste angelernt ist, sprich wenn ich z.B. ESC drücke, dann geht's OSD auf, drücke ich auf der FB Enter, geht's MiniEPG auf usw. Weißt was ich meine?

 

- 'DVBViewer: Tune channel of next recording' : kannst Du das so umschreiben, daß der nur den Channel tuned auf dem die Aufnahme laufen wird, wenn die Aufnahme in absehbarer Zeit ansteht? Ich hab' z.B. Timer für Zimmer frei! auf WDR jeden Sonntag und brauche eigentlich am Montag und Dienstag und heute usw. kein Tuning auf WDR, nur weil der Timer am Sonntag aufnehmen wird ;) Vielleicht irgendwie 2 Stunden vorher == umschalten oder so.

 

- es dauert manchmal sehr lange bzw. man muß eine Taste auf der FB mehrmals drücken bis das beim Rechner ankommt, wenn man längere Zeit einfach nur schaut und mit der Fernbedienung nichts macht, sprich das System idle ist.

 

- ich habe im EG einige selbstdefinierte Makros, z.B. für XBMC Steuerung und tralala und hopsassa und benutze bei einigen auch vordefinierte Makros von Dir/SG, weil wozu soll ich das alles doppelt anlegen ;) ... aber bei jedem Update was bisher von SG kam muß ich meine Makros immer anpassen weil EG nicht mehr weiß wohin er z.B. springen soll. Beispiel: ich habe ein Makro indem ich 'Springe zu "DVBViewer: OSD-Close"' benutze, wenn ich meine Sachen erneut importiere, dann sehe ich dort nur noch "Sprungbefehl" und das Ziel ist leer. Woran liegt das?

 

Bei einem SG Update nehme ich immer Deine "nackte" Config und importiere dann meine Sachen wieder.

Edited by test
Link to comment

Hallo,

 

ich bräuchte mal bitte eure Hilfe, beziehungsweise ein paar Denkanstöße. :)

 

Derzeit ist Eventghost so konfiguriert, dass via Powertaste auf der Fernbedienung der DVBViewer und XBMC (falls aktiv) geschlossen werden und der HTPC dann in den Standby fährt, egal ob gerade eine Aufnahme läuft oder nicht.

Nun hätte ich es aber gerne so, dass der HTPC während einer Aufnahme (RecService) nicht in den Standby geht, sondern so lange wartet bis die Aufnahme beendet ist und sich dann erst schlafen legt. Sollte aber keine Aufnahme aktiv sein, soll er wie gehabt sofort in den Standby gehen.

Wenn ich das richtig verfolgt habe, sollte das ja mit StandbyControl Plugin möglich sein. Nur bin ich mit der Konfiguration

des Plugins etwas überfordert. Beziehungsweise bereiten mir die "Standby trigger times" noch Kopfzerbrechen.

Die "Standby trigger times" Option leuchtet mir ja noch ein, aber mit "Next trigger / force release in", "Standby default time if standby was pending" und "Standby time after system resume" kann ich recht wenig anfangen. :-/

 

Wenn einer von euch mir da weiterhelfen könnte, beziehungsweise eine Beispielkonfiguration zeigen könnte, wie ich es zu konfigurieren hab, wäre ich sehr dankbar.

 

 

Grüße

Link to comment

Nun hätte ich es aber gerne so, dass der HTPC während einer Aufnahme (RecService) nicht in den Standby geht, sondern so lange wartet bis die Aufnahme beendet ist und sich dann erst schlafen legt. Sollte aber keine Aufnahme aktiv sein, soll er wie gehabt sofort in den Standby gehen.

Hallo

 

haargenau DAS macht SuspendGhost (und noch ein paar nützliche Dinge mehr), die Beispielkonfiguration, die du suchst, IST das beiliegende SuspendGhost.xml :)

 

Ich weiss, der Thread ist mittlerweile lang und unübersichtlich geworden, daher findest du alles, was du brauchst, im 1. Beitrag.

 

Wenn du dann noch Fragen hast, kannst du dich hier jederzeit gerne wieder melden.

 

Das Standby Control Plugin einzusetzen und zu konfigurieren ist in der Tat recht tricky, daher bist du mit einer fix-fertigen Konfiguration wahrscheinlich besser bedient.

 

Grüsse

Edited by mrphlox
Link to comment

Hallo mrphlox,

 

danke für die prompte Antwort.

Das Problem an deiner XML ist nur, dass dann natürlich meine restliche EG Konfiguration im Eimer ist.

Oder gibt es ausser dem Editieren der XML noch einen anderen Weg 2 XMLs miteinander zu vereinen?

 

Grüße

Link to comment

Doch, das geht grundsätzlich mit Copy-Paste gehen. Hier findest du eine sinngemässe Anleitung

 

Manchmal verhält sich EG etwas zickig beim Copy-Paste. Nach meiner Erfahrung geht es am besten,

- wenn man EG vorher stoppt und neu startet

- wenn man alle Macros, die man von ALT nach NEU zügeln will, zuerst in einen Ordner verschiebt, und dann den Ordner kopiert

- wenn die Macros, die man nach NEU zügeln will, keine Sprungbefehle auf Ziele haben, die ausserhalb der zu kopierenden Macros liegen.

 

Siehe auch meine Antwort @test im nächsten Beitrag.

Link to comment

vielen Dank für die neue Version! :-D

gerne doch :)

entschuldige bitte, ich war der festen Meinung, ich hätte was zum NetworkDataRate geschrieben, hab' ich aber wohl doch nicht :(

 

Ich habe bei mir die Comodo Firewall drauf, die erstellt ein "virtuelles" Interface, dieses muß ich auswählen, dann stimmen auch die Send/Receive Werte und die Defaults passen soweit auch ganz gut!

OK, aber es ist trotzdem seltsam, dass ein physisches Netzwerk-Interface solche unplausiblen Werte liefert. Ich könnte mir vorstellen, dass es irgendwo einen Integer-Overflow gibt, konnte es aber hier bislang nicht reproduzieren. Es wäre z.B. denkbar, dass das Windows API einen 32bit 'unsigned int' liefert (DWORD) und das Python plugin interpretiert den Wert als 'signed int', wobei das höchstwertige Bit fälschlicherweise als Vorzeichen interpretiert wird.

-> Kannst du die Debug-Version mal 5 Minuten auf dem physichen Interface laufen lassen und mir das Log schicken? Vielleicht ist es ja wirklich nur eine Kleinigkeit.

- könntest Du bitte xbmc.exe in die Liste aufnehmen

klar. Wird langsam Zeit, dass ich mir XBMC auch mal anschaue ;) Was ist der 'added value' von XBMC, wenn man DVBViewer einsetzt?

- wenn ein OSD von SG kommt, daß man mit beliebiger Taste XYZ machen kann, wäre es imho sinnvoller, wenn eine beliebige Taste _NUR_ das OSD abbricht und nicht noch das macht, wofür die Taste angelernt ist, sprich wenn ich z.B. ESC drücke, dann geht's OSD auf, drücke ich auf der FB Enter, geht's MiniEPG auf usw. Weißt was ich meine?

Da kann ich nichts machen; ich habe in EG keinen Einfluss darauf, wer den Windows Event sonst noch erhält

- 'DVBViewer: Tune channel of next recording' : kannst Du das so umschreiben, daß der nur den Channel tuned auf dem die Aufnahme laufen wird, wenn die Aufnahme in absehbarer Zeit ansteht? Ich hab' z.B. Timer für Zimmer frei! auf WDR jeden Sonntag und brauche eigentlich am Montag und Dienstag und heute usw. kein Tuning auf WDR, nur weil der Timer am Sonntag aufnehmen wird ;) Vielleicht irgendwie 2 Stunden vorher == umschalten oder so.

Das ist sinnvoll und lässt sich mit wenig Aufwand umsetzen. Ich denke, 10 Minuten wären schon genug.

- es dauert manchmal sehr lange bzw. man muß eine Taste auf der FB mehrmals drücken bis das beim Rechner ankommt, wenn man längere Zeit einfach nur schaut und mit der Fernbedienung nichts macht, sprich das System idle ist.

Das beobachte ich bei mir auch schon "seit Anbeginn der Zeit". Ich bin mir aber bis jetzt nicht sicher, ob die Events von EG respektive dem iMON Plugin verschluckt werden oder ob die Ursache im SoundGraph HID Treiber steckt. Und sauber reproduzieren kann ich es auch nicht, denn wie du sagst, es tritt immer nur sporadisch dann auf, wenn man die FB eine Weile (wie lange??) nicht benützt hat. Kannst du eindeutig eingrenzen, dass das iMON Plugin Schuld ist? Und selbst wenn es das iMON Plugin ist: hier kann ich selbst nichts ausrichten, das ist definitiv nicht meine Ecke :( Vielleicht mal um Support im EG Forum nachfragen?

- ich habe im EG einige selbstdefinierte Makros, z.B. für XBMC Steuerung und tralala und hopsassa und benutze bei einigen auch vordefinierte Makros von Dir/SG, weil wozu soll ich das alles doppelt anlegen ;) ... aber bei jedem Update was bisher von SG kam muß ich meine Makros immer anpassen weil EG nicht mehr weiß wohin er z.B. springen soll. Beispiel: ich habe ein Makro indem ich 'Springe zu "DVBViewer: OSD-Close"' benutze, wenn ich meine Sachen erneut importiere, dann sehe ich dort nur noch "Sprungbefehl" und das Ziel ist leer. Woran liegt das?

 

Bei einem SG Update nehme ich immer Deine "nackte" Config und importiere dann meine Sachen wieder.

Das hängt mit der Art zusammen, wie die Sprungbefehle in EG realisiert sind (Referenz auf eine ID, die beim Kopieren verloren geht / gehen muss) und ist ein inhärentes Problem, für das es so direkt keine Lösung gibt. Du könntest aber statt eines Sprungbefehls ein Ereignis erzeugen, z.B. 'Erzeuge Ereignis "DVBViewer.Close"'. Die DVBViewer Command Macros lassen sich ja alle so aufrufen. Im Gegensatz zum Sprungbefehl geht diese Config auch beim Kopieren von einzelnen Macros zwischen zwei EG-Configs nicht verloren.
Link to comment

Noch was: auf jeden Fall müssen die Plugins, die die Macros aus ALT verwenden, in NEU vorhanden sein, bevor man Copy-Paste machen kann.

 

schickst du mir mal deine Config für XBMC? Da wäre ich interessiert und wer weiss, vielleicht finden wir die optimale Lösung :)

Link to comment

An meiner XBMC Config ist nichts Besonderes. XBMC wird per Tastendruck gestartet und bedient und im Wechsel zum DVBViewer wird der XBMC Prozess abgeschossen, da er beim normalen beenden öfter mal hängen blieb.

Aber wenn du wirklich meine Config sehen willst, lass ich dir natürlich zukommen! :)

Link to comment

-> Kannst du die Debug-Version mal 5 Minuten auf dem physichen Interface laufen lassen und mir das Log schicken? Vielleicht ist es ja wirklich nur eine Kleinigkeit.

werde ich machen!

 

Was ist der 'added value' von XBMC, wenn man DVBViewer einsetzt?

was meinst Du mit added value?

 

Das beobachte ich bei mir auch schon "seit Anbeginn der Zeit". Ich bin mir aber bis jetzt nicht sicher, ob die Events von EG respektive dem iMON Plugin verschluckt werden oder ob die Ursache im SoundGraph HID Treiber steckt. Und sauber reproduzieren kann ich es auch nicht, denn wie du sagst, es tritt immer nur sporadisch dann auf, wenn man die FB eine Weile (wie lange??) nicht benützt hat. Kannst du eindeutig eingrenzen, dass das iMON Plugin Schuld ist? Und selbst wenn es das iMON Plugin ist: hier kann ich selbst nichts ausrichten, das ist definitiv nicht meine Ecke :( Vielleicht mal um Support im EG Forum nachfragen?

es wird wahrscheinlich das iMON Plugin sein, jedenfalls hatte ich es vorher, ohne SG und somit ohne iMON Plugin nie gehabt, daß die FB mal nicht reagiert hat, auch nach 2 Stunden TV schauen reagierte die immer _sofort_. Ich muß mal genau testen ab wann die nicht mehr reagiert, wobei das äußert schwierig sein wird das nachzustellen, weil man muß die ja drücken um's zu testen und dann ist der Idle wieder futsch und dann geht die auch wieder :) Vom Gefühl her würde ich sagen, daß passiert nachdem EG/SG idle geht.

 

Das hängt mit der Art zusammen, wie die Sprungbefehle in EG realisiert sind (Referenz auf eine ID, die beim Kopieren verloren geht / gehen muss) und ist ein inhärentes Problem, für das es so direkt keine Lösung gibt. Du könntest aber statt eines Sprungbefehls ein Ereignis erzeugen, z.B. 'Erzeuge Ereignis "DVBViewer.Close"'. Die DVBViewer Command Macros lassen sich ja alle so aufrufen. Im Gegensatz zum Sprungbefehl geht diese Config auch beim Kopieren von einzelnen Macros zwischen zwei EG-Configs nicht verloren.

das ist eine gute Idee. Kannst Du bitte noch ein Event für 'DVBViewer: IsRunning' einbauen? das benutze ich nämlich auch :)

gibt's evtl. auch "wenn erfolgreich, erzeuge Ereignis ..."??

Link to comment

Problem. Wenn DVBViewer von SG gestartet wird und der letzte Sender zufällig der gleiche ist für den der nächste Timer eingestellt ist, dann bekommt man:

 

19:05:41                     Wenn erfolgreich springe zu "DVBViewer: Tune channel of next recording" und kehre zurück
19:05:41                        DVBViewer: Tune channel of next recording
19:05:41                           All In One Script: Tune channel of next recording if necessary
19:05:43                              Traceback (most recent call last):
19:05:43                                Python script "9", line 20, in <module>
19:05:43                                  currentChannel = eg.plugins.DVBViewer.GetChannelDetails(currentChannel=True)
19:05:43                                File "C:\Program Files\EventGhost\eg\Utils.py", line 127, in LogItWithReturnWrapper
19:05:43                                  result = func(*args, **kwargs)
19:05:43                                File "C:\Program Files\EventGhost\plugins\DVBViewer\__init__.py", line 3943, in __call__
19:05:43                                  CALLWAIT_TIMEOUT
19:05:43                                File "C:\Program Files\EventGhost\eg\Classes\ThreadWorker.py", line 234, in CallWait
19:05:43                                  return self.Func(func, timeout)()
19:05:43                                File "C:\Program Files\EventGhost\eg\Classes\ThreadWorker.py", line 62, in __call__
19:05:43                                  self.returnValue = self.func(*self.args, **self.kwargs)
19:05:43                                File "C:\Program Files\EventGhost\eg\Utils.py", line 127, in LogItWithReturnWrapper
19:05:43                                  result = func(*args, **kwargs)
19:05:43                                File "C:\Program Files\EventGhost\plugins\DVBViewer\__init__.py", line 1094, in GetChannelDetails
19:05:43                                  eg.PrintError("No details for channel with ID '" + str(channelID) + "' found.")
19:05:43                              UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 25: ordinal not in range(128)
19:05:43                           Springe zu "EndOfTheStory"
19:05:43                              EndOfTheStory
19:05:43                                 Do nothing
19:05:43                           eg.globals.restartDVBViewer = False
19:05:43                           Springe zu "IsDvbvNotRecording" und kehre zurück
19:05:43                              IsDvbvNotRecording
19:05:43                                 DVBViewer: Is Recording

und EG hängt.

 

Hat man einen anderen Sender als den "Timer-Sender" eingestellt funktioniert der ChannelChange ohne Probleme und gibt auch keine Fehlermeldungen und EG hängt sich auch nicht weg.

Link to comment

OK, aber es ist trotzdem seltsam, dass ein physisches Netzwerk-Interface solche unplausiblen Werte liefert. Ich könnte mir vorstellen, dass es irgendwo einen Integer-Overflow gibt, konnte es aber hier bislang nicht reproduzieren. Es wäre z.B. denkbar, dass das Windows API einen 32bit 'unsigned int' liefert (DWORD) und das Python plugin interpretiert den Wert als 'signed int', wobei das höchstwertige Bit fälschlicherweise als Vorzeichen interpretiert wird.

-> Kannst du die Debug-Version mal 5 Minuten auf dem physichen Interface laufen lassen und mir das Log schicken? Vielleicht ist es ja wirklich nur eine Kleinigkeit.

Debug Version läuft und den Output bekommst Du in ca. 5-10 Minuten :)

 

Edit: und da isses :)

EventGhost_Log.zip

Edited by test
Link to comment

es wird wahrscheinlich das iMON Plugin sein, jedenfalls hatte ich es vorher, ohne SG und somit ohne iMON Plugin nie gehabt, daß die FB mal nicht reagiert hat, auch nach 2 Stunden TV schauen reagierte die immer _sofort_. Ich muß mal genau testen ab wann die nicht mehr reagiert, wobei das äußert schwierig sein wird das nachzustellen, weil man muß die ja drücken um's zu testen und dann ist der Idle wieder futsch und dann geht die auch wieder :) Vom Gefühl her würde ich sagen, daß passiert nachdem EG/SG idle geht.

also es passiert definitiv nur hier nach:

 

2012-03-22 19:35:25  EVENT: System.Idle
2012-03-22 19:35:25     MACRO: OnSystemIdle: Enable Suspend
2012-03-22 19:35:25        ACTION: eg.globals.systemIsIdle = True
2012-03-22 19:35:25        ACTION: Enable Suspend, System is Idle

war gerade im Garten und hab' mitm SmartPhone umschalten wollen (daher auch das Webserver Plugin mit drin)

 

2012-03-22 19:49:30  EVENT: HTTP.Main.DVBViewer.TuneLastChannel []

und zwischen Aufruf der Aufgabe und ausführung im EG Log vergingen einpaar Sekunden in denen nichts passiert ist. Ich würde mal sagen, daß das nicht direkt was mit dem iMON Plugin zu tun hat, weil ist ja eine HTTP Anfrage. Ich denke, daß der Zustand System.Idle irgendetwas im System und/oder EG macht, daß es beim erneuten Antriggern einige Zeit braucht.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...