Jump to content

ProcessTasksEX


nuts

Recommended Posts

Was für ein extra Prog. wäre das? Was macht das genau?

Systemhacks die so von MS nicht vorgesehen sind werde ich aber nicht einbauen!

Link to comment

Hm das sieht mir nach normalem Runas mit etwas drumrum aus oder? zumindest steht auf der Startseite nichts übers Systemkonto? Runas funktioniert aus dem Systemkonto leider auch nicht.

Link to comment

Mal ein kurzer Zwischenstand:

 

1. Mit dem DVBViewer eigenen Webserver wird das nichts. Da fehlen dann wieder verschiedene Funktionen und da der nichtmehr weiterentwickelt wird lohnt sich das nicht.

 

2. Man könnte das Skript einen Task erstellen lassen, der eine Anwendung in einem anderen Benutzerkonto ausführt.

Problem dabei ist, dass das normale Benutzerkonto ja nicht zwangsläufig aktiv sein muss (z.B. wenn der RS in Abwesenheit alleine Aufnahmen macht) und die Abstimmung mit den eigentlichen Vorgängen dann von der Konfiguration her nicht ganz einfach wird (wobei nicht ganz einfach wohl noch untertrieben ist).

 

3. Eigenen Mini-Webserver: Ich hab sowas noch nie gemacht, aber zu kompliziert scheint mir das nicht zu sein.

Wäre einfach zu benutzen und flexibel, da ich auf den Mini-Webserver ja selbst Einfluss nehmen kann.

Problem: Der müsste zumindest wenn der DVBViewer läuft auch immer mitlaufen.

Viel Ressourcen wird das nicht brauchen, aber naja wieder ein Programm mehr auf dem HTPC.

 

4. Eine imon Lösung.

Dazu müsste imon aber eine Art Netzwerkempfänger-Modul haben, dass ich per Skript ansprechen kann.

Wäre dann quasi wie der schon eingebaute Eventghostbefehl.

Gibt es sowas?

Edited by nuts
Link to comment

zu 4. Damit würdest du was bewerkstelligen wollen, ExtendedExit.exe im Benutzerkonto starten?

 

Evtl. könnte das gehen, was es gibt ist lediglich eine iMON Remote Control API

Damit könnte man in deinem Script den Befehl "RC_BTN_LAUNCHER, //// App. Launcher" senden und dies würde dann ExtendedExit.exe standbyViewer aufrufen.

Dies sollte dann im Benutzerkonto sein. Dazu müsstest du dich halt durch die API wühlen.

Der iMonManager ist nicht dafür vorgesehen auf Befehle zu reagieren die nicht von einer Fernbedienung kommen, also gibt es auch keine Netzansteuerung.

 

Ich nehme mal an über Eventghost geht das alles bereits, oder?

Das zu installieren wäre ja kein Ding denke ich, müsste ich mich aber erst mal mit beschäftigen.

 

Mit 3. hätte ich übrigens auch kein Problem

Edited by Tüftler
Link to comment

Die imon API hab ich kurz überflogen und nicht genau verstanden. Mal sehen ...

 

Mit Eventghost ist das derzeit so möglich:

 

1. EG läuft im normalen Benutzerkonto

2. EG Netzwerkempfängerplugin aktivieren

3. Der Befehl "egtcpsend" in ProcessTasksEX erzeugt ein Event in Eventghost

4. Auf das Event kann beliebig in Eventghost reagiert werden und das im entsprechenden Benutzerkonto (d.h. COM-Verbindung usw. läuft dann auch im Benutzerkonto und funktioniert auch)

 

Was derzeit nicht möglich ist: eine Rückmeldung an meine Skirpte schicken.

Dazu müsste ich das EG-Netzwerkempfängerplugin entsprechend erweitern/umschreiben und dazu fehlt mir erhrlich gesagt etwas die Lust (python ist nicht gerade meine Lieblingssprache).

 

Die Idee mit dem eigenen "Miniwebserver" gefällt mir eigentlich am besten.

Ich könnte sowas sowieso zur Steuerung meiner Server brauchen.

Hab das schon etwas zusammengeklickt, aber zur Ausarbeitung brauche ich mal 2 Stunden am Stück. Das wird wohl dieses WE nichts ...

Link to comment

Ich glaube auch das es mit dem MiniWebServer am Saubersten wäre und eilen tut das bei mir eh nicht.

Das ExtendedExit erschlägt das Beendenszenario aus dem Viewer heraus bestens und das Beenden nach einer RS-Aufnahme passiert jetzt nicht so häufig außerhalb der normalen DVBViewer-Nutzzeit.

Link to comment

Mal ein kurzer Zwischenbericht.

 

