EVAGui2 erhielt in der letzten Zeit einige Updates,
die die Systemstabilität, Geschwindigkeit und Auslastung wesentlich verbessern.
Was ist neu:
Oberfläche:
Die Oberfläche enthält nun Beschreibungen in der Listenansicht, sowie eine Übersicht des
selektierten Programms mit den Regeln auf der rechten Seite. Zudem gibt es nun eine Statusbar
mit der Anzeige der Zeit und der Automatiksteuerung.
Die alte Oberfläche zum erstellen von Anwendungen ist aufgrund der Komplexität und den Unterregeln
entfallen. Als Editor für Regeln wurde ein XML-Editor mit Interpreter der Struktur implementiert.
Um bei steigender Komplexität der Konfigurationsdatei das Debugging der Regeln zu vereinfachen
kann die Anwendung jetzt mit den Argumenten -c Für eine Regelauswahl gestartet werden.
Für Debugging-Zwecke wurde das Argument -d eingeführt, dass alle Regeln (andernfalls nur ausgeführte Regeln) im Debuglog mitschreibt. Das Argument -d muss mit den Teildebuginformationen über den
Bereich angegeben werden (-dpter) p= Programm, t=texte, e=events, r=rules.
Eine fertig getestete Konfiguration aus einer Testdatei kann dann in die Hauptdatei durch Selektion
einer Regel und anschließendem Klick auf "Einstellungen übernehmen" in den regulären Ablauf
übernommen werden. (In Gruppe Import).
Hinter den Kulissen
Die Basis des Programms wurde auf komplette interne Klassen umgestellt, was eine komfortablere
Überwachung der Prozesse und der Prozessstruktur erlaubt.
Einstellungsdatei
Das Format der Einstellungsdatei wurde grundlegend angepasst und kann nun in einer
verkapselteren Struktur bearbeitet werden. Prozessargumente wurden in ein separates Node
'Settings' mit einem Value eingetragen. Durch diese Veränderung können die Nodes nach
Gruppen auf- und zugeklappt werden. (z.B. in Notepad++ mittels STR+0)
Für die Gruppen Settings und Rules sowie Events sind weitere Parametrierungsmöglichkeiten
verfügbar.
Programme und Regeln
Der schematische Konfigurationsablauf
Der Stammknoten im XML muss EVA sein. Danach folgen Programme in Gruppen (n).
Gruppen haben direkte Attribute im Node.
z.B.
<Group Name="Test" Visible="False">
<.../>
</Group>
Eine Gruppe kann n Programme (Programm) enthalten. Die einzige Attribute im Programmnode
muss der eindeutige Programmname sein. Jedes Programm benötigt einen untergeordneten Node,
die Settings, die die Parameter als Nodename und einen Value (Wert) des Parameters enthalten.
z.B.
<Programm Name="Testprogramm">
<Settings>
<Settingname Value=""/>
<Settingname Value=""/>
...
</Settings>
</Programm>
Optional kann zu jedem Programm ein Node "Rules" erstellt werden, der n Regeln (Rule) enthält.
eine Regel (Rule) wird mit den direkten Argumenten Wert, Vergleich und RegexID im Node erstellt.
Weitere Parameter werden ebenfalls direkt im Node angegeben.
<Rules>
<Rule Vergleich="non" Wert="0" RegexID="0"/>
</Rules>
Eine Regel kann entweder eine Applikationsregel (Standard) oder eine Systemregel für
Systemvariablen darstellen. Die Regel ist dann mit dem Type "Int" zu versehen. Die RegexID
wird dann zu ID und enthält den Namen der Variable.
<Rules>
<Rule Type="Int" Vergleich="eq" Wert="0" ID="Variablenname1"/>
Auswertung von Rules in Abhängigkeit von Parametern:
Wenn das Programmargument Shell = True dann wird das System kein Feedback der Applikation
erhalten. Jedoch kann das System mit allen Dateien von bekannten Dateierweiterungen gestartet werden.
Bsp. Pfad = "Test.mp3" Shell = True startet den Standardplayer für MP3-Dateien.
Regeln in einer Applikation mit Shell=True werden nicht ausgewertet !
Wenn das Programmargument Shell=False ist wird weiter nach Applikationstyp unterschieden:
Typ des Programms (Type) = "Programm":
Bei dem Programmtyp Programm können unter Path nur direkt ausführbare Dateien angegeben werden.
Das Programm wird mit den Argumenten Arguments des Programms bzw. wenn vorhanden mit den Argumenten (Arg) des Aufrufers gestartet.
Der Standardeingang (STDIN) und der Fehlereingang (STDERR) werden nach dem Beenden des
Prozesses ausgewertet.
Typ des Programms (Type) = "Deamon":
Das Programm wird mit den Argumenten Arguments des Programms bzw. wenn vorhanden mit den Argumenten (Arg) des Aufrufers gestartet (Erster Start). Wird ein weiteres mal der Deamon mit Argumenten
aufgerufen, so werden die Argumente direkt an das Programm per Standardausgabe (STDOUT) übergeben.
Der Standardeingang (STDIN) und der Fehlereingang (STDERR) werden nach jeder Ausgbabe der
Anwendung ausgewertet (Deamon wird nie beendet).
Auswertung von Programmereignissen:
Die Programmereignisse werden nach Erhalt mittels der in Regel definierten Regel ausgewertet.
Die Regel ist ein Regulärer Ausdruck !
Bsp..:
Eingangstext = "5 neue Mails erhalten [Neue Zeile] 6 neue Feeds erhalten"
Regel = "^(.) neue (.*?) erhalten$"
Vergleich = "eq"
Wert = "1"
RegexID = 1
Die Regel wird über den Eingangstext gelegt und erzeugt eine mehrdimensionale Liste an Parametern:
Z | 1 | 2
1 | 5 | Mails
2 | 6 | Feeds
In der weiteren Verarbeitung wird nun jede Zeile auf die RegexID ausgewertet:
Bsp.: RegexID 1 ergibt:
Z | 1
1 | 5
2 | 6
Nun wird jede Zeile mit dem Vergleichsparameter und dem gegebenen Wert verglichen:
RegexID 1 = "5" Vergleich eq (gleich) Wert = "1" ist nicht wahr ! (5 = 1)
würde nun der Vergleichswert "gt" (größer als) lauten, so wäre das Ergebnis der Auswertung Wahr.
(5 > 1) ist Wahr!
Bei einem wahren Ergebnis werden die untergeordneten Aktionen gestartet und die untergeordneten Regeln
ebenfalls überprüft und ggf. ausgeführt (logisches und).
In dem genannten Beispiel könnte nun unterschieden werden nach RegexID=2 "Mails" oder "Feeds"
und unterschiedliche Programme gestartet werden.
Auswertung von Systemvariablen:
Bei Systemvariablen wird der gespeicherte wert mittels der Vergleichsfunktion mit dem hinterlegten
Wert verglichen:
gespeichert="1" Vergleich="eq" Wert="0" (1 = 0) = Falsch
gespeichert="1" Vergleich="gt" Wert="0" (1 > 0) = Wahr
Starten eines Events (Programm)
Wenn eine Regel als Ergebnis Wahr zurückliefert, so werden die enthaltenen Aktionen ausgeführt.
Eine Aktion muss auf ein Programm verweisen (eindeutiger Name des Programms) unter "Start".
Desweiteren können an das Programm Argumente übergeben werden, die die Argumente des
Programms ersetzen. Um das nächste Programm erst nach beenden des ersten Programms zu starten,
muss das Argument "Wait" auf "True" gesetzt werden. Des weiteren kann ein Zeitbereich definiert werden,
in dem diese Aktion ausgeführt werden darf ("6-16|18-20") startet dieses Event nur in dem Zeitraum von
6-16 Uhr oder von 18-20 Uhr.
Jedes Event kann Regeln enthalten, die die Regeln des Programms für diese Ausführung überschreiben.
z.B.
Das System besitzt ein Programm Spracherkennung, dass mehrere Befehle interpretieren kann.
Wenn jetzt z.B. eine Frage per Sprachausgabe an den Benutzer gestellt wird, bei dem nur die Antwort
Ja und Nein gültig sind, so müssen alle anderen Regeln der Spracherkennung außerkraftgesetzt werden.
Zudem erlaubt das Regeln ersetzen einen Dialog mit dem Benutzer, mit dem der Benutzer durch mehrere
Stufen geleitet wird.
Systemvariable erstellen:
Um eine Systemvariable zu erstellen wird ein Name und ein Wert (Value) vergeben:
Bsp.:
<CreateSysVar Name="Test" Value="1"/>
Der Variablenname wird beim ersten ansprechen der Variable erzeugt und bei Bedarf überschrieben.
Die vorab gezeigte Regel "Auswertung von Systemvariablen" überprüft genau diese Regel.
Programm erstellen:
Mit "CreateProgramm" kann ein Programm in den Startbereich übernommen werden.
Die Definition von Createprogramm ist mit Programm identisch. Dies ist vorallem für
z.B. einen Wecker sinnvoll, den der Benutzer am Vorabend aktivieren kann.
Module:
MOD_FB = Facebook Statusbenachrichtigungen und weitere Funktionen
MOD_GCL = Google Commandline, Kalender, Videos, Kontakte, ...
MOD_GMail = Abruf für Mails eines Gmail-Kontos
MOD_RSS = Abruf und Speicherung von RSS-Feeds
MOD_SHOW = Anzeige eines Webbrowsers (Anzeigezeit, Position, URL)
MOD_Sprachausgabe = Aussprechen von Texten
MOD_Spracherkennung = Spracherkennung von Windows (eher schlecht)
MOD_Spracherkennung2 (Deamon) = Spracherkennung über Julius / Sphinx (Hot-Words)
MOD_Spracherkennung3 = Spracherkennung über Google (Freitext)
MOD_T4E = Techno4Ever aktuelles Lied (Main, Hard, Club)
MOD_Telnet = Empfängt Nachrichten über Telnet
=> verbunden mit FHEM
MOD_Tweet = Sendet und Empfängt Twitter-Meldungen
MOD_WebGet = Get an einen Webservice senden
MOD_Webserver = Webserver für SVG (Scalable Vector Graphics) (Positionsbezogen)
MOD_Wetter = Wetter abrufen (Webservice)
MOD_WinGui = Grafische Oberfläche für Steuerungsbefehle
MOD_YesNo = Abfrage auf Ja/Nein mit Default und Timer-Funktion
MOD_Apache = Apache Webserver
MOD_TVP = TV-Programm des Tages
MOD_Faststart (Deamon) = Indizierung und Suche von Ordnern im Dateisystem
MOD_KEY (Deamon) = Keylogger (überwacht selektiertes Programm, Mausklicks und Tastatur)
MOD_MSG (Deamon) = Fenster für Nachrichten
MOD_Serial (Deamon)= Serielle Schnittstelle überwachen
=> Per Arduino (Tel, Infrarot, Türstatus, Temp, Bewegung, KVM-Switch)
=> C-Code wird bereitgestellt.
Externe Programme (Definition siehe Herstellerseiten):
bzw.: /Help -Help /h oder -h
NodeJS = JavaScript Interpreter, wird verwendet für Webserver.
RuleGen = JavaScript für Blockly (Puzzelprogrammiersystem siehe AppInventor)
SVN = Subversion = Aktualisierung von Programmpaketen
Beep1 (Script) = Ein Piep auf dem Systemlautsprecher
JaNEin (Script) Abfrage auf Ja oder Nein
WBin = Unix Commandline Utitlities = Sammlung von Unix-Befehlen (Wget, Tail)
AutoIT = Automatisierung von Maus, Tastatur, ...
blat = Mailprogramm
Curl = Webrequests mittels Post oder Get senden
DevCon = Device Console (An den Computer angeschlossene Geräte)
espeak = Sprachausgabe (blechern)
ffmpeg/ffplay = Kommandozeilenvideoaufnahme, betrachtung, konvertierung
fping = Ping Tool mit weiteren Optionen
nircmd = Automatisierung von Lautstärke, Diverses
sendEmail = Mail sender (bevorzugt)
sfk166 = Diverse Tools
wget = Führt eine Get-Anfrage an einen Webservice aus.
WolCMD = Wake on Lan = Computer über Netzwerk einschalten.
Windows-Programme:
Ping = Prüft die Verfügbarkeit eines angeschlossenen Netzwerkgeräts
Wscript = Windows Scripting Host = Führt VBS oder VBE bzw. HTA aus.
NetStat = Netzwerkstatistik
WMIC = Windows Verwaltungs Instrumentation (WMI-Abfragen an das System)
Weitere (Scripting):
PHP = Führt PHP-Scripts aus
Perl = Führt Perl Programme aus
Python = Führt Python Programme aus
Weitere (Keine Verwendung):
ImageMagick = Bildbearbeitung / Konvertierung
Aubio/SOX/WAVPACK = Tonaufnahmen / Bearbeitung
NeoLog = Logfiles auslesen
NMAP/NCAT = Netzwerktools
WirelessNetconsole = Übersicht über drahtlose Netzwerke
pdftk = PDF-Toolkit = Bearbeiten von PDF-Dateien
php2exe = wandelt PHP-Dateien in .exe um (Vorsicht!) oder Exe-P
SNMP = Simply Network Management Protocoll (Abfragen von Parametern von Netzwerkgeräten)
SysInternals Suite = Diverse Programme für Windows (Tasks, Anmelden, Remote Prozesse)
Tesseract-OCR = Texterkennung
7z = 7Zip Dateien komprimieren / dekomprimieren
FCIV = Cipher = Checksummenberechnung
robocopy = Kopieren von Dateien
MortScript = Ähnlich AutoIt, weniger Funktionen
Eine Regel kann entweder eine Applikationsregel (Standard) oder eine Systemregel für
Systemvariablen darstellen. Die Regel ist dann mit dem Type "Int" zu versehen. Die RegexID
wird dann zu ID und enthält den Namen der Variable.
<Rules>
<Rule Type="Int" Vergleich="eq" Wert="0" ID="Variablenname1"/>
</Rules>
Auswertung von Rules in Abhängigkeit von Parametern:
Wenn das Programmargument Shell = True dann wird das System kein Feedback der Applikation
erhalten. Jedoch kann das System mit allen Dateien von bekannten Dateierweiterungen gestartet werden.
Bsp. Pfad = "Test.mp3" Shell = True startet den Standardplayer für MP3-Dateien.
Regeln in einer Applikation mit Shell=True werden nicht ausgewertet !
Wenn das Programmargument Shell=False ist wird weiter nach Applikationstyp unterschieden:
Typ des Programms (Type) = "Programm":
Bei dem Programmtyp Programm können unter Path nur direkt ausführbare Dateien angegeben werden.
Das Programm wird mit den Argumenten Arguments des Programms bzw. wenn vorhanden mit den Argumenten (Arg) des Aufrufers gestartet.
Der Standardeingang (STDIN) und der Fehlereingang (STDERR) werden nach dem Beenden des
Prozesses ausgewertet.
Typ des Programms (Type) = "Deamon":
Das Programm wird mit den Argumenten Arguments des Programms bzw. wenn vorhanden mit den Argumenten (Arg) des Aufrufers gestartet (Erster Start). Wird ein weiteres mal der Deamon mit Argumenten
aufgerufen, so werden die Argumente direkt an das Programm per Standardausgabe (STDOUT) übergeben.
Der Standardeingang (STDIN) und der Fehlereingang (STDERR) werden nach jeder Ausgbabe der
Anwendung ausgewertet (Deamon wird nie beendet).
Auswertung von Programmereignissen:
Die Programmereignisse werden nach Erhalt mittels der in Regel definierten Regel ausgewertet.
Die Regel ist ein Regulärer Ausdruck !
Bsp..:
Eingangstext = "5 neue Mails erhalten [Neue Zeile] 6 neue Feeds erhalten"
Regel = "^(.) neue (.*?) erhalten$"
Vergleich = "eq"
Wert = "1"
RegexID = 1
Die Regel wird über den Eingangstext gelegt und erzeugt eine mehrdimensionale Liste an Parametern:
Z | 1 | 2
1 | 5 | Mails
2 | 6 | Feeds
In der weiteren Verarbeitung wird nun jede Zeile auf die RegexID ausgewertet:
Bsp.: RegexID 1 ergibt:
Z | 1
1 | 5
2 | 6
Nun wird jede Zeile mit dem Vergleichsparameter und dem gegebenen Wert verglichen:
RegexID 1 = "5" Vergleich eq (gleich) Wert = "1" ist nicht wahr ! (5 = 1)
würde nun der Vergleichswert "gt" (größer als) lauten, so wäre das Ergebnis der Auswertung Wahr.
(5 > 1) ist Wahr!
Bei einem wahren Ergebnis werden die untergeordneten Aktionen gestartet und die untergeordneten Regeln
ebenfalls überprüft und ggf. ausgeführt (logisches und).
In dem genannten Beispiel könnte nun unterschieden werden nach RegexID=2 "Mails" oder "Feeds"
und unterschiedliche Programme gestartet werden.
Auswertung von Systemvariablen:
Bei Systemvariablen wird der gespeicherte wert mittels der Vergleichsfunktion mit dem hinterlegten
Wert verglichen:
gespeichert="1" Vergleich="eq" Wert="0" (1 = 0) = Falsch
gespeichert="1" Vergleich="gt" Wert="0" (1 > 0) = Wahr
Starten eines Events (Programm)
Wenn eine Regel als Ergebnis Wahr zurückliefert, so werden die enthaltenen Aktionen ausgeführt.
Eine Aktion muss auf ein Programm verweisen (eindeutiger Name des Programms) unter "Start".
Desweiteren können an das Programm Argumente übergeben werden, die die Argumente des
Programms ersetzen. Um das nächste Programm erst nach beenden des ersten Programms zu starten,
muss das Argument "Wait" auf "True" gesetzt werden. Des weiteren kann ein Zeitbereich definiert werden,
in dem diese Aktion ausgeführt werden darf ("6-16|18-20") startet dieses Event nur in dem Zeitraum von
6-16 Uhr oder von 18-20 Uhr.
Jedes Event kann Regeln enthalten, die die Regeln des Programms für diese Ausführung überschreiben.
z.B.
Das System besitzt ein Programm Spracherkennung, dass mehrere Befehle interpretieren kann.
Wenn jetzt z.B. eine Frage per Sprachausgabe an den Benutzer gestellt wird, bei dem nur die Antwort
Ja und Nein gültig sind, so müssen alle anderen Regeln der Spracherkennung außerkraftgesetzt werden.
Zudem erlaubt das Regeln ersetzen einen Dialog mit dem Benutzer, mit dem der Benutzer durch mehrere
Stufen geleitet wird.
Systemvariable erstellen:
Um eine Systemvariable zu erstellen wird ein Name und ein Wert (Value) vergeben:
Bsp.:
<CreateSysVar Name="Test" Value="1"/>
Der Variablenname wird beim ersten ansprechen der Variable erzeugt und bei Bedarf überschrieben.
Die vorab gezeigte Regel "Auswertung von Systemvariablen" überprüft genau diese Regel.
Programm erstellen:
Mit "CreateProgramm" kann ein Programm in den Startbereich übernommen werden.
Die Definition von Createprogramm ist mit Programm identisch. Dies ist vorallem für
z.B. einen Wecker sinnvoll, den der Benutzer am Vorabend aktivieren kann.
Module:
MOD_FB = Facebook Statusbenachrichtigungen und weitere Funktionen
MOD_GCL = Google Commandline, Kalender, Videos, Kontakte, ...
MOD_GMail = Abruf für Mails eines Gmail-Kontos
MOD_RSS = Abruf und Speicherung von RSS-Feeds
MOD_SHOW = Anzeige eines Webbrowsers (Anzeigezeit, Position, URL)
MOD_Sprachausgabe = Aussprechen von Texten
MOD_Spracherkennung = Spracherkennung von Windows (eher schlecht)
MOD_Spracherkennung2 (Deamon) = Spracherkennung über Julius / Sphinx (Hot-Words)
MOD_Spracherkennung3 = Spracherkennung über Google (Freitext)
MOD_T4E = Techno4Ever aktuelles Lied (Main, Hard, Club)
MOD_Telnet = Empfängt Nachrichten über Telnet
=> verbunden mit FHEM
MOD_Tweet = Sendet und Empfängt Twitter-Meldungen
MOD_WebGet = Get an einen Webservice senden
MOD_Webserver = Webserver für SVG (Scalable Vector Graphics) (Positionsbezogen)
MOD_Wetter = Wetter abrufen (Webservice)
MOD_WinGui = Grafische Oberfläche für Steuerungsbefehle
MOD_YesNo = Abfrage auf Ja/Nein mit Default und Timer-Funktion
MOD_Apache = Apache Webserver
MOD_TVP = TV-Programm des Tages
MOD_Faststart (Deamon) = Indizierung und Suche von Ordnern im Dateisystem
MOD_KEY (Deamon) = Keylogger (überwacht selektiertes Programm, Mausklicks und Tastatur)
MOD_MSG (Deamon) = Fenster für Nachrichten
MOD_Serial (Deamon)= Serielle Schnittstelle überwachen
=> Per Arduino (Tel, Infrarot, Türstatus, Temp, Bewegung, KVM-Switch)
=> C-Code wird bereitgestellt.
Externe Programme (Definition siehe Herstellerseiten):
bzw.: /Help -Help /h oder -h
NodeJS = JavaScript Interpreter, wird verwendet für Webserver.
RuleGen = JavaScript für Blockly (Puzzelprogrammiersystem siehe AppInventor)
SVN = Subversion = Aktualisierung von Programmpaketen
Beep1 (Script) = Ein Piep auf dem Systemlautsprecher
JaNEin (Script) Abfrage auf Ja oder Nein
WBin = Unix Commandline Utitlities = Sammlung von Unix-Befehlen (Wget, Tail)
AutoIT = Automatisierung von Maus, Tastatur, ...
blat = Mailprogramm
Curl = Webrequests mittels Post oder Get senden
DevCon = Device Console (An den Computer angeschlossene Geräte)
espeak = Sprachausgabe (blechern)
ffmpeg/ffplay = Kommandozeilenvideoaufnahme, betrachtung, konvertierung
fping = Ping Tool mit weiteren Optionen
nircmd = Automatisierung von Lautstärke, Diverses
sendEmail = Mail sender (bevorzugt)
sfk166 = Diverse Tools
wget = Führt eine Get-Anfrage an einen Webservice aus.
WolCMD = Wake on Lan = Computer über Netzwerk einschalten.
Windows-Programme:
Ping = Prüft die Verfügbarkeit eines angeschlossenen Netzwerkgeräts
Wscript = Windows Scripting Host = Führt VBS oder VBE bzw. HTA aus.
NetStat = Netzwerkstatistik
WMIC = Windows Verwaltungs Instrumentation (WMI-Abfragen an das System)
Weitere (Scripting):
PHP = Führt PHP-Scripts aus
Perl = Führt Perl Programme aus
Python = Führt Python Programme aus
Weitere (Keine Verwendung):
ImageMagick = Bildbearbeitung / Konvertierung
Aubio/SOX/WAVPACK = Tonaufnahmen / Bearbeitung
NeoLog = Logfiles auslesen
NMAP/NCAT = Netzwerktools
WirelessNetconsole = Übersicht über drahtlose Netzwerke
pdftk = PDF-Toolkit = Bearbeiten von PDF-Dateien
php2exe = wandelt PHP-Dateien in .exe um (Vorsicht!) oder Exe-P
SNMP = Simply Network Management Protocoll (Abfragen von Parametern von Netzwerkgeräten)
SysInternals Suite = Diverse Programme für Windows (Tasks, Anmelden, Remote Prozesse)
Tesseract-OCR = Texterkennung
7z = 7Zip Dateien komprimieren / dekomprimieren
FCIV = Cipher = Checksummenberechnung
robocopy = Kopieren von Dateien
MortScript = Ähnlich AutoIt, weniger Funktionen



Keine Kommentare:
Kommentar veröffentlichen