FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: sruhsam am 09 Februar 2015, 18:54:51

Titel: Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: sruhsam am 09 Februar 2015, 18:54:51
Hallo,
weis jetzt nicht ob es in dieser Gruppe richtig ist.

Wie kann ich denn mit einem Wandtaster (HM-PB-2-WM55-2) einen FS20 Dimmer dimmen ?

Mach dies derzeit mit einem notify zum ein- und ausschalten.

define SchalterNotifyoben notify HM_Wandtaster_oben set flur_licht on
define SchalterNotifyunten notify HM_Wandtaster_unten set flur_licht off


Möchte nun aber genau so steuern wie aus einem FS20 Taster, damit keine Unterschiede in der Bedienung vorhanden sind.
Hab es bereits so versucht, funzt aber nicht so richtig

define SchalterNotifyoben notify HM_Wandtaster_oben set flur_licht dimup
define SchalterNotifyunten notify HM_Wandtaster_unten set flur_licht dimdown
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: sruhsam am 09 Februar 2015, 19:15:41
Hallo, habe folgendes versucht

define FlurEGonNotify notify HM_Wandtaster_oben.Short.* set flur_licht on
define FlurEGoffNotify notify HM_Wandtaster_unten.Short.* set flur_licht off
define FlurEGupNotify notify HM_Wandtaster_oben.Long.* set flur_licht dimup
define FlurEGdownNotify notify HM_Wandtaster_unten.Long.* set flur_licht dimdown


funzt auch gut bei einem Tastenpaar, doch wie mach ich das mit einer Taste ????
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: sruhsam am 10 Februar 2015, 13:59:49
Nach weiteren Suchen nach Information und probieren, bin ich nun soweit gekommen, der Toggle schein kein Problem zu machen aber der Dimupdown. In FS 20 wird der Dimmer von der Taste mit einem Domupdown Befehl angesteuert. Das bedeutet bei langem Tastendruck wird immer zwischen dem Dimup und Dimdown gewechselt, ähnlich wie beim Toggle.
Nun habe ich es so eingestellt:

define FlurEGtoggleNotify notify HM_Wandtaster.Short.* set flur_licht Toggle
define FlurEGDimNotify notify HM_Wandtaster.Long.* set flur_licht dimupdown


Leider funktioniert das mit dem dimupdown nicht. kann mir bitte jemand helfen ?

Vieleicht geht es mit einem virtuellen HM-Schalter den ich dann mit dem Wandtaster peere und dann auf den Registersatz zugreifen kann, aber welchen Registersatz muss ich dann nehmen, damit das der FS20 Dimmer versteht ?? 
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: sruhsam am 11 Februar 2015, 18:47:22
Hat denn hier keiner ne Idee oder ein ähnliches Problem (gehabt) ????? :-\
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: Masterfunk am 11 Februar 2015, 18:54:56
Habe das Problem durch "Stufenschaltung via myUtils gelöst.
Ich nutze zwar FS20 Taster und HM Dimmer, aber das Sollte kein Problem sein.
Musst das pct dann halt durch ein dim ersetzen.

sub UntoggleDimmer($;$)
{
my ($sender, $actor) = @_;
if (Value($sender) eq "toggle")
{
  if (Value($actor) eq "off") {fhem ("set ".$actor." pct 50")}
  else {fhem ("set ".$actor." pct 0")}
}
elsif (ReadingsVal("$actor", "pct", 0) > "90") {fhem ("set ".$actor." pct 90")}
elsif (ReadingsVal("$actor", "pct", 0) > "80") {fhem ("set ".$actor." pct 80")}
elsif (ReadingsVal("$actor", "pct", 0) > "70") {fhem ("set ".$actor." pct 70")}
elsif (ReadingsVal("$actor", "pct", 0) > "60") {fhem ("set ".$actor." pct 60")}
elsif (ReadingsVal("$actor", "pct", 0) > "50") {fhem ("set ".$actor." pct 50")}
elsif (ReadingsVal("$actor", "pct", 0) > "40") {fhem ("set ".$actor." pct 40")}
elsif (ReadingsVal("$actor", "pct", 0) > "30") {fhem ("set ".$actor." pct 30")}
elsif (ReadingsVal("$actor", "pct", 0) > "20") {fhem ("set ".$actor." pct 20")}
elsif (ReadingsVal("$actor", "pct", 0) > "10") {fhem ("set ".$actor." pct 10")}
elsif (ReadingsVal("$actor", "pct", 0) > "0") {fhem ("set ".$actor." pct 0")}
elsif (ReadingsVal("$actor", "pct", 0) eq "0") {fhem ("set ".$actor." pct 100")}
return;
}


Und hier noch das List des notify:


