FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rhoffm34 am 14 April 2019, 22:40:15

Titel: doif trigger funktioniert nicht
Beitrag von: rhoffm34 am 14 April 2019, 22:40:15
Hallo zusammen. Zwei Stunden probiert aber es will nicht funktionieren. Zu wenig Perl Erfahrung....

Ich habe folgendes doif geschrieben:

(
my $Brightness=Value("P_setValue_Brightness_Terasse");
{
if (ReadingsVal("HM_BM_Terasse","brightness",0) > $Brightness)
{fhem("set Status_Brightness_Terasse_TAGvsNACHT 1");}
if (ReadingsVal("HM_BM_Terasse","brightness",0) < $Brightness)
{fhem("set Status_Brightness_Terasse_TAGvsNACHT 0");}
})


Ich möchte in Abh. der Helligkeit am HM Bewegungsmelder
"(ReadingsVal("HM_BM_Terasse","brightness",0)"
verglichen mit einem Parameter
"my $Brightness=Value("P_setValue_Brightness_Terasse")"
einen Status
"("set Status_Brightness_Terasse_TAGvsNACHT 0")"
zwischen 1 uns 0 einstellen.

Das Problem:

Wenn zB. die Bedingung
if (ReadingsVal("HM_BM_Terasse","brightness",0) > $Brightness)
erfüllt ist wird das doif nicht ausgeführt.

Drücke ich hingegen

"set checkall" wird das doif richtig ausgeführt.

Kann jemand helfen? Anscheinen funktioniert so der trigger nicht...

Titel: Antw:doif trigger funktioniert nicht
Beitrag von: Otto123 am 14 April 2019, 23:17:53
Und einfach normales DOIF? Ohne Perl Erfahrung  ;)
define di_nudel DOIF
([HM_BM_Terasse:brightness] > [P_setValue_Brightness_Terasse])(set Status_Brightness_Terasse_TAGvsNACHT 1)
DOELSEIF
([HM_BM_Terasse:brightness] < [P_setValue_Brightness_Terasse])(set Status_Brightness_Terasse_TAGvsNACHT 0)


Du solltes noch überlegen was bei [HM_BM_Terasse:brightness] = [P_setValue_Brightness_Terasse] passieren soll.
Das hier ist die Umsetzung deiner Vorstellung/Idee. Das geht mit anderen Mittel noch viel einfacher. Ich würde ein userReadings machen. Das wäre auch mit Perl :)
attr HM_BM_Terasse userReadings Tag {ReadingsVal($name,"brightness",0) > Value("P_setValue_Brightness_Terasse") ? "1" : "0"}
Gruß Otto
Titel: Antw:doif trigger funktioniert nicht
Beitrag von: rhoffm34 am 14 April 2019, 23:29:51
So geht es auch, ich wollte mich aber auch mal weiter an perl versuchen. Was ist denn an meinem Code falsch, das es nicht funktioniert?
Titel: Antw:doif trigger funktioniert nicht
Beitrag von: Otto123 am 14 April 2019, 23:34:52
Dann mach kein DOIF :)

Ich weiß nicht was an Deinem Code falsch ist, weil ich das, was Du geschrieben hast und was mit Perl bei DOIF geht - einfach nicht verstehe.  :-[
Vielleicht ist es auch zu spät für verstehendes lesen  ::)

Wenn Du da Hilfe willst, poste ein list von deinem DOIF und nicht bloß Code Teile. Aus einem list kann und will vielleicht jemand was erkennen.

Wie gesagt, wenn Du eigentlich Perl machen wolltest nimm mein Vorschlag fürs userReadings  8)

Gruß Otto

P.S. DOIF wurde ursprünglich auch mit dem Ansatz gemacht einfache Funktionen für jedermann umsetzbar zu machen. Und das geht  :D
Da jetzt einen einfachen Sachverhalt ausgerechnet mit DOIF kompliziert mit Perl umsetzen zu wollen ... :-X  ::)
Titel: Antw:doif trigger funktioniert nicht
Beitrag von: rhoffm34 am 14 April 2019, 23:42:24
Danke Otto, ich versuche morgen mal userReadings...
Titel: Antw:doif trigger funktioniert nicht
Beitrag von: Ellert am 15 April 2019, 06:19:00
Zitat von: rhoffm34 am 14 April 2019, 23:42:24
Danke Otto, ich versuche morgen mal userReadings...
Wenn Du DOIF_Readings oder event_Readings nimmst , kannst Du die DOIF-Syntax [...] verwenden.
Titel: Antw:doif trigger funktioniert nicht
Beitrag von: Otto123 am 15 April 2019, 09:05:42
Zitat von: Ellert am 15 April 2019, 06:19:00
Wenn Du DOIF_Readings oder event_Readings nimmst , kannst Du die DOIF-Syntax [...] verwenden.
Moin,
er wollte ja gerne Perl machen  ;)
Gruß Otto
Titel: Antw:doif trigger funktioniert nicht
Beitrag von: Ellert am 15 April 2019, 17:55:01
Zitat von: Otto123 am 15 April 2019, 09:05:42
Moin,
er wollte ja gerne Perl machen  ;)
Gruß Otto

Bei den DOIF_Readings werden keine zusätzlichen Events durchs System gejagt und nur intern getriggert, auch Perl kann verwendet werden, (internes)event-on-change-reading ist inklusive und es würde auch bei der Parameteränderung ausgelöst ;);) Mit Perl zu experimentieren ist aber auch nicht verkehrt.
Titel: Antw:doif trigger funktioniert nicht
Beitrag von: rhoffm34 am 19 April 2019, 02:40:28
Mit userReadings hats geklappt, danke Otto, schöne Ostertage.