Gelöst: Nach Neustart viele di_SetSysAttr: bad reading name 'ARRAY Meldungen

Begonnen von AlexMuc, 13 Oktober 2025, 15:17:13

Vorheriges Thema - Nächstes Thema

AlexMuc

Hallo zusammen,
vermutlich nach dem Umzug von einem Pi2 auf einen Pi4 finden sich bei mir im Log von Fhem nach jedem Neustart fast 300 Zeilen mit Fehlermeldungen
2025.10.13 14:35:33 3: di_SetSysAttr: bad reading name 'ARRAY(0x1e0f670)_verbose_attr' (allowed chars: A-Za-z/\d_\.-)
2025.10.13 14:35:33 3: di_SetSysAttr: bad reading name 'ARRAY(0x25ecc00)_stacktrace_attr' (allowed chars: A-Za-z/\d_\.-)
2025.10.13 14:35:33 3: di_SetSysAttr: bad reading name 'ARRAY(0x25eccf0)_autocreate_attr' (allowed chars: A-Za-z/\d_\.-)
und
2025.10.13 14:35:33 3: di_SetSysAttr: bad reading name 'AttrState_ARRAY(0x1e0f670)_verbose' (allowed chars: A-Za-z/\d_\.-)
2025.10.13 14:35:33 3: di_SetSysAttr: bad reading name 'AttrState_ARRAY(0x25ecc00)_stacktrace' (allowed chars: A-Za-z/\d_\.-)
2025.10.13 14:35:33 3: di_SetSysAttr: bad reading name 'AttrState_ARRAY(0x25eccf0)_autocreate' (allowed chars: A-Za-z/\d_\.-)
2025.10.13 14:35:33 3: di_SetSysAttr: bad reading name 'AttrState_ARRAY(0x261dac0)_autocreate' (allowed chars: A-Za-z/\d_\.-)
Google kennt "di_SetSysAttr" garnicht. Welche Aliens haben sich bei mir eingenistet?

fz55

Hallo,

der Fehlermeldung nach ist di_SetSysAttr ein Device (DOIF?) bei dem ungültige Readingsnamen verwendet werden. Mit

