FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Claus am 13 März 2015, 13:16:52

Titel: (gelöst) Gute Nacht
Beitrag von: Claus am 13 März 2015, 13:16:52
Hallo zusammen,
ich habe einen Dummy mit dem Namen Gute_N8 und zwei webcmd's, on:off. (Da kann ich mir das off auch schenken !)
Der schubst ein notify mit dem Namen Gute_N8_notify an, dass dann eine Lampe an der Schalt-Steckdose für 3 Minuten anmacht und alles andere ausschaltet.
Die DEF des notify:

Gute_N8.* {
if ( Value("Gute_N8") eq "on")  {
   fhem ("set SD2 on-for-timer 180");
   fhem ("set SDD1 off");
   fhem ("set SD3 off");
   fhem ("set TV off");
   [b] fhem ("define Gute_N8_off at +00:03 set Gute_N8 off") [/b]
  }
}


Brauche ich die fette Zeile oder habe ich mir hier einen Doppelgemoppelt?
Im Log steht dazu:

2015.03.12 21:51:30 3: CUL_HM set SDD1 off
2015.03.12 21:51:30 3: CUL_HM set SD3 off
2015.03.12 21:51:30 3: VIERA: Set off
2015.03.12 21:51:30 3: CUL_HM set SD2 on-for-timer 180
2015.03.12 21:51:30 3: CUL_HM set SDD1 off
2015.03.12 21:51:30 3: CUL_HM set SD3 off
2015.03.12 21:51:30 3: VIERA: Set off
2015.03.12 21:51:31 3: CUL_HM set SD2 on-for-timer 180
2015.03.12 21:51:31 3: define Gute_N8_off at +00:03 set Gute_N8 off : Gute_N8_off already defined, delete it first
2015.03.12 21:51:31 3: Gute_N8_notify return value: Gute_N8_off already defined, delete it first
2015.03.12 21:51:31 3: Gute_N8_off: unknown attribute SDD1. Type 'attr Gute_N8_off ?' for a detailed list.
2015.03.12 21:51:31 3: Gute_N8_off: unknown attribute sdd1. Type 'attr Gute_N8_off ?' for a detailed list.


Bitte nicht hauen, ich habe doch keinen Plan von Perl ...

VG
Claus
Titel: Antw:Gute Nacht
Beitrag von: betateilchen am 13 März 2015, 13:22:09
Lass die Zeile weg.

Vor allem hast Du im Moment das Problem, dass das notify sowohl bei on als auch bei off ausgeführt wird - wie Du Deinem Log eindeutig entnehmen kannst.

Und das hat überhautp nix mit "kein Plan von perl" zu tun, sondern mit "kein Plan von fhem". Denn perl brauchst Du überhaupt nicht...


Gute_N8.*on.* set SD2 on-for-timer 180;; set SDD1 off;; set SD3 off;; set TV off
Titel: Antw:Gute Nacht
Beitrag von: Claus am 13 März 2015, 15:10:31
Hallo betateilchen,
wie muss die DEF des notify dann genau lauten?
Wenn ich meinen Code mit Deiner Zeile:
Gute_N8.*on.* set SD2 on-for-timer 180;; set SDD1 off;; set SD3 off;; set TV off
ersetze geht die Steckdose nicht an, die anderen Geräte nicht aus und das Icon ändert sich auch nicht.
VG
Claus

Edit: OK, nur ein Semikolon. Aber das Icon zeigt immer off !
Titel: Antw:Gute Nacht
Beitrag von: Claus am 13 März 2015, 16:19:18
Zitat von: betateilchen am 13 März 2015, 13:22:09
Lass die Zeile weg.

Vor allem hast Du im Moment das Problem, dass das notify sowohl bei on als auch bei off ausgeführt wird - wie Du Deinem Log eindeutig entnehmen kannst.

Und das hat überhautp nix mit "kein Plan von perl" zu tun, sondern mit "kein Plan von fhem". Denn perl brauchst Du überhaupt nicht...


Gute_N8.*on.* set SD2 on-for-timer 180;; set SDD1 off;; set SD3 off;; set TV off


Damit das mit dem "kein Plan" besser wird brauche ich Unterstützung ...

Ich verstehe nicht wo das Log sagt, dass mein notify auch bei off ausgeführt wird !?
Ich verstehe das Log so, dass das Gute_N8_off bereits definiert ist. Stimmt das?

Ich weiß aber nicht wie ich das update des Dummy-Icon anders realisieren kann. Dafür brauche ich mal einen guten Rat...

Peace
Claus


Titel: Antw:Gute Nacht
Beitrag von: betateilchen am 13 März 2015, 16:27:41
Zitat von: Claus am 13 März 2015, 16:19:18
Ich verstehe nicht wo das Log sagt, dass mein notify auch bei off ausgeführt wird !?

Dein Log sagt nur, dass das notify ZWEIMAL ausgeführt wird:


2015.03.12 21:51:30 3: CUL_HM set SD2 on-for-timer 180
2015.03.12 21:51:31 3: CUL_HM set SD2 on-for-timer 180


Warum das so ist, ergibt sich aus der Logik Deines notify:

Gute_N8.*

mit .* triggerst Du auf JEDEN Event, der Gute_N8 enthält. Also nicht nur auf Gute_N8:on sondern auch auf Gute_N8:off

Und da Du im Ausführungsteil Deines notify das auslösende device selbst (Gute_N8) versuchst auszuschalten, wird genau in dem Moment das notify wieder getriggert.

Es gibt eine einfache Regel: Verändere im Ausführungsteil eines notify niemals den Zustand des device, welches das notify ausgelöst hat
Titel: Antw:Gute Nacht
Beitrag von: Claus am 13 März 2015, 16:38:50
Ahhh, jezet ... vielen Dank!

Hab ich in meinem Code angepasst und keine Meldung mehr im Log !  :)

Gute_N8.*on.* {
if ( Value("Gute_N8") eq "on") {
   fhem ("set KUE_SD_Wasser on-for-timer 10");
   fhem ("set SDD1 off");
   fhem ("set SD3 off");
   fhem ("set TV off");
   fhem ("define Gute_N8_off at +00:01 set Gute_N8 off")
   }
}


Aber das Icon des dummy bleibt immernoch dunkel obwohl der STATE sich ja ändert ? :(
attr devStateIcon .*:FS20.off:on

VG
Claus

Titel: Antw:Gute Nacht
Beitrag von: betateilchen am 13 März 2015, 16:54:56
irgendwas sagt mir, dass Du das Attribut falsch setzt.

Was passiert denn, wenn Du das Attribut komplett wegläßt?
Titel: Antw:Gute Nacht
Beitrag von: Claus am 13 März 2015, 16:58:35
... dann ändert sich das Icon zwar, ist aber nicht mehr anclickbar, ich kann nicht mehr über das Icon schalten.
Titel: Antw:Gute Nacht
Beitrag von: betateilchen am 13 März 2015, 17:15:17
Zitat von: Claus am 13 März 2015, 13:16:52
ich habe einen Dummy mit dem Namen Gute_N8 und zwei webcmd's, on:off. (Da kann ich mir das off auch schenken !)

Definiere den Dummy doch einfach als FS20-Dummy, dann kriegst Du das klickbare Icon und die webcmds automatisch mit.


define Gute_N8 FS20 1234 56
attr Gute_N8 dummy 1
Titel: Antw:Gute Nacht
Beitrag von: Claus am 13 März 2015, 22:11:52
Bin nun erleichtert...
Es geht mit folgendem Wert/Code für das devStateIcon:
off:time_timer@green:on on:time_timer@red .*:time_timer
Icon (hier eine Stoppuhr)
- ist anklickbar,
- ist grün wenn inaktiv,
- ist rot wenn aktiv,
- ist wieder grün wenn der Timer abgelaufen ist.
:)
Danke noch einmal!
VG
Claus