[Erledigt] DOIF Zahl aus Reading extrahieren

Begonnen von kotaro, 08 März 2019, 08:11:41

Vorheriges Thema - Nächstes Thema

kotaro

Hallo,

irgendwie komme ich gerade nicht weiter, kennt jamand eine Möglichkeit beim setreading $EVENT:d in einem DOIF nachzubilden?
Ich möchte aus dem event control 20.0 den Zahlenwert (20.0) nur nutzen und exportieren. leider macht er bei {("$EVENT" =~ "[^\ ]* (-?\d+(\.\d+)?)";$1)} nur das draus: "control 20.0" =~ "[^\ ]* (-?\d+(\.\d+)?)"

das DOIF ist folgendermaßen:
(["HM_ZHR_Wohnzimmer:^control.*"])
(setreading DI_WZ_Licht HZ_Manual {("$EVENT" =~ "[^\ ]* (-?\d+(\.\d+)?)";$1)}
)


kann mir jemand helfen?

rvideobaer

Hallo,

versuche es doch einfach mal mit "ReadingsNum".

Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

kotaro

Zitat von: CoolTux am 08 März 2019, 08:23:37
Hier findest Du Deine Antwort
https://wiki.fhem.de/wiki/Set_magic

Ach vielen dank. Genau das ist es, wonach ich gesucht habe.. hatte zwar :d schon gefunden, was so aber nur bei Notify's ging...
Jetzt hab ich wieder was tolles gelernt..

hier meine Lösung: klappt perfekt
(["HM_ZHR_Wohnzimmer:^control.*"])
(setreading DI_WZ_Licht HZ_Manual [HM_ZHR_Wohnzimmer:control:d]
)

Damian

Zitat von: kotaro am 08 März 2019, 08:46:57
Ach vielen dank. Genau das ist es, wonach ich gesucht habe.. hatte zwar :d schon gefunden, was so aber nur bei Notify's ging...
Jetzt hab ich wieder was tolles gelernt..

hier meine Lösung: klappt perfekt
(["HM_ZHR_Wohnzimmer:^control.*"])
(setreading DI_WZ_Licht HZ_Manual [HM_ZHR_Wohnzimmer:control:d]
)


In Wirklichkeit benutzt du im DOIF kein set magic, sondern die Funktionalität von DOIF (set magic wurde später angelehnt an die DOIF-Syntax in FHEM eingebaut).

Der Funktionsumfang von set magic ist kleiner und zum Teil anders als die DOIF-Syntax, daher bei DOIF immer zuerst die Commandref zu DOIF aufschlagen, denn diese wird bei DOIF als erstes benutzt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kotaro

Zitat von: Damian am 08 März 2019, 09:32:43
In Wirklichkeit benutzt du im DOIF kein set magic, sondern die Funktionalität von DOIF (set magic wurde später angelehnt an die DOIF-Syntax in FHEM eingebaut).

Der Funktionsumfang von set magic ist kleiner und zum Teil anders als die DOIF-Syntax, daher bei DOIF immer zuerst die Commandref zu DOIF aufschlagen, denn diese wird bei DOIF als erstes benutzt.

Das habe ich aber auch gemacht. U d leider hatte ich bisher nicht die Option gefunden, nachdem ich comandref und alles durchgearbeitet, da hatte ich den Hinweis irgendwie nicht gefunden...
Daher hatte ich schon mit dem Perl Ausdruck gearbeitet aber der wollte auch nicht wie ich will...

Wo wird dann setmagic genutzt?

Lg

Damian

Zitat von: kotaro am 08 März 2019, 10:02:48
Das habe ich aber auch gemacht. U d leider hatte ich bisher nicht die Option gefunden, nachdem ich comandref und alles durchgearbeitet, da hatte ich den Hinweis irgendwie nicht gefunden...
Daher hatte ich schon mit dem Perl Ausdruck gearbeitet aber der wollte auch nicht wie ich will...

Wo wird dann setmagic genutzt?

Lg

https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kotaro

Richtig.
Diese hab ich auch gesehen, es sah für mich aber so aus, das es nur für die Abfrage eines DOIF oder DOELSE ist, nicht das dies für eine Set genutzt werden kann...
Vielleicht kann man das in der Standartdefinition am Anfang auch bei set hinschreiben, dann wäre das etwas klarer ^^

lg

Damian

#8
Zitat von: kotaro am 09 März 2019, 08:25:10
Richtig.
Diese hab ich auch gesehen, es sah für mich aber so aus, das es nur für die Abfrage eines DOIF oder DOELSE ist, nicht das dies für eine Set genutzt werden kann...
Vielleicht kann man das in der Standartdefinition am Anfang auch bei set hinschreiben, dann wäre das etwas klarer ^^

lg

DOIF-Syntax gilt überall innerhalb eines DOIF (Bedingung, Ausführungsteil) es hat nichts mit set zu tun (funktioniert natürlich auch dort, wie sonst überall im DOIF)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF