FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: betateilchen am 22 Januar 2015, 11:44:03

Titel: [patch] 01_FHEMWEB - trigger für FileWrite() aus "Edit files"
Beitrag von: betateilchen am 22 Januar 2015, 11:44:03

Index: 01_FHEMWEB.pm
===================================================================
--- 01_FHEMWEB.pm (Revision 7648)
+++ 01_FHEMWEB.pm (Arbeitskopie)
@@ -1775,6 +1775,7 @@
     }
     my $ret = FW_fC("rereadcfg") if($filePath eq $attr{global}{configfile});
     $ret = FW_fC("reload $fileName") if($fileName =~ m,\.pm$,);
+    DoTrigger("global", "FILEWRITE $filePath", 1) unless $ret;
     $ret = ($ret ? "<h3>ERROR:</h3><b>$ret</b>" :
                 "Saved the file $fileName to $forceType");
     FW_style("style list", $ret);


Damit kann man per NotifyFn() in einem Modul feststellen, ob die zugehörige Konfigurationsdatei per "Edit files" geändert wurde und dann automatisch ein reread der Konfigurationsdatei auslösen. Beispiel: die Layoutdatei von 02_RSS.pm


sub RSS_Notify() {
  my ($hash,$dev) = @_;

  return if($dev->{NAME} ne "global");
  return if(!grep(m/^FILEWRITE $hash->{LAYOUTFILE}$/, @{$dev->{CHANGED}}));

  Log3($hash,4,"RSS: $hash->{NAME} reread layout after edit.");
  undef = RSS_readLayout($hash);
  return undef;
}

Titel: Antw:[patch] 01_FHEMWEB - trigger für FileWrite() aus "Edit files"
Beitrag von: rudolfkoenig am 22 Januar 2015, 20:04:47
Ich schlage vor, den Trigger direkt aus FileWrite auszuloesen.
Einwaende?
Titel: Antw:[patch] 01_FHEMWEB - trigger für FileWrite() aus "Edit files"
Beitrag von: betateilchen am 22 Januar 2015, 20:31:43
Die Idee hatte ich auch, bin aber davon abgekommen, weil


Bei einer Implementierung direkt in der FileWrite() habe ich irgendwie Bauchschmerzen.
Titel: Antw:[patch] 01_FHEMWEB - trigger für FileWrite() aus "Edit files"
Beitrag von: rudolfkoenig am 23 Januar 2015, 11:50:59
Habs in FHEMWEB eingebaucht, obwohl ich was genaueres als "irgendwie Bauchschmerzen" haben wollte.

FileWrite wird z.Zt. noch an zu wenigen Stellen verwendet: FHEMWEB, FB_CALLMONITOR, eventTypes, SVG, setKeyValue(). Theoretisch muesste RSS auch auf .gplot Aenderungen reagieren, oder?
Titel: Antw:[patch] 01_FHEMWEB - trigger für FileWrite() aus "Edit files"
Beitrag von: betateilchen am 23 Januar 2015, 13:18:41
Zitat von: rudolfkoenig am 23 Januar 2015, 11:50:59
Habs in FHEMWEB eingebaucht

Eingebaucht finde ich cool  8)

Danke für die Änderung. Wenn ich etwas genaueres als "Bauchschmerzen" hätte schreiben können, hätte ich das sicher getan. Und wenn sich wirklich eine Notwendigkeit ergibt, den Trigger zu zentralisieren, dürfte es ja kein großes Problem sein, diese eine Codezeile zu verschieben.

RSS muss nicht auf Änderungen in gplot Dateien reagieren, denn RSS bindet ja immer nur den "fertigen" plot ein und an dieser Stelle der Layoutdefinition ändert sich für RSS nichts bei einer gplot-Änderung. Spätestens beim nächsten RSS-refresh (default=60 Sekunden) ist dann auch der aktualiserte plot im RSS.