Hauptmenü

$DEVICE über perl bearbeiten

Begonnen von Porsti, 26 Februar 2017, 13:21:43

Vorheriges Thema - Nächstes Thema

Porsti

Hi,

ich habe ein DOIF für das Hochfahren der Rolläden beim Kippen der Fenster wenn das Rollo unten ist.

Habe jetzt eine Bedingung für jedes Fenster einzelln und würde es gerne kürzer gestalten.

Meine Device sind nach dem folgenden Prinzip aufgebaut:

KU.FENSTER passend zum KU.ROLLO

Jetzt würde ich gerne wenn KU.FENSTER geöffnet wird KU.ROLLO geöffnet wird.

Kann ich über perl im $DEVICE das Wort FENSTER gegen ROLLO tauschen?


...
(["FENSTER:open"])
(
IF ([KU.FENSTER] eq "open" and [KU.ROLLO:position] == 100) (set KU.ROLLO position 80)
...
)
DOELSEIF
(["FENSTER:closed"])
(
IF ([KU.FENSTER] eq "closed" and [KU.ROLLO:position] >= 75 and [KU.ROLLO] ne "up") (set KU.ROLLO closes)
...
)


Das IF habe ich dann für jedes Fenster und das würde ich gene verkürzen.

Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-SEC-SCo
MQTT,Shelly,  KNX (Merten, MDT, Siemens, ABB)
Erneuerbare: SMA + Mennekes

Damian

Das Thema hatten wir vor kurzem hier https://forum.fhem.de/index.php/topic,46327.msg592493.html#msg592493

Für dich bedeutet das:

DOIF (["FENSTER:open"] and [$DEVICE:position] == 100) (set {("$DEVICE"=~/^(.*)\.FENSTER/;"$1.ROLLO")} 80)
DOELSEIF ..
.

Den "closed"-Fall kannst du als Übungsaufgabe für dich betrachten.

Damit es auch funktioniert, musst du die aktuelle Version von DOIF haben.

Gruß

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

Porsti

Hallo Damian,

habe dieses Thema leider nicht gefunden.
Danke für die Hilfestellung.

Ich bin nicht auf der suche nach fertigen lösungen denn ich möchte verstehen was ich mache und dabei lernen.

Danke & Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-SEC-SCo
MQTT,Shelly,  KNX (Merten, MDT, Siemens, ABB)
Erneuerbare: SMA + Mennekes

Damian

Zitat von: Porsti am 26 Februar 2017, 13:44:56
Hallo Damian,

habe dieses Thema leider nicht gefunden.
Danke für die Hilfestellung.

Ich bin nicht auf der suche nach fertigen lösungen denn ich möchte verstehen was ich mache und dabei lernen.

Danke & Gruß
Porsti

Hier noch mal eine Alternative zum Thema formatierte Ausgabe eines Readings, siehe https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen

DOIF (["FENSTER:open"] and [$DEVICE:position] == 100) (set  [$SELF:Device:"^(.*)\.FENSTER":"$1.ROLLO"] 80)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF