FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Wernieman am 09 Januar 2014, 07:44:25

Titel: Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: Wernieman am 09 Januar 2014, 07:44:25
Hallo (und guten Morgen),

ich bin gerade dabei, eine Unterstützung für mpd in fhem einzubauen.
Siehe auch http://forum.fhem.de/index.php/board,53.0.html (http://forum.fhem.de/index.php/board,53.0.html)

Jetzt hänge ich aber an einem Implementierungsproblem:
Mit mpc idle bleipt der Prozess stehen, bis eine Änderung im mpd stattfindet, so das man dann die Statusänderung in fhem machen kann. Ist also eine Event-Bassierte Lösung, die ich besser finde als simples Polling.

In Pseudocode:
Schleife Beginn
  Lesen Status mpd -> Update fhem
  mpc idle
Schleife Ende


Nur ..
a) wie implementiert man so etwas in fhem? Habe mich intensiv versucht in die Doku und den anderen beispielen zu knien, aber keine Lösung gefunden
b) Kann man in fhem auch Überwachen, ob die Schleife noch läuft? Sie dann Eventuell wieder starten bei problemen?

Ich weiß, das man es extern von fhem lösen könnte ... nur würde mir eine Implementierung in fhem besser gefallen.

Danke für Anregungen!

Werner
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: UliM am 09 Januar 2014, 08:06:16
Hi,
Lies Dir mal das durch
http://forum.fhem.de/index.php/topic,18457.msg122765.html#msg122765
und achte auf internalTimer.
Viel Erfolg,
Uli
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: Wernieman am 09 Januar 2014, 08:11:30
Hallo,

danke für die Info, genau die Doku habe ich nicht gefunden .. dann habe ich heute Abend viel Lesestoff ,o)

Gruß,
Werner
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: UliM am 09 Januar 2014, 08:23:09
Hi,
Gern :)
Im Wiki gibt's auch ne Guideline für die Benennung von Befehlen für Video/Audiogeräte, aber die hast Du ja vmtl gefunden.
Gruß Uli
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: Wernieman am 09 Januar 2014, 08:36:20
Hallo,

habe es mir in einer "pause" kurz durchlesen können. InternalTimer wird aber doch für Polling benötigt?

In diesem Falle bleibt aber die Abfrage so lange stehen, wie der "pseudosleep" "mpc idle" beendet wird.

Alternativ könnte ich mit "mpc ideloop" eine Dauerschleife als "pseudogerät" öffnen. Kann die fhem Funktion DevIo_OpenDev auch auf Programmausgaben angewendet werden?

Danke für eine Antwort .. schwimme noch sehr im Thema und habe auch noch keine analogdefinition gefunden, an der ich lernen könnte

Gruß,
Werner
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: justme1968 am 09 Januar 2014, 13:26:16
wenn die kommunikation mit dem mpd über ein socket geht musst du dieses in die fhem select list hängen und fhem ruft dann automatisch deine readFn auf sobald daten da sind.

schau dir mal z.b. das mailcheck oder itunes modul an. die verwenden das beide.

gruss
  andre
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: Wernieman am 09 Januar 2014, 13:31:54
Über das Socket würde ich "nur" mitkriegen, das sich Daten geändert haben. Kann ich dann Problem los über das gleiche Socket Kommandos setzen und Daten empfangen?

Würde sogar den "Umweg" über die Konsole überflüssig machen ...
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: justme1968 am 09 Januar 2014, 13:39:50
wie gesagt kenne ich mpd nicht. prinzipiell und von fhem seite aus reicht ein socket.

gruss
  andre
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: Wernieman am 09 Januar 2014, 13:47:07
O.K. danke schon mal für den Hinweis.

Rein Prinzipiell kann man dem Socket sagen, das er sich solange schlafenlegen soll, bis eine Statusänderung stattfindet. Dann meldet er sich zurück, das eine Änderung (im Modul XX) stattgefunden hat. Mann muß aber den genauen Status abfragen. Wenn man Ihn nicht schlafenlegt, gibt es einen TimeOut.

Alternativ (und bisher von mir wegen meiner Mangelnden Kenntnis verwendet) war die verwendung eines Kommandozeilenprogramms. Da gibt es die Möglichkeit zu pollen oder eben das Programm "schlafenzulegen". Wenn es aufwacht kann man eben den Output parsen. Nur .... wie geht es prinzipiell ...

Finde nur das itune-Device von Dir nicht ... wird scheinbar ein anstrengendes Wochenende ;o)
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: justme1968 am 09 Januar 2014, 13:49:09
itunes ist hier im forum im threaf zu finden. im wiki ist auch ein link.

ein anderes beispiel wäre mailcheck. 

wenn du nach selectList Sucht findest so noch mehr module.

gruss
  andre
Titel: Antw:Wie baue ich "Endlosschleife" in ein Modul
Beitrag von: Wernieman am 09 Januar 2014, 14:03:27
Schon mal danke ... habe also genug zu lesen ;o)

P.S. nach selectList zu suchen bringt mir leider praktisch nicht :o(