HomeMatic Funk-Statusanzeige - HM-Dis-WM55

Begonnen von Roaster, 14 November 2014, 20:33:48

Vorheriges Thema - Nächstes Thema

d.stratmann

Hallo martin,

habe ich soweit verstanden!

Wo ich aber immernoch nicht schlauf draus werde, wo packe ich dann meine "Anwendung" hin?

Das Display bietet mir ja so nur 6 Ausgaben bei Taste Hoch und 6 Ausgaben bei Taste Runter.
Ich homematic forum hat jemand aber nen script gebastelt, welches es ermöglich einen Counter mit einzubinden und anhand des counters dann die Ausgaben auf dem Display zu setzen.
Mein Ziel war es ich drücke das das erste mal eine Taste (counter ist 1) ich bekomme 6 Ausgabe vom Wohnzimmer, daraufhin wird der counter +1 gesetzt.
Wenn ich jetzt das zweite mal drücke ist der counter 2 und ich bekomme 6 Ausgabe von meinem Badezimmer, und so geht das ganze weiter.

Das ist mein eigentliche Ziel!

martinp876

Ah, jetzt habe ich verstanden.
Du hast uebrigens noch die option, long zu druecken.

Das mit dem counter ueberlege ich einmal, wie ich es realisieren wuerde.

martinp876

ja, so klappt es.

in myutils ein counter AUSSERHALB der routine definieren - oder was immer du "permanent" brauchst.
der routine würde ich die Zeile übergeben - evtl noch mehr.... long oder so.

my $cnt = 0;
sub myLine($){
  my $line = shift;
  return "l:$line -".$cnt++;
}

im Config  - wie beschrieben - definiere ich einmal die routine.

set dis_02 displayWM long  line1 e:{(myLine(1),"blue","noIcon")}
set dis_02 displayWM long  line2 e:{(myLine(2),"yellow","noIcon")}
set dis_02 displayWM long  line3 e:{(myLine(3),"yellow","noIcon")}
set dis_02 displayWM long  line4 e:{(myLine(4),"yellow","noIcon")}
set dis_02 displayWM long  line5 e:{(myLine(5),"yellow","noIcon")}
set dis_02 displayWM long  line6 e:{(myLine(6),"yellow","noIcon")}

wenn du es so verstanden hast, kannst du es natürlich weiter ausbauen. myLine könnte auch alle 3 parameter berechnen und rückliefern


my $cnt = 0;
sub myLine($){
  my $line = shift;
  return ("l:$line -".$cnt++,"blue","noIcon");
}

im Config  - wie beschrieben - definiere ich einmal die routine.

set dis_02 displayWM long  line1 e:{myLine(1)}


Posti123

ich wollte folgendes heut machen:

Zitatset CUL_HM_HM_Dis_WM55_33B7CC_Dis_01 displayWM short line1 e:{("FensterBad",((ReadingsVal("Fensterstatus_Bad", "state", "-") eq "closed")?"green":"red"),((ReadingsVal("Fensterstatus_Bad", "state", "-") eq "closed")?"ok":"error"))}

Aber ich bekomme ein:   define eval must return 3 values:

Bin irgendwie zu blöd den Fehler zu finden.

Sieht jemand meinen Fehler?

danke!
18xHM-CC-RT-DN, 5xHM-TC-IT-WM-W-EU, HMLAN, 2xJeeLink 868, 1xJeeLink433, 1xCUL868, HM-LC-Bl1PBU-FM, HM-LC-Sw2-FM, HM-LC-SW1-FM, HM-LC-Sw1PBU-FM, 5xHM-Sec-SC-2, 2xHM-Sec-SCo, HM-ES-TX-WM, HM-Sen-MDIR-O-2, HM-WDS10-TH-O, 6xTechnoline, 2x PCA301,2xHM-PB-2-WM55-2,2xHM-RC-4-2,2xHM-WDS30-T-O, HM-SEC-WDS-2

martinp876

teste es: schicke in die Kommandozeile ein
{join("\n",<kommando>)}

also

