Hauptmenü

Schaltbares DOIF über Icon

Begonnen von Damian, 30 Januar 2017, 20:36:40

Vorheriges Thema - Nächstes Thema

Damian

Ich möchte an der Stelle eine Kurzanleitung veröffentlichen wie man ein bestehendes DOIF so erweitern kann, dass man seine Zustände über die Weboberfläche schalten kann, ohne dafür ein Dummy zu definieren. Es gibt bereits diverse Posts und auch DOIF-Wiki-Einträge zu diesem Thema dazu.

Die Intention dieser Anleitung ist es, die erforderliche Erweiterung eines bestehenden DOIFs für diesen Zweck aufzuzeigen.

Ausgangspunkt ist ein einfacher DOIF zum Schalten einer Lampe mit Hilfe einer Fernbedienung:

define di_lamp DOIF ([FB:"on"]) (set lamp on) DOELSEIF ([FB:"off"]) (set lamp off)
attr di_lamp cmdState on|off


Nun wird zwar der Status des DOIFs und damit der Lampe  (on/off) angezeigt, aber dieser lässt sich nicht über das Anklicken des Icons verändern, so wie man es von einem Dummy kennt.

Das DOIF wird dazu wie folgt angepasst:

Zuerst werden folgende Attribute definiert:

attr di_lamp devStateIcon on::mybutton_aus initialize|off::mybutton_ein
attr di_lamp eventMap /mybutton ein:mybutton_ein/mybutton aus:mybutton_aus/
attr di_lamp readingList mybutton



Damit das Klicken auf das Icon auch tatsächlich zur Zustandsänderung und damit Ausführung des entsprechenden Zweiges des DOIFs Wirkung zeigt, muss man noch die Definition des DOIF um die Abfrage des Klickens auf das Icon anpassen:

defmod di_lamp DOIF ([$SELF:"mybutton: ein"] or [FB:"on"]) (set lamp on) DOELSEIF ([$SELF:"mybutton: aus"] or [FB:"off"]) (set lamp off)

Falls man das Standard Lampen-Icon für on/off ändern möchte, so lässt sich das durch die Angabe des Iconnamens anpassen, z. B. :

attr di_lamp devStateIcon on:10px-kreis-gruen:mybutton_aus initialize|off:10px-kreis-rot:mybutton_ein

Gruß

Damian



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#1
In diesem Zusammenhang plane ich für die kommende Version das bedingungslose Ausführen der einzelnen Zweige durch das set-Kommando. Also z. B.  set <my_DOIF> cmd_1

Damit wird sich die manuelle Steuerung von DOIFs über die Weboberfläche wesentlich einfacher gestalten lassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Das hört sich gut an, dann kann man nach einer DOIF Änderung leicht den ursprünglichen Status herstellen.

Wenn noch das Attribut "useSetExtensions" verarbeitet wird, dann kann das DOIF ein kompletter Dummy sein  ;)

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF