FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: timmy2000 am 08 November 2018, 12:14:22

Titel: counter notify
Beitrag von: timmy2000 am 08 November 2018, 12:14:22
Guten Morgen,

vlt kann mir kurz jemand behilflich sein .. Ich würde gerne mit einem notify 3 verschieden set Befehle ausführen .. und zwar so, dass jedes mal wenn das notify reagiert in Reihe erst der erste dann der zweite dann der dritte und dann wieder der erste Befehl und so weiter ausgeführt wird.
Ich habe das nun mal so probiert ... Leider klappt es nicht richtig und ich weiss nicht wo der Fehler begraben liegt .

define Ledswitch notify IT_F0FFF0FFFF:.* {
If (Readingsnum("zaehler_notify","zaehler","") = 1) {<set WifiLight Db_Led_Wifilight_Sofa brightness: 100> ; fhem("setReading zaehler_notify zaehler 2");}}
Elsif (Readingsnum("zaehler_notify","zaehler","") = 2) {<set WifiLight Db_Led_Wifilight_Sofa brightness: 50> ; fhem("setReading zaehler_notify zaehler 3");}}
ElsIf (Readingsnum("zaehler_notify","zaehler","") = 3) {<set WifiLight Db_Led_Wifilight_Sofa brightness: 0> ; fhem("setReading zaehler_notify zaehler 1");}
}
setReading zaehler_notify zaehler 1



Titel: Antw:counter notify
Beitrag von: Damian am 08 November 2018, 13:05:04
notify-Fragen würde ich im Anfängerforum stellen, hier werden eher Spezialitäten des DOIF-Moduls besprochen.

Du kannst deinen Thread selbst dorthin verschieben.
Titel: Antw:counter notify
Beitrag von: Beta-User am 08 November 2018, 13:10:51
Perl-Grundlagen wären hilfreich.
Auf die schnelle min. folgendes:
Groß- und Kleinschreibung bei ...Num(... und elsif
Vergleichen geht mit ==
Wenn Perl, muss ein fhem-Befehl mit fhem "set .... beginnen;
Was die <> sollen?
Titel: Antw:counter notify
Beitrag von: timmy2000 am 08 November 2018, 23:58:34

Danke schon mal für die hilfe.. Ich habe mir nun noch mal ein paar Sachen angeschaut und
bin nun auch schon mal ein wenig näher ans Ziel gekommen denke ich  .. aber irgendwo scheint es dennoch zu hängen ...

define Ledswitch notify IT_F0FFF0FFFF:.* {
if (Readingsnum("zaehler_notify","zaehler","") = 1) {
fhem("set Db_Led_Wifilight_Sofa dim 90");
fhem("setReading zaehler_notify zaehler 2");}
elsif (Readingsnum("zaehler_notify","zaehler","") = 2) {
fhem("set Db_Led_Wifilight_Sofa dim 50");
fhem("setReading zaehler_notify zaehler 3");}
elsif  (Readingsnum("zaehler_notify","zaehler","") = 3) {
fhem("set Db_Led_Wifilight_Sofa dim 20");
fhem("setReading zaehler_notify zaehler 1");}
}
Titel: Antw:counter notify
Beitrag von: Beta-User am 09 November 2018, 06:04:56
Mit ....Nun im Hinweis Aug Groß- u. Kleinschreibung war "ReadingsNum()" gemeint, und "==" statt "=" sehe ich auch nicht (Vergleich vs. Wertezuweisung).

Mitdenken oder wenigstens konkret auf so einen Splitter nachfragen ist erlaubt ;) , man schreibt sowas idR. nicht ohne Absicht! Wenn du das zukünftig nicht beachtest, will dir evtl. schnell keiner mehr helfen.

Und code-Tags verwenden macht es lesbarer.
Titel: Antw:counter notify
Beitrag von: mumpitzstuff am 09 November 2018, 14:50:54
define Ledswitch notify IT_F0FFF0FFFF:.* {
if (ReadingsNum("zaehler_notify","zaehler",0) == 1) {
fhem("set Db_Led_Wifilight_Sofa dim 90");
fhem("setreading zaehler_notify zaehler 2");}
elsif (ReadingsNum("zaehler_notify","zaehler",0) == 2) {
fhem("set Db_Led_Wifilight_Sofa dim 50");
fhem("setreading zaehler_notify zaehler 3");}
elsif  (ReadingsNum("zaehler_notify","zaehler",0) == 3) {
fhem("set Db_Led_Wifilight_Sofa dim 20");
fhem("setreading zaehler_notify zaehler 1");}
}
Titel: Antw:counter notify
Beitrag von: betateilchen am 09 November 2018, 16:24:21

sub n_count {
  my @v = (90,50,20);
  my $i = ReadingsVal("zaehler_notify","zaehler",0);
  fhem("set Db_Led_Wifilight_Sofa dim $v[$i]");
  $i = $i++ == 3 ? 0 : $i++;
  fhem("setreading zaehler_notify zaehler $i");
}



define Ledswitch notify IT_F0FFF0FFFF:.* {n_count}
Titel: Antw:counter notify
Beitrag von: Damian am 09 November 2018, 20:09:51
Alternativ alles in einem Device:

DOIF
init {@{$_a}=(90,50,20);$_counter=0}
{[IT_F0FFF0FFFF];fhem_set("Db_Led_Wifilight_Sofa dim ".$_a[$_counter++]); $_counter=($_counter==@{$_a} ? 0:$_counter)}



Die Liste der Schaltwerte (auch deren Anzahl) kann einfach an einer Stelle angepasst werden z. B.: @{$_a}=(100,50,30) oder z. B. @{$_a}=(90,70,50,30,10)