FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: vbs am 24 Februar 2014, 23:05:59

Titel: Mehrfaches set mit gleichem Wert verhindern
Beitrag von: vbs am 24 Februar 2014, 23:05:59
Hi Ihr,

bin mir nicht sicher, ob dies der richtige Bereich für die Frage ist. Aber da ich Anfänger bin, mach ich hier hoffentlich nichts falsch:
Kann ich es irgendwie konfigurieren, dass FHEM unterbindet, einen set-Befehl auszuführen, wenn das Gerät bereits in dem Zustand ist? Also zB kein doppeltes "set <dev> on" zu lässt.

Ich hab das Problem mit IT-Dimmern. Wenn die Lampe schon auf "on" steht und dann durch irgendein Event ein weiteres "set <dev> on" ausgeführt wird, dann fängt der Dimmer an hoch und runter zu dimmen. Ich würde gerne, dass FHEM merkt, dass das Gerät bereits "on" ist und daher das "on" nicht noch einmal gesendet werden kann.

Dank euch schonmal!
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: Arek am 25 Februar 2014, 00:18:56
Hi,

natürlich geht das. Dazu fügst du in deinen Events einen Perl-Code ein, siehe:
http://www.fhemwiki.de/wiki/If-condition (http://www.fhemwiki.de/wiki/If-condition)

oder mit dem neuen If-Befehl:
http://forum.fhem.de/index.php/topic,17895.0.html (http://forum.fhem.de/index.php/topic,17895.0.html)

Gruß Arek
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: justme1968 am 25 Februar 2014, 07:53:49
oder so: http://forum.fhem.de/index.php/topic,17074.msg112685.html#msg112685

gruss
andre
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: vbs am 25 Februar 2014, 13:16:45
Zitat von: justme1968 am 25 Februar 2014, 07:53:49
oder so: http://forum.fhem.de/index.php/topic,17074.msg112685.html#msg112685
Ja spitze, ist ziemlich genau, was ich gesucht habe, aber noch besser! Danke!

Die vollständige Doku dazu ist hier unter "devspec" zu finden (falls jemand anders mal über diesen Thread stolpern sollte):
http://fhem.de/commandref.html
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: vbs am 25 Februar 2014, 19:08:11
Hab das mal ausprobiert und gefällt mir erstmal sehr gut. Bei funktioniert es aber leider nicht mit einer structure:
set wz_strLightAll:FILTER=STATE=off on

Mach ich was falsch oder wird das nicht unterstützt? Wenn nicht, wäre es prinzipiell möglich oder ist wäre sowas Code-Struktur-mäßig ausgeschlossen?
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: justme1968 am 25 Februar 2014, 19:20:57
du musst dazu die bedingung nicht auf die structure los lassen sondern auf jedes einzelne device in der structure. den patch dazu habe ich noch nicht gertig gemacht. d.h. mit einer structure geht das noch nicht.

je nach einsatz zweck kannst du als workaround bis dahin eine LightScene statt einer structure verwenden. da kannst du dieses verhalten global für die lightscene mit dem attribut lightSceneRestoreOnlyIfChanged einschalten oder pro device das kommando zum schalten inklusive der bedinung mit setcmd vorgeben.  beides geht jetzt schon.

das durchreichen der bedingung muss ich wie bei der structure erst noch einbauen.

gruss
  andre
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: vbs am 25 Februar 2014, 21:08:54
Ah ok, verstehe. LightScene steht hier noch auf meiner Liste mit Sachen, die ich mir gerne mal anschauen wollte :)

Hab mir jetzt erstmal mit einem "Hack" beholfen:

sub setStructureFilter($$$$)
{
my ($cmd,$name,$filter,$value) = @_; #$name should be the name of a structure device
foreach my $dev (keys $defs{$name}->{CONTENT})
{
fhem("$cmd $dev$filter $value");
}
}


Würde ich dann aufrufen mit:

setStructureFilter("set","wz_strLightAll",":FILTER=STATE=off","on")


Ruft also praktisch "händisch" das set für alle beteiligten Devices innerhalb der structure auf. So eine Art structure-Filter für arme Leute :/

Wenn du da dran bist, ists super! Würde ich sehr begrüssen! Kann dir auch gerne zur Hand gehen, wenn gewünscht. Müsstest mir aber vermutlich sagen, wie das konkret umgesetzt werden soll, da ich mich im FHEM-Code (noch) recht schlecht auskenne. Hab ich erwähnt, dass ich auch Perl-Noobie bin? :D
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: justme1968 am 25 Februar 2014, 21:34:25
schau dir mal den patch hier an: http://forum.fhem.de/index.php/topic,17074.msg142586.html#msg142586 (http://forum.fhem.de/index.php/topic,17074.msg142586.html#msg142586)

gruss
  andre
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: vbs am 26 Februar 2014, 21:20:18
Klasse! Hatte aber leider noch keine Gelegenheit zum Ausprobieren. Hole ich aber spätestens am Wochenende nach und gebe dann Rückmeldung! Vielen Dank schonmal!
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: vbs am 28 Februar 2014, 23:59:17
Also das klappt soweit, danke! Aber ich hab ein bisschen gefummelt, bis ich dann im Quellcode gesehen habe, dass man buchstäblich:
set <structure> [FILTER=STATE=on] off
eingeben muß INKL. der eckigen Klammern. Kenn ich normalerweise als Kennzeichnung für einen optionalen Parameter... Ist aber vermutlich beabsichtigt, oder?
Titel: Antw:Mehrfaches set mit gleichem Wert verhindern
Beitrag von: justme1968 am 01 März 2014, 00:04:20
ja. das ist absicht.

gruss
  andre