neue Features: Attribut myReadings

Begonnen von Damian, 23 April 2017, 17:15:14

Vorheriges Thema - Nächstes Thema

Damian

Oft braucht man eine Variable um sich Dinge zu merken. Auf der FHEM-Ebene nutzt man dazu häufig Readings. Mit dem Attribut myReadings soll ähnlich userReadings die Möglichkeit geboten werden, eigene Readings mit Hilfe der DOIF-Syntax zu definieren, auf die man zugreifen kann.

Syntax

attr <DOIF-Modul> myReadings <readingname1>:<definiton>, <readingname2>:<definition>,...

<definition>: Beliebige Perldefinitionen ergänzt um DOIF-Syntax in eckigen Klammern. Angaben in eckigen Klammern wirken triggernd und aktualisieren das definierte Reading.

Beispiel:

define di_temp DOIF ([$SELF:temperature]>20) (push "Die Durchschnittstemperatur ist höher als 20 Grad, sie beträgt [$SELF:temperature]")
DOELSE

attr di_temp myReadings temperature:[#average:d2:"":temperature]


Hierbei wird der Durchschnittswert nur einmal berechnet, statt zwei mal, wenn man die Aggregationsfunktion direkt angeben würde.

Mit myreadings kann man ebenso mehrer Readings innerhalb eines DOIFs definieren, die Informationen sammeln sollen, auf die man überall zugreifen kann.

weitere Beispiele:

attr di_window myReadings open_window:"Offene Fenster ".[@"^window":state:"open"], closed_windows:"Geschlossene Fenster ".[@"^window":state:"closed"]

Korrigierter Wert um ein Grad:

attr di_temp_corr myReadings temperature:[aussen:temperature]-1

Temperaturdifferenz:

attr di_temp_diff myReadings diff:[aussen:temperature:d2]-[innen:temperature:d2]


Anregungen hier posten.

Edit: Beispiele wurden angepasst.

Das Attribut heißt jetzt DOIF_Readings.

Die Funktionalität ist hier eingeflossen https://forum.fhem.de/index.php/topic,77690.0.html
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Attributnamen beginnen im Allgemeinen mit einem kleinen Buchstaben und weitere Worte im Namen mit einem Großbuchstaben(userReadings, readingList, setList, webCmd, usw.)

Daher würde ich "myReadings" als Attributnamen vorschlagen.

Damian

Zitat von: Ellert am 23 April 2017, 19:15:32
Attributnamen beginnen im Allgemeinen mit einem kleinen Buchstaben und weitere Worte im Namen mit einem Großbuchstaben(userReadings, readingList, setList, webCmd, usw.)

Daher würde ich "myReadings" als Attributnamen vorschlagen.

kein Problem, ist noch nichts programmiert :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Was passiert, wenn (was man wahrscheinlich nicht machen sollte) ich den Wert mit set überschreibe?

Damian

Zitat von: Per am 25 April 2017, 13:47:30
Was passiert, wenn (was man wahrscheinlich nicht machen sollte) ich den Wert mit set überschreibe?

dann würde das Reading bis zum nächsten Trigger der zu der angegebenen Rexex passt überschrieben bleiben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

OK, dass passt.

Fehlt eigentlich nur noch die eigene Oberfläche und DOIF braucht das FHEM-Anhängsel nicht mehr  ;D ;D ;D

the ratman

Zitat von: Per am 25 April 2017, 14:44:25
OK, dass passt.

Fehlt eigentlich nur noch die eigene Oberfläche und DOIF braucht das FHEM-Anhängsel nicht mehr  ;D ;D ;D

--> https://developers.google.com/blockly/
das währe dann idiotensicher *g*
→do↑p!dnʇs↓shit←

Damian

Zitat von: the ratman am 25 April 2017, 16:00:49
--> https://developers.google.com/blockly/
das währe dann idiotensicher *g*

muss nur einer programmieren, der Zugriff auf alle Informationen im System ist ja da :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

the ratman

ich kauf schon mal bücher ... seit ich weiß, das kombjuda anders geschrieben wird, find ich auch infos dazu *g*
ich sollte mit der implementation von blockly in ca. 10 - 15 jahren fertig sein. kannst du bis dahin nix mehr am doif ändern bitte? sonst bin ich wieder verwirrt *bg*
→do↑p!dnʇs↓shit←

Damian

Zitat von: the ratman am 25 April 2017, 16:40:07
ich kauf schon mal bücher ... seit ich weiß, das kombjuda anders geschrieben wird, find ich auch infos dazu *g*
ich sollte mit der implementation von blockly in ca. 10 - 15 jahren fertig sein. kannst du bis dahin nix mehr am doif ändern bitte? sonst bin ich wieder verwirrt *bg*

Dann wird das wohl nix, es steht zu viel in der Pipeline.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#10
Im ersten Post kann man die erste Version laden.

Die Definition der Readings habe ich bewusst in Perlsyntax belassen, um möglichst flexibel zu bleiben. Sie wird um DOIF-Syntax ergänzt. DOIF-Angaben in eckigen Klammern werden bei der Definition des Attributes wie bei DOIF-Bedingungen in Perl-Funktionen übersetzt. Beim Trigger wird nur noch eval ausgeführt - ein erneutes Parsen entfällt.

Doku fehlt noch. Die Beispiele im ersten Post wurden auf die aktuelle Syntax aktualisiert.




Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: Damian am 23 April 2017, 17:15:14Angaben in eckigen Klammern wirken triggernd und aktualisieren das definierte Reading.
Das macht es bei mir, wenn ich das zugehörige Device direkt ändere. Ändere ich es über das betreffende DOIF, dann leider nicht immer. Ich habe aber noch kein System erkannt, um dir einen Tipp geben zu können.

Damian

Zitat von: Per am 21 Juni 2017, 23:40:25
Das macht es bei mir, wenn ich das zugehörige Device direkt ändere. Ändere ich es über das betreffende DOIF, dann leider nicht immer. Ich habe aber noch kein System erkannt, um dir einen Tipp geben zu können.

Wenn die Änderung durch MyReadings vorgenommen wird, dann ist Selbsttriggerung-Sperre ausgeschaltet - das eigene DOIF reagiert auf den Trigger. Wenn du aber per set eigene Readings änderst, dann schlägt die Selbsttriggerung-Sperre zu.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Geht das mit dem attr selftrigger einzustellen?

Gleich selbst beantwortet: geht!

Fixel2012

hi Damian,

wann ist es geplant diese DOIF-Funktion offiziell zu verteilen?

Danke und Gruß,

Fixel
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify