FHEM Forum

FHEM => Frontends => readingsGroup / readingsHistory => Thema gestartet von: bertl am 30 September 2026, 15:21:43

Titel: readingsGroup - $<operator>[(<zellen>)] - eigene Berechnungen
Beitrag von: bertl am 30 September 2026, 15:21:43
Ich möchte in einer readingsGroup eigene Berechnungen über $<operator>[(<zellen>)] in der 99_myUtils.pm durchführen, da es sich um nicht nummerische Werte handelt - leider ohne Erfolg.

Ich bekomme immer folgende Warnungen welche vom Modul "33_readingsGroup.pm" kommen:
2026.09.30 14:33:21 1: PERL WARNING: Array found where operator expected at (eval 61503) line 1, near "rgTest @values"
Meine Funktion "rgTest" in 99_myUtils.pm wird dabei nie aufgerufen.

Zu den Details:
Ich verwende dieses Modul https://wiki.fhem.de/wiki/M%C3%A4hroboter:_Worx_Landroid,_Kress,_Landxcape um meinen Worx Landroid Mähroboter zu steuern bzw. Details auszulesen.

Nun habe ich eine readingsGroup vom Mähzeitplan erstellt und dabei wollte ich die Ende-Zeit über die Funktion "rgTest" berechnen lassen.

Hier die readingsGroup
Internals:
   DEF        <Tag>,<Kante>,<Start>,<Dauer>,<Ende>
MQTT2_Worx_M700:<Mo>,cfg_sc_d_2_3,cfg_sc_d_2_1,cfg_sc_d_2_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Mo>,cfg_sc_dd_2_3,cfg_sc_dd_2_1,cfg_sc_dd_2_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Di>,cfg_sc_d_3_3,cfg_sc_d_3_1,cfg_sc_d_3_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Di>,cfg_sc_dd_3_3,cfg_sc_dd_3_1,cfg_sc_dd_3_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Mi>,cfg_sc_d_4_3,cfg_sc_d_4_1,cfg_sc_d_4_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Mi>,cfg_sc_dd_4_3,cfg_sc_dd_4_1,cfg_sc_dd_4_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Do>,cfg_sc_d_5_3,cfg_sc_d_5_1,cfg_sc_d_5_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Do>,cfg_sc_dd_5_3,cfg_sc_dd_5_1,cfg_sc_dd_5_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Fr>,cfg_sc_d_6_3,cfg_sc_d_6_1,cfg_sc_d_6_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Fr>,cfg_sc_dd_6_3,cfg_sc_dd_6_1,cfg_sc_dd_6_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Sa>,cfg_sc_d_7_3,cfg_sc_d_7_1,cfg_sc_d_7_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<Sa>,cfg_sc_dd_7_3,cfg_sc_dd_7_1,cfg_sc_dd_7_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<So>,cfg_sc_d_1_3,cfg_sc_d_1_1,cfg_sc_d_1_2,$rgTest($ROW:3,4)
MQTT2_Worx_M700:<So>,cfg_sc_dd_1_3,cfg_sc_dd_1_1,cfg_sc_dd_1_2,$rgTest($ROW:3,4)
<hr>
MQTT2_Worx_M700:<Korrektur>,<>,<>,mowerTimeCorrection,<>
   FUUID      6abcb215-f33f-3e1e-89e6-ca201e41e1faffea
   NAME       rg_MQTT2_Worx_M700_Zeitplan
   NR         958
   NTFY_ORDER 50-rg_MQTT2_Worx_M700_Zeitplan
   STATE      Initialized
   TYPE       readingsGroup
   alwaysTrigger 2
   changed    0
   eventCount 4
   mayBeVisible 1
   CONTENT:
     MQTT2_Worx_M700 1
   CONTENT2:
   DEVICES:
     ARRAY(0x99e9fb8)
     ARRAY(0x9337088)
     ARRAY(0x188b978)
     ARRAY(0xa6273e0)
     ARRAY(0xa62e910)
     ARRAY(0x9b83820)
     ARRAY(0x9fda570)
     ARRAY(0x99df868)
     ARRAY(0x9968e40)
     ARRAY(0x9eac6a8)
     ARRAY(0x99f13b8)
     ARRAY(0x95085b0)
     ARRAY(0x9a48180)
     ARRAY(0x9438f40)
     ARRAY(0x9b64c08)
     ARRAY(0x9597298)
     ARRAY(0x9416c00)
   READINGS:
     2026-09-30 13:30:56   change          1790767855
   fhem:
     lastDefChange 26
     last_update 1790771603.69034
   helper:
     DEF       
     valueFormat {
  if( $READING =~ /cfg_sc_[d]+_[1-7]_3/ ) {
    $VALUE = ($VALUE == 0) ? "-" : "Ja";
  }
}
     valueStyle style="padding-right:5px;padding-left:5px;"
     cellStyle:
       c:1        style="width:80px;text-align:center;"
       c:2        style="width:60px;text-align:center;"
       c:3        style="width:60px;text-align:center;"
       c:4        style="width:60px;text-align:center;"
       c:5        style="width:60px;text-align:center;"
       r:1,c:1    style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"
       r:1,c:2    style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"
       r:1,c:3    style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"
       r:1,c:4    style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"
       r:1,c:5    style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"
     positions:
       MQTT2_Worx_M700.cfg_sc_d_1_1 14:3
       MQTT2_Worx_M700.cfg_sc_d_1_2 14:4
       MQTT2_Worx_M700.cfg_sc_d_1_3 14:2
       MQTT2_Worx_M700.cfg_sc_d_2_1 2:3
       MQTT2_Worx_M700.cfg_sc_d_2_2 2:4
       MQTT2_Worx_M700.cfg_sc_d_2_3 2:2
       MQTT2_Worx_M700.cfg_sc_d_3_1 4:3
       MQTT2_Worx_M700.cfg_sc_d_3_2 4:4
       MQTT2_Worx_M700.cfg_sc_d_3_3 4:2
       MQTT2_Worx_M700.cfg_sc_d_4_1 6:3
       MQTT2_Worx_M700.cfg_sc_d_4_2 6:4
       MQTT2_Worx_M700.cfg_sc_d_4_3 6:2
       MQTT2_Worx_M700.cfg_sc_d_5_1 8:3
       MQTT2_Worx_M700.cfg_sc_d_5_2 8:4
       MQTT2_Worx_M700.cfg_sc_d_5_3 8:2
       MQTT2_Worx_M700.cfg_sc_d_6_1 10:3
       MQTT2_Worx_M700.cfg_sc_d_6_2 10:4
       MQTT2_Worx_M700.cfg_sc_d_6_3 10:2
       MQTT2_Worx_M700.cfg_sc_d_7_1 12:3
       MQTT2_Worx_M700.cfg_sc_d_7_2 12:4
       MQTT2_Worx_M700.cfg_sc_d_7_3 12:2
       MQTT2_Worx_M700.cfg_sc_dd_1_1 15:3
       MQTT2_Worx_M700.cfg_sc_dd_1_2 15:4
       MQTT2_Worx_M700.cfg_sc_dd_1_3 15:2
       MQTT2_Worx_M700.cfg_sc_dd_2_1 3:3
       MQTT2_Worx_M700.cfg_sc_dd_2_2 3:4
       MQTT2_Worx_M700.cfg_sc_dd_2_3 3:2
       MQTT2_Worx_M700.cfg_sc_dd_3_1 5:3
       MQTT2_Worx_M700.cfg_sc_dd_3_2 5:4
       MQTT2_Worx_M700.cfg_sc_dd_3_3 5:2
       MQTT2_Worx_M700.cfg_sc_dd_4_1 7:3
       MQTT2_Worx_M700.cfg_sc_dd_4_2 7:4
       MQTT2_Worx_M700.cfg_sc_dd_4_3 7:2
       MQTT2_Worx_M700.cfg_sc_dd_5_1 9:3
       MQTT2_Worx_M700.cfg_sc_dd_5_2 9:4
       MQTT2_Worx_M700.cfg_sc_dd_5_3 9:2
       MQTT2_Worx_M700.cfg_sc_dd_6_1 11:3
       MQTT2_Worx_M700.cfg_sc_dd_6_2 11:4
       MQTT2_Worx_M700.cfg_sc_dd_6_3 11:2
       MQTT2_Worx_M700.cfg_sc_dd_7_1 13:3
       MQTT2_Worx_M700.cfg_sc_dd_7_2 13:4
       MQTT2_Worx_M700.cfg_sc_dd_7_3 13:2
       MQTT2_Worx_M700.mowerTimeCorrection 17:4
     recalc:
       undef
       undef
       undef
       ARRAY(0x9ace918)
       ARRAY(0x9536780)
     values:
       calc:
         undef
         undef
         undef
         undef
         undef
         ARRAY(0xa61f2f0)
       formated:
         undef
         undef
         ARRAY(0x97392f0)
         ARRAY(0x9b92050)
         ARRAY(0x9520c58)
         ARRAY(0x93aa368)
       orig:
         undef
         undef
         ARRAY(0x93dc1e0)
         ARRAY(0xa031108)
         ARRAY(0x953d058)
         ARRAY(0x994ff60)
       prefixsuffix:
         undef
         undef
         ARRAY(0x99df298)
         ARRAY(0x9b93eb8)
         ARRAY(0x9d198f0)
         ARRAY(0x9ab7470)
