Mehrfaches set mit gleichem Wert verhindern

Begonnen von vbs, 24 Februar 2014, 23:05:59

Vorheriges Thema - Nächstes Thema

vbs

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!

Arek

Hi,

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

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

Gruß Arek

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

vbs

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

vbs

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?

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

vbs

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

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

vbs

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!

vbs

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?

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968