Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Frage: 1 Array, 1 Hash, mehrere Werte

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] - √ - Frage: 1 Array, 1 Hash, mehrere Werte

    Hallo zusammen,
    versuche mich gerade an einem Plugin und habe mir Beispiele im SVN angesehen.

    Ich habe mir vorgestellt über ein Plugin, das auf eine GA hört eine unterschiedliche Anzahl weiterer GA ansprechen (jeweils gleiche DPTs).

    Als Beispiel, ich schalte über einen PM ein Licht ein und gleichzeitig sollen dadurch eine Steckdose und noch ein zwei weitere Lichter angehen.
    Über einen Taster schalte ich ein anderes Licht ein und es soll zusätzlich eine Steckdose angehen.

    Das Prinzip funktioniert auch, wenn es jeweils nur eine weitere GA ist, die ich ansprechen muss. Mein Problem liegt nun, in das Array in einen Hashwert mehrere Werte zu bekommen.

    Der Auszug aus dem Plugin:
    Code:
    foreach my $gaWeitere ($licht->{gaWeitere}) {
       if ($licht->{dimm} == 0) {
        knx_write($gaWeitere,1,1);
        if ($debug == 1) {
         plugin_log($plugname, "$licht->{gaWeitere} eingeschalten.");
         }
       }
    Und aus der conf:
    Code:
    push @lichter, { name => "Bad", dimm => 1, gaEin => "1/3/63", gaWeitere => ("1/3/65". "1/3/66"), valueDimm => 50 };
    Konkret geht es hier nun um "gaWeitere", die beiden GA werden so nicht vom Plugin übernommen.
    Geht das überhaupt mit Perl, oder muss ich mir was anderes überlegen? (Anzahl der anzusprechenden weiteren GA angeben und eine for-Schleife bauen ...)?

    Danke schon mal!
    VG
    ...good byte...

    #2
    So gehts:
    Code:
    push @lichter, { name => "Bad", dimm => 1, gaEin => "1/3/63", gaWeitere => ["1/3/65","1/3/66"], valueDimm => 50 };
    Code:
    foreach my $licht(@lichter){
    	if ($licht->{dimm} == 0) {
    	foreach my $weitere (@{$licht->{'gaWeitere'}}){
    			knx_write($weitere,1,1);
    			if ($debug == 1) {
    			plugin_log($plugname, "$weitere eingeschalten.");
    			}
    		}
    	}
    }
    Du musst gaWeitere auch per Syntax als array definieren ["wert1","wert2","wert3"] ... wichtig war vor allem $licht->{'gaWeitere'} statt $licht->{gaWeitere} zu verwenden. Danach kannst du das ganze dann wieder wie ein normales Array auswerten. Sollte zwar auch ohne die ' ' funktionieren, hat hier aber irgendwie Probleme bereitet.
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    Kommentar


      #3
      super, vielen Dank!
      So funktionierts...
      hatte zwar schon etwas mit eckigen Klammern in der Config, aber die Definition als Array im Plugin hat mir noch gefehlt!
      ...good byte...

      Kommentar

      Lädt...
      X