Attributes:
   alias      Worx-Mähzeitplan
   alwaysTrigger 2
   cellStyle  {
  "c:1" => 'style="width:80px;text-align:center;"',
  "c:2" => 'style="width:60px;text-align:center;"',
  "c:3" => 'style="width:60px;text-align:center;"',
  "c:4" => 'style="width:60px;text-align:center;"',
  "c:5" => 'style="width:60px;text-align:center;"',
  "r:1,c:1" => 'style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"',
  "r:1,c:2" => 'style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"',
  "r:1,c:3" => 'style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"',
  "r:1,c:4" => 'style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"',
  "r:1,c:5" => 'style="font-size:16px;text-align:center;font-weight:bold;color:white;background-color:grey;"',
}
   group      Worx
   nonames    1
   room       Draussen
   sortby     10
   style      style="font-size:14px;" border=1
   valueFormat {
  if( $READING =~ /cfg_sc_[d]+_[1-7]_3/ ) {
    $VALUE = ($VALUE == 0) ? "-" : "Ja";
  }
}
   valueStyle style="padding-right:5px;padding-left:5px;"

In der 99_myUtils.pm habe ich für Testzwecke nur folgenden Code hinterlegt:
sub rgTest($) {
  return 99;
}

Leider habe ich keine Beispiele hier im Forum dazu gefunden.
Hat das wer von euch in Verwendung wo es funktioniert?

Was mache ich falsch bzw. wo liegt das Problem?

Danke für eure Unterstützung
Robert