Hallo zusammen,
ich zeige in bestimmten Situationen zusätzliche Devices in meinem defaultRoom (bei mir heisst der: Start). Ein Beispiel:
defmod room_updater notify (auto|Party|heating_away):(on|off) { \
if ( $attr{"$NAME"}{"myRoom"} ) { \
if ($EVTPART0 eq 'on') { \
$attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myRoom"}.',Start' } \
else { $attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myRoom"} } \
FW_updateHashes();; return undef } }
Das funktioniert auch wunderbar, hat den Vorteil, das so auch keine geänderte Konfiguration erkannt wird (es wird im FHEMWEB kein rotes Fragezeichen angezeigt). Allerdings erscheinen die Devices auch erst nach einem Refresh der FHEMWEB Seite. Aktuell mache ich das über ein:
attr WEBphone refresh 300
Das hat nur den Nachteil, das der Refresh nun für alle Seiten gilt. Und es dauert eben seine Zeit, bis die neue Seite angezeigt wird.
Jetzt zu meiner Frage: Geht das evtl. auch eleganter.. z.B. dass der Refresh vom notify aus getriggert werden kann ?
ZitatGeht das evtl. auch eleganter.. z.B. dass der Refresh vom notify aus getriggert werden kann ?
Hallo,
wenn Du den Codeschnipsel (https://forum.fhem.de/index.php?msg=885556) in deinem ergänzt sollte deine Start-Seite bei einem on|off aktualisiert werden. Zumindest hab ich deinen Code bei mir so erfolgreich nachvollzogen.
Zitat(d|d1|d2):(on|off) {
my $reload = map { FW_directNotify("FILTER=room=Start", "#FHEMWEB:$_", "location.reload('true')", "")} devspec2array("WEB.*");
if ( $attr{"$NAME"}{"myroom"} ) {
if ($EVTPART0 eq 'on') {
$attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myroom"}.',Start';
$reload;}
else {
$attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myroom"};
$reload;}
FW_updateHashes(); return undef } }
Gruß Thomas
OK, WOW, das hat funktioniert. Und der Aufruf von FW_updateHashes() scheint auch nicht mehr nötig zu sein.
Der fertige Code sieht bei mir jetzt folgendermaßen aus:
(d|d1|d2):(on|off) {
if ( $attr{"$NAME"}{"myRoom"} ) {
if ($EVTPART0 eq 'on') {
$attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myRoom"}.',Start' }
else { $attr{"$NAME"}{"room"}=$attr{"$NAME"}{"myRoom"} }
map { FW_directNotify("FILTER=room=Start", "#FHEMWEB:$_",
"location.reload('true')", "")} devspec2array("WEB.*") } }
Einen ganz lieben Dank und einen schönen Abend !!
Hayo