UserReadings: Unterschied zwischen den Versionen

Aus FHEMWiki
(→‎Beispiele: simple "Umbenennung" - https://forum.fhem.de/index.php/topic,93329.15.html)
K (Formatierung; Baustellen-Hinweis entfernt)
Zeile 1: Zeile 1:
{{SEITENTITEL:userReadings}}  <!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat -->
{{SEITENTITEL:userReadings}}  <!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat -->
{{Baustelle}}
Über das Attribut [[userReadings]] können bei einem Device benutzerdefinierte Readings einschließlich der Anweisungen zum Befüllen derselben festgelegt werden. Das können zum Einen Formatänderungen ("sprintf"), oder aber auch durch die ''Modifier''
Über das Attribut [[userReadings]] können bei einem Device benutzerdefinierte Readings einschließlich der Anweisungen zum Befüllen derselben festgelegt werden. Das können zum Einen Formatänderungen ("sprintf"), oder aber auch durch die ''Modifier''
* difference
* difference
Zeile 13: Zeile 12:
Im April 2016 hat sich die Verarbeitung des ''Triggers'' dahingehend geändert, dass die Trigger-Spezifikation jetzt als [[Regulärer Ausdruck]] interpretiert wird, damit also z.B. ein <code>avgTemp:temperature</code> geändert werden muss in <code>avgTemp:temperature.*</code>.
Im April 2016 hat sich die Verarbeitung des ''Triggers'' dahingehend geändert, dass die Trigger-Spezifikation jetzt als [[Regulärer Ausdruck]] interpretiert wird, damit also z.B. ein <code>avgTemp:temperature</code> geändert werden muss in <code>avgTemp:temperature.*</code>.


Technische Details dazu wurden in {{Link2Forum|Topic=52165|LinkText=diesem Forenthread}} diskutiert.  
Technische Details dazu wurden in {{Link2Forum|Topic=52165|LinkText=diesem Forenthread}} diskutiert.}}
}}
Siehe {{Link2CmdRef|Anker=readingFnAttributes}}.
Siehe {{Link2CmdRef|Anker=readingFnAttributes}}.


* Bei Eingabe im Editor-Feld müssen mehrere Befehle mit einem ";" getrennt werden, bei Änderung in der Eingabezeile sind zwei ";" notwendig.
* Bei Eingabe im Editor-Feld müssen mehrere Befehle mit einem ";" getrennt werden, bei Änderung in der Eingabezeile sind zwei ";" notwendig.
Zeile 26: Zeile 19:
* mehrere UserReadings werden durch Komma getrennt.
* mehrere UserReadings werden durch Komma getrennt.


 
:<code>myreading {my $v = ReadingsVal($name,"actuation","error")+62;; fhem("set PID desired $v");; $v},</code>
myreading {my $v = ReadingsVal($name,"actuation","error")+62;; fhem("set PID desired $v");; $v},
:<code>myreading2 {my $v = ReadingsVal($name,"actuation","error")+62;; fhem("set PID2 desired $v");; $v}</code>
myreading2 {my $v = ReadingsVal($name,"actuation","error")+62;; fhem("set PID2 desired $v");; $v}


== Beispiele ==
== Beispiele ==
==== Ein Reading soll einen anderen Namen bekommen ====
==== Ein Reading soll einen anderen Namen bekommen ====
Das vorhandene Reading "value" der Device "ElbePegelSchoena" soll künftig in "Pegel" umbenannt werden. Das geht nicht. Man kann aber ein neues Reading "Pegel" mit genau gleichem Wert erzeugen:  
Das vorhandene Reading "value" der Device "ElbePegelSchoena" soll künftig in "Pegel" umbenannt werden. Das geht nicht. Man kann aber ein neues Reading "Pegel" mit genau gleichem Wert erzeugen:  
 
:<code>attr ElbePegelSchoena userReadings Pegel { ReadingsVal("ElbePegelSchoena1","value",0) }</code>
attr ElbePegelSchoena userReadings Pegel { ReadingsVal("ElbePegelSchoena1","value",0) }


==== Ausgabe eines Homematic 3-State Fenstersensor als Zahl für Visualisierung mit Icons ====
==== Ausgabe eines Homematic 3-State Fenstersensor als Zahl für Visualisierung mit Icons ====
:<code>attr HM_XXXXXX userReadings Statenum {if(ReadingsVal("HM_XXXXXX","state","") eq "closed") {return 0} elsif (ReadingsVal("HM_XXXXXX","state","") eq "tilted") {return 1} elsif (ReadingsVal("HM_XXXXXX","state","") eq "open") {return 2} else {return -1}}</code>


attr HM_XXXXXX userReadings Statenum {if(ReadingsVal("HM_XXXXXX","state","") eq "closed") {return 0} elsif (ReadingsVal("HM_XXXXXX","state","") eq "tilted") {return 1} elsif (ReadingsVal("HM_XXXXXX","state","") eq "open") {return 2} else {return -1}}
==== Ausgabe als Moving Average und formatierung mit sprintf ====
==== Ausgabe als Moving Average und formatierung mit sprintf ====
attr HZ_EINSTRAHLUNG_RAW userReadings Einstr_Mean.av {sprintf("%.1f",movingAverage("HZ_EINSTRAHLUNG_RAW","reading",1200))}
:<code>attr HZ_EINSTRAHLUNG_RAW userReadings Einstr_Mean.av {sprintf("%.1f",movingAverage("HZ_EINSTRAHLUNG_RAW","reading",1200))}</code>


