Montag, 1. April 2013

EVA_CMD


Entwicklung von EVACMD 
Eingabe Verarbeitung Ausgabe 



























29.06.2013 Updates
- Regelverarbeitung modifiziert (Für Regex je Rule)
- Jede Regel kann nun Ihren eigenen Regex für die Auswertung besitzen (Fallback auf Programm Regex).
- Senden von Dateien per Mail-Anforderung über GET (Datei) oder FIND (Dateiliste)
- Struktur der Config modifiziert (Programmeinstellungen in 'Settings', Regeleinstellungen in 'Event')
- Hilfsdatei für Binärdatei kann in Programm hinterlegt werden (Help)
- Teilkonfigurationsdateien der Programme kann in den Programmeinstellungen unter 'Config' definiert werden (Config).

Hier ein Beispiel der neuen Config:

    <Group Name="Deamons" Visible="False">
      <Programm Name="MOD_serial">

        <Rules>
          <Rule Vergleich="eq" Wert="12495" RegexID="1">
            <Event Start="NIRCMD">
              <Arg Value="mutesysvolume 2" />
              <Arg Value="^(.*?)$" />
              <Wait Value="0" />
              <ArgRep Value="" />
            </Event>
            <Event Start="WGET">
              <Arg Value="http://192.168.1.113:8080/jsonrpc?..." />
              <Wait Value="False" />
            </Event>
          </Rule>

        </Rules>
        <Settings>
          <Update Value="False" />
          <Path Value="MOD_Serial\MOD_serial.exe" />
          <Rule Value="(.*?)$" />
          <Shell Value="False" />
          <Type Value="Deamon" />
          <Help Value="MOD_Serial\Help.txt" />
          <Settings Value="MOD_Serial\Settings.xml" />
        </Settings>

      </Programm>
    </Group>

20.06.2013 Updates
Download hier: EvaCMD

- Faststart auf SQLite-Datenbank umgestellt, Indizierung verbessert
- Neues Modul Mod_RSS für RSS-Feeds Updates

14.06.2013 Updates 
Download hier: EvaCMD

- Besseres Prozessmanagement
- Verkapselung der Regeln
- Performance und Stabilität
- Zeitbereiche für Regeln (Nur Stundenbasiert)
- Update der Infos bei Deamons
- Neues Modul - Telnet
- Neue Spracherkennung über CMU Sphinx bzw. Julius
- Neue Spracherkennung (Online, Freitext) über Google-Dienst
- MOD-Show erneuert
- MOD-Wingui verbessert
- Webserver unterstützt direkte Weiterleitung von Befehlen
- MOD-Wetter hinzugefügt
- Senden von Mails über SendeMail.exe
- Diverse Bugfixes
- Messagelisten entfernt
- Neues Modul FastStart (Indizierung von Ordnern und Suche)
- Redirect von Meldungen an die Deamons angepasst.
- Entfernen von verteilten Programmstrukturen

26.04.2013 neues zu EVACMD 

Zeitberechnung unterstützt Feiertage
EVACmd wird jetzt zu EVAGUI mit einer Benutzeroberfläche ..
Neue Funktionen der EVAGUI: Win-GUI
Mod Serial ist jetzt konfigurierbar.
Viele kleine Verbesserungen
Vorbereitung für Facebook-Nachrichtenabfrage über FBCMD
Programme können separiert abgelegt werden.

14.4.2013 ... Modul- und EVACmd-Update

Tool zum automatisierten starten von Deamons und Programmen mithilfe einer
konfigurierten XML-Datei. Die Auswertungen erfolgen mit Regex.

Dieses Ostern konnte ich mich gottseidank intensiv mit der Programmierung
von EVACMD auseinandersetzen und kann nun schonmal die erste Beta-Version
präsentieren !

Eine erste Beta-Version findet sich unter:
EvaCMD auf Soruceforge.Net

Beispielkonfiguration:

EVACmd startet den Service Webserver  als deamon.

