Problem Modify readingsGroup

Begonnen von PiUser, 03 Juni 2018, 08:56:42

Vorheriges Thema - Nächstes Thema

PiUser

Hallo,

ich nutze FHEM zur Rollladensteuerung.
Zur Programmierung der Rollläden habe ich eine ReadingsGroup einem Raum hinzugefügt. Diese zeigt fast ausschließlich DropDownLists an (Auswahl des Wochentags, Auswahl der Uhrzeit etc.).
Dies funktioniert auch alles soweit.
Nun möchte ich in Abhängigkeit von der Auswahl eines DropDown-Elements bestimmte komplette DropDownLists komplett ein oder ausblenden.
Dies habe ich versucht mit einem 'modify' der ReadingsGroup umzusetzen.
Der Aufruf aus der Perl-Methode heraus ist dann 'fhem("modify <nameDerReadingsGroup> xxx yyy zzz");', wobei xxx yyy und zzz für die (Dropdown)-Elemente steht.
Nach dem Aufruf passiert rein optisch erstmal nichts.
Wenn ich allerdings entweder den Raum neulade (klick auf den Raum im linken Menü) oder die ganze Seite im Browser neulade, sieht die ReadingsGroup genau so aus, wie sie aussehen soll.

Jetzt meine Frage:
Kann ich die readingsGroup irgendwie dazu bringen, dass sie sofort ihr Aussehen anpasst und nicht erst beim Neuladen des HTML Codes?
Falls das nicht funktionieren sollte: Kann ich per Code Aufruf das Neuladen des Raums triggern?

Vielen Dank für eure Hilfe!
PiUser

MadMax-FHEM

Wird ohne Änderung/Programmierung von FHEMWEB etc. nicht anders gehen als Seite neu laden.

"Automatisch" ginge es wie folgt:

trigger WebNowPlaying JS:location.reload(true)

Lädt dann aber alle offenen Seiten der genannten FHEMWEB-Instanz (bei mir NowPlaying).
Daher habe ich (nicht nur deswegen) eine eigene Instanz angelegt...

Kurz da nur Handy...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Elektrolurch

Zitat:
Kann ich die readingsGroup irgendwie dazu bringen, dass sie sofort ihr Aussehen anpasst und nicht erst beim Neuladen des HTML Codes?
Falls das nicht funktionieren sollte: Kann ich per Code Aufruf das Neuladen des Raums triggern?

Willkommen im Club!


sub  RefreshScreen($)
{
my ($room) = @_;
if(!defined($room))
{
fhem("trigger WEB.* JS:location.reload(true)");
return undef;
}
my %rooms;

foreach my $r (split(',',$room))
{
if(exists($defs{$r}))
{
# if a device - find rooms
$rooms{GetRoom($r)} = $r if(!AttrVal($r,'disable',0));
} # if exists
else
{
$rooms{$r} = $r; # seems to be a room and not a device
} # else room
} # foreach split

foreach my $r (keys %rooms)
{
foreach my $rr (split(',',$r)) # multiroom
{
Log($logrefresh,"RefreshScreen $rr") if($rr eq 'Keller');
map { FW_directNotify("FILTER=room=$rr", "#FHEMWEB:$_", "location.reload('true')", "") } devspec2array("WEB.*");
} # foreach multiroom
} # foreach rooms
return undef;
} # end sub RefreshScreen
#####################


Übergabe: Die readingsGroup oder einen Raum.

Alternative für ein einzelnes Element:
DoTrigger($name,"$rd: $val");

Dabei ist das $rd hier eine Zusammensetzung von -> am Besten mal den Quellcode der Webseite  ansehen. Alles was zwischen <div informId:"name-device_reading">$val</div>
steht, muss mit DoTrigger gesendet werden.

Elektrolurch

Elektrolurch

configDB und Windows befreite Zone!

PiUser

Hi,

@Joachim: Deine Lösung funktioniert  :) Allerdings ist das Reload der gesamten Webseite natürlich nur ein Notnagel...

@Elektrolurch: Deine Lösung konnte ich noch nicht komplett austesten, da mir die Funktion 'GetRoom' fehlt. Kannst Du sie auch noch online stellen? Vielen Dank!

Wenn die Funktion von Elektrolurch dann genau das tut, was ich mir wünsche, wäre es dann nicht vielleicht eine gute allgemeine Erweiterung für FHEM - werden bestimmt noch viele andere in das Problem reinlaufen...

Viele Grüße
PiUser