Hauptmenü

counter notify

Begonnen von timmy2000, 08 November 2018, 12:14:22

Vorheriges Thema - Nächstes Thema

timmy2000

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




Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

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?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

timmy2000


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");}
}

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

mumpitzstuff

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");}
}

betateilchen


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}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damian

#7
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)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF