Nächstes Projekt: VDR/XBMC "Device"

Begonnen von Guest, 28 März 2012, 14:29:33

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Nachdem ich nun eckige Augen habe und die Tricks des Debuggers
kennengelernt habe, ist mir eine Implementierung gelungen, die ich in Kürze
zur Verfügung stellen werde.

Ich habe ein Workflow-Modul geschrieben mit dem man Workflow-Devices in
fhem definieren kann
- Ein Workflow-Device muss einen Typ haben, der Typ muss im Folder
vorhanden sein
- Ein typ besteht aus einem Perl-Modul und XML-Dateien zur Konfiguration
- Bisher habe ich den Typ "HostController" erstellt mit dem ich meine
Linux-Kisten im Netzwerk steuern kann
- Dem Modul liegt das cpan workflow Modul zu Grunde, welches ich aber stark
verändert / erweitert habe
- Der Workflow und die Statusübergangsbedingungen und -Aktionen sind im XML
konfiguriert und übersichtlich in den Modulen einkodiert (in perl!)
- Die Workflows/Typen sind parametrierbar (im Beispiel HostController:
Hostname und "Socket" (bei mir FS20 Dosen an denen die hängen)
- Die Workflows können sowohl den Status überwachen als auch einen
"desired"-Status ansteuern (wie ein Regler)
- Beim Überwachen reagieren Sie auf das System selbst und spiegeln den
Systemzustand in einem Reading in FHEM wieder
- Beim Steuern versucht der Workflow eigenständig einen gewünschten
("desired") Zustand durch Verkettung von Aktionen und Überwachung der
Auswirkungen / Bedingungen zu erreichen. So lange in meinem Beispiel-Typen
z.B. der desired-Zustand auf "on" steht, führt ein manuelles runterfahren
oder ausschalten der Steckdose dann wieder zum einschalten. Das Modul ist
hier hartnäckig. Das Desired-Setting kann über "set ..." gesetzt und
auch wieder entfernt werden, um das Gerät dann wieder "frei" laufen zu
lassen

- Die Implementierung nutzt viele CPAN Module und wird so z.B. niemals auf
einer Fritzbox lauffähig sein.
- Es wird pro Workflow ein eigener Thread gestartet (!!!) ... eine
thread-lose-Lösung habe ich bisher nicht.
- Die Kommunikation mit dem Subthread erfolgt über 2 shared-Variablen und
über ein Signal mit dem der Thread beim "delete " beendet wird.

Ich werde den Code noch bereinigen und dann falls gewünscht für
experimentierfreudige Personen bereitstellen. Bei einem Einsatz muss davon
ausgehen, dass ein laufendes FHEM-System instabil wird und ggf. abstürzt.

Viele Grüße!



Am Sonntag, 15. April 2012 11:27:45 UTC+2 schrieb unimatrix:
>
> Ich hab den Ansatz mit dem Workflow jetzt mal weiter verfolgt und mir ein
> Testsetup gebaut, welches nix anderes kann als einen Linux-Rechner an oder
> auszuschalten bzw. runterzufahren oder neu zu starten.  Das ganze nach
> folgendem Modell. Sieht bisher ganz vielversprechend aus.
>
> Parallell zu Workflow baue ich mir noch mit CPAN Graph die Graphenstruktur
> so auf, dass ich einen Pfad finden kann. Wenn ich also in unknown bin und
> will jetzt zu on dann sagt mit das Ding automatisch, ich muss jetzt den
> Pfad unknown->off->boot->on gehen. Dies dispatche ich dann in einer
> schleife an den Workflow
>
> Also nur mal so als Zwichenmeldung...ich  bastle weiter
>
> mit FHEM hat das im Moment zwar nix mehr zu tun. Soweit ich das sehe
> brauche ich für jeden solchen Workflow eigene Prozesse die immer laufen die
> dann aber ein Interface zu FHEM haben um dort events zu generieren und auf
> Wunschzustände zu reagieren und damit ich alles mit den anderen FHEM-Sachen
> in Beziehung setzen kann.
>
> VG
>
>           +---------+
>        +- | INITIAL |
>        |  +---------+
>        |    |
>        |    |
>        |    v
>        |  +-------------------+     +------+
>        |  |        on         | --> | halt |
>        |  +-------------------+     +------+
>        |    |          |    ^         |
>        |    |          |    |         |
>        |    v          |    |         |
>        |  +---------+  |    |         |
>   +----+> |  boot   | -+----+         |
>   |    |  +---------+  |              |
>   |    |    |          |              |
>   |    |    |          |              |
>   |    |    v          |              |
>   |    |  +---------+  |              |
>   |    +> | unknown | <+              |
>   |       +---------+                 |
>   |         |                         |
>   |         |                         |
>   |         v                         |
>   |       +---------+                 |
>   +------ |   off   | <---------------+
>           +---------+
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com