Hallo zusammen,
ich habe meinen Sat-Receiver in FHEM eingebunden und würde gerne damit auch das Licht in der Küche steuern.
Wollte das mit folgendem DOIF umsetzten:
define DI_vuschaltetLichtaus DOIF ([VuSolo2:channel] eq "Das_Erste_HD)" (set Kueche_Licht_alle off)
Das ganze hat auch funktioniert, allerdings nur einmal. Ab dem zweiten Mal funktioniert das ganze nur noch, wenn ich den TV Sender direkt in FHEM ändere.
Kann mir jemand sagen was ich hier falsch mache?
Bin auch noch Anfänger, aber ich denke du benötigst das Attribut "do always"
da in deinem DOIF keine Zustandswechsel erfolgt. musst du. wie item schon schrieb. das do always setzen...
Danke für die schnellen Rückmeldungen, hab nun das "do always" gesetzt. Leider hat sich am beschriebenen Problem noch nichts geändert.
Es scheint so als ob das Device DI_vuschaltetLichtaus gar nicht mitbekommt, dass sich das reading "channel" geändert hat. Obwohl zwischenzeitlich ein anderer Kanal eingestellt ist
define DI_vuschaltetLichtaus DOIF ([VuSolo2:channel] eq "Das_Erste_HD)" (set Kueche_Licht_alle off)
sieht dein DOIF so aus ?
Frage wegen dem " hinter der Klammer...
Sorry, der Fehler hatte ich schon korrigiert, ist mir erst nach dem ersten post aufgefallen.
So siehts aktuell aus:
define DI_vuschaltetLichtaus DOIF ([VuSolo2:channel] eq "Das_Erste_HD") (set Kueche_Licht_alle off)
attr DI_vuschaltetTVaus do always
Leider immernoch mit dem beschriebenen Problem
was soll das DOIF denn genau machen, wenn es mal fertig ist?
Wenn das DOIF den Kanal wechsel nicht mitbekommt, dann vermutlich, weil das Reading in 'VuSolo2:chanel' nicht dem 'Das_Erste_HD' entspricht.
Wenn du mal ein list vom DOIF machst, wäre das schon hilfreich. Am besten, direkt nachdem es nicht funktioniert hat.
Das List sieht so aus:
Internals:
DEF ([VuSolo2:channel] eq "Das_Erste_HD") (set Kueche_Licht_alle off)
NAME DI_vuschaltetLichtaus
NR 274
NTFY_ORDER 50-DI_vuschaltetTVaus
STATE cmd_1
TYPE DOIF
Readings:
2016-12-05 12:52:24 Device VuSolo2
2016-12-05 12:52:24 cmd 1
2016-12-05 12:52:24 cmd_event VuSolo2
2016-12-05 12:52:24 cmd_nr 1
2016-12-05 12:52:24 e_VuSolo2_channel Das_Erste_HD
2016-12-05 12:52:24 state cmd_1
Condition:
0 ReadingValDoIf($hash,'VuSolo2','channel','','',AttrVal($hash->{NAME},'notexist',undef)) eq "Das_Erste_HD"
Devices:
0 VuSolo2
all VuSolo2
Do:
0:
0 set Kueche_Licht_alle off
Helper:
event channel: Das_Erste_HD
globalinit 1
last_timer 0
sleeptimer -1
timerdev VuSolo2
timerevent channel: Das_Erste_HD
triggerDev VuSolo2
timerevents:
channel: Das_Erste_HD
timereventsState:
channel: Das_Erste_HD
triggerEvents:
channel: Das_Erste_HD
triggerEventsState:
channel: Das_Erste_HD
Internals:
Itimer:
Readings:
0 VuSolo2:channel
all VuSolo2:channel
Regexp:
0:
All:
State:
Trigger:
Attributes:
do always
Zitatwas soll das DOIF denn genau machen, wenn es mal fertig ist?
eigentlich soll es nur das licht aus schalten wenn der Kanal "Das_Erste_HD" drin ist. Wenn ein andere Kanal drin ist, soll nichts geschehen.
Um 12:54:24 wurde ja der Schaltbefehl ausgeführt...
Ist zu der Zeit bei Kueche_Licht_alle
was angekommen ?
Ja um 12:52 hat es funktioniert, weil ich da den TV Sender über FHEM geändert hatte.
Danach hab ich es dann wieder über die Fernbedieung versucht und das hat nicht mehr funktioniert. Das List hat sich seither auch nicht mehr geändert.
So wie es aussieht funktioniert das ganz doch, allerdings mit deutlicher zweitverzögerung von bis zu zwei Minuten
Woran kann das liegen?
Hallo Banis,
das könnte an der Pollzeit liegen, mit der fhem deinen Receiver abfragt. Mein Wissensstand ist, dass die VuPlus Box ihre Zustandsänderungen nicht an fhem pusht, sondern fhem zyklisch den Zustand abfragen muss. Im Worst Case dauert das Registrieren einer Zustandsänderung in fhem also fast einen kompletten Pollzyklus.
Auf welchem Wert steht denn die Abfragezeit deines VuPlus Moduls?
Gruß,
Mathea
Ja ich glaube das könnte der Grund sein. Bei mir steht das Intervall auf 120, das würde dann mit den 2 Minutenb passen.
Gibt es irgendwelche Probleme wenn ich das z.B. auf 10 reduziere?
Leider kenne ich mich nicht gut genug damit aus ab wann ein erhöhter Netzwerktraffic Probleme machen kann, aber ich weiß, dass die Enigma2 Receiver beim Abfragen ziemlich viele Daten liefern. Vielleicht schaust du mal, ob dir 30 bis 60 Sekunden auch reichen (Mein Intervall steht auf 60 Sekunden und alles läuft gut).
Gruß,
Mathea
In dem geposteten Code wird das Attribut "do always" NICHT für das DOIF "DI_vuschaltetLichtaus" gesetzt, sondern für ein anderes Device "DI_vuschaltetTVaus".
LG
pah
Zitat von: Prof. Dr. Peter Henning am 05 Dezember 2016, 14:30:47
In dem geposteten Code wird das Attribut "do always" NICHT für das DOIF "DI_vuschaltetLichtaus" gesetzt, sondern für ein anderes Device "DI_vuschaltetTVaus".
LG
pah
da fällt mir glatt ein Sprichwort ein... mit Lesen und so... :D
im listing vom DOIF stehts aber drin...
ansonsten fällt mir nix besonderes auf... wenn im ENIGMA2 Device im channel Reading ein 'Das_Erste_HD' steht, dann wird das DOIF triggern.
Und in Verbindung mit einem 'do always' dann auch alle 120 Sekunden (pollTime). Muss man überlegen ob man das so haben möchte... vor allem wenn die Zeit auf 10 Sekunden gestellt wird...
Ansonsten sollte man das 'do always' weg lassen und statt dessen ein DOELSE oder auch ein DOELSEIF mit entsprechender Bedingung nehmen