deletereading di_SetSysAttr .*\(.*
löscht du alle Readings des Devices die eine ( enthalten.

Aber wie wurden die Readings erzeugt? Hast du eventuell fehlerhafte setstate-Befehle abgesetzt?

AlexMuc

Hab ihm!
Unter Everthing war tatsächlich ein Device mit diesem Namen welche einige Einstellungen beim MQTT Server vornimmt. Da sind jede Menge Readings die zu den Fehlern passen. Jetzt hab ich einen Ansatz wonach ich suchen muß.

Danke dir für den Wegweiser.

AlexMuc

So, hier noch ein Hinweis zur kompletten Lösung.
Das Device definiert einen UI-Table mit 4 Schaltern die Verboselevel, Autocreate von Fhem und MQTT-Server und einen "Stacktrace" einfach konfigurieren.

Die Funktion war nach dem Umzug irgendwie total kaputt, ich habe sie, nachdem ich sie gefunden habe, einfach gelöscht und aus einem Backup neu erstellt.

Leider finde ich gerade nicht raus, wo ich das her habe (weil auf meinem Mist wächst sowas bestimmt nicht, dafür fehlt mir das Wissen):

define di_SetSysAttr DOIF subs{                                                                ## Beschreibung\
    ## Eintragen der Attribute, die geschaltet werden sollen. Als <off> den Wert eintragen, der bei Schalter=off gesetzt wird, ebenso bei <on>\
    ## Beschreibung ist nur Text, der die beiden Möglichkeiten darstellt.\
    ## beim Umschalten wird das gewählte Attribut entsprechend gesetzt, zur Anzeige dahinter wird das Attribut tatsächlich neu gelesen und angezeigt.\
    ## Das kann auch mit einer Verzögerung geschehen, je nach Systemperformance und Attribut\
    ##\
    ## nur hier ändern!        Device          attr        <off>  <on>    Beschreibung \
    push (@{$_attrEntry},[qw(  MQTT2_FHEM_Server      autocreate  no    simple  no/simple )]);;\
    push (@{$_attrEntry},[qw(  global          stacktrace  0      1        0/1      )]);;\
    push (@{$_attrEntry},[qw(  global          verbose      3      5        3/5      )]);;\
    push (@{$_attrEntry},[qw(  autocreate      disable      0      1        0/1      )]);;\
    ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\
    ## ab hier nix mehr ändern\
\
sub $SELF_attrState {\
        my $dev = shift;;\
        my $attrname = shift;;\
    \
        set_Reading("AttrState_$dev"."_$attrname",AttrVal($dev,$attrname,"???"),1);;\
        ##::Debug("attr: ".$dev.": ".AttrVal($dev,$attrname,"???"));;\
    }\
} ## end subs\
\
init{\
        for (my $i=0;; $i < @{$_attrEntry};; $i++) {\
::Debug("ArrayInhalt $i: ".$_attrEntry[$i][1]);;\
            (AttrVal("$_attrEntry[$i]","$_attrEntry[$i][1]","---") eq "$_attrEntry[$i][3]")?set_Reading("$_attrEntry[$i]_$_attrEntry[$i][1]_attr","on") : set_Reading("$_attrEntry[$i]_$_attrEntry[$i][1]_attr","off");;\
            set_Exec("init_$i",2+$i,qq($SELF_attrState("$_attrEntry[$i]","$_attrEntry[$i][1]")));;\
        }\
 }\
 \
DEF TPL_attrSet (\
$1_ON{\
    if([$SELF:"^$1_$2_attr:.on$"]){\
        set_Reading('AttrState_$1_$2','wait',1);;\
        fhem("attr $1 $2 $4");;\
        set_Exec("ston_$1",2,$SELF_attrState("$1","$2"),'AttrVal("$1","$2","???") ne "$4"');;\
    }\
}\
\
$1_OFF{\
    if([$SELF:"^$1_$2_attr:.off$"]){\
        set_Reading('AttrState_$1_$2','wait',1);;\
        fhem("attr $1 $2 $3");;\
        set_Exec("stoff_$1",2,$SELF_attrState("$1","$2"),'AttrVal("$1","$2","???") ne "$3"');;\
    }\
}\
\
) ## end DEF TPL\
\
FOR (@{$_attrEntry},TPL_attrSet($_$1,$_$2,$_$3,$_$4))
attr di_SetSysAttr event-on-change-reading Attr.*,.*_attr
attr di_SetSysAttr group ADMIN
attr di_SetSysAttr room MQTT2_DEVICE,System
attr di_SetSysAttr uiTable {\
package ui_Table;;\
$TC{0,2} = "align='left'";;\
$TC{1} = "align='right'";;\
$TC{3} = "align='center'";;\
$TR{0} = "style='font-size:80%'";;\
\
## die folgenden Einstellungen nach eigenen Bedürfnis bitte anpassen\
## Details unter https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#CSS-Variablen_und_Steuerungsattribute\
##\
$SHOWNOSTATE=1;;                            ## das Device hat keine Anzeige des STATE (brauchts nicht)\
$SHOWNODEVICELINE = "MQTT2_DEVICE|System";;  ## in den hier eingetragenen rooms wird der Devicename nicht angezeigt, deshalb ist dieses Tool auch\
##                                            im room DOIF_UI, hier kann es zum editieren ausgewählt werden\
$SHOWNODEVICELINK = 1;;                      ## die eingetragenen Devices sind nicht anklickbar\
}\
\
"Device:"|"attribute:"|"setting:"|"posibleValues:"\
FOR (@{$_attrEntry},"$_$1"|"$_$2"|WID([$SELF:$_$1_$_$2_attr],"iconSwitch,off,ios_on_fill\@lime,on,ios_off_fill\@slategray").style([$SELF:AttrState_$_$1_$_$2],([$SELF:AttrState_$_$1_$_$2] eq 'wait')?"orange":([$SELF:AttrState_$_$1_$_$2] eq "$_$3")?"slategray" : "lime","13")|style("$_$5","slategray","11")|"")


AlexMuc

Ich suchte mit Google und fand leider nix :-\ Aber das war es zu 200%.
Danke für den Link, den werde ich jetzt in meinen Waschzettel für Fhem ganz sicher mit aufnehmen.