Der Webservice ist nun im Browser unter http://localhost erreichbar und stellt die im Ordner vorhandene test.svg grafisch dar.
Bei einem klick auf 'Spracherkennung' liefert der Webserver die ID zu dem geklickten
Bildbereich an die Konsole zurück. (ID=Sprache)
EVACmd überprüft die ID anhand der Regeln und findet die Regel 1 eq Sprache.
EVACmd führt den zu der Regel hinterlegten Befehl z.B. Sprechen mit ersetzten Argumenten
z.B. 'Bitte sprechen Sie' aus.
Das Programm für Sprechen wird mit den Argumenten gestartet und es wird 'Bitte Sprechen Sie ausgegeben'. Durch die Regel Wait=True wird EvaCmd angewiesen den nächsten Befehl erst zu starten, nachdem der aktuelle Befehl ausgeführt wurde.
EVACmd findet eine weitere Regel für Sprache, bei der das Programm zu Spracheingabe gestartet wird. Das Resultat der Spracheingabe wird wiederrum an EVACmd übergeben (z.B. Fernseh aus)
Aufgrund der hinterlegten Regeln des Programms Sprache wird ein Webget ausgeführt, dessen definition in der Konfigurationsdatei zu Webget definiert wurde.

Webget startet nun einen aufruf einer IP-Adresse+Port mit dem hinterlegtenAufruf.
Der Aufruf übergibt an FHEM den Befehl den Fernseher auszuschalten, dieser wiederrum sendet
an das Gerät den Befehl TV aus.


Beschreibung der Zeitdefinition (Times):

Die Zeiten können in der XML-Datei auf unterschiedlichste Weise zusammengestellt werden.

Die Grunddefinition besteht aus Jahr:Monat:Tag:Stunde:Minute:Sekunde

wird zwischen den Doppelpunkten eine Zahl eingetragen, so wird diese auf den aktuellen Moment
addiert z.B. (0:0:0:0:30:0) fürt dazu dass der Befehl alle 30 Minuten (ausgehend von der aktuellen
Uhrzeit) ausgeführt wird.

Eine Klammerung bei Stunden, Minuten und Sekunden bewirkt dass der Befehl zu einer absoluten Zeit
ausgeführt wird. z.B. 0:0:0:(07):0:0 startet den Befehl um 7 Uhr. Folgen nach der 7 keine Klammern,
so wird der Befehl im definierten Zeitraum und Interval der Minuten bzw. Sekunden ausgeführt.

Monate und Wochen können in 3 verschiedenen Varianten konfiguriert werden.
Feste Intervalle können mit Zahlen definiert werden.
Ein Absoluter Tag bzw. Monat wird mit (Tag oder Monat) definiert.
Spezifische Tage bzw. Monate können in der Blockschreibweise (JFMAMJJASOND) für Monate
und (MDMDFSS) für Wochen definiert werden. Sollen Tage in diesem Interval ausgelassen
werden, so ist ein "_" einzutragen (z.B (MDMDF__) für nur Wochentage). Die Wochen bzw.
Monate müssen immer die vollständige Definition enthalten.

Sollen Feiertage in Bayern mitberücksichtigt werden, so ist am Ende der Zeitdefinition ein ":"
und die Einstellungen für Feiertage berücksichtigt werden.
Feiertage werden mit + und - in der Form: Ein Tag vor dem Feiertag, der Feiertag, 1 Tag nach dem Feiertag
definiert. ":___" mit + wird nur dieser Tag gewertet (":+__") führt den Befehl nur am Vortag zu einem Feiertag aus. Ein - (":-__") Führt den Befehl an allen anderen Tagen außer diesem Feiertag aus.
Ein Unterstrich ignoriert die Definition für diesen Tag.
(Beta-Phase)

Beschreibung der Programmdefinition

Programme werden in der XML-Datei unter Programms definiert.
Programms kann mehrere Programm (also Programme mit Parametern enthalten).

Jedes Programm muss dabei mit den Eigenschaften

Name: Der Name des Starters (darf nur einmal vorkommen!)
Time: Eine Zeit aus der Zeitdefinition oder die Zeitdefinition.
Path: Der Pfad zu der Anwendung:
... Absoluter Pfad z.B. C:\Bin\Test.exe
... Relativer Pfad im Bezug zum Anwendungspfad z.B. Bin\Test.exe
--- Systemprogramm z.B. Ping.exe
Arguments: Argumente für das Programm (werden durch Rules möglicherweise ersetzt)
Rule: Eine Regex-Regel, wie der Rückgabewert verarbeitet wird.
Type: Deamon (läuft ständig im Hintergrund) bzw. Programm (wird nach ausführung beendet)
Shell: unüberwachten Shell-Execute verwenden ?

Desweiteren kann das Programm mit Regeln (Rules) versehen werden.
Die Regeln werden in der definierten Reihenfolge abgearbeitet.
Um Regeln zu definieren muss in der Definition des Programms ein Rules Knoten vorhanden sein.
Der Rules-Knoten kann mehrere Rules (Regeln) enthalten.