{join("\n",("FensterBad",((ReadingsVal("Fensterstatus_Bad", "state", "-") eq "closed")?"green":"red"),((ReadingsVal("Fensterstatus_Bad", "state", "-") eq "closed")?"ok":"error")) }

da sollten 3 Werte kommen. was wird angezeigt?

Posti123

es kommt

syntax error at (eval 453) line 1, at EOF

verwirrt mich gerade, weil ein einzelnes { ((ReadingsVal("Fensterstatus_Bad", "state", "-") eq "closed")?"green":"red") } in der Konsole funktioniert   --> kommt green zurück
18xHM-CC-RT-DN, 5xHM-TC-IT-WM-W-EU, HMLAN, 2xJeeLink 868, 1xJeeLink433, 1xCUL868, HM-LC-Bl1PBU-FM, HM-LC-Sw2-FM, HM-LC-SW1-FM, HM-LC-Sw1PBU-FM, 5xHM-Sec-SC-2, 2xHM-Sec-SCo, HM-ES-TX-WM, HM-Sen-MDIR-O-2, HM-WDS10-TH-O, 6xTechnoline, 2x PCA301,2xHM-PB-2-WM55-2,2xHM-RC-4-2,2xHM-WDS30-T-O, HM-SEC-WDS-2

martinp876


d.stratmann

Hallo martin,

danke für die schnelle Ausarbeitung, ich bitte dich um etwas Geduld ich bin noch Frischling ;)

Ich habe jetzt in der 99_myUtils.pm drin stehen:
package main;
use strict;
use warnings;
use POSIX;
my $cnt = 1;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}
#Display beschreiben
sub myLine($){
  my $line = shift;
  return "l:$line -".$cnt++;
}
1;


