FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Banis am 05 Dezember 2016, 11:34:43

Titel: DOIF funktioniert nur einmalig
Beitrag von: Banis am 05 Dezember 2016, 11:34:43
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?
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: item am 05 Dezember 2016, 11:42:42
Bin auch noch Anfänger, aber ich denke du benötigst das Attribut "do always"
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: kumue am 05 Dezember 2016, 11:46:33
da in deinem DOIF keine Zustandswechsel erfolgt. musst du. wie item schon schrieb. das do always setzen...
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: Banis am 05 Dezember 2016, 12:06:51
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
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: kumue am 05 Dezember 2016, 12:20:05
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...
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: Banis am 05 Dezember 2016, 12:32:07
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
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: automatisierer am 05 Dezember 2016, 12:45:52
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.
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: Banis am 05 Dezember 2016, 12:57:23
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.
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: kumue am 05 Dezember 2016, 13:11:23
Um 12:54:24 wurde ja der Schaltbefehl ausgeführt...
Ist zu der Zeit bei Kueche_Licht_alle was angekommen ?
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: Banis am 05 Dezember 2016, 13:17:05
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.
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: Banis am 05 Dezember 2016, 13:23:56
So wie es aussieht funktioniert das ganz doch, allerdings mit deutlicher zweitverzögerung von bis zu zwei Minuten

Woran kann das liegen?
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: Mathea am 05 Dezember 2016, 13:36:35
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
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: Banis am 05 Dezember 2016, 13:47:27
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?
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: Mathea am 05 Dezember 2016, 13:50:32
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
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag 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

Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: kumue am 05 Dezember 2016, 14:34:04
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
Titel: Antw:DOIF funktioniert nur einmalig
Beitrag von: automatisierer am 05 Dezember 2016, 14:57:40
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