FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: kwbo am 04 November 2013, 14:08:37

Titel: Statusabfrage auf global DEFINED möglich?
Beitrag von: kwbo am 04 November 2013, 14:08:37
ich brauche mal wieder Unterstützung.
Über einen Bewegungsmelder (FS20 PIRI) schalte ich indirekt eine Lampe für einen bestimmten Zeitraum ein.
define act_timerPIRI1b notify flur_PIRI1b  { if (Value("Flurlicht") eq "off") { fhem("set Flurlicht on ;; define Flurlicht_autooff at +00:03:00 set Flurlicht off ") }
Nun möchte ich, dass die Lampe weiter anbleibt, solange der Bewegungsmelder zwischenzeitlich neu aktiviert wird.
Dazu muß ich allerdings wissen, ob das Licht überhaupt durch den Bewegungsmelder eingeschaltet wurde oder aber bereits vorher eingeschaltet war. In beiden Fällen ist der Status der Lampe "ON".
Bei der Erzeugung des Device "Flurlicht_autooff" wird (wenn ich das richtig gelesen habe) eine globale Variale DEFINED erzeugt. Diese müsste bis zum Ablauf der definierten Zeit und dem Löschen des Devices bestehen.  Die Existenz dieser Variable würde ich gerne in einer If-Abfrage auswerten. Ist das möglich oder bin ich da völlig auf dem Holzweg?
define act_timerPIRI1b notify flur_PIRI1b  { if (Value("Flurlicht") eq "off") { fhem("set Flurlicht on ;; define Flurlicht_autooff at +00:03:00 set Flurlicht off ") } else { if (Flurlicht_autooff eq "DEFINED") { fhem("set Flurlicht on ;; define Flurlicht_autooff at +00:03:00 set Flurlicht off ") }}
Vielen Dank für jeden Hinweis.
Gruß, Werner
Titel: Antw:Statusabfrage auf global DEFINED möglich?
Beitrag von: justme1968 am 04 November 2013, 14:21:10
du kannst mit Value("Flurlucht_autooff") jederzeit rausfinden ob es das at gibt.

gruss
  andre
Titel: Antw:Statusabfrage auf global DEFINED möglich?
Beitrag von: kwbo am 04 November 2013, 17:40:45
Hallo Andre,

Ich habe die Sache mal  bei der folgenden Formel  mit zwei Schaltaktoren getestet. Es schien zu funktionieren.

define act_timerPIRI1a notify flur_PIRI1a  { if (Value("SSD8") eq "off") { fhem("set SSD8 on ;; define SSD8_autooff at +00:01:30 set SSD8 off") } else { if (Value("SSD8_autooff") =~ "Next*") { fhem("set SSD3 on ;; define SSD3_autooff at +00:00:10 set SSD3 off ") }}}

Wenn ich allerdings den ursprünglichen at-Zeitintervall neu zu setzen versuche, scheint das erneute Setzen des at-Zeitintervalls den aktuellen Wert nicht zu überschreiben.
Das Licht geht nach Ablauf der ersten gesetzten Zeit aus. Das erneute Setzen wird ignoriert.

Hast du da zufällig eine Idee, wie ich die Zeitspanne verlängern kann?
Habe ich da eine Möglichkeit, den aktuellen Wert zu ändern und zurückzuschreiben? Wenn ja, wie.

Danke und Gruß, Werner
Titel: Antw:Statusabfrage auf global DEFINED möglich?
Beitrag von: justme1968 am 04 November 2013, 17:59:04
wenn du ein bestehendes at (oder jedes andere fhem device) verändern möchtest geht das nicht mit define sondern mit modify. oder löschen und neu anlegen.

gruss
  andre
Titel: Antw:Statusabfrage auf global DEFINED möglich?
Beitrag von: kwbo am 04 November 2013, 18:19:41
Hallo Andre,

herzlichen Dank für den Tip. Mit modify funktioniert es jetzt wie es soll.

Gruß, Werner
Titel: Antw:Statusabfrage auf global DEFINED möglich?
Beitrag von: bugster_de am 05 November 2013, 09:34:51
Hi,

ich mach das bei mir immer mit delete udn dann neu define. Falls das Element, welches gelöscht werden soll nicht existiert, so gibt es halt einen Eintrag im Logfile. Geht prima.