Hallo guten morgen,
ich möchte mit einem DOIF Lampen schalten, wenn in der Zeit 16-22 Uhr der Sonnenuntergang ist/war und in diesem Zeitraum das TV Gerät eingeschaltet wurde.
Dieses DOIF schaltet nur wenn das TV Gerät läuft und Sunset ist
([{sunset("real",1000)}-22:00] and [TV:state] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSEIF ([0:00])
Mit diesem DOIF tut sich gar nichts -
(({sunset("real",0,"16:00","22:00")}) and [TV:state] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSEIF ([0:00])
Was über sehe ich hier.
Wie gesagt TV muss eingeschaltet sein und die Lampen sollen schalten auch wenn Sunset schon vorbei war.
Danke für eure Hilfe und bleibt Gesund
Helmut
Zitat von: Helmi55 am 21 März 2020, 10:00:08
Hallo guten morgen,
ich möchte mit einem DOIF Lampen schalten, wenn in der Zeit 16-22 Uhr der Sonnenuntergang ist/war und in diesem Zeitraum das TV Gerät eingeschaltet wurde.
Dieses DOIF schaltet nur wenn das TV Gerät läuft und Sunset ist
([{sunset("real",1000)}-22:00] and [TV:state] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSEIF ([0:00])
Mit diesem DOIF tut sich gar nichts -
(({sunset("real",0,"16:00","22:00")}) and [TV:state] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSEIF ([0:00])
Was über sehe ich hier.
Wie gesagt TV muss eingeschaltet sein und die Lampen sollen schalten auch wenn Sunset schon vorbei war.
Danke für eure Hilfe und bleibt Gesund
Helmut
Im ersten Beispiel hast du ein Zeitintervall genommen im zweiten nicht. Warum nicht?
Natürlich musst du auch im zweiten Beispiel eine Endzeit angeben, wie im ersten.
Servus
Ich dachte ,,16:00","22:00" ist das Zeitintervall ?
Es ist aber ein Zeitintervall für den Sonnenuntergang, nicht für das DOIF :)
Zitatdefmod a15 at *{sunset("REAL",0,"18:00","21:00")} set lamp1 on
Schalte lamp1 an, sobald die Sonne unter den Horizont sinkt (h ≤ 0), jedoch nicht vor 18:00 und nicht nach 21:00.
Dein DOIF - da muss doch so Zeit muss doch in eckige?
([{sunset("real",0,"16:00","22:00")}] and [TV:state] eq "on")
Analog diesem Beispiel in der Doku
ZitatSchalten mit Zeitfunktionen, hier: bei Sonnenaufgang und Sonnenuntergang:
define di_light DOIF ([{sunrise(900,"06:00","08:00")}]) (set outdoorlight off) DOELSEIF ([{sunset(900,"17:00","21:00")}]) (set outdoorlight on)
Otto danke dir - diese Klammern.... 8)
Habe so geändert und werde heute Abend testen.
Danke und Gesund bleiben
Helmut
Zitat von: Otto123 am 21 März 2020, 13:17:00
Es ist aber ein Zeitintervall für den Sonnenuntergang, nicht für das DOIF :)Dein DOIF - da muss doch so Zeit muss doch in eckige?
([{sunset("real",0,"16:00","22:00")}] and [TV:state] eq "on")
Analog diesem Beispiel in der Doku
Das wird nicht reichen, es muss schon ein Intervall sein und nicht nur ein Zeittrigger, es soll auch noch nach Sonnenuntergang funktionieren:
([{sunset("real",0,"16:00","22:00")}-22:00] and [TV:state] eq "on")
Die Zeitangaben innerhalb von sunset begrenzen nur die berechnete Sonnenuntergangszeit, es bleibt aber eben nur ein Zeitpunkt.
Hallo. Danke für mein Verständnis "16:00","22:00" ist der Zeitraum für den Sonnenuntergang und -22:00 sagt dass es nach dem Sonnenuntergang bis 22 Uhr funktionieren soll?
Danke
Helmut
Nein ?
jedoch nicht vor 16:00 und nicht nach 22:00.
Bedeutet: geht die Sonne früher unter als 16:00 Uhr passiert es erst 16:00
geht die Sonne später als 22:00 Uhr unter, passiert es spätestens 22:00
@Damian
Das DOIF oben hat zwar einen Zeitraum, aber DOELSE ist doch einfach leer. Also passiert doch nur etwas wenn der Zeitraum beginnt. Das der Zeitraum endet, schubst noch nicht mal einen Sack Reis um. Es ändert nur den Zustand im DOIF. Oder ich habe DOIF mal wieder nicht verstanden ?
Hallo
Bin mir ja nicht sicher ob ich das so darstellen kannste ich möchte:
Ich setz mich zum Fernseher und wenn ich ihn einschalte soll wenn es finster ist im Zeitraum von 16 Uhr (Winter) und 22 Uhr Hochsommer) die Aktion ausgeführt werden
Dann geht meine Variante eventuell nicht! Du willst primär triggern wenn der Fernseher angeht.
Dann trag doch einfach -00:00 noch dazu, dann geht es sicher in dem Zeitraum.[{sunset("real",0,"16:00","22:00")}-00:00]
Guten Abend
also mit dem ([{sunset("real",0,"16:00","22:00")}-00:00] and [TV:state] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSEIF ([0:00])
Schalten die Lampen, wenn TV on nicht wenn TV an und Sunset tritt ein, noch wenn TV an und Sunset ist bereits vorbei?
Hier ein List vom DOIF
Internals:
CFGFN
DEF ([{sunset("real",0,"16:00","22:00")}-00:00] and [TV:state] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSEIF ([0:00])
FUUID 5e74e976-f33f-ee2d-226a-7b6e821ef49ad60f
MODEL FHEM
NAME di_TVLampe_auto
NOTIFYDEV global,TV
NR 551477
NTFY_ORDER 50-di_TVLampe_auto
STATE initialized
TYPE DOIF
VERSION 21208 2020-02-16 17:56:18
READINGS:
2020-03-21 18:17:40 cmd 0
2020-03-21 18:17:40 mode enabled
2020-03-21 18:17:40 state initialized
2020-03-21 18:17:40 timer_01_c01 22.03.2020 18:07:09
2020-03-21 18:17:40 timer_02_c01 22.03.2020 00:00:00
2020-03-21 18:17:40 timer_03_c02 22.03.2020 00:00:00
Regex:
accu:
cond:
TV:
0:
state ^TV$:^state:
attr:
cmdState:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'TV','state') eq "on"
1 ::DOIF_time_once($hash,2,$wday)
days:
do:
0:
0 set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off
1:
0
2:
helper:
DEVFILTER ^global$|^TV$
NOTIFYDEV global|TV
globalinit 1
last_timer 3
sleeptimer -1
triggerDev
interval:
0 -1
1 0
intervalfunc:
localtime:
0 1584896829
1 1584831600
2 1584831600
readings:
all TV:state
realtime:
0 18:07:09
1 00:00:00
2 00:00:00
time:
0 {sunset("real",0,"16:00","22:00")}
1 00:00:00
2 0:00
timeCond:
0 0
1 0
2 1
timer:
0 0
1 0
2 0
timers:
0 0 1
1 2
triggertime:
1584831600:
localtime 1584831600
hash:
1584896829:
localtime 1584896829
hash:
uiState:
uiTable:
Attributes:
room Steuerung
danke
Helmut
Hallo Helmut,
eine ähnliche Frage wie Du sie hast, hatte ich auch einmal, falls es dir weiterhilft:
https://forum.fhem.de/index.php/topic,14010.msg175122.html#msg175122
Herausgekommen ist, dass FHEM die Lampe am Fernseher einschaltet, wenn
a) ich nicht verreist bin und
b) der TV angeschaltet ist und
c) es draußen theoretisch dunkel genug ist
Geholfen hat "Antwort #129 am: 14 Juni 2014, 22:01:31" von Dietmar63
Gruß Bracew
Hallo Helmut,
Du hast ja das DOIF erst 10 min nach Sonnenuntergang verändert, der Zeitraum ist jetzt erst morgen?
Das DOELSEIF am Ende halte ich für Schnurbel ;)
Na gut in Zeiten wie diesen läuft ja nix davon. Werde das doelseif löschen und auf morgen warten
Muss es mir raussuchen, aber das doelseif wurde mir hier mal empfohlen?
Schönen Abend
Helmut
Ich kenne diese Empfehlung und bleibe bei meiner Meinung :)
Aber Du hast ja einen Zeitraum -00:00 der endet da. Da brauchst Du am Ende kein ([00:00]) das ist doppelt und unübersichtlich. Es sei denn der DOIF Chef sieht das anders, dann hör lieber auf ihn ;)
Du kannst doch für einen Test heut einfach mal die DEF ändern:
{sunset("real",0,"21:00","22:00")}
und nochmal testen, falls Du Lust hast und es heute langweilig wird.
Also die 21:00 ist willkürlich gewählt,, sollte halt eine Zeit in der nahen Zukunft sein :)
Hallo Helmi55,
falls ich es richtig verstanden habe soll die Aktion doch immer beim Fersehen an oder aus, ausgeführt werden. Innerhalb des Zeitraums. Oder?
Dann nimm das DOELSEIF raus, Attribut do allways setzen und danach ein checkall. Dann brauchst du nicht bis morgen warten ;)
Gruß
Wozu do always?
Damit immer wenn der Fernseher einen Event sendet (der on "bestätigt") auch noch mal das Licht nachgetriggert wird? Oder man das Licht ausschalten kann und es geht beim nächsten Event wieder an?
Moin,
ich würde nicht mit Sunset/Sunrise arbeiten, weil die jeweils nur einmal feuern bzw. ein Event auslösen.
Ich würde Twilight nehmen, und da als Schaltwert das Reading "Twilight" nehmen..., so in etwa hat es Damian auch in der Commandref zu DOIF beschrieben.
also:
AND [MeinTwilight:Twilight] < "40"
So habe ich es quasi realisiert, und funzt tadellos.
Der TV hängt an einer TasmotaSteckdose, da frage ich das Powerreading ab, ob der TV läuft. Die Module zu WOL oder SamsungTV haben bei mir nicht so schnell/zuverlässig funktioniert wie diese günstige Gosund@Tasmota ;D
Zitat von: Bartimaus am 22 März 2020, 09:44:21
ich würde nicht mit Sunset/Sunrise arbeiten, weil die jeweils nur einmal feuern bzw. ein Event auslösen.
Hier ging es zuletzt um einen Zeitraum und nicht um einmalige Events ::)
Zitat von: Otto123 am 22 März 2020, 10:31:20
Hier ging es zuletzt um einen Zeitraum und nicht um einmalige Events ::)
Naja,
Zitat... AND [MeinTwilight:Twilight] < 40
kann man auch als Zeitraum ansehen
@Damian JA - Hab ich was anderes behauptet?
Bartimaus hat offenbar das übersehen [{sunset("real",0,"16:00","22:00")}-00:00]
Zitat von: Otto123 am 22 März 2020, 10:44:38
@Damian JA - Hab ich was anderes behauptet?
Bartimaus hat offenbar das übersehen [{sunset("real",0,"16:00","22:00")}-00:00]
Ist mir schon klar. Im Thread geht's um "Lampen auch nach Sonnenuntergang in Abhängigkeit TV schalten" und da kann man [{sunset("real",0,"16:00","22:00")}-00:00] als [MeinTwilight:Twilight] < 40 ansehen, es steht nirgendwo drin, dass nach Mitternacht es nicht mehr funktionieren soll ;)
Hallo
da habe ich ja wieder eine heftige Diskussion ausgelöst
Ich habs jetzt so geschrieben
(([15:00-23:00]) and [TV:state] eq "on" and [Daemmerung:twilight] < "40" and [Homestatus_Haus] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSE
Danke an Bartimaus
Mal sehen was sich am Abend tut........
Schönen Sonntag noch
Gruß
Helmut
Gerne,
wenn die Lampe aber um 23:00 Uhr ausgehen soll, würde ich das im DOELSE noch mit angeben...
Hallo Bartimaus,
nein, wann die Lampen ausgehen sollen (wenn ich daheim bin) bestimme ICH.
Da gibts dann einen Schalter "alles aus"
Anders funktioniert das bei Abwesenheit
(([({sunset("REAL",0,"15:30","21:30")}+200+int(rand(200)))]) and [du_HSH] eq "Abwesend") (set Stehlampe_Stiegen on, set Vorhang_Kugel on, set GrillerBeleuchtung on) DOELSEIF (([([22:35]+int(rand(1900)))]) and [du_HSH] eq "Abwesend") (set Stehlampe_Stiegen off, set Vorhang_Kugel off, set GrillerBeleuchtung off, set du_WB_Alles_aus off)
Aber herzlichen Dank für deinen Hinweis 8)
Hat was ::) ::)
Hallo
und danke für eure Unterstützung.
So funktioniert es nun (ohne Anwesenheitserkennung im Moment)
(([15:00-23:00]) and [TV:state] eq "on" and [Daemmerung:twilight] < "55") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSE
Zum nicht funktionieren kam auch noch eine Fehler der IP Adresse im TV Modul dazu. war eigentlich immer auf fixer IP. Da ist irgendwas beim letzten Update der A1 Box schief gelaufen. Egal, Fehler gefunden und es funkt wieder.
Bleibt Gesund
LG
Helmut