Ich möchte eine eigene Perl-Routine beim Ändern eines Readings aufrufen.
Mit:
my $val = ReadingsVal($dev,$reading,"???");
return "<div class='dval' informid='$dev-$reading'>$val</div>";
wird ein Readinginhalt aktualisiert, da ich aber noch Perl-Berechnungen beim Trigger vor der Ausgabe durchführen möchte, müsste ich auf eine zuvor definierte Funktion verweisen, die dann ausgeführt würde.
Ist so etwas möglich?
userReadings?
readingsChange?
Zitat von: rudolfkoenig am 19 August 2017, 12:45:33
userReadings?
readingsChange?
Es geht hier um eine eigene Weboberfläche innerhalb eines Moduls, wo HTML-Code zusammengebaut wird, da sind solche Attribute/Module nicht nutzbar.
Sorry, ich verstehe die Aufgabenstellung dann (immer noch) nicht.
Zitat von: Damian am 19 August 2017, 12:57:36
Es geht hier um eine eigene Weboberfläche innerhalb eines Moduls, wo HTML-Code zusammengebaut wird, da sind solche Attribute/Module nicht nutzbar.
Jetzt sage bitte nicht Du machst Ernst und baust für DOIF wie von den Usern vorgeschlagen ein eigenes Webfrontend ;D
Es geht hier um eine tabellarische Darstellung ähnlich ReadingsGroup.
Beispiel:
wenn man über $hash->{FW_detailFn}
zurückliefert:
"<div class='dval' informid='bla-myreading'>0</div>"
wird der Inhalt von myreading (hier mit Null voreingestellt) angezeigt und bei Änderungen des Readings aktualisiert.
und ich denke an so etwas:
"<div class='perl-eval' informid='bla-myreading' func='myPerlFunction'>0</div>"
Um das Problem zu loesen muss FW_detailFn JavaScript-Code ausliefern, was an den betroffenen HTML-Elementen eine setValueFn dranhaengt. Diese (JavaScript) Funktion wird von fhemweb.js:FW_doUpdate() jeweils mit dem neuen Wert des Readings aufgerufen.
Falls jemand mich ueberzeugt, dass sowas von mehreren Entwicklern benoetigt wird, dann bin ich bereit, diese Funktionalitaet in fhemweb.js zu integrieren.
Zitat von: rudolfkoenig am 20 August 2017, 11:23:39
Um das Problem zu loesen muss FW_detailFn JavaScript-Code ausliefern, was an den betroffenen HTML-Elementen eine setValueFn dranhaengt. Diese (JavaScript) Funktion wird von fhemweb.js:FW_doUpdate() jeweils mit dem neuen Wert des Readings aufgerufen.
Falls jemand mich ueberzeugt, dass sowas von mehreren Entwicklern benoetigt wird, dann bin ich bereit, diese Funktionalitaet in fhemweb.js zu integrieren.
Danke, dass du dir die Sache angeschaut hast. Es müsste allerdings, wie ich es verstanden habe, eine JavaScript-Funktion und nicht Perl-Funktion sein.
Desweiteren wäre es an ein Reading gebunden, ich habe aber noch beliebige Regex-Trigger - da habe ich etwas zu kurz gedacht.
Ich werde das Problem einfach umgehen, indem ich die eigentliche Perl-Funktion in ein DOIF_Reading (ähnlich userReadings) packe und dieses angebe.
Es ist dann zwar zweistufig, dafür funktioniert es mit bestehenden Mechanismen.
Aus meiner Sicht hat sich das Problem damit erledigt. Danke noch mal.
Wäre es eine gute Lösung den Inhalt von <div doifId='yxz'></div>
über
trigger <FHEMWEB Instanzen> JS:$("[doifId='xyz']").html("Ergebnis von myPerlFunction")
zu setzen?
Siehe https://forum.fhem.de/index.php/topic,48736.msg404497.html#msg404497