[gelöst] userReadings: Zählen von Komma-getrennten Readinginhalten

Begonnen von dirk.k, 05 November 2018, 17:53:15

Vorheriges Thema - Nächstes Thema

dirk.k

Hallo zusammen,
ich möchte den inhalt eines Raedings zählen und das Ergebnis in ein userreading ausgeben.

Reading: postme07Cont
Inhalt: "Alarm1 mit level 3, Alarm2 mit level 2, Alarm4,test1"
gewünschtes Ergebnis: postme07Count wird 4

mein Versuch:
userreadings
postme07Count {
  my $tempvar = ReadingsVal("$NAME","postme07Cont",0);
  $tempvar =  sapply(strsplit($tempvar,","),FUN=function(x){length(x[x!="Null"])});
  return $tempvar;
  },

Den Teil mit "sapply(strsplit($tempvar,","),FUN=function(x){length(x[x!="Null"])})" habe ich aus einem Pearl-Beispiel entnommen, das funktioniert aber nicht.

kann mir da jemand helfen?

Byte09

#1
Zitat von: dirk.k am 05 November 2018, 17:53:15
Hallo zusammen,
ich möchte den inhalt eines Raedings zählen und das Ergebnis in ein userreading ausgeben.

Reading: postme07Cont
Inhalt: "Alarm1 mit level 3, Alarm2 mit level 2, Alarm4,test1"
gewünschtes Ergebnis: postme07Count wird 4

mein Versuch:
userreadings
postme07Count {
  my $tempvar = ReadingsVal("$NAME","postme07Cont",0);
  $tempvar =  sapply(strsplit($tempvar,","),FUN=function(x){length(x[x!="Null"])});
  return $tempvar;
  },

Den Teil mit "sapply(strsplit($tempvar,","),FUN=function(x){length(x[x!="Null"])})" habe ich aus einem Pearl-Beispiel entnommen, das funktioniert aber nicht.

kann mir da jemand helfen?

musst du noch ausbauen , geht aber grundsätzlich . gibt aber bestimmt elegantere möglichkeiten
( anderes reading etc. )

test { my @array = split( /,/, ReadingsVal("$NAME","t1","1,2") ); return "ergebniss:". @array;}

gruss Byte09