Hallo,
ok, meine letzte Frage für heute. ::)
Beim "normalen DOIF" gibt's doch oben diese praktische Möglichkeit um per set cmd_x ein bestimmtes Kommando/ einen bestimmten DOIF-Zweig zu triggern.
Wie triggert man denn sinnvollerweise die einzelnen Blöcke eines DOIFs, in dem der Perl-Modus verwendet wird?
Gruß Chris
Indem man den passenden Trigger mit dem FHEM-Befehl trigger auslöst.
z. B.
{if ("^FS$:^on$") {....
kannst du in der Commandozeile mit trigger FS on auslösen.
Hm, ok.
Also muss ich, wenn ich z.B. ohnehin bereits mehrere Bedingungen haben, die gemeinsam ein Kommando auslösen sollen noch jeweils zusätzlich einen Trigger definieren, der alternativ zu den genannten Bedingungen das zu triggernde Kommando triggern kann.
z.B. wären es hier ja zwei Bedingungen, die beide erfüllt sein müssten:
{if([HM_rolloEsszimmer:""] and get_Reading("doifState") eq "idle") {set_Reading("doifState","sonnenstDisabled");
fhem_set("doif_sonnenstand disable")}}
Hier müsste ich also dann per or und einer weiteren Bedingung somit den zusätzlichen Trigger definieren?
Gruß Chris
Zitat von: chq am 14 Oktober 2018, 20:17:49
Hm, ok.
Also muss ich, wenn ich z.B. ohnehin bereits mehrere Bedingungen haben, die gemeinsam ein Kommando auslösen sollen noch jeweils zusätzlich einen Trigger definieren, der alternativ zu den genannten Bedingungen das zu triggernde Kommando triggern kann.
z.B. wären es hier ja zwei Bedingungen, die beide erfüllt sein müssten:
{if([HM_rolloEsszimmer:""] and get_Reading("doifState") eq "idle") {set_Reading("doifState","sonnenstDisabled");
fhem_set("doif_sonnenstand disable")}}
Hier müsste ich also dann per or und einer weiteren Bedingung somit den zusätzlichen Trigger definieren?
Gruß Chris
ja
Zitat von: Damian am 14 Oktober 2018, 19:34:16
Indem man den passenden Trigger mit dem FHEM-Befehl trigger auslöst.
z. B.
{if ("^FS$:^on$") {....
kannst du in der Commandozeile mit trigger FS on auslösen.
Das würde
state vom Device
FS triggern, oder? Hast Du mir evtl. einen Link, dem ich entnehmen kann, wie man ein bestimmtes Reading eines Devices antriggern kann?
Gruß Chris
Zitat von: chq am 15 Oktober 2018, 20:27:49
Das würde state vom Device FS triggern, oder? Hast Du mir evtl. einen Link, dem ich entnehmen kann, wie man ein bestimmtes Reading eines Devices antriggern kann?
Gruß Chris
Durch die Abfrage eines Readings wird ja gleichzeitig auf das Event des Readings reagiert.
([device:reading] eq ...)
nur auf das Event des Readings reagieren:
(["^device$:^reading"])
Die Eventabfrage ist aber eher unüblich, weil man meistens wie im ersten Beispiel auch gleich den Inhalt des Readings auswerten will.
Zitat von: Damian am 14 Oktober 2018, 19:34:16
Indem man den passenden Trigger mit dem FHEM-Befehl trigger auslöst.
z. B.
{if ("^FS$:^on$") {....
kannst du in der Commandozeile mit trigger FS on auslösen.
Hallo,
ich habe das ausprobiert, musste jedoch feststellen, dass ich in meinem Fall noch eckige Klammern setzen musste:
{if([23:59] or ["^doif_rolloEZhandlerPerl$:^on$"]) {set_Reading("doifState","idle");
fhem_set("doif_sonnenstand enable")}}
}
Warum ist das so? Steht bestimmt auf ner ganz arg schlauen Perl-Seite. :P
Gruß Chris
Zitat von: chq am 28 Oktober 2018, 19:08:16
Hallo,
ich habe das ausprobiert, musste jedoch feststellen, dass ich in meinem Fall noch eckige Klammern setzen musste:
{if([23:59] or ["^doif_rolloEZhandlerPerl$:^on$"]) {set_Reading("doifState","idle");
fhem_set("doif_sonnenstand enable")}}
}
Warum ist das so? Steht bestimmt auf ner ganz arg schlauen Perl-Seite. :P
Gruß Chris
Die eckigen Klammern hatte ich vergessen, daher war mein Vorschlag nicht korrekt. Die Syntax in eckigen Klammern ist DOIF-spezifisch und hat nicht viel (außer bei Regex-Angaben) mit Perl zu tun:
Die Sachen werden ja recht ausführlich in der Commandref zu DOIF behandelt:
https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
und
https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
Vielen Dank für's Raussuchen und Deine Geduld. :)
Ich denke, jetzt habe ich es verstanden.
Grundsätzlich muss man sich bei der Erstellung eines DOIFs also immer die Frage stellen, ob man Events, Zustände, oder beides abfragen will, um das zu erreichen, was man erreichen möchte.
Gruß Chris
Hallo,
es hat sich eine Zusatzfrage ergeben:
Wie würde man vorgehen, wenn man mit einem Trigger gerne mehrere Perl-Blöcke innerhalb eines Perl-Modus-DOIFs aufrufen wollen würde?
Geht das und falls ja, wie?
Gruß Chris
Zitat von: chq am 30 Oktober 2018, 11:48:55
Hallo,
es hat sich eine Zusatzfrage ergeben:
Wie würde man vorgehen, wenn man mit einem Trigger gerne mehrere Perl-Blöcke innerhalb eines Perl-Modus-DOIFs aufrufen wollen würde?
Geht das und falls ja, wie?
Gruß Chris
So, wie es beschrieben ist. Im Perl-Modus muss man sich da nicht viel Gedanken machen. Man kann beliebig viele Blöcke definieren und in jedem Block kann man beliebige Trigger angeben - auch die gleichen. Die Blöcke sind unabhängig voneinander, genauso als wären sie in verschiedenen DOIF-Modulen.
DOIF
{ .... ["mytrigger"]....}
{ .... ["mytrigger"]....}
...
Jeah! Cool.
Gruß Chris