Hallo zusammen,
aktuell teste ich ein wenig mit der lieben join(" ", @structChangeHist) Funktion. Allerdings finde ich ihr Verhalten komisch. Ggf könnt ihr mir den Weg zeigen :)
Normal zeigt die Funktion die letzten x (maxLog) Einträge an. Wenn man aber nun ein Gerät in FHEM löscht. Beispiel bei mir ein Shelly der über den MQTT2 Server kommt.
Dann wird dieser zwar via autocreate neu angelegt und im EventMonitor ist zu sehen das da ein Gerät DEFINED wird da UNDEFINED.
ABER es wird in der Funktion und auch über Abfrage über das Web-IF "?" in FHEM, sieht man kein define mehr. Ist das neu? Normal hätte ich darauf wetten können, das dies vor kurzem noch möglich war.
Also kurz: Wie bekomme ich nun einfach die letzten (nur als Beispiel) 3 define / Geräte via Fhem?
Aktuell wird alles mögliche an Attributen über die Funktion angezeigt, was ein Shelly via Server ja automatisch gesetzt bekommt (readingsList usw.). Leider aber keine defines mehr.
Danke für Eure Hilfe!
Gruß,
87Insane
Das Attribut maxChangeLog sorgt dafür, dass nur die darin angegebene Anzahl der neuesten Änderungen gespeichert werden. Dabei ist es unerheblich, ob es sich bei der Änderung um ein "define" oder ein "attr" handelt.
Wenn Du im genannten Attribut drei angibst, dann werden also die drei letzten Änderungen gespeichert. Beim define eines Shelly, das automatisch eine Reihe von Attributen bekommt, führt dies dazu, dass zuerst ein "define" und danach beispielsweise fünf "attr" ausgeführt werden. Von diesen insgesamt sechs Änderungen bleiben nur die drei letzten "attr" erhalten, deshalb siehst Du das "define" nicht (mehr).
Dieses Verhalten ist aber nicht neu.
--
Hey und guten Morgen,
das attr hatte ich schon verstanden. Die drei hatte ich als Beispiel für zb 3 letzte defines, was dann bei shelly vermutlich die letzten 25-30 Änderungen wären. Hab maxlog aktuell zum testen auf 100. Das war mein verzweifelter Versuch define wieder zu sehen.
Also entweder, werden Geräte, die bereits schon mal da waren, trotz löschen noch irgendwo vorgehalten oder aber define wurde raus genommen (update/bug).
Gruß,
87insane
Folgende Dinge werden in @structChangeHist geführt:
define...
modify...
delete...
deleteAttr...
rename...
attr...
Zitat von: 87insane am 07 Dezember 2021, 08:51:48
Die drei hatte ich als Beispiel für zb 3 letzte defines, was dann bei shelly vermutlich die letzten 25-30 Änderungen wären.
Nochmal zur Klarstellung:
- was siehst Du aktuell?
- was möchtest Du sehen?
Zitat von: 87insane am 07 Dezember 2021, 08:51:48
Hab maxlog aktuell zum testen auf 100
Das Attribut heißt maxChangeLog
Zitat von: 87insane am 06 Dezember 2021, 20:32:05
Also kurz: Wie bekomme ich nun einfach die letzten (nur als Beispiel) 3 define / Geräte via Fhem?
Das geht nicht. Zumindest nicht auf diesem Weg, den Du da gerne gehen möchtest.
Alternative Lösungsansätze:
- Verwende ein notify, das auf global:DEFINED triggert und sich die entsprechenden Aktionen merkt
- Verwende ein loop über @structChangeHist und gib nur die Zeilen aus, die mit "define" beginnen
ZitatFolgende Dinge werden in @structChangeHist geführt:
Ja - Das dachte ich auch. Aber nicht bei wiederkehrenden Geräten!
ZitatNochmal zur Klarstellung:
was siehst Du aktuell?
was möchtest Du sehen?
Aktuell sehe ich bei einem Gerät, welches gelöscht wurde und via autocreate neu angelegt wurde: Alles außer ein define. (attr, wie Du schon sagtest kommen ja bei Shelly immer einige).
Ich möchte bei wiederkehrenden Geräten auch define sehen.
INFO: Wenn man daneben einen EventMonitor offen hat, sieht man auch alles, was passieren soll. Dies ist aber nicht in der Funktion zu sehen.
ZitatDas Attribut heißt maxChangeLog
Ja, für die Nachwelt ist es besser in komplett!
ZitatVerwende ein notify, das auf global:DEFINED triggert und sich die entsprechenden Aktionen merkt
Verwende ein loop über @structChangeHist und gib nur die Zeilen aus, die mit "define" beginnen
Zu 1) Danke für den Ansatz. So mache ich das aktuell auch. Allerdings empfinde ich das als Umweg, wenn es bereits eine Funktion gibt, die dies können sollte.
Zu 2) Das würde ich gerne.
Zitat von: 87insane am 07 Dezember 2021, 12:19:06
Allerdings empfinde ich das als Umweg, wenn es bereits eine Funktion gibt, die dies können sollte.
Um das klarzustellen: es gibt keine offizielle Funktion in FHEM, die das können sollte.
Zitat von: 87insane am 07 Dezember 2021, 12:19:06
Ich möchte bei wiederkehrenden Geräten auch define sehen.
Eine Unterscheidung nach "wiederkehrendem" device ist aus dem vorhandenen code in fhem.pl und 98_autocreate.pm für mich nicht ableitbar.
Hey nochmal,
Du bist doch einer der erfahreneren Fhem Nutzer. Was spricht dagegen das nach zu stellen? Ich habe das nun in 3 verschiedenen Systemen getan.
Neu installiertes FHEM genau wie ein prod System.
Immer wieder gibt es in FHEM sonderbehandlungen. Ohne so ein großer Programmierer zu sein, glaube ich es hängt mit der Einführung der FUUID zusammen.
Probier es bitte mal aus... Gerät (keinen dummy) wie shelly ins autocreate laufen lassen. Beim ersten mal wirst du ein define sehen in der structChangeHist. Dann löscht du das Gerät. Nun einfach neu rein laufen lassen in autocreate. Du wirst diesmal aber kein define sehen.
Meine frage ist, warum?
Ich hatte mir die PL vor dem Post auch angesehen. Da ich keine idee mehr habe, die frage hier.
Das kann ich nicht nachstellen, weil es bei mir außer bei Homematic keine devices gibt, die ich per autocreate anlegen lassen.
Übrigens gehe ich davon aus, dass Du nach dem Löschen des Gerätes Dein FHEM jeweils neu gestartet hattest.
Kommentiere mal in der fhem.pl die Zeile 5783+5784.
# return if(defined($dev) &&
# (!$defs{$dev} || $defs{$dev}{TEMPORARY} || $defs{$dev}{VOLATILE}));
Hatte auch mit Neustart getestet, natürlich nicht jedes mal. Da es leider auch nichts brachte.
Ich habe die Zeilen auskommentiert und Fhem neu gestartet. Danach nochmal das Szenario - ohne Erfolg.
Im Log sind auch keine zusätzlichen Einträge erschienen.
Hallo zusammen,
ich glaube er sucht das gleiche Thema mit anderen Worten.
https://forum.fhem.de/index.php/topic,124677.0.html
ZitatABER es wird in der Funktion und auch über Abfrage über das Web-IF "?" in FHEM, sieht man kein define mehr. Ist das neu?
Nein. Autocreate fuehr ein save aus, was wiederum structChangeHist loescht.
ZitatAlso kurz: Wie bekomme ich nun einfach die letzten (nur als Beispiel) 3 define / Geräte via Fhem?
Mit der von betateilchen schon vorgeschlagene notify Methode.