Eine Regel besteht aus folgenden Eigenschaften:

IfVar: 0 = ExitCode der Anwendung
IfVar: > 0 = Bereich des Regex-Codes der Auswertung z.B. Test(.*?)Test = 1 für den Bereich zwischen Test...Test
IfChk: Regel der Überprüfung: eq = gleich, lt = kleiner, gt = größer, ...
Start: Startet ein Programm aus Programms der XML-Definition
Arg: Argumente zu ersetzen:
... Ist Arg leer, so wird das Argument des Programms verwendet.
... Enthält Arg einen Text, so wird das Argument des Programms durch diesen ersetzt.
... SonderCodes in Argumenten sind:
[WERT] wird gegen der Wert der Regex-Auswertung ersetzt
[TEXT] wird durch den Text ersetzt.
[TEXT1] wird durch Textzeile 1 der Rückgabe ersetzt (Werte 1-5)
[LINES] wird durch die Anzahl Zeilen ersetzt
[LINES1] wird durch die Anzahl Zeilen - Wert ersetzt
[DATE] wird durch das aktuelle Datum ersetzt
[TIME] wird durch die aktuelle Zeit ersetzt

Folgende Module sind bereits verfügbar und im ersten Paket enthalten:

Service und vorkonfigurierte XML-Datei

Deamon für mini-Webserver (aus localhost Port 80 mit vorkonfigurierter SVG und Index.html)
Der Webserver läuft auf Localhost Port 80 und befindet sich im Ordner MOD_Webserver.
Im Ordner ist eine test.svg enthalten. Diese Svg enthält die Definition für das anzuzeigende
Bild.  Jedes Rect-Element enthält eine ID, die vom Webserver an die Konsole
übergeben wird. Dieser Befehl kann in der XML-Definition weiterverarbeitet werden.

Deamon für Windows-Gui
Win-GUI

Programm für Spracheingabe
Die Spracheingabe erfordert eine Liste mit Wörtern, die erkannt werden sollen.
Diese Datei liegt im Pfad des Moduls mit dem Namen Words.txt
Nur Wörter, die in dieser Liste enthalten sind werden an die Konsole übergeben.

Programm für Sprachausgabe
Die Sprachausgabe erfordert im Modulordner einen Unterordner MP3.
Die übergebenen Kommandos der Kommandozeile werden über einen
Webservice erzeugt und als MP3 heruntergeladen und ausgegeben.

Prüfen eines Google-Mailkontos
MOD_Gmail1.exe.config enthält die Einstellungen für Benutzername und
Kennwort. Die Mails werden per Atom-Feed heruntergeladen und interpretiert.

Modul für WGet
Wget kann einfache Http-Requests an eine Internetseite senden (Bsp. xbmc Webinterface oder FHEM-Webinterface). dazu muss im Ordner des Webget eine Datei mit dem Namen Settings.cfg
exisitieren, in der (Name) {TAB} (Befehlszeile) steht.
Die zu übergebenen Daten müssen UTF8-Codiert vorliegen.

weitere mögliche Module:

Zum Testen der Module bzw. CMD Programme empfehle ich ein anderes
Programm von mir, den Binary-Starter: Binary Starter
XDA-Forum 

Bei der Entwicklung von eigenen Modulen muss immer daruaf geachtet
werden dass die Ausgabe per STDOut erfolgt und ein Exitcode übergeben wird.
Ein Beispielscript (VBS) ist unter Sourceforge unter den Modulen zu finden.

SNMPGet
Wake on Lan
NIRCMD
DevCon
FCIV
RoboCopy
AutoITX
Terminal
Blat (Mailprogramm)
Fping
NMap, NCat, NPing
GoogleCL (Kontake, Kalender, Blogs, Videos, ...)
NEOLog
PDFTK
PSTools (Oder besser gleich Sysinternals Suite)
Wirelessnetconsole
SFK166
mysql client
Icinga_Get

Systemkommandos:
----------------------------
Ping
Tracert
WMIC (WMI-Konsole)
Taskkill
Netstat
netsh
rasdial
systeminfo

Besonderer Dank an:
----------------------------
Georg Guß für die Unterstützung in der Programmierung
Sebastian Löw für Ideen zu dem Projekt
Software Zabbix und Icinga für Ideen zu dem Projekt
und natürlich allen anderen Programmierern, deren
Kommandozeilenprogrammeverwendung finden.


Bitte gerne weitere Vorschläge für Deamons bzw.
Programme machen !

Keine Kommentare:

Kommentar veröffentlichen