Benötige Hilfe bei DOIF für Beleuchtung Treppenhaus

Begonnen von beSmart, 03 März 2016, 21:57:58

Vorheriges Thema - Nächstes Thema

beSmart

Hallo.

Wenn  folgende Bedingungen erfüllt sind, schaltet das Licht ein.
- es ist zwischen 17:00 und 7:00 Uhr
- die Haustür ist geöffnet
- die Beleuchtung  ist aus
( [17:00-07:00] and [HM_363959] eq "Aus" and [Fk.UG.Haustuer] eq "open") ( set HM_363959 An)

Mein Problem ist die Haustür. Es soll nur geschaltet werden, wenn der Status von "closed" nach "open" wechselt und dann innerhalb von 3 sek. einmal einschalten.

Hat jemand  eine Idee wie man das umsetzt oder einen besseren Ansatz?


Gruß

beSmart

gent

Hi,

bin noch nicht ganz so drin in fhem, aber besteht evtl. die Möglichkeit, den letzten Status von [Fk.UG.Haustuer] in einen Dummy zu schreiben und dann dieses als zusätzliche Bedingung mit einzubinden?
( [17:00-07:00] and [HM_363959] eq "Aus" and [lastHaustuer:status] eq "closed" and [Fk.UG.Haustuer] eq "open") ( set HM_363959 An, setreading status lastHaustuer open)

Viele Grüße vom gent
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

frank

den namen nach handelt es sich hier um homematic devices. also würde ich das mit direktem peering machen, ohne doif, sorry.

1. tk und aktor peeren.
2. im aktor die register einstellen, wie der tk schalten soll.
3. ein at definieren (hier kannst du natürlich auch ein doif nehmen), dass den aktor tags über auf inhibit setzt, und nachts das inhibit wieder freigibt.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Ellert

( [?17:00-07:00] and [?HM_363959] eq "Aus" and [Fk.UG.Haustuer] eq "open") ( set HM_363959 An)
? verhindert das Triggern

beSmart

Hallo und vielen Dank für die Unterstützung.

Habe es jetzt wie folgt gelöst:

1.) einen Dummy für die Haustür angelegt Status: An oder Aus
define dummy.Haustuer dummy
attr dummy.Haustuer group Test
attr dummy.Haustuer room Test
attr dummy.Haustuer webCmd An:Aus


2.) ein DOIF welches den Dummy auf "An" setzt und nach 3 Sek. wieder auf "Aus"
define doif.Haustuer DOIF ([Fk.UG.Haustuer] eq "open") ({ fhem("set dummy.Haustuer An ;;;; define Bel_ein_off at +00:00:03 set dummy.Haustuer Aus")})
attr doif.Haustuer group Beleuchtung Test
attr doif.Haustuer room Test


3.) ein DOIF welches die Beleuchtung einschaltet, wenn der Dummy "Haustür" den Status "An" hat.

define bel.automatik DOIF ([17:00-6:00] and [?HM_363959] eq "Aus" and [dummy.Haustuer] eq "An") ( set HM_363959 An)
attr bel.automatik group Test
attr bel.automatik room Test


Dank und Gruß

beSmart

Ellert

Zitat von: beSmart am 05 März 2016, 20:41:22
Hallo und vielen Dank für die Unterstützung.

Habe es jetzt wie folgt gelöst:

1.) einen Dummy für die Haustür angelegt Status: An oder Aus
define dummy.Haustuer dummy
attr dummy.Haustuer group Test
attr dummy.Haustuer room Test
attr dummy.Haustuer webCmd An:Aus


2.) ein DOIF welches den Dummy auf "An" setzt und nach 3 Sek. wieder auf "Aus"
define doif.Haustuer DOIF ([Fk.UG.Haustuer] eq "open") ({ fhem("set dummy.Haustuer An ;;;; define Bel_ein_off at +00:00:03 set dummy.Haustuer Aus")})
attr doif.Haustuer group Beleuchtung Test
attr doif.Haustuer room Test


3.) ein DOIF welches die Beleuchtung einschaltet, wenn der Dummy "Haustür" den Status "An" hat.

define bel.automatik DOIF ([17:00-6:00] and [?HM_363959] eq "Aus" and [dummy.Haustuer] eq "An") ( set HM_363959 An)
attr bel.automatik group Test
attr bel.automatik room Test


Dank und Gruß

beSmart

Wozu ist der Zwischenschritt 2.) erforderlich ?

beSmart

Hallo.

Der Zwischenschritt ist für mich erforderlich, da die Haustür über mehrere Stunden den Status geöffnet haben kann. Hier setze ich den Dummy auf An und nach 3 Sek. wieder Aus. Sonst würde die Beleuchtung über Stunden eingeschaltet sein bzw. sich immer wieder einschalten.

Gruß

beSmart

Damian

Zitat von: beSmart am 06 März 2016, 13:54:50
Hallo.

Der Zwischenschritt ist für mich erforderlich, da die Haustür über mehrere Stunden den Status geöffnet haben kann. Hier setze ich den Dummy auf An und nach 3 Sek. wieder Aus. Sonst würde die Beleuchtung über Stunden eingeschaltet sein bzw. sich immer wieder einschalten.

Gruß

beSmart

define doif.Haustuer DOIF ([Fk.UG.Haustuer] eq "open") ({ fhem("set dummy.Haustuer An ;;;; define Bel_ein_off at +00:00:03 set dummy.Haustuer Aus")})

so etwas lässt sich eleganter lösen mit:

define doif.Haustuer DOIF ([Fk.UG.Haustuer] eq "open") (set dummy.Haustuer An) (set dummy.Haustuer Aus")

attr doif.Haustuer wait 0,3

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

Ellert

Ich gehe mal davon aus, dass HM_363959 nach einer bestimmten Zeit von selbst aus geht.
( [?17:00-07:00] and [?HM_363959] eq "Aus" and [Fk.UG.Haustuer] eq "open") ( set HM_363959 An)
DOELSEIF ([Fk.UG.Haustuer] eq "closed")


Ohne steuernde Attribute

HM_363959 geht nur einmal an, wenn [Fk.UG.Haustuer] auf "open" wechselt und dann erst wieder, wenn [Fk.UG.Haustuer] vorher auf "closed" gewechselt hat.

beSmart

Hallo und vielen Dank für eure Antworten.

Anscheinend führen wieder viele Wege nach Rom.

@Damian

Deine Lösung ist eleganter, das stimmt. Ich habe sie noch nicht getestet, werde dies aber demnächst tun.

@Ellert
Auch deine Lösung habe ich noch nicht getestet. Werde dies aber auch noch machen.:)

Sie ist meinem 1. Ansatz bis auf DOELSEIF ([Fk.UG.Haustuer] eq "closed") und 2? sehr ähnlich.
Bei meinem 1. Ansatz hatte ich das Problem, das die Beleuchtung sich immer wieder eingeschaltet hat.

Nochmal vielen Dank.

Gruß
beSmart