DOIF funktioniert nur einmalig

Begonnen von Banis, 05 Dezember 2016, 11:34:43

Vorheriges Thema - Nächstes Thema

Banis

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?
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

item

Bin auch noch Anfänger, aber ich denke du benötigst das Attribut "do always"

kumue

da in deinem DOIF keine Zustandswechsel erfolgt. musst du. wie item schon schrieb. das do always setzen...

Banis

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
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

kumue

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...

Banis

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
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

automatisierer

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.

Banis

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.
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

kumue

Um 12:54:24 wurde ja der Schaltbefehl ausgeführt...
Ist zu der Zeit bei Kueche_Licht_alle was angekommen ?

Banis

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.
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

Banis

So wie es aussieht funktioniert das ganz doch, allerdings mit deutlicher zweitverzögerung von bis zu zwei Minuten

Woran kann das liegen?
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

Mathea

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

Banis

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?
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

Mathea

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

Prof. Dr. Peter Henning

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