Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
stateswitch mit icon.heating: icon nur bei einem Schaltzustand eingefärbt
ich überlege mal, wie man das besser machen kann. Eigentlich wollte ich die Schaltfunktion bei den dynamischen Icons schon längst mal rausschmeißen. Wer etwas schalten will, kann einen basic.stateswitch nehmen und das dyn. icon als Anzeige verwenden. Deshalb steht in der Doku auch
- item_switch should be left empty since clicking on the icon will toggle the related item
Bei Geräten wie z.B. einem Dimmer oder einem Ventilator, bei dem beide items zum selben Gerät gehören, ist die Art der Darstellung sinnvoll: Level == 0 bedeutet "aus". Wenn man eine Windrose verwendet, findet man wahrscheinlich keinen vernünftigen Grund, warum "Norden" = "aus" bedeuten sollte. Die Funktion ist aber für alle dynamischen Icons im Prototyp-Widget gleich vorgegeben.
Du hast wie immer völlig recht. Das Schalten funktioniert doch einwandfrei. Ich hatte zusammen mit einem anderen dynamischen Icon getestet und bin damit genau über den zweiten Teil deiner Antwort gestolpert. Warum die Autoren das damals so umgesetzt haben, erschließt sich für mich nicht.
Das Item test.level steuert hier rein die Ausrichtung der Windrose. Mit der Farbe hat das Item gar nichts zu tun. Und trotzdem, wie Du schon oben schreibst:
Bei test.level != 0 wird das icon gemäß Schaltzustand eingefärbt, bei test.level == 0 wird das Icon gar nicht eingefärbt (unabhängig vom Schaltzustand). Dabei bedeutet test.level == 0 nur, dass die Windrose nach Norden ausgerichtet ist.
Ich nutze das Icon nicht als Schalt- und Anzeigeitem, daher ist es für mich auch kein Problem. Ich sehe das trotzdem weiterhin als Fehler an. Zumindest sollte die Doku fett daraufhinweisen.
ich kann das nur zum Teil bestätigen. Wenn man auf das icon klickt, kann man in der Konsole die Log-Ausgaben des Treibers sehen, der jeweils die veränderten Daten an das item "test.schaltuhr" im Backend schickt - unabhängig vom Wert von test.level.
Alle dynamischen Icons haben allerdings die Eigenschaft, dass sie nicht eingefärbt werden, wenn das item test.level == 0 ist. Das ist schon "immer" so und explizit so programmiert, indem die Klasse "icon1" nur gesetzt wird, wenn beide items != 0 sind. Getestet habe ich das zurück bis v2.8.
wvhn : Danke für Deinen Fix im Develop. Ich habe beim Testen trotzdem noch ein Problem mit icon.heating gefunden. Wenn man das Widget folgendermaßen verwendet, kann man normalerweise durch Klicken auf das Icon das item "test.schaltuhr" schalten. Das funktioniert, solange das Statusitem, hier "test.level" einen Wert ungleich 0 hat.
In dem Sonderfall, dass test.level == 0 ist, funktioniert die gesamte Schaltfunktion nicht mehr und das item "test.schaltuhr" kann nicht mehr geschaltet werden.
Einziger Unterschied: die Icons sind dann komplett eingefärbt, nicht mit dem beim dynamischen icon üblichen Gradienten.
Der Gradient ist auch gleichzeitig der Grund für die Macke, die schon seit langem besteht (danke Alex). Hier wurde im Widget eine Funktion für das Anlegen der defs, die für die Farbgradienten zuständig sind, falsch verwendet. Dadurch konnte das icon mit nur einer Farbe pro Visu-Seite verwendet werden.
In der icon.html kann dies in der Zeile 435 geändert werden:
Code:
{% set gradient_id = uid(page, id, item_value~'-gradient') ~'-' ~color|default('') %}
Mit dem oben geposteten Aufruf des Stateswitch bleibt das icon beim item-Wert 0 weiß. Will man die Farbe blau haben, muss man min und max im icon-Widget vertauschen:
stateswitch mit icon.heating: icon nur bei einem Schaltzustand eingefärbt
Hallo,
ich habe (in FHEM mit SV 3.3) folgendes widget:
{{ basic.stateswitch('', 'HzgBad', 'mini', [1,0], [icon.heating('','', 'HzgBad', 0, 1, 'red'), icon.heating('','', 'HzgBad', 0, 1, 'blue')]) }}
Angezeigt wird für die beiden Schaltzustände ('HzgBad' hat die Zustände 'on' und 'off'): grafik.pngundgrafik.png. D.h. beim Zustand 'off' wird nichts eingefärbt.
Schreibe ich probehalber das widget so:
{{ basic.stateswitch('', 'HzgBad', 'mini', [1,0], [icon.garagedoor('','', 'HzgBad', 0, 1, 'red'), icon.garagedoor('','', 'HzgBad', 0, 1, 'blue')]) }}
bekomme ich: grafik.pngund grafik.png
Was verstehe ich falsch (oder hat das icon.heating ne Macke?)
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: