Logikproblem

457 views
Skip to first unread message

Ruebezahl

unread,
Sep 26, 2011, 3:55:08 PM9/26/11
to FHEM users
Hallo,

ich brauche mal den Rat von Experten. Ich versuche mich gerade an
einer etwas komplizierten Schaltung.
Ich möchte mit einer Taste an der Fernbedienung erst Lampe 1
einschalten, dann beim nächsten Tastendruck Lampe 2 dazuschalten und
beim nächsten Tastendruck beide ausschalten.
Einer meiner vielen Lösungsansätze, die alle nicht gezündet haben,
war:

define MyNotify notify Fernbedienung:Btn2.on.* {if(Value("L1") == "on"
&& Value("L2") == "on") {fhem "set L1,L2 off"} elseif(Value("L1") ==
"on" && Value("L2") == "off") {fhem "set L2 on"} else{fhem "set L1
on"}}

Was mache ich da falsch?

Viele Grüße,

RueBe

Andy Fuchs

unread,
Sep 27, 2011, 4:51:06 AM9/27/11
to fhem-...@googlegroups.com
Hi Rübe,

ich kenn mich mit Perl nicht aus, aber ich würde da noch ein paar Klammern reinverteilen:


if (Value("L1") == "on" && Value("L2") == "on")

->

if ( (Value("L1") == "on") && (Value("L2") == "on") )

Außerdem finde ich's etwas kompliziert - ich würde das vielleicht so machen (Pseudo-Perl ;-)):

if (lampe1 == off)
{
set lampe1 on;

} elseif(lampe2 == off){

set lampe2 = on;

} else {
set lampe1,lampe2 off;
}


andy

> --
> To unsubscribe from this group, send email to
> fhem-users+...@googlegroups.com

Rudolf Koenig

unread,
Sep 27, 2011, 10:53:09 AM9/27/11
to fhem-...@googlegroups.com
> Was mache ich da falsch?

nicht einruecken :) Und uns nicht sagen, was "nicht gez�ndet" heisst.

Sonst sehe ich
- elseif, was man in perl als elsif zu schreiben hat.
- == prueft auf numeriche Gleichheit, strings prueft man mit eq

Solche Probleme muss man zerlegen und Schritt-fuer-schritt loesen, so wie es in
http://fhem.de/commandref.html#perl beschrieben ist.

Ruebezahl

unread,
Sep 27, 2011, 3:11:52 PM9/27/11
to FHEM users
Ich sehe schon, ich werde mich doch tiefer mit Perl beschäftigen
müssen... :-))

Also so geht es:
define MyNotify notify Taster:Btn1.on.* {if(Value("L1") eq "off" &&
Value("L2") eq "off") {fhem "set L1 on"} elsif(Value("L1") eq "on" &&
Value("L2") eq "off") {fhem "set L2 on"} else{fhem "set L1,L2 off"}}

Dann wird erst L1 eingeschaltet, beim nächsten Tastendruck L2
dazugeschaltet und beim 3. Tastendruck werden beide ausgeschaltet.

Danke Rudolf, deine Hinweise haben echt geholfen.

Christian Rockrohr

unread,
Sep 28, 2011, 2:31:46 PM9/28/11
to fhem-...@googlegroups.com

Aber zum einrücken könnte er dich nicht bewegen :-)

Trotzdem viel dank, ist ein tolles Script, das ich sicher auch mal irgendwo einbauen werde.

Gruß,
Christian

Zrrronggg!

unread,
Sep 28, 2011, 4:20:48 PM9/28/11
to FHEM users
Finde ich auch gut, packe ich nächste Woche ins Wiki.

On 28 Sep., 20:31, Christian Rockrohr <christ...@rockrohr.de> wrote:
> Aber zum einrücken könnte er dich nicht bewegen :-)
>
> Trotzdem viel dank, ist ein tolles Script, das ich sicher auch mal irgendwo
> einbauen werde.
>
> Gruß,
> Christian
Reply all
Reply to author
Forward
0 new messages