Welches Modul schreibt Dateien mit diesem Inhalt?

Begonnen von betateilchen, 23 Oktober 2021, 19:49:11

Vorheriges Thema - Nächstes Thema

betateilchen

Moin werte Entwicklerkollegen!

Welches Modul schreibt den untenstehenden Inhalt in eine Textdatei?
Und warum gibt es irgendwann mehr als 20.000 (!) dieser Dateien im System?

Quelle: https://forum.fhem.de/index.php/topic,123609.0.html


{"ebusd/global/running":"true","ebusd/global/signal":"true","ebusd/global/updatecheck":"\u0022version 21.2 available\u0022","ebusd/global/version":"\u0022ebusd 21.1.v21.1-12-
gccfc025\u0022","zigbee2mqtt/EG_Bad_Fenster1/availability":"offline","zigbee2mqtt/EG_Bad_Klima/availability":"online","zigbee2mqtt/EG_Essen_Rauchmelder/availability":"online","
zigbee2mqtt/EG_Gang_Klima/availability":"online","zigbee2mqtt/EG_OD_Garagentor/availability":"online","zigbee2mqtt/EG_Putzschrank_Router/availability":"online",
"zigbee2mqtt/OD_Garage_Lichtschalter/availability":"online","zigbee2mqtt/OG_Bad_FensterL/availability":"offline","zigbee2mqtt/OG_Bad_FensterR/availability":"online",
"zigbee2mqtt/OG_Bad_Klima/availability":"online","zigbee2mqtt/OG_Eltern_Fenster1/availability":"offline","zigbee2mqtt/OG_Eltern_Klima/availability":"online",
"zigbee2mqtt/OG_Erik_Klima/availability":"online","zigbee2mqtt/OG_Erik_Storen/availability":"offline","zigbee2mqtt/SYS_zigbee_Router1/availability":"online",
"zigbee2mqtt/SYS_zigbee_Router2/availability":"online","zigbee2mqtt/UG_Vorplatz_Klima/availability":"online","zigbee2mqtt/UG_Vorplatz_Rauchmelder/availability":"online",
"zigbee2mqtt/UG_Waschkueche_Klima/availability":"online","zigbee2mqtt/bridge/config":"{\u0022commit\u0022:\u002210fe61d\u0022,\u0022coordinator\u0022:{\u0022meta\u0022:
{\u0022maintrel\u0022:1,\u0022majorrel\u0022:2,\u0022minorrel\u0022:7,\u0022product\u0022:1,\u0022revision\u0022:20201026,\u0022transportrev\u0022:2},\u0022type\u0022:
\u0022zStack3x0\u0022},\u0022log_level\u0022:\u0022info\u0022,\u0022network\u0022:
{\u0022channel\u0022:25,\u0022extendedPanID\u0022:\u00220xdddddddddddddddd\u0022,\u0022panID\u0022:6756},\u0022permit_join\u0022:false,\u0022version\u0022:
\u00221.17.1-dev\u0022}","zigbee2mqtt/bridge/devices":"[{\u0022definition\u0022:null,\u0022endpoints\u0022:{\u00221\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:
{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002210\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:
[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002211\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:
[\u0022ssIasAce\u0022],\u0022output\u0022:[\u0022ssIasZone\u0022,\u0022ssIasWd\u0022]},\u0022configured_reportings\u0022:[]},\u0022110\u0022:{\u0022bindings\u0022:
[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002212\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:
{\u0022input\u0022:[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u002213\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:
[\u0022genOta\u0022],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u00222\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:
[],\u0022output\u0022:[]},\u0022configured_reportings\u0022:[]},\u0022242\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:
[]},\u0022configured_reportings\u0022:[]},\u00223\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},
\u0022configured_reportings\u0022:[]},\u00224\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},
\u0022configured_reportings\u0022:[]},\u002247\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},
\u0022configured_reportings\u0022:[]},\u00225\u0022:{\u0022bindings\u0022:[],\u0022clusters\u0022:{\u0022input\u0022:[],\u0022output\u0022:[]},
\u0022configured_reportings\u0022:[]},\u00226\u0022:
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

eiten

Ganz spontan klingt das für mich nach MQTT, irgendwie. Von den Modulen, in denen ich ein FileWrite gefunden habe, habe ich folgende im Einsatz:

  • 01_FHEMWEB
  • 10_MYSENSORS_DEVICE
  • 50_TelegramBot
  • 91_eventTypes
  • 98_weekprofile
Ich hoffe, ich hab keines übersehen. Gibts einen Weg zu sehen, welche Module geladen sind? Ich habe in der configDB noch ein Feld hinzugefügt, das automatisch den Timestamp setzt. Vielleicht kann ich ja dann was in den Logfiles korrelieren...

rudolfkoenig

zigbee2mqtt sollte nicht ohne Weiteres in der Lage sein, Daten in configDb anzulegen, und die MQTT Module verwenden kein FileWrite.
Ich tippe auf eine Benutzerkonfiguration.

betateilchen

#4
zigbee2mqtt und generell MQTT ist die falsche Fährte. Der Dateiinhalt ist reines JSON.

Aktuell habe ich DelayedShutdown() aus 50_SSFile.pm im Verdacht. scheint nicht die Ursache zu sein.


Zitat von: eiten am 23 Oktober 2021, 19:58:59
Ich habe in der configDB noch ein Feld hinzugefügt, das automatisch den Timestamp setzt. Vielleicht kann ich ja dann was in den Logfiles korrelieren...

Falls Du 50_SSFile.pm in Gebrauch hast: Schau mal, ob Du nach jedem FHEM-Restart eine weitere Datei in der Datenbank hast.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

eiten

Nein, 50_SSFile habe ich nicht im Einsatz:
System Info
ConfigType: configDB
SVN rev: 25104
OS: linux
Perl: 5.30.0
uniqueId: 193...

Modules Model Count
DLNARenderer 2
DOIF
FHEM 14
DbLog
MYSQL 1
EDIPLUG
SP2101W 1
FHEMWEB 3
HMinfo 1
HTTPMOD 2
zigbee2mqtt_daemon_updates 1
HTTPSRV 1
HUEBridge 1
HUEDevice 2
ZB-CL01 1
LST001 2
LLC020 1
InfluxDBLog 1
MQTT 1
MQTT2_CLIENT 1
MQTT2_DEVICE 5
zigbee2mqtt_light_rgbcct_rgb 1
eBus_bai_jsonmap 1
zigbee2mqtt_bridge 1
zigbee2mqtt_light_dimmer 1
tasmota_basic_state_power1 2
SHSW-1 6
eBus_daemon_splitter 1
zigbee2mqtt_ContactSensor 4
zigbee2mqtt_plug 1
zigbee2mqtt_smokeDetector 2
zigbee2mqtt_TempHumSensor 7
zigbee2mqtt_router_only_device 2
zigbee2mqtt_Wireless_Button 3
tasmota_2channel_split 5
SHSW-25 4
zigbee2mqtt_Shutter_Switch 1
shelly1 1
MQTT2_SERVER 1
MQTT_DEVICE 3
MYSENSORS_DEVICE 4
OctoPrint 1
SSCam
User Define - 1
SVG 3
SamsungAV 1
Shelly
shelly1 2
TelegramBot 1
Twilight 1
WUup 1
Weather
wundergroundAPI 1
WeekdayTimer 4
allowed 2
at 5
autocreate 1
cmdalias 3
configDB
MYSQL 1
dewpoint 2
dummy 9
eventTypes 1
fronthemDevice 1
gassistant 1
notify 11
readingsGroup 4
telnet 1
watchdog 2
weblink 7

Dabei habe ich gemerkt, das FHEM mein Timestamp-Feld nicht mag, mit dem in der Datenbank wills nich starten.

eiten

Zitat von: rudolfkoenig am 23 Oktober 2021, 20:03:44
zigbee2mqtt sollte nicht ohne Weiteres in der Lage sein, Daten in configDb anzulegen, und die MQTT Module verwenden kein FileWrite.
Ich tippe auf eine Benutzerkonfiguration.

Hm, und wie meinst Du das? Respektive, wie komme ich da weiter?

betateilchen

Da stehen jede Menge "Module" in der Liste, die ich noch nie gesehen habe.

Wo kommen denn die ganzen zigbee2mqtt.* und die eBus_.* her?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

ZitatHm, und wie meinst Du das?
Z.Bsp. indem man im readingList eines MQTT2_DEVICE FileWrite aufruft.

ZitatRespektive, wie komme ich da weiter?
Ich wuerde in fhem.pl, am Anfang von FileWrite() ein stacktrace() einbauen.

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

eiten

Zitat von: betateilchen am 23 Oktober 2021, 20:25:41
Wo kommen denn die ganzen zigbee2mqtt.* und die eBus_.* her?

Da ist irgendwie die Einrückung verloren gegangen. Das sind die Attribute Templates von zigbee2mqtt...

eiten

Also,
mysqldump -u root -p fhem_config |grep FileWrite
hat leider nix ausgespuckt...

