Devices temporär aufgrund eines device-states ein-/ausblenden

Begonnen von Thomas41587, 22 August 2017, 11:09:50

Vorheriges Thema - Nächstes Thema

Thomas41587

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.

Thomas41587


Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Thomas41587

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

Darkmozart

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
RasPi3 mit aktuellem FHEM
CUL 433MHZ
Ne Menge Somfy Rollläden
Aktuelles Projekt: Sensoren (MySensors) für Helligkeit und Temperatur zur Rollladensteuerung
Diverse Spielereien...

Thomas41587

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.ä.)?

Darkmozart

#6
Das nennt sich longpoll. Als Attribut der jeweiligen Ansicht einstellbar. Die Funktion kannte ich auch noch nicht, sieht interessant aus...
RasPi3 mit aktuellem FHEM
CUL 433MHZ
Ne Menge Somfy Rollläden
Aktuelles Projekt: Sensoren (MySensors) für Helligkeit und Temperatur zur Rollladensteuerung
Diverse Spielereien...