Hallo zusammen,
ich suche nach einer Möglichkeit, ein device (aktuell noch "dummy") ein- und auszublenden aufgrund eines anderen devices.
Hintergrund: Ich habe einen (aktuell noch) dummy, der den aktuellen Status einer Lampe anzeigt. Mögliche Zustände sind EIN_auto, EIN_hand, AUS_auto, AUS_hand. Normalerweise sollte der Schalter in einem"Auto" Zustand sein. Sollte man aber über das Icon selbst schalten, ändert sich der Status zu "Hand". Und genau dann soll ein weiteres device sichtbar werden, um den "Hand Modus" wieder zu deaktivieren.
Hat keiner eine Idee dazu?
Hi,
ehrlich gesagt, ich verstehe es nicht. :-[
Wo willst Du es ein und ausblenden? In der Weboberfläche? In irgendeiner App?
Willst Du nur das Icon ändern? ->
ZitatdevStateIcon
Erste Variante:
Leerzeichen getrennte Auflistung von regexp:icon-name:cmd Dreierpärchen, icon-name und cmd dürfen leer sein.
Wenn der Zustand des Gerätes mit der regexp übereinstimmt, wird als icon-name das entsprechende Status Icon angezeigt, und (falls definiert), löst ein Klick auf das Icon das entsprechende cmd aus. Wenn fhem icon-name nicht finden kann, wird der Status als Text angezeigt. Beispiel:
attr lamp devStateIcon on:closed off:open
attr lamp devStateIcon on::A0 off::AI
attr lamp devStateIcon .*:noIcon
Anmerkung: Wenn das Icon ein SVG Bild ist, kann das @colorname Suffix verwendet werden um das Icon einzufärben. Z.B.:
attr Fax devStateIcon on:control_building_empty@red off:control_building_filled:278727
Falls cmd noFhemwebLink ist, dann wird kein HTML-Link generiert, d.h. es passiert nichts, wenn man auf das Icon/Text klickt.
Zweite Variante:
Perl regexp eingeschlossen in {}. Wenn der Code undef zurückliefert, wird das Standard Icon verwendet; wird ein String in <> zurück geliefert, wird dieser als HTML String interpretiert. Andernfalls wird der String als devStateIcon gemäß der ersten Variante interpretiert, siehe oben. Beispiel:
{'<div style="width:32px;height:32px;background-color:green"></div>'}
Ist aus meiner Sicht eigentlich das was Du willst.
Gruß Otto
Hallo Otto,
erst mal danke für die Antwort. Allerdings ist das Ausblenden bzw. Ändern eines Icons nicht ganz das was ich möchte. Ich versuche das Szenario nochmal zu Beschreiben:
Dummy 1 kann die Werte EIN_auto, EIN_hand, AUS_auto, AUS_hand haben
Dummy 2 soll sichtbar sein, sofern dummy 1 den Wert EIN_hand oder AUS_hand hat. Ansonsten soll dummy 2 ausgeblendet sein.
Ich rede dabei über die Weboberfläche von fhem
Getriggertes Anlegen (über notify oder DOIF) und löschen.
Oder
Doif (Status *Hand) (attr [Raum]) Doelseif (Status *Auto) (attr room hiddenroom)
Ist nur dummycode, also nicht auf Klammern oder so versteifen. Aber so würd ich's lösen
Hat etwas, gedauert, aber jetzt kam ich endlich zum testen. Es hat funktioniert, danke! Habe diese Funktion eingefügt https://forum.fhem.de/index.php/topic,60018.msg513782.html#msg513782 und blende das Gerät jetzt mittel DOIF ein bzw. aus.
Was leider etwas unschön ist: Das ein-/ausblenden sieht mane rst noch einem neuladen der Seite. Gibt es hier noch eine Möglichkeit, das zu optimieren (z.B. automatischer reload o.ä.)?
Das nennt sich longpoll. Als Attribut der jeweiligen Ansicht einstellbar. Die Funktion kannte ich auch noch nicht, sieht interessant aus...