Der "TCP-Server" steht soweit. :)

 

Folgende Funktionen sind bisher drin:

 

 

isrecording => prüft ob eine Aufnahme im DVBV läuft und antwortet dem fragenden Skript

istimeshift => s. isrecording

isplayback => prüft ob der DVBViewer gerade etwas wiedergibt und antwortet dem fragenden Skript

restart => startet den TCP-Server neu

exit => beendet den TCP-Server

sendcommand => Action-ID zum DVBV schicken

run => Anwendung / Skript starten

runwait => Anwendung / Skript starten und warten bis diese wieder beendet ist

devcon => hardware restart

devcon2 => hardware diable + enable

execute => führt jede beliebige Autoit Skriptzeile aus (z.B. Processclose("DVBViewer.exe")

 

Fehlt noch etwas wichtiges?

Edited by nuts
Link to comment

Hallo nuts,

 

ob was fehlt merkt man dann beim Testen :whistle: , getreu dem Motto "entdecke die Möglichkeiten".

Ich nehme an dem TCP Server ist wurscht in welchem Benutzerkonto das läuft, sprich es wird dann per ProcessTask des RS nach Aufnahme die ProcessTaskEX.exe und daraus der TCP Server heraus aufgerufen/abgefragt?

Link to comment

Der TCP Server sollte im gleichen Benutzekonto laufen wie der DVBViewer, sonst gibt es das gleiche Problem mit der COM-Verbindung.

 

Das wird in ProcessTaskEX dann ca. so aussehen:

 


[standby]

tcpcontrol=sendcommand%35

tcpcontrol=isrecording%1

Edited by nuts
Link to comment

Anbei mal eine Testversion von ProcessTaskEX, Erweitertes Beenden und TCPControl.

 

TCPControl muss einfach im normalen Benutzerkonto gestartet werden.

Diese Befehle sind möglich:

 

; isrecording
; istimeshift
; isplaying
; restart
; exit
; sendcommand
; run
; devcon
; devcon2
; execute

 

Aufgerufen werden diese aus ProcessTaskEX z.B. so:

 

[Test]
tcpcontrol=isrecording => bei laufender Aufnahme im DVBV die Sektion abbrechen
tcpcontrol=isplaying => bei laufender Wiedergabe Sektion abbrechen

tcpcontrol=isplaying%1 => bei laufender Wiedergabe Sektion abbrechen

tcpcontrol=isplaying%0 => Überprüfungn deaktivieren

tcpcontrol=isplaying%isrecording => Umleitung in die Sektion "isrecording"

tcpcontrol=sendcommand%6 => Action ID 6

tcpcontrol=run%C:\Program Files\DVBViewer\DVBViewer.exe => DVBViewer.exe ausführen

 

Eingestellt muss eigentlich nichts werden (ggf. Firewalleinstellungen anpassen).

Soll TCPControl von einem anderen PC angesprochen werden muss in ProcessTaskEX die entsprechende IP hinterlegt werden.

 

Edited by nuts
Link to comment

Hallo nuts,

 

hab jetzt mal kurz mit TCP Conrol getestet, funktioniert wunderbar!

Der Viewer wird nach einer Aufnahme durch den RS mit isplaying untersucht und wenn keine Wiedergabe läuft geht es an ExtendedExit welches dann Aufnahmeprüfung und das Abschalten übernimmt.

Soweit perfekt,

was mache ich aber wenn der Viewer nicht läuft und die Abfrage durch TCP Control fehlschlägt (automatisches Aufwachen für eine Aufnahme startet ja nicht den Viewer), hierbei sollte dann Standby durch den RS Processtask ausgelöst werden können.

 

so stelle ich mir das vor:

[standby]
tcpcontrol=activeViewer%standbyRS => wenn der Viewer nicht erreichbar ist in Sektion standbyRS wechseln (dort wird dann processtask Standby gesendet)
tcpcontrol=isplaying => abbrechen wenn Viewer mit einer Wiedergabe läuft
tcpcontrol=run%C:\extended exit\Extended Exit_v2.exe standbyViewer => wenn alles Obige nicht zutrifft Weiterbehandlung durch Extended Exit einleiten

Gruß Tüftler

Edited by Tüftler
Link to comment

Sollte keine Verbindung zum DVBViewer möglich sein (d.h. DVBViewer läuft nicht) wird einfach die Sektion weiter abgearbeitet.

Also aus ProcesstaskEX nach jeder Aufnahme:

 

Zuerst die Abfragen:

1. Läuft die Wiedergabe? (tcpcontrol=isplaying) => abbrechen

2. Läuft eine Aufnahme im DVBViewer (tcpcontrol=isrecording) => abbrechen oder umleiten in eine beliebige Sektion

 

Dann die Sektion standbyRS aufrufen. Würde ich so machen:

tcpcontrol=run&C:\...\proecctaskex.exe -standbyRS

 

Beispielkonfig - ProcesstaskEX:

 

[standby]

tcpcontrol=isplaying

tcpcontrol=istimeshift

tcpcontrol=isrecording%customsection

tcpcontrol=run&C:\...\proecctaskex.exe -standbyRS => damit kommen wir raus aus dem Systemkonto. Das kann nur hilfreich sein!

 

[customsection]

tcpcontrol=run&C:\...\proecctaskex.exe -isrecording => damit kommen wir raus aus dem Systemkonto. Das kann nur hilfreich sein!

 

[isrecording]

run=z.B. dein Skript für die Sofortaufnahmen

sonstige Befehle die für diesen Fall vorgesehen sind

 

[standbyRS]

sleep=2 (bisschen warten, denke das macht an der Stelle Sinn)

checkrecordingRS=1 => abbrechen falls der RS gerade selbst aufnimmt

:deine sonstigen Befehle => An diesem Punkt läuft keine Wiedergabe/Aufnahme im DVBV und auch keine Aufnahme im RS

processtask=Standby (schützt gleichzeitig andere Verbundene Clients)

Edited by nuts
Link to comment

Wobei man auch sagen muss, dass man bei:

tcpcontrol=isrecording

tcpcontrol=isplaying

tcpcontrol=istimeshift

 

Eigentlich immer gleich abbrechen könnte, da in diesen Fällen normalerweile ein Benutzer in Reichweite ist.

 

Das vereinfacht die Konfig erheblich:

[standby]

tcpcontrol=isplaying

tcpcontrol=istimeshift

tcpcontrol=isrecording

tcpcontrol=run&C:\...\proecctaskex.exe -standbyRS => damit kommen wir raus aus dem Systemkonto. Das kann nur hilfreich sein!

 

[standbyRS]

sleep=2 (bisschen warten, denke das macht an der Stelle Sinn)

checkrecordingRS=1 => abbrechen falls der RS gerade selbst aufnimmt

:deine sonstigen Befehle => An diesem Punkt läuft keine Wiedergabe/Aufnahme im DVBV und auch keine Aufnahme im RS

processtask=Standby (schützt gleichzeitig andere Verbundene Clients)

 

Edited by nuts
Link to comment

Da ich die ganzen Viewer-Behandlungen in ExtendedExit mache brauche ich das doch nicht zweimal konfigurieren, außerdem will ich ja wieder auf Resume warten.

 

Nochmal kurz:

  1. Viewer läuft und wird beendet -> Standbyhandling durch Extended Exit und warten auf Resume
  2. Viewer ohne aktive Wiedergabe da durch eine RS-Aufnahme Standby blockiert wurde -> RS sendet nach Aufnahme an ProcesstaskEX das übergibt wieder das Standbyhandling durch Extended Exit und warten auf Resume
  3. HTPC wurde durch RS-Aufnahme geweckt -> RS sendet nach Aufnahme an ProcesstaskEX das muss jetzt einen Processtask Standby an RS senden da Extended Exit noch auf Resume wartet
  4. HTPC wurde durch RS-Aufnahme geweckt und während dessen wurde auch der Viewer durch einen Nutzer zur Wiedergabe gestartet -> RS sendet nach Aufnahme an ProcesstaskEX das dann wegen aktiver Wiedergabe abbricht (siehe 1.)
  5. HTPC wurde durch RS-Aufnahme geweckt und während dessen wurde auch der Viewer durch einen Nutzer zur Wiedergabe gestartet aber vor Aufnahmeende wird durch Nutzer die Wiedergabe beendet -> RS sendet nach Aufnahme an ProcesstaskEX das übergibt wieder das Standbyhandling an Extended Exit und wartet auf Resume (siehe 2.)

Im Anhang meine derzeitige Konfiguration für obige "Problemfälle":

Doku_setup_local_RS.zip

Edited by Tüftler
Link to comment

Verstehe das leider nicht so ganz. :(

 

Extended Exit sollte für das Standbyhandling mit User-Eingabe verantworltich sein.

ProcesstaskEX i.V.m. TCPControl für das automatische Standbyhandling nach den Aufnahmen.

Extended Exit wartet sowieso aufs "Resume" (bis zur nächsten Benutzereingabe). Ganz unabhängig was der RS, ProcesstaksEX usw. in der Zwischenzeit machen.

 

Du willst eine Sektion-Umleitung sobald der DVBViewer nicht läuft?

Das wäre leicht einzubauen.

Deine Herangehendweise ist irgendwie etwas anders als ich mir das gedacht hatte, aber gut daran solls nicht scheitern.

Link to comment

Extended Exit wartet sowieso aufs "Resume" (bis zur nächsten Benutzereingabe). Ganz unabhängig was der RS, ProcesstaksEX usw. in der Zwischenzeit machen.

das stimmt für 3. aber bei 4. läuft das nicht mehr und bei 5. muss es auch neu gestartet werden.

 

Gut ich kann die Behandlungen auch von ExtendedExit in ProcessTasksEX verlagern aber generell soll eigentlich niemand etwas entscheiden müssen was ich nicht vorher selbst behandeln könnte. Daher wäre es für mich auch schön das man die Sicherheitsabfragen in ExtendedExit abschalten könnte. Aber das stört derzeit auch nicht wirklich.

Link to comment

Die Sicherheitsabfragen bei ExtendedExit kann ich gerne abschaltbar machen.

Ich finde es nur nicht so schön wenn man im OSD etwas anklickt und dann gar keine Reaktion kommt.

Aber klar kann man das konfigurierbar machen.

 

Ich hab jetzt mal 2 neue Abfragen eingebaut:

 

isrunning=0/1/customsection

isnotruning=0/1/customsection

 

Upload dann heute abend. Ich muss jetzt leider los.

Link to comment

Neuer Testupload mit 2 neuen Befehlen für ProcesstaskEX.

Dafür die wird auch die neue Version vom TCP Server benötigt. (keine Änderungen bei ExtendedExit)

 

tcpcontrol=isrunning (%0/1/customsection)

tcpcontrol=isnotruning (%0/1/customsection)

 

Edited by nuts
Link to comment

You are the :king: !

So läuft jetzt alles perfekt, egal ob Fall 1 bis 5 vorliegt.

Werde morgen mal meine derzeitige Konfig posten.

 

Zu deiner Meinung des fehlenden OSD-Nutzer-Feedbacks bei abgeschalteter Sicherheitsabfrage:

Ich werde dann eine Custom-Meldung einblenden lassen das der Rechner nach der RS-Aufnahme automatisch heruntergefahren wird.

 

Danke und Gruß Tüftler

Link to comment

Sehr schön.

Ich hoffe mal jetzt lässt sich ein venünftiger Ablauf auch mit lokalem RS einrichten. Sollte noch was fehlen bitte melden.

Ansonsten werde ich die Tage den Code aufräumen, alle Skripte auf den neusten Stand bringen und mal etwas dokumentieren wie man die Skripte einsetzen kann/soll.

 

Mittelfristig werde ich den "TCP Server" massiv ausbauen (Funktionaliät von Extended Exit, XBMC Steuerung, Backup, eigene Tasks zur Wartung, Webserver zur Steuerung im Browser).

Link to comment

Bin immernoch mit den Code-Optimierungen beschäftigt, aber mal eine Zwischenfrage:

 

Werden die Befehle, die eine COM-Verbindung zum DVBV brauchen, in ProcesstaksEX für irgendwas gebraucht?

Würde die gerne rausschmeißen, die diese ja nicht vom Systemkonto funktionieren.

Link to comment
  • 3 months later...

Hallo nuts, hab da wiedermal einen Funktionswunsch,

bekommst du es hin das eine e-mail oder sms gesendet wird wenn eine bestimmte Sektion abgearbeitet wird?

 

Grund, ich wecke den Service zum programmieren manchmal aus der Ferne und schicke ihn dann wieder in den Standby, ob das Signal aber angekommen ist kann ich nicht erfahren und eine erneute Anfrage würde den Rechner wieder wecken, sprich kontraproduktiv.

 

Der RecService selbst bietet zwar die e-mail Funktion, allerdings nur bei Aufnahmen.

 

Gruß Tüftler

Link to comment

Email verschicken dürfte kein Problem sein.

Muss man aber eben Passwort und Benutzername hinterlegen. Die meisten Ausgangsserver erwarten mittlerweile eine Authentifizierung oder?

 

SMS wohl eher nicht. Dafür bräuchte man ja einen SMS Dienst mit entsprechender API damit ich den vom Skript aus ansteuern kann.

Der Aufwand wird sich kaum lohnen.

Link to comment

Verison 1.2 im Anhang.

 

Neu hinzugekommen ist die gewünschte email Funktion.

Folgende Einträge sind dafür in der ProcessTasksEX_config.ini auszufüllen (werden von allein angelegt)

 

Dürfte selbsterklärend sein oder?

 

Aufruf:

 

 

Mit gmx als Ausgangsserver funktioniert es.

ProcessTasksEX.zip

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...