Hallo zusammen
ich möchte gerne ein einfaches Modul schreiben, das mir über GetHttpFile einen CSV String holt und dann in den Readings anzeigt.
Den Rumpf des Modules habe ich mir schon zusammen gesucht.
Gibt es schon so ein ähnliches Modul ?
Gibt es ein WIKI über die Modul Entwicklung ?
Was muss alles dringend in einem Modul vorhanden sein damit es sauber arbeitet?
Wie mache ich es, dass das Modul selbständig jede Minute die Abfrage und Verarbeitung startet. Irgendwie mit dem InternalTimer aber den Aufruf habe ich noch nicht ganz verstanden.
Könnt Ihr mir bitte ein Paar Tipps geben.
lg
Stefan
Zitat von: Stefan M. schrieb am Do, 10 Oktober 2013 12:27über GetHttpFile einen CSV String holt und dann in den Readings anzeigt.
...
Gibt es schon so ein ähnliches Modul ?
Als einzelnes Modul in fhem wüsste ich das nicht, aber es gibt das Perl-Modul Text::CSV das Dir schon recht viel weiterhelfen kann.
Eine praktische Anwendung einer solchen Verarbeitung findest Du z.B. im fhem-Modul 55_GDS.pm
Der InternalTimer ist eigentlich relativ simpel erklärt:
Er generiert quasi ein "internes at" mit einer einmaligen Ausführungszeit und erwartet u.a. den Namen einer Funktion, die zum festgelegten Zeitpunkt gestartet werden soll.
Wichtig: Der Timer wiederholt sich nicht automatisch! Das bedeutet, in der aufgerufenen Funktion musst Du den Timer dann wieder neu setzen.
Schau Dir am besten mal die Funktion InternalTimer() in der
fhem.pl an, und dann vielleicht noch die praktische Anwendung in verschiedenen Modulen, die ihn verwenden.
Hallo Betateilchen
welche Möglichkeit gibt es noch in einem Modul die Daten Regelmäßig abzufragen.
Ich habe die Abfrage und Auswertung im _Get drin, bei jedem Refresh der Seite bzw. Neuaufruf des Devices werden die Daten geholt, ausgewertet und ins Logfile geschrieben bzw. der CSV String als Reading angezeigt.
Ich möchte nun das die Aktualisierung automatisch durchgeführt wird.
LG
Stefan
Zitat von: Stefan M. schrieb am Do, 10 Oktober 2013 14:19welche Möglichkeit gibt es noch in einem Modul die Daten Regelmäßig abzufragen.
Die einzig sinnvolle ist der InternalTimer.
Hallo Betateilchen
OK.
Etwa so ?
1. Ich definiere ein Attribut mit der Timerzeit (x sec)
2. Ich setze den InternalTimer in der Initialize und oder Define (wie muss ich erst noch suchen)
3. in der aufgerufenen Fuktion muss der InternalTimer neu gesetzt werden
Hab ich das richtig verstanden ?
LG
Stefan
Hallo Stefan,
könntest Du mir auch damit weiterhelfen:
http://forum.fhem.de/index.php/topic,15230.msg98863.html#msg98863 (http://forum.fhem.de/index.php/topic,15230.msg98863.html#msg98863)
Vielen Dank
Zitat von: Stefan M. am 10 Oktober 2013, 15:32:161. Ich definiere ein Attribut mit der Timerzeit (x sec)
2. Ich setze den InternalTimer in der Initialize und oder Define (wie muss ich erst noch suchen)
3. in der aufgerufenen Fuktion muss der InternalTimer neu gesetzt werden
Hab ich das richtig verstanden ?
Ja. Und zu 2: im Define (wobei ich immer das globale INITIALIZED abwarten würde.