in meiner cfg Datei Namens: Set_DI_FL.cfg steht folgendes drin:
set DI_FL_Dis_02 displayWM short  line1 e:{(myLine(1),"blue","noIcon")}
set DI_FL_Dis_02 displayWM short  line2 e:{(myLine(2),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line3 e:{(myLine(3),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line4 e:{(myLine(4),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line5 e:{(myLine(5),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line6 e:{(myLine(6),"yellow","noIcon")}


und in der fhem.cfg habe ich ein: define postInit notify global:INITIALIZED include setup/Set_DI_FL.cfg gesetzt, um die Set_DI_FL.cfg zu initialisieren!
Habe ich das soweit erstmal korrekt verstanden?

Dann muss ja ich noch das notify für den Tastendruck machen. Da habe ich dann: define DisplayUP notify DI_FL_Dis_02:Short.* {myLine(,,shift")}

Baue ich dann die Abfragen für "myLine(1) bis myLine(6)" mit den Readings in die myUtils ein?
Kannst du mir da vielleicht nochmal helfen?

martinp876

das set...display darf nicht im "normalen" config stehen - hatte ich vorab erklärt.
Grund ist, dass es beim nächsten save gelöscht wird. Daher (und nicht nur deshalb) sollte es im "post-config-config" stehen.
für den ersten Test sollte es reichen.

du kannst im myUtil für jeden zeile eine Funktion bauen, würde ich nicht. aus der Hüfte... so ein Vorschlag. Tabelle mit kommados pro line, type und counter.
counter pro press-type, also 4 counter.
die counter müssen auf 0 rückgesetzt werden, wenn max erreicht ist. also ein max je presstype.

und dann eine Funktion je zeile/type/count. in einem hash definiert, per eval ausgerechnet.

sicher noch tipfehler drin...


# define counter and counterlimit per press-type
# presstype are 0: btn1 short
# presstype are 1: btn2 short
# presstype are 2: btn1 long
# presstype are 3: btn2 long

my @cnt = (0,0,0,0); #init one counter per press
my $cntMax = (2,1,5,3); #number of entries per press
my $lineArr = (0 =>{0 =>{ 1=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 1
                         ,2=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 2
                         ,3=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 3
                         ,4=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 4
                         ,5=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 5
                         ,6=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 6
                         }
                   ,1 =>{ 1=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 1
                         ,2=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 2
                         ,3=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 3
                         ,4=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 4
                         ,5=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 5
                         ,6=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 6
                         }
                   ,2 =>{ 1=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 1
                         ,2=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 2
                         ,3=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 3
                         ,4=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 4
                         ,5=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 5
                         ,6=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 6
                         }
                   }
              ,1 =>{0 =>{ 1=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 1
                         ,2=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 2
                         ,3=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 3
                         ,4=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 4
                         ,5=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 5
                         ,6=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt0 line 6
                         }
                   ,1 =>{ 1=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 1
                         ,2=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 2
                         ,3=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 3
                         ,4=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 4
                         ,5=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 5
                         ,6=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt1 line 6
                         }
                   ,2 =>{ 1=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 1
                         ,2=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 2
                         ,3=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 3
                         ,4=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 4
                         ,5=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 5
                         ,6=>"ReadingsVal(\"h_s_aussen\",\"luminosity\",\"-\")" # type 0,cnt2 line 6
                         }
                   }
   );

sub myLine($$){
  my ($line,$type) = @_;
  $cnt[$type] = ($cnt[$type] +1)%$cntMax[$type]; # rotate counter per type

  return eval $lineArr{$cnt[$type]}{$type}{$line};
}



Posti123

#234
Zitat von: martinp876 am 22 Februar 2015, 12:27:28
stimmen die Klammern?

es scheint mit ein Klammerproblem zu sein.

aber das Problem war das keine Leerzeichen in dem array sein dürfen:

set CUL_HM_HM_Dis_WM55_33B7CC_Dis_01 displayWM short line1 e:{("FensterBad",ReadingsVal("Fensterstatus_Bad","state","-")eq"closed"?"green":"red","ok")}

führte zur Lösung nach 3h rumprobieren
18xHM-CC-RT-DN, 5xHM-TC-IT-WM-W-EU, HMLAN, 2xJeeLink 868, 1xJeeLink433, 1xCUL868, HM-LC-Bl1PBU-FM, HM-LC-Sw2-FM, HM-LC-SW1-FM, HM-LC-Sw1PBU-FM, 5xHM-Sec-SC-2, 2xHM-Sec-SCo, HM-ES-TX-WM, HM-Sen-MDIR-O-2, HM-WDS10-TH-O, 6xTechnoline, 2x PCA301,2xHM-PB-2-WM55-2,2xHM-RC-4-2,2xHM-WDS30-T-O, HM-SEC-WDS-2

d.stratmann

Danke martin,

ich verstehe zwar einen Teil des Ganzen, leider aber noch nicht alles.
Aktuell steht in meiner fhem.cfg
define postInit notify global:INITIALIZED include /setup/cfg_fhemPostInit.cfg
Ich habe eine cfg_fhemPostInit.cfg mit folgendem Inhalt:
set DI_FL_Dis_02 displayWM short  line1 e:{(myLine(1),"blue","noIcon")}
set DI_FL_Dis_02 displayWM short  line2 e:{(myLine(2),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line3 e:{(myLine(3),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line4 e:{(myLine(4),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line5 e:{(myLine(5),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line6 e:{(myLine(6),"yellow","noIcon")}


Wie muss denn jetzt die ganze myUtils(bzw. nacher meine 99_Display.pm) aussehen?
Ich habe versucht den ganze Code reinzukopieren sprich:
package main;
use strict;
use warnings;
use POSIX;
my $cnt = 1;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}
#Display beschreiben
# define counter and counterlimit per press-type
# presstype are 0: btn1 short
# presstype are 1: btn2 short
# presstype are 2: btn1 long
# presstype are 3: btn2 long

my @cnt = (0,0,0,0); #init one counter per press
my $cntMax = (2,1,5,3); #number of entries per press
my $lineArr = (0 =>{0 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 6
                         }
                   ,1 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 6
                         }
                   ,2 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 6
                         }
                   }
              ,1 =>{0 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt0 line 6
                         }
                   ,1 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt1 line 6
                         }
                   ,2 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"-\")" # type 0,cnt2 line 6
                         }
                   }
   );

sub myLine($$){
  my ($line,$type) = @_;
  $cnt[$type] = ($cnt[$type] +1)%$cntMax[$type]; # rotate counter per type

  return eval $lineArr{$cnt[$type]}{$type}{$line};
}
1;

Dann bekomme ich aber folgenden Fehler: Global symbol "@cntMax" requires explicit package name at /opt/lib/fhem//FHEM/99_myUtils.pm line 74. Global symbol "%lineArr" requires explicit package name at /opt/lib/fhem//FHEM/99_myUtils.pm line 76.

Und wie muss das notify für den Tastendruck jetzt aussehen? Das verstehe ich noch gar nicht, woran erkennt das quasi den type?

Viele, viele Fragen ... ich danke dir schonmal für die viele Zeit und Mühe!

martinp876

Definition von cntMax ist falsch. Ist ein array, daher anstatt my $cntMax muss es @cntMax heissen.
Ausserdem musst du beim aufrufen 2 parameter uebergeben.
myLine(1,1) der erste ist die zeile, der 2. der typ, also long oder short von btn 1 oder 2. Macht 4 typen

d.stratmann

Hallo martin

habe ich sowohl "oben" als auch unten umgestellt:
@cnt[$type] = (@cnt[$type] +1)%@cntMax[$type]; # rotate counter per type

  return eval $lineArr{@cnt[$type]}{$type}{$line};


Allersings kommt immernoch der Fehler mit: Global symbol "%lineArr" requires explicit package name at /opt/lib/fhem//FHEM/99_myUtils.pm line 67.

Verstehen tuhe ich, dass ich bei dem notify mit übergeben muss, um welchen type es sich handelt, define DisplayUP notify DI_FL_Dis_02:Short.* {myLine(1,1)(,,@_")}warum soll ich aber die line übergeben?
Die soll doch nachher aus der myLine zurück gegeben werden?!

Irgendwie bin ich völlig verwirrt  :-\

martinp876

Noch ein fehler von mir.
my %lineArr .....
Das dollar weg an dieser stelle.

Das notify brauchst du nicht mehr.
Die idee ist, dass du nach restart fuer jede zeile ein kommando eintraegst. Du uebergibst an die routine welche zeile den wert will, ob es fuer oben oder unten sowie long oder short ist.die routine errechnet den string
Ein notify ist dann unnoetig ... sogar stoerend

d.stratmann

Oki, also der Save Fehler ist weg!
jetzt sieht der Code wie folgt aus:
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($)
{
  my ($hash) = shift;
}
my @cnt = (0,0,0,0); #init one counter per press
my $cntMax = (5,5,5,5); #number of entries per press
my %lineArr = (0 =>{0 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 6
                         }
                   ,1 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 6
                         }
                   ,2 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 6
                         }
                   }
              ,1 =>{0 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt0 line 6
                         }
                   ,1 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt1 line 6
                         }
                   ,2 =>{ 1=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 1
                         ,2=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 2
                         ,3=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 3
                         ,4=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 4
                         ,5=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 5
                         ,6=>"ReadingsVal(\"HK_WZ_Clima\",\"desired-temp\",\"no\")" # type 0,cnt2 line 6
                         }
                   }
   );

sub myLine($$){
  my ($line) = @_;
  @cnt = (@cnt +1)%$cntMax; # rotate counter per type

  return eval $lineArr{@cnt}{$line};
}
1;


die cfg_fhemPostInit.cfg wie folgt:
set DI_FL_Dis_02 displayWM short  line1 e:{(myLine(1),"blue","noIcon")}
set DI_FL_Dis_02 displayWM short  line2 e:{(myLine(2),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line3 e:{(myLine(3),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line4 e:{(myLine(4),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line5 e:{(myLine(5),"yellow","noIcon")}
set DI_FL_Dis_02 displayWM short  line6 e:{(myLine(6),"yellow","noIcon")}


Ist das korrekt? Wenn ich nur den Befehl: set DI_FL_Dis_02 displayWM short  line1 e:{(myLine(1),"blue","noIcon")} abschicke, dann bekomme ich den Fehler: define eval must return 3 values:

in der fhem rufe ich die cfg_fhemPostInit.cfg wie folgt auf: define postInit notify global:INITIALIZED include /setup/cfg_fhemPostInit.cfg

Den Rest mit dem übergeben in die Rotine verstehe ich vll. zu 75% in der Theorie, Praxis aber leider gar nicht.
Für mich wäre jetzt {myLine(0,1)(,,@_")} quasi die erste Zeile. Aber ich brauche doch 6 Zeilen als Ausgabe auf dem Display bei einem Druck.
Sprich ich drücke einmal kurz nach oben dann steht dort
Zeile1: Ist Temp. Wohnzimmer
Zeile2: Soll Temp. Wohnzimmer
Zeile3: Fensterstatus
Zeile4: Fensterstatus
Zeile5: Fensterstatus
Zeile6: Fensterstatus
Dann drücke ich das zweite mal kurz nach oben und dann steht dort
Zeile1: Ist Temp. Badezimmer
Zeile2: Soll Temp. Badezimmer
Zeile3: Fensterstatus
Zeile4: Fensterstatus
Zeile5: Fensterstatus
Zeile6: Fensterstatus

Und wie ich das jetzt als Kommando anstatt eines notify schreiben soll...
Kannst du mir da noch ein Beispiel nennen, ist mir echt schon peinlich...