Schaltvorgang setzt Werte nicht korrekt

Begonnen von mschulte63, 20 Mai 2014, 15:28:35

Vorheriges Thema - Nächstes Thema

mschulte63

Hallo,

ich habe folgendes Problem.

Beim Betätigen eines Schalters soll zum einen eine Lampe angeschaltet werden und gleichzeitig eine Dummy-Device einen speziellen Wert erhalten.

Die Zeile sieht aktuell bei mir folgendermassen aus :

define tempWert dummy
set tempWert 0

define Testnotify notify TestSchalter set Testlampe on-for-timer 10, tempWert 1

Wenn ich nun den Schalter betätige, wird die Lampe angeschaltet, aber nach dem abgelaufenen Timer nicht wieder ausgeschaltet.
Und parallel wird der Wert von tempWert nicht auf 1 gesetzt.

Ich benötige diesen Wert später noch, um weitere Schaltvorgänge zu aktivieren. Diese weiteren Schaltvorgänge dürfen aber nur durchgeführt werden, wenn ich den Schalter aus dem notify betätigt habe.

Ich weiß aktuell nicht, wo mein Denkfehler liegt und lese den ganzen Tag schon alle möglichen Dokus.
Wäre für jeden Tipp dankbar.

Viele Grüße

Michael


rudolfkoenig

"set Testlampe on-for-timer 10, tempWert 1" setzt Testlampe auf "on-for-timer 10, tempWert 1", vermutlich nicht das, was Du erwartest.

Fuer FS20 Geraete gibt es ein "follow-on-for-timer" Attribut, siehe Doku fuer Details.

mschulte63

Hallo,

im Grunde genommen habe ich den Sachvewrhalt mittlerweile auch herausgefunden.

Aber so ganz kann ich dem Gedanken mit "follow-on-for-timer  Time " nicht folgen.
Das Gerät würde ja durch den Aufruf on-for-timer den Status On für die angegebene Zeit bekommen. Nach Ablauf des Timers würde zwar intern wieder der Off-State eingestellt, aber im Webfrontend würde immer noch On stehen
"follow-on-for-timer  Time " dient nur dazu, die Anzeige des richtigen Zustandes des Geräts im Webfrontend nach Ablauf der Zeit Time abzubilden.
Habe ich da etwas falsch verstanden ?

Vielleicht bin ich auch mal wieder auf der falschen Spur.

Es geht hier um eine Art Treppenhausschaltung, die mehrere Quellen hat.
Zum einen eben soll die Lampe erst einmal durch den Schalter angemacht werden.
Nun kommt die zweite Quelle ins Spiel und zwar ein Bewegungsmelder, der kurz vor Ablauf des ersten Timers triggert, falls sich noch Jemnad im beleuchteten Bereich befindet. Dann soll der Timer erneut gestartet werden.
Und hier kommt aber das Thema "gesicherter Zustand des Schalters ins Spiel. Der Trigger des Bewegungssensors soll zu einer Verlängerung des Timers führen, falls der zugehörige Schalter betätigt wurde. Und hierfür benötige ich die Info über das Einschalten der Lampe mit Hilfe dieses Schalters.

Nun etwas mehr Hintergrundinfos zu der angedachten Lösung.
Da wir eine recht große Anzahl an Tieren haben, die frei im Haus herumlaufen (1 Hund und 6 Katzen) würde eine Beschaltung mit einem reinen Bewegungsmelder zu oft für ein Einschalten sorgen, welches nicht notwendig ist.
Zusätzlich zu dem Schalter, der einen Timer startet wäre eventuell noch ein Schalter denkbar, der das Licht permanent einschaltet und auch wieder ausschaltet. Und das gesamte Thema ist dadurch entstanden, daß in einigen Bereichen recht oft unnötig Licht brennt. Zusätzlich würde natürlich auch ein Komfortgewinn erzeugt werden.

Ich muß irgendwie das Einschalten des Lichts über den Schalter in einer Variablen (Dummy) sichern, damit ich nachher den Wert auswerten kann.
Das wollte ich eigentlich mit dem notify erreichen. Wie kann man das denn hinbekommen !!

Danke und viele Grüße

Michael

strauch

define Testnotify notify TestSchalter:on set Testlampe on-for-timer 10;set tempWert 1
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

mschulte63

Hallo,

danke für die Info.

Genau das wars. Anstelle des Kommas ein Semikolon.

Das einzige Problem, welches ich jetzt noch habe, ist die Reinitialisierung des Dummies nachdem abgeschaltet wurde.
Sonst löst der Trigger vom Bewegungsmelder ständig die Lampe aus, obwohl der Schalter nicht betätigt wurde.

Ich habe es mit einem weiteren notify versucht in dem der Zustand der Lampe abgefragt wird und wenn diese off ist, wird der Dummy mit dem
Zustand des Schalters auf off gesetzt :

define Test_off notify init_all:on { if ( Value("Testlampe_TH") eq "off") {fhem("set Schalter_an off")} }
Aber der Wert nach Durchlauf ist immer noch on und ich kann den Trigger des Bewegungsmelders nutzen, um die Lampe einzuschalten.
Soll aber wegen der Tiere nicht !!!  :(

Hat Jemand eine Idee ?

Danke und viele Grüße

Michael

mschulte63

Hi,

sah erst einmal so aus, daß es die Lösung ist.

Aber das Semikolon erzeugt an der Stelle einen neuen Befehl, der nicht mehr mit dem vorhergehenden Teil etwas zu tun hat.
Dadurch wird der dummy permanent auf on gesetzt !!
Und nicht in Abhängigkeit von der Betätigung des Schalters.

Es muß doch möglich sein, sich das Betätigen eines Schalters in einer Variablen zu merken und nachdem der Schaltvorgang vorbei ist, diese Variable auf einen definierten Wert zu setzen, damit das Spiel von vorne beginnen kann. !!

Wenn irgendwo eine Idee lauert, dann her damit.

Danke und viele Grüße

Michael

Paul

Weshalb setzt Sudan nicht auch den dummy on-for-timer
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

strauch

#7
Mach einfach für off noch ein notify bzw. Ein at der nach 10s auch wieder abschaltet.

Gesendet von meinem Nexus 4 mit Tapatalk
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.