Internals:
   DEF        FL_Taster11 {UntoggleDimmer("FL_Taster11","FL_Decke")}
   NAME       FL_T11
   NOTIFYDEV  FL_Taster11
   NR         211
   NTFY_ORDER 50-FL_T11
   REGEXP     FL_Taster11
   STATE      active
   TYPE       notify
Attributes:
   room       System



Gruß Detlef
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: martinp876 am 14 Februar 2015, 15:41:02
etwas schneller sein sollte

sub UntoggleDimmer($;$)
{
my ($sender, $actor) = @_;
my $val = ReadingsVal("$actor", "pct", 0);
if (Value($sender) eq "toggle") {
                    $val = (Value($actor) eq "off")
                        ? 50 :
                          0}
elsif ($val == 0) {$val = 100}
else              {$val = int($val/10)*10}

fhem ("set $actor pct $valInt");
return;
}


es wird nur einmal der pct wert gelesen...
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: Masterfunk am 14 Februar 2015, 19:37:44
Zitat von: martinp876 am 14 Februar 2015, 15:41:02
etwas schneller sein sollte

sub UntoggleDimmer($;$)
{
my ($sender, $actor) = @_;
my $val = ReadingsVal("$actor", "pct", 0);
if (Value($sender) eq "toggle") {
                    $val = (Value($actor) eq "off")
                        ? 50 :
                          0}
elsif ($val == 0) {$val = 100}
else              {$val = int($val/10)*10}

fhem ("set $actor pct $valInt");
return;
}


es wird nur einmal der pct wert gelesen...

Das funktioniert bei mir nicht. Er macht pct 0 und dann wars das.

Gruß Detlef
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: martinp876 am 15 Februar 2015, 08:39:11
Am ende steht $valInt. Das muss $val sein. Mein fehler
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: Masterfunk am 15 Februar 2015, 10:47:46
Geht auch nicht.
Wenn ich das richtig verstehe, werden die Werte ja rerundet.
Wenn Sie bereits auf dem Wert stehen, bleibt der Wert doch, oder?

Gruß Detlef
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: martinp876 am 15 Februar 2015, 14:03:16
ich sehe jetzt den Fehler nicht. was du erreichen willst war mir nicht wirklich klar - warum bei 0 die 100 kommt und so.
gestört hat mich, dass du etliche male die Funktion readingsval aufrufst. das sollte in jedem Fall nur einmal passieren - eine performance-sünde.

du willst den wert in 10er stufen abgerundet ausgeben - korrekt? wenn du also durch 10 teilst und rundest kannst du danach wieder mit 10 multiplizieren. Ein eingangswertebereich von 0 bis 100 wird dann zu stufen 0 bis 10, also 00,10,...100 gemacht.
ReadingsVal des Aktor sollte "pct" sollte erst einmal stimmen - hoffe ich.

toggel wackelt zwischen 0 und 50.
baue ein
Log 1,"myval: $val from ".ReadingsVal("$actor", "pct", 0);;
ein - dann kann man sehen, welche werte gelesen werden sowie sie verarbeitet wurden.
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: Masterfunk am 15 Februar 2015, 18:55:40
Hallo Martin,

Ziel ist es mit jedem "langen" Tastendruck das Licht um 10% zu dimmern. Egal welcher Wert eingestellt ist.
Er geht dann auf jen jeweils vollen 10er Wert. NAch 0 kommt dann 100 und es geht wieder runter.
Mit "kurzem" Tastendruck wird zwischen 0 und 50 (Das reicht für 90% aller Fälle) gewechselt. Also quasi ein/aus.
Kann sein das meine Lösung eine Performance Sünde ist. Würds ja gerne anders machen.
Wobei ich auf meinem System sowas von keinen Performance Problemen habe. ;-)

Gruß Detlef
Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: martinp876 am 17 Februar 2015, 21:04:47
Performance ist zum teil einstellungssache. Wie du es magst.
Das problem ist wohl, dass ich bei 90 wieder auf 90 komme. Man muss eins abziehen. Ausserdem soll es modulo 10 sein.
Dann mache
Val = (int((val-1)/10))*10
Val = ((int((val-1)/10)+10)%10)*10
Sollte das if 0 ersparen

Nur falls du lust hast. Ich vermeide case wo ich kann

Titel: Antw:Mit HM Wandtaster FS20 Dimer steuern
Beitrag von: Masterfunk am 18 Februar 2015, 08:39:54
Zitat von: martinp876 am 17 Februar 2015, 21:04:47
Nur falls du lust hast. Ich vermeide case wo ich kann

Auf jeden Fall. Werds heute Abend mal versuchen einzubauen.

Gruß Detlef