sub
FileWrite($@)
{
  print("FILEWRITE\n");
  print(stacktrace());
  my ($param, @rows) = @_;
  my ($err, @ret, $fileName, $forceType, $nl);

  if(ref($param) eq "HASH") {
    $fileName = $param->{FileName};
    $forceType = $param->{ForceType};
    $nl = $param->{NoNL} ? "" : "\n";
  } else {
    $fileName = $param;
    $nl = "\n";
  }
  $forceType = "" if(!defined($forceType));


Scheint zu funktionieren (war jetzt über ein Web-Kommando):

FILEWRITE
2021.10.23 20:51:43 1: stacktrace:
2021.10.23 20:51:43 1:     main::FileWrite                     called by (eval 1022) (1)
2021.10.23 20:51:43 1:     (eval)                              called by fhem.pl (1160)
2021.10.23 20:51:43 1:     main::AnalyzePerlCommand            called by fhem.pl (1189)
2021.10.23 20:51:43 1:     main::AnalyzeCommand                called by fhem.pl (1116)
2021.10.23 20:51:43 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2779)
2021.10.23 20:51:43 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (1006)
2021.10.23 20:51:43 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (598)
2021.10.23 20:51:43 1:     main::FW_Read                       called by fhem.pl (3895)
2021.10.23 20:51:43 1:     main::CallFn                        called by fhem.pl (773)


Ich füg noch den Dateinamen zur Ausgabe, und dann mal schauen, was da steht wenns wieder passiert.

betateilchen

das ganze in print() zu packen, ist m.E. überflüssig.


sub
FileWrite($@)
{
stacktrace();
  my ($param, @rows) = @_;
  my ($err, @ret, $fileName, $forceType, $nl);


loggt völlig unkompliziert ins FHEM Log.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

eiten

#14
So, da hätt ich nun ein paar, die über Nacht entstanden sind:
FILEWRITE 7c3a031e77b30bd48ac0c832f295c74c
2021.10.23 21:55:31 1: stacktrace:
2021.10.23 21:55:31 1:     main::FileWrite                     called by configDB.pm (560)
2021.10.23 21:55:31 1:     main::cfgDB_SaveState               called by fhem.pl (1599)
2021.10.23 21:55:31 1:     main::WriteStatefile                called by (eval 8936) (1)
2021.10.23 21:55:31 1:     (eval)                              called by fhem.pl (1160)
2021.10.23 21:55:31 1:     main::AnalyzePerlCommand            called by fhem.pl (1189)
2021.10.23 21:55:31 1:     main::AnalyzeCommand                called by fhem.pl (1116)
2021.10.23 21:55:31 1:     main::AnalyzeCommandChain           called by ./FHEM/90_at.pm (197)
2021.10.23 21:55:31 1:     main::at_Exec                       called by fhem.pl (3427)
2021.10.23 21:55:31 1:     main::HandleTimeout                 called by fhem.pl (695)
[...]
FILEWRITE 2be94b32512af4df0979fe3bec7ee301
2021.10.23 22:10:31 1: stacktrace:
2021.10.23 22:10:31 1:     main::FileWrite                     called by configDB.pm (560)
2021.10.23 22:10:31 1:     main::cfgDB_SaveState               called by fhem.pl (1599)
2021.10.23 22:10:31 1:     main::WriteStatefile                called by (eval 10869) (1)
2021.10.23 22:10:31 1:     (eval)                              called by fhem.pl (1160)
2021.10.23 22:10:31 1:     main::AnalyzePerlCommand            called by fhem.pl (1189)
2021.10.23 22:10:31 1:     main::AnalyzeCommand                called by fhem.pl (1116)
2021.10.23 22:10:31 1:     main::AnalyzeCommandChain           called by ./FHEM/90_at.pm (197)
2021.10.23 22:10:31 1:     main::at_Exec                       called by fhem.pl (3427)
2021.10.23 22:10:31 1:     main::HandleTimeout                 called by fhem.pl (695)

Also schön alle 15 Minuten. Das und der Output passt wunderbar mit diesem Device zusammen:
Internals:
   COMMAND    {WriteStatefile}
   DEF        +*00:15:00 {WriteStatefile}
   FUUID      5c9baf4e-f33f-9f51-9a11-59fbe01ae62e107c
   NAME       at_FHEM.saveState
   NR         21
   NTM        10:25:31
   PERIODIC   yes
   RELATIVE   yes
   REP        -1
   STATE      Next: 10:25:31
   TIMESPEC   00:15:00
   TRIGGERTIME 1635063931.17978
   TRIGGERTIME_FMT 2021-10-24 10:25:31
   TYPE       at
   READINGS:
     2021-10-24 10:10:31   state           Next: 10:25:31
Attributes:
   comment    Source: https://forum.fhem.de/index.php/topic,87811.msg802344.html#msg802344


Ist definitiv das WriteStatefile, damit kann ich die Einträge auch manuell erzeugen.