==== Umrechnung der Temperatur (durch 10 geteilt) und Einheit [°C] angehängt ====
==== Umrechnung der Temperatur (durch 10 geteilt) und Einheit [°C] angehängt ====
attr HZ_EINSTRAHLUNG_T userReadings SolarTemp {ReadingsVal("HZ_EINSTRAHLUNG_T","reading",0)/10  ." °C"}
:<code>attr HZ_EINSTRAHLUNG_T userReadings SolarTemp {ReadingsVal("HZ_EINSTRAHLUNG_T","reading",0)/10  ." °C"}</code>


==== Batterieüberwachung durch Erweiterung mit notify und userReading ====
==== Batterieüberwachung durch Erweiterung mit notify und userReading ====
[[Batterieüberwachung]]
... ist im Detail auf der Seite [[Batterieüberwachung]] beschrieben.
 
==== Integralfunktion - integral ====
==== Integralfunktion - integral ====
Die Verwendung der Integralfunktion bei ''userReadings'' ist ausführlich im Forenbeitrag {{Link2Forum|Topic=26300|Message=193084|LinkText=Integralfunktion bei UserReadings}} erklärt.
Die Verwendung der Integralfunktion bei ''userReadings'' ist ausführlich im Forenbeitrag {{Link2Forum|Topic=26300|Message=193084|LinkText=Integralfunktion bei UserReadings}} erklärt.
Zeile 53: Zeile 44:
== Links ==
== Links ==
* {{Link2CmdRef|Lang=de|Anker=userReadings}} - userReadings
* {{Link2CmdRef|Lang=de|Anker=userReadings}} - userReadings
[[Kategorie:Attribut (allgemeingültig)]]
[[Kategorie:Attribut (allgemeingültig)]]

Version vom 20. November 2018, 09:57 Uhr

Über das Attribut userReadings können bei einem Device benutzerdefinierte Readings einschließlich der Anweisungen zum Befüllen derselben festgelegt werden. Das können zum Einen Formatänderungen ("sprintf"), oder aber auch durch die Modifier

  • difference
  • differential
  • integral
  • offset
  • monotonic

gesteuerte Berechnungen sein.

Syntax

Emblem-question-yellow.svgGeändertes Verhalten - bitte beachten

Im April 2016 hat sich die Verarbeitung des Triggers dahingehend geändert, dass die Trigger-Spezifikation jetzt als Regulärer Ausdruck interpretiert wird, damit also z.B. ein avgTemp:temperature geändert werden muss in avgTemp:temperature.*.

Technische Details dazu wurden in diesem Forenthread diskutiert.

Siehe commandref/readingFnAttributes.

  • Bei Eingabe im Editor-Feld müssen mehrere Befehle mit einem ";" getrennt werden, bei Änderung in der Eingabezeile sind zwei ";" notwendig.
  • Die Variable, dessen Wert man im Reading haben möchte, kann man einfach ans Ende stellen[1]
  • mehrere UserReadings werden durch Komma getrennt.
myreading {my $v = ReadingsVal($name,"actuation","error")+62;; fhem("set PID desired $v");; $v},
myreading2 {my $v = ReadingsVal($name,"actuation","error")+62;; fhem("set PID2 desired $v");; $v}

Beispiele

Ein Reading soll einen anderen Namen bekommen

Das vorhandene Reading "value" der Device "ElbePegelSchoena" soll künftig in "Pegel" umbenannt werden. Das geht nicht. Man kann aber ein neues Reading "Pegel" mit genau gleichem Wert erzeugen:

attr ElbePegelSchoena userReadings Pegel { ReadingsVal("ElbePegelSchoena1","value",0) }

Ausgabe eines Homematic 3-State Fenstersensor als Zahl für Visualisierung mit Icons

attr HM_XXXXXX userReadings Statenum {if(ReadingsVal("HM_XXXXXX","state","") eq "closed") {return 0} elsif (ReadingsVal("HM_XXXXXX","state","") eq "tilted") {return 1} elsif (ReadingsVal("HM_XXXXXX","state","") eq "open") {return 2} else {return -1}}

Ausgabe als Moving Average und formatierung mit sprintf

attr HZ_EINSTRAHLUNG_RAW userReadings Einstr_Mean.av {sprintf("%.1f",movingAverage("HZ_EINSTRAHLUNG_RAW","reading",1200))}

Umrechnung der Temperatur (durch 10 geteilt) und Einheit [°C] angehängt

attr HZ_EINSTRAHLUNG_T userReadings SolarTemp {ReadingsVal("HZ_EINSTRAHLUNG_T","reading",0)/10 ." °C"}

Batterieüberwachung durch Erweiterung mit notify und userReading

... ist im Detail auf der Seite Batterieüberwachung beschrieben.

Integralfunktion - integral

Die Verwendung der Integralfunktion bei userReadings ist ausführlich im Forenbeitrag Integralfunktion bei UserReadings erklärt.

Links