(Geloest) Hilfe: Mehrdimesionale Felder in myUtils

Begonnen von Hackstall, 02 Dezember 2019, 22:07:36

Vorheriges Thema - Nächstes Thema

Hackstall

Hallo,

ich benötige nochmals Eure Hilfe für einen Perl-Anfänger in FHEM.
Ich habe schon eine Zeit lang gegoogelt jedoch immer der gleiche Fehler.

Ich möchte gerne ein Feld vorgelegen und dann darauf indiziert zugreifen:

Derzeit sieht mein Code so aus:


     my @myConfigHeizung =
            (\
              [1, "DG.Bad",ReadingsNum("UZSU_Hzg_AbsentCtrl","AbsentTemp_DG.Bad",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_DG.Bad","Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_DG.Bad",16.0)], 
              [2, "DG.Sz", ReadingsNum("UZSU_Hzg_AbsentCtrl", "AbsentTemp_DG.Sz",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_DG.Sz", "Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_DG.Sz", 16.0)], 
              [3, "EG.Ez", ReadingsNum("UZSU_Hzg_AbsentCtrl", "AbsentTemp_EG.Ez",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_EG.Ez", "Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_EG.Ez", 16.0)], 
              [4, "EG.Ku", ReadingsNum("UZSU_Hzg_AbsentCtrl", "AbsentTemp_EG.Ku",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_EG.Ku", "Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_EG.Ku", 16.0)], 
              [5, "EG.WC", ReadingsNum("UZSU_Hzg_AbsentCtrl", "AbsentTemp_EG.WC",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_EG.WC", "Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_EG.WC", 16.0)], 
              [6, "EG.Wz", ReadingsNum("UZSU_Hzg_AbsentCtrl", "AbsentTemp_EG.Wz",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_EG.Wz", "Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_EG.Wz", 16.0)], 
              [7, "OG.AzA",ReadingsNum("UZSU_Hzg_AbsentCtrl","AbsentTemp_OG.AzA",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_EG.AzA","Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_EG.AzA",16.0)],   
              [8, "OG.AzS",ReadingsNum("UZSU_Hzg_AbsentCtrl","AbsentTemp_OG.AzS",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_OG.AzS","Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_OG.AzS",16.0)], 
              [9, "OG.Bad",ReadingsNum("UZSU_Hzg_AbsentCtrl","AbsentTemp_OG.Bad",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_OG.Bad","Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_OG.Bad",16.0)], 
              [10,"OG.KiA",ReadingsNum("UZSU_Hzg_AbsentCtrl","AbsentTemp_OG.KiA",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_OG.KiA","Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_OG.KiA",16.0)], 
              [11,"OG.KiM",ReadingsNum("UZSU_Hzg_AbsentCtrl","AbsentTemp_OG.KiM",16.0), ReadingsVal("UZSU_Hzg_AbsentCtrl", "AbsentName_OG.KiM","Aus"),  ReadingsNum("myTadoAPIUtils", "DesiredTemp_OG.KiM",16.0)]
            );
    foreach my $row (0..11)
         {
         #Log 1, ($myConfigHeizung[$row][1]." ".$myConfigHeizung[$row][2]." ".$myConfigHeizung[$row][3]." ".$myConfigHeizung[$row][4]);
         #absent Control switched on or off
         #@{ $array1[3] }[0];
         if ($myConfigHeizung[0][3] ne "Aus")
         <.........>
         }


meine Frage ist:
Wie greife ich auf das vorgelegte Feld zu:
Bei der if Abfrage kommt ständig der Fehler:
2019.12.02 22:00:13 1: ERROR evaluating {heatingPresenceControl()}: Not an ARRAY reference at ./FHEM/99_myUtils.pm line 2116.

Ich habe schon mehrer Zugriffsarten probiert (siehe Kommentare) jedoch ist die Fehlermeldung immer die gleiche.

Kann mir hier jemand helfen?

Danke Andreas

amenomade

#1
Nimm den Backslash weg
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Hackstall

Hallo das wars. Das haette ich aufgrund der Fehlermeldung niemals gedacht.
Danke

amenomade

Durch den Backslash war $myConfigHeizung[0] selbst kein Array
$myConfigHeizung[1],  $myConfigHeizung[2],  $myConfigHeizung[3] dagegen schon, und $myConfigHeizung[3][1] hätte z.B funktioniert
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus