HM-SEC-RHS in verschachtelten Strukturen verlieren User Attribute

Begonnen von StefanD, 31 Dezember 2014, 17:05:48

Vorheriges Thema - Nächstes Thema

StefanD

Hallo zusammen,

Ich bekomme für meine HM-SEC-RHS beim Ausführen von shutdown restart immer folgende Fehlermeldung analog für alle HM-SEC-RHS:
Error messages while initializing FHEM:
configfile: eg_wz_Balkontuer: unknown attribute Alle_eg_Fenster. Type 'attr eg_wz_Balkontuer ?' for a detailed list.


Dem beigefügten Screenshot kann man entnehmen, dass das Attribut Alle_eg_Fenster nicht beim userattr aufgeführt ist, was die Fehlermeldung an sich plausibel macht. Ich habe eben alle userattr entsprechend korrigiert und zur Kontrolle shutdown restart ausgeführt und der Eintrag war wieder aus allen HM-SEC-RHS verschwunden.

Wird nach dem Widereintragen im Webinterface die fhem.cfg gespeichert, ist alles korrekt vorhanden:
define eg_wz_Balkontuer CUL_HM 12DA7E
attr eg_wz_Balkontuer userattr Alle_Fenster Alle_eg_Fenster Alle_Fenster_map structexclude
attr eg_wz_Balkontuer Alle_Fenster st_alle_Fenster
attr eg_wz_Balkontuer Alle_eg_Fenster st_eg_Fenster


Nach mir noch nicht ersichtlichen Muster tritt der Fehler wieder auf, dann fehlt auch der Eintrag in der fhem.cfg.

Was mich noch am meisten irritiert ist, dass die Fehlermeldungen nicht zuverlässig nach jedem Neustart auftreten, wenn userattr korrigiert wurde.

Die verschachtelten Structure Elemente hatte ich letzte Woche auch schon mal gelöscht und komplett neu aufgebaut. Das behebt den Fehler auch nicht.

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

StefanD

Ist diese Konstellation der verschachtelten Strukturen für die Fensterdrehgriffkontakte so selten oder mein Problem mehr ein Feature?  ::)
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

StefanD

In dem Forum macht man sich über die unterschiedlichsten Konstellationen und teils sehr individuellen Problemstellungen Gedanken. Wenn es aber eine offensichtliches Problem bei der Nutzung von structure gibt kommt gar nichts zurück?

Zitat aus der Commandref:
ZitatEine Struktur kann ebenfalls zu einer anderen Struktur zugefügt werden. Somit können z b. kaskadierende Strukturen erstellt werden. (Z.b. KG,EG,OG, Haus) Beispiel:
define Kueche structure room lampe1 lampe2

  • addstruct Kueche TYPE=FS20
    delstruct Kueche lampe1
    define house structure building kitchen living
    set house off

Vielleicht verwende ich in dem von mir genutzten Kontext structure für die Drehgriffkontakte auch falsch, das möchte ich keinesfalls ausschließen, aber zumindest ein Hinweis darauf hilfreich.  ;)
Gegen eine Anregung, wie man es anders und womöglich besser löst, habe ich auch nichts einzuwenden. :)

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

rudolfkoenig

"Offensichtlich" ist in den meisten Faellen sehr subjektiv.

Ich vermute, dass in fhem.cfg etwas manuell umsortiert wurde, userattr muss naemlich nach dem define als erstes folgen, um die Fehlermeldung zu verhindern. Es ist mir auch unklar, wie genau "korrigieren" aussgechaut hat, und ob zwischen "korrigieren" und "shutdown restart" ein save erfolgt ist.

StefanD

Zitat von: rudolfkoenig am 06 Januar 2015, 12:06:45
"Offensichtlich" ist in den meisten Faellen sehr subjektiv.
Habe nichts gegenteiliges behauptet, dennoch
Zitat von: rudolfkoenig am 06 Januar 2015, 12:06:45Ich vermute, dass in fhem.cfg etwas manuell umsortiert wurde,...
trifft die Vermutung nicht zu.  ;)
Ich konfiguriere ausschließlich über das Webfrontend oder eine Telnetsitzung. Gerade deshalb zielte meine Vermutung darauf, dass in den fhem internen Mechanismen etwas nicht so tut, wie das vorgesehen ist. Die fhem.cfg editiere ich weder direkt über das Webfrontend noch über einen externen Editor.

Zitat von: rudolfkoenig am 06 Januar 2015, 12:06:45...,userattr muss naemlich nach dem define als erstes folgen, um die Fehlermeldung zu verhindern. Es ist mir auch unklar, wie genau "korrigieren" aussgechaut hat, und ob zwischen "korrigieren" und "shutdown restart" ein save erfolgt ist.
Selbstverständlich speichere ich über das Webfrontend, wenn ich etwas in der Konfiguration geändert habe und shutdown restart ausführe. Nachdem ich mir ganz am Anfang dabei einige Änderungen ins Nirvana geschickt habe, ist mir das inzwischen in Fleisch und Blut übergegangen.  ;)
userattr habe ich korrigiert, in dem ich bei jedem HM-SEC-RHS device im Webfrontend das Attribut angeklickt, den fehlenden Attributnamen eingefügt und über den attr Button gespeichert habe.

userattr steht in der fhem.cfg bei jedem Device, sofern das Attribut vorhanden ist, immer direkt unter define, aber leider nicht vollständig, was zu eben diesen Fehlerbild führt.

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

rudolfkoenig

Zitatuserattr steht in der fhem.cfg bei jedem Device, sofern das Attribut vorhanden ist, immer direkt unter define, aber leider nicht vollständig, was zu eben diesen Fehlerbild führt.

D.h. irgendwann wird userattr auf einem falschen Wert gesetzt. Ich kann den Fall nicht nachstellen, und ich sehe es im Code auch nicht, wie das vorkommen koennte. Falls du es also reproduzieren kannst, bitte melden.

StefanD

Ich habe mich eben mal etwas intensiver mit der Problematik beschäftigt und kann das Fehlerbild reproduzieren.  :)

Die angehängten Screenshots zeigen bei 01 und 02 wie die Attribute beim HM-SEC-RHS Device und in der fhem.cfg aussehen, wenn das userattr für die Geschossstruktur fehlt.
Screenshot 03 und 04 zeigen den korrekten Eintrag, nach dem ich die Struktur st_dg_Fenster gelöscht, neu angelegt und mit addstruct st_alle_Fenster st_dg_Fenster auch wieder in die Struktur für alle Fenster aufgenommen wurde. shutdown restart konnte ich nun mehrfach ausführen, ohne dass das Fehlerbild für das betreffende HM-SEC-RHS Device noch mal aufgetreten wäre.
Ich habe dann nur nochmal auf Save config geklickt und mir das Device noch mal angesehen. Siehe da, das userattr Alle_dg_Fenster fehlt wieder und die Einträge dafür sind in der fhem.cfg ans Ende gerutscht. (s. Screenshot 05 und 06).

Sieht so aus, als würde das Problem durch das Speichern der Konfiguration entstehen.

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

rudolfkoenig

So einfach ist die Sache wohl nicht.
Ich habe es versucht nachzustellen mit folgenden Definitionen, und ich sehe kein Problem:

define CUL CUL none 0000
attr CUL dummy 1
attr CUL rfmode HomeMatic

define D3 CUL_HM 23C009
attr D3 userattr S2 S2_map S3 S3_map structexclude
attr D3 IODev CUL
attr D3 S2 S2
attr D3 S3 S3
attr D3 autoReadReg 4_reqStatus
attr D3 expert 2_full
attr D3 model HM-SEC-RHS
attr D3 subType threeStateSensor

define S2 structure S2 D3
define S3 structure S3 D3


Danach save / restart / save versucht, ohne Probleme.
Hast Du evtl. irgendwelche notifies definiert, die auf global:SAVE triggern?
Wie schon geschrieben: offensichtlich ist die Sache nicht.

StefanD

Zitat von: rudolfkoenig am 08 Januar 2015, 07:51:16
So einfach ist die Sache wohl nicht.

Wenn's "so" einfach wäre, wäre ich vermutlich alleine auf die Ursache gestoßen...  :)

Zitat von: rudolfkoenig am 08 Januar 2015, 07:51:16Ich habe es versucht nachzustellen mit folgenden Definitionen, und ich sehe kein Problem:

define CUL CUL none 0000
attr CUL dummy 1
attr CUL rfmode HomeMatic

define D3 CUL_HM 23C009
attr D3 userattr S2 S2_map S3 S3_map structexclude
attr D3 IODev CUL
attr D3 S2 S2
attr D3 S3 S3
attr D3 autoReadReg 4_reqStatus
attr D3 expert 2_full
attr D3 model HM-SEC-RHS
attr D3 subType threeStateSensor

define S2 structure S2 D3
define S3 structure S3 D3


Danach save / restart / save versucht, ohne Probleme.

Wenn ich deinen Testcode richtig interpretiere, dann ist das Device D3 explizit als Mitglied der Strukturen S2 und S3 definiert. Das weicht zu meiner Konfiguration in soweit ab, als dass ich meine Devices nur in der Struktur für das jeweilige Geschoss definiert und die Geschossstrukturen in ein globales Strukturelement gepackt habe.

Zitat von: rudolfkoenig am 08 Januar 2015, 07:51:16Hast Du evtl. irgendwelche notifies definiert, die auf global:SAVE triggern?
Nein, meine Notifies sind höchst übersichtlich (-> s. Anhang). Ich kann dir gerne meine fhem.cfg zukommen lassen, wenn das weiterhilft. Ich möchte sie nur nicht komplett offen hier posten.

Zitat von: rudolfkoenig am 08 Januar 2015, 07:51:16Wie schon geschrieben: offensichtlich ist die Sache nicht.
Sagen wir so, es ist noch nicht offensichtlich, wo der Hase im Pfeffer liegt, aber dass es ein Problem gibt, sollte offensichtlich sein. Ob nun vor der Tastatur oder darunter (Laptop...). :)

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

StefanD

Inspiriert durch deine Definition nicht die Strukturen zu schachteln, sondern die Devices den jeweils beiden Strukturelementen zuzuweisen, habe ich das ganze mal entsprechend angepasst.

...und siehe da, es funzt!  8)

Nun kann ich irgendwas ändern, speichern, shutdown restart ausführen wie ich will, das Fehlerbild tritt nicht mehr auf. Das Attribut userattr bei jedem Device "behält" auch nach dem restart von FHEM den Inhalt.

Damit kann ich das Ganze zweifelsfrei soweit (bei mir) eingrenzen, als das das Fehlerbild mit dem Speichern bei der Verwendung von HM-SEC-RHS Devices in verschachtelten Strukturen zusammenhängt, denn wenn ich das ganze mal mit Dummies nachstelle, funktioniert tritt das Fehlerbild ebenfalls nicht mehr auf. Ob wohl ich hier Stuctureelemente verschachtle. Es tut also so, wie es in der CommandRef angegeben ist:
define dmy_Test01 dummy
attr dmy_Test01 userattr struct01 struct01_map structexclude
attr dmy_Test01 room _Test3
attr dmy_Test01 struct01 st_struct01
define dmy_Test02 dummy
attr dmy_Test02 userattr struct02 struct02_map structexclude
attr dmy_Test02 room _Test3
attr dmy_Test02 struct02 st_struct02
define st_struct01 structure struct01 dmy_Test01
attr st_struct01 userattr Struct_alle Struct_alle_map structexclude
attr st_struct01 Struct_alle st_struct_alle
attr st_struct01 room _Test3
define st_struct02 structure struct02 dmy_Test02
attr st_struct02 userattr Struct_alle Struct_alle_map structexclude
attr st_struct02 Struct_alle st_struct_alle
attr st_struct02 room _Test3
define st_struct_alle structure Struct_alle st_struct01 st_struct02
attr st_struct_alle room _Test3


Die spannende Frage ist nun, warum klemmt es, wenn HM-SEC-RHS in den Strukturen aufgenommen sind?  :-\

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

StefanD

Nun habe ich das Fehlerbild auch bei den Dummies, die ich noch nicht gelöscht habe (s. fhem_20150118_01.PNG)  >:(

Ich habe bei den HM-SEC-RHS die Attribute event-min-intervall, event-on-change-reading und event-on-updating-reading konfiguriert, weil ich mir davon saubere SVG Plots über den Status erhoffe und diese nicht bei Tagesgrenzen durch fehlende Logdaten "Karies" haben.

Gelegentlich schaue ich mit update check, ob mal wieder ein Update anstand. Dem war so und ich habe es durchgeführt. Nach dem shutdown restart war dann das Fehlerbild wieder da. Ich habe bereits vor dem update check die Konfiguration über den Link im Webfrontend gespeichert.

Was ich noch nicht so ganz einsortieren kann ist, dass die Dummies bis zum Ausführen von shutdown restart heute alle bisherigen Neustarts von fehm als auch einen Neustart des Servers die letzten Tage ohne Fehlermeldung überstanden haben.

Hier der Auszug aus der fhem.cfg:
define dmy_Test01 dummy
attr dmy_Test01 userattr Struct_alle Struct_alle_map structexclude
attr dmy_Test01 Struct_alle st_struct_alle
attr dmy_Test01 room _Test3
attr dmy_Test01 struct01 st_struct01
define dmy_Test02 dummy
attr dmy_Test02 userattr Struct_alle Struct_alle_map structexclude
attr dmy_Test02 Struct_alle st_struct_alle
attr dmy_Test02 room _Test3
attr dmy_Test02 struct02 st_struct02
define st_struct01 structure struct01 dmy_Test01
attr st_struct01 userattr Struct_alle Struct_alle_map structexclude
attr st_struct01 Struct_alle st_struct_alle
attr st_struct01 room _Test3
define st_struct02 structure struct02 dmy_Test02
attr st_struct02 userattr Struct_alle Struct_alle_map structexclude
attr st_struct02 Struct_alle st_struct_alle
attr st_struct02 room _Test3
define st_struct_alle structure Struct_alle st_struct01 st_struct02
attr st_struct_alle room _Test3
define at_Backup at *00:00:02 { fhem("backup") }
attr at_Backup room _System


Was mir aber im Gegensatz zum Fehlerbild mit den HM-SEC-RHS auffällt ist, dass die Dummies und Strukts nicht ganz ans Ende der fhem.cfg gesetzt wurden. Der at fürs tägliche Backup, der als letztes angelegt wurde, steht nach wie vor am Ende wie es sein soll(te).
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

rudolfkoenig

Ich habe structure.pm angepasst, damit verschachtelte Strukturen wieder moeglich sind. Koenntest du bitte dein Problem erneut testen, und falls es noch vorhanden ist, mir eine Minimalkonfiguration mit dem Problem hier anhaengen?

RoBra81

Hallo,

leider funktionieren die verschachtelten Strukturen noch immer nicht richtig. Wenn ich folgendes im FHEMWEB definiere:

define StruTest.Wohnzimmer.Lampe1 dummy
;define StruTest.Wohnzimmer.Lampe2 dummy
;define StruTest.Wohnzimmer.Lampe3 dummy
;define StruTest.Esszimmer.Lampe1 dummy
;define StruTest.Esszimmer.Lampe2 dummy
;define StruTest.Schlafzimmer.Lampe1 dummy
;define StruTest.Schlafzimmer.Lampe2 dummy
;define StruTest.Esszimmer.Struct structure room_lights StruTest.Esszimmer.Lampe1 StruTest.Esszimmer.Lampe2
;define StruTest.Wohnzimmer.Struct structure room_lights StruTest.Wohnzimmer.Lampe1 StruTest.Wohnzimmer.Lampe2 StruTest.Wohnzimmer.Lampe3
;define StruTest.Schlafzimmer.Struct structure room_lights StruTest.Schlafzimmer.Lampe1 StruTest.Schlafzimmer.Lampe2
;define StruTest.OG.Struct structure level_lights StruTest.Esszimmer.Struct
;define StruTest.DG.Struct structure level_lights StruTest.Schlafzimmer.Struct StruTest.Wohnzimmer.Struct
;define StruTest.Wohnung.Struct structure flat_lights StruTest.DG.Struct StruTest.OG.Struct


erhalte ich dummys und Strukturen mit korrektem userattr-Attribut (dummys haben userattr für alle drei Strukturen). Wenn ich dann jedoch

shutdown restart

mache, haben die dummys nur noch die userattr für die oberste Struktur...

Ronny

StefanD

Zitat von: rudolfkoenig am 20 Januar 2015, 21:47:37
Ich habe structure.pm angepasst, damit verschachtelte Strukturen wieder moeglich sind. Koenntest du bitte dein Problem erneut testen, und falls es noch vorhanden ist, mir eine Minimalkonfiguration mit dem Problem hier anhaengen?

Ich bin etwas erleichtert, dass das Fehlerbild nicht nur bei mir auftritt und sich noch jemand gemeldet hat. Vielleicht lässt sich das Problem damit leichter lokalisieren.

Nach einem update, mit dem auch die struct.pm aktualisiert wurde, habe ich nach dem shutdown restart zuerst meine 5 Objekte aus meiner Teststruktur gelöscht. Im Anschluss habe ich die Konfiguration über den Link Save config gespeichert und fhem nochmal neugestartet. Danach habe ich die Teststruktur, beginnend mit den beiden Dummies, dann die jeweils beiden Strukturen in dem je ein Dummy enthalten ist angelegt und zum Schluss die übergeordnete Stuktur, die die beiden Strukturen enthält. Nach dem Speichern der Konfiguration hat die Teststruktur mehrere shutdown restart Aktionen tadellos überstanden.

Im nächsten Schritt wollte ich dann gleiches mit der verschachtelten Struktur für die HM-SEC-RHS durchführen. Ich habe die übergeordnete Struktur gelöscht, in der ich als Workaround die ganzen HM-SEC-RHS Objekte aufgenommen hatte. Ich habe die Konfiguration dann gespeichert und shutdown restart ausgeführt. fhem lieferte dann folgende Fehlermeldung für die Teststruktur mit den Dummies:
Error messages while initializing FHEM:
configfile: dmy_Test01: unknown attribute struct01. Type 'attr dmy_Test01 ?' for a detailed list.
dmy_Test02: unknown attribute struct02. Type 'attr dmy_Test02 ?' for a detailed list.


Die Teststruktur hatte ich seit mehreren shutdown restart Aktionen weder aufgerufen noch verändert.

Hier die gewünschte Konfiguration meiner Teststruktur nach der Fehlermeldung:
define dmy_Test01 dummy
attr dmy_Test01 userattr Struct_alle Struct_alle_map structexclude
attr dmy_Test01 Struct_alle st_struct_alle
attr dmy_Test01 room _Test3
attr dmy_Test01 struct01 st_struct01
define dmy_Test02 dummy
attr dmy_Test02 userattr Struct_alle Struct_alle_map structexclude
attr dmy_Test02 Struct_alle st_struct_alle
attr dmy_Test02 room _Test3
attr dmy_Test02 struct02 st_struct02
define st_struct01 structure struct01 dmy_Test01
attr st_struct01 userattr Struct_alle Struct_alle_map structexclude
attr st_struct01 Struct_alle st_struct_alle
attr st_struct01 room _Test3
define st_struct02 structure struct02 dmy_Test02
attr st_struct02 userattr Struct_alle Struct_alle_map structexclude
attr st_struct02 Struct_alle st_struct_alle
attr st_struct02 room _Test3
define st_struct_alle structure Struct_alle st_struct01 st_struct02
attr st_struct_alle room _Test3


So sieht die Konfiguration aus, wenn sie komplett neu angelegt wurde:
attr dmy_Test01 userattr Struct_alle Struct_alle_map struct01 struct01_map structexclude
attr dmy_Test01 Struct_alle st_struct_alle
attr dmy_Test01 room _Test3
attr dmy_Test01 struct01 st_struct01
define dmy_Test02 dummy
attr dmy_Test02 userattr Struct_alle Struct_alle_map struct02 struct02_map structexclude
attr dmy_Test02 Struct_alle st_struct_alle
attr dmy_Test02 room _Test3
attr dmy_Test02 struct02 st_struct02
define st_struct01 structure struct01 dmy_Test01
attr st_struct01 userattr Struct_alle Struct_alle_map structexclude
attr st_struct01 Struct_alle st_struct_alle
attr st_struct01 room _Test3
define st_struct02 structure struct02 dmy_Test02
attr st_struct02 userattr Struct_alle Struct_alle_map structexclude
attr st_struct02 Struct_alle st_struct_alle
attr st_struct02 room _Test3
define st_struct_alle structure Struct_alle st_struct01 st_struct02
attr st_struct_alle room _Test3


Die Anlegereihenfolge war dmy_Test01, dmy_Test02, st_struct01, st_struct02 und st_struct_alle. Das Ganze geht dann wieder für alle shutdown restart Aktionen gut, bis man dann wieder zum ersten Mal auf den Link Save config klickt und dann shutdown restart durchführt, das Fehlerbild ist dann wieder da.

Viel Erfolg bei diesem recht verzwickten Fehler!

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer