[FHZ] Fernbedienungen: Dimup/Dimdown Mehrfachevents vermeiden

Begonnen von Dennis, 17 August 2009, 11:55:16

Vorheriges Thema - Nächstes Thema

Dennis

                                               

Hallo,

seit längerem betreibe ich einige S8-, S20- und S16-FBs in indirektem
Mode, d.h. die FB-Befehle werden vom FHEM interpretiert und dann die
verschiedenen Aktionen ausgeführt. Das hat den Vorteil, einfach Makros
einbauen zu können und auch die Befehle in Abhängigkeit von anderen
Stati zu verändern (Wetter, Urlaub, usw.)

Für die Rolladen habe ich dann die Dimup/Dimdown-Befehle (länger
Drücken) für kürzere Laufzeiten dieserwelcher umgesetzt, z.B. dass bei
Dimdown die Rollade auf Sonnenstellung läuft.
Leider haben die älteren S8/S20-FBs bekanntermaßen ziemliche
Prellneigung oder die Tasten drücken sich unsicher, abgesehen
davon ,dass sich die Dim-Befehle designbedingt automatisch
wiederholen. Das habe ich bisher mit "sleep" zu Verhindern gesucht,
was aber nicht funktioniert, weil FHEM weitere Befehle puffert und
FHEM zu unerwünschten "Auszeiten" verdonnert.

Nun hatte ich die Idee, die entsprechende Notify-Definition der
einzelnen Taste beim ersten Eintreffen eines Dim-Befehls von dieser
erst zu löschen, dann die eigentliche Funktion auszuführen (z.B.
Rollade für 20 Sek. ab), und dann die Notify-Definition wieder an FHEM
zu schicken. Das scheint auch mittels einen Shell-Scripts (bin leider
immer noch nicht Perl-fest) ganz gut zu gehen, füllt aber zusätzliche
unwichtige Events in meine Logfiles.

Hat jemand eine Idee, das eleganter zu verwirklichen?


Hier meine Lösung:

FB-Definition:
define S16.1.03.n2 notify S16.1.03:dimdown "fhem-dim.sh S16.1.03.n2
set roll.eg.wz.f.AB on-for-timer 20"

Shell-Script:
#!/bin/bash
. ~fhz/.env   # hier wird auch $fhem gesetzt
notify=$1
shift
ndef=`$fhem "list $notify" | awk -F"DEF" /DEF/'{print $2}'`
$fhem "delete $notify"
$fhem "$*"
sleep 5
$fhem "define $notify notify $ndef"


Blöderweise funktioniert das Script bei manuellem Aufruf ganz gut,
aber nicht, wenn es von FHEM aufgerufen wird.

Script manuell:
fhz@sv1:~/bin> bash -x fhem-dim.sh S16.1.03.n2 set roll.eg.wz.f.AB on-
for-timer 20
+[2] . /home/fhz/.env
[...]
+[3] notify=S16.1.03.n2
+[4] shift
++[6] /usr/local/bin/fhem.pl 7072 'list S16.1.03.n2'
++[6] awk -FDEF '/DEF/{print $2}'
+[6] ndef='        S16.1.03:dimdown "fhem-dim.sh S16.1.03.n2 set
roll.eg.wz.f.AB on-for-timer 20"'
+[7] /usr/local/bin/fhem.pl 7072 'delete S16.1.03.n2'
+[9] /usr/local/bin/fhem.pl 7072 'set roll.eg.wz.f.AB on-for-timer 20'
+[11] sleep 5
+[12] /usr/local/bin/fhem.pl 7072 'define S16.1.03.n2 notify
S16.1.03:dimdown "fhem-dim.sh S16.1.03.n2 set roll.eg.wz.f.AB on-for-
timer 20"'


FHEM Status dieser notify Definition:
FHZ> list S16.1.03.n2
Internals:
  CMD        "fhem-dim.sh S16.1.03.n2 set roll.eg.wz.f.AB on-for-timer
20"
  DEF        S16.1.03:dimdown "fhem-dim.sh S16.1.03.n2 set
roll.eg.wz.f.AB on-for-timer 20"
  NAME       S16.1.03.n2
  NR         322
  REGEXP     S16.1.03:dimdown
  STATE      active
  TYPE       notify
Attributes:

Dann FHEM via FB:
2009.08.17 11:40:28 2: FS20 S16.1.03 dimdown
2009.08.17 11:40:28 2: FS20 S16.1.03 dimdown
2009.08.17 11:40:31 2: FS20 set roll.eg.wz.f.AB on-for-timer 20
Please define S16.1.03.n2 first
2009.08.17 11:40:32 2: FS20 set roll.eg.wz.f.AB on-for-timer 20
S16.1.03.n2 already defined, delete it first


Gruß,
Jürgen
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-

rudolfkoenig

                                                   

Hallo Juergen,

ich glaube es ist ungesund, im Notify den gleichen notify zu loeschen.
Koenntest Du bitte versuchen, ob es mit dem "attr XXX disable 1" /
"delattr XXX disable" besser funktioniert? Ich meine, in 4.1 war das
schon vorhanden....

Gruss,
  Rudi

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-

JuergenL

                                               

Hallo Rudi,

genial, das gefällt mir schon viel besser.
Mach auch mehr Sinn und funktioniert auch bei Tastendruck via notify.

Besten Dank.


Gibt es auch eine Funktion in Perl/FHEM, die auf einer Zeile einen
Parameter wiederholt (hier den Notify-Namen S16.1.03.n2)?

define S16.1.03.n2 notify S16.1.03:dimdown "fhem-dim.sh S16.1.03.n2 \
set roll.eg.wz.f.AB on-for-timer 20"

Gruss,
Jürgen
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-

rudolfkoenig

                                                   

> Gibt es auch eine Funktion in Perl/FHEM, die auf einer Zeile einen
> Parameter wiederholt (hier den Notify-Namen S16.1.03.n2)?

Nicht das ich wuesste. Das ist doch kein Shell :) Du kannst aber eine Funktion
dafuer schreiben.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-