Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden

Begonnen von MarcS, 19 März 2013, 15:41:40

Vorheriges Thema - Nächstes Thema

MarcS

Hallo zusammen,
ich hab mal wieder eine Frage, mit der ich nicht weiter komme.

Ich habe einen getoggelten Schalten (FS20-TC8), der also auf jeder Taste entweder bei kurzem drücken einen "toggle"-Befehlt sendet, bei einem langen Druck der Taste ein "dimupdown".

Damit möchte ich jetzt einen Steckdosendimmer wie folgt ansteuern (... und stosse dabei auf meine Grenzen in der Programmierung...):

    1.  gesendet wird "toggle"  -->  ist der Status "off", wird dieser auf "on" (= letzter dim-Wert) gesetzt  --> ist der Status "on" wird das Kommando "off" gesendet

    2.  gesendet wird ein "dimupdown"  -->  der Dimmer dimmt hoch oder runter, egal, ob der Zustand vorher "on" oder "off" war


Ich habe mich mit der Funktion "ToggleIndirect" gespielt, dort ist aber leider keine Dim-Funktion implementiert.

Für das erste genannte Thema habe ich folgenden Code verwendet, allerdings ohne Erfolg:
Zitatdefine 1_WZ_T2_5_notify notify FS20_a82604 { if ("%" eq "toggle") {if ($value{1_WZ_D1} eq "off") {fhem "set 1_WZ_D1 on"} else {fhem "set 1_WZ_D1 off"}}}
Vielleicht kann man das ja als Startpunkt verwenden und von da aus auch den zweiten Punkt einarbeiten ?!?!?

broadway

Hier schon mal eine Struktur zur Prüfung, ob toggle oder dimupdown empfangen wurde:

define MeinNotifyMakro notify FS20_Taster.* {  \
               if("%" eq "toggle"){\
                  ... deine Befehle ...  }\
               else{\
                  ... deine Befehle ...  }
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

MarcS

Hallo,
danke für deinen Tipp.
Dass der Taster bei kurzem Druck "toggle" sendet, bei langem Druck "dimupdown" sehe ich im Event Monitor.
Das funktioniert auch soweit !
V G
Marc

broadway

Zitatif ($value{1_WZ_D1} eq "off")

müsste lauten:

if (Value(1_WZ_D1) eq "off")

also ohne $ und mit runden Klammern ()
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

Zrrronggg!



Am Rande:

if ($value{1_WZ_D1} eq "off")

ist die alte Schreibweise, von Rudi als depreciated bezeichnet. Die wird also demnächst nicht mehr unterstützt oder IST schon ausgebaut. Mindestens unter FHEM 5.2 geht die noch.
Daher findet man die in einigen  Beispielen und Codesnippets noch so vor.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

MarcS

Hallo,
vielen Dank für die Tipps - ich habe das umgebaut.
Dementsprechend funktioniert jetzt auch das Umschalten bei Tastendruck.
Vielen Dank !

Wie kann ich jetzt noch dimupdown mit einbauen, so dass ich entweder schalte (getoggelt) oder dimme ?

Vielen Dank für eure Hilfe,
Marc

Puschel74

Hallo,

ich hab mir jetzt grad den Beitrag durchgelesen und möchte dich bitten doch mal deinen bisherigen Code zu posten.
Bitte in Code-Tags ;-)

Darauf aufbauend wäre es etwas leichter dir zu helfen.
Sonst hast du am Ende 2 unabhängige Codeschnippsel in deiner Konfig die aber auf den selben Sender und Empfänger abzielen.

Grüße

P.S.: Also nicht die gesamte Konfig sondern nur den Code für das togglen.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

MarcS

Ok, ich probiere das:


define 1_WZ_T2_3_notify notify FS20_a82602 \
  {my $t23 = $value{"1_WZ_D3"};;\
  if ($t23 eq "off") {fhem "set 1_WZ_D3 dim87%%"} else {fhem "set 1_WZ_D3 off"}}
attr 1_WZ_T2_3_notify alias 1_WZ_T2_Taste3
attr 1_WZ_T2_3_notify room Schalterbelegung


Das wäre jetzt einer der Codes, die das toggeln bedienen.
Diesen muss ich jetzt also noch auf neue Schreibweise ändern (runde Klammern) und möchte ihn erweitern um die Auswertung, welchen Befehl der Schalter (hier FS20_a82602) gesendet hat ("toggle" oder "dimupdown").
Bei "toggle" soll das ablaufen, was hier schon im Ode steckt, bei "dimupdown" soll der Dimmer (hier 1_WZ_D3) hoch- und runterdimmen.

..... schwierig ......

:-)

MarcS

... so, hab mal auf die neuere Schreibweise umgestellt - passt das erstmal so ?


define 1_WZ_T2_3_notify notify FS20_a82602 \
  {my $t23 = value(1_WZ_D3);;\
  if ($t23 eq "off") {fhem "set 1_WZ_D3 dim87%%"} else {fhem "set 1_WZ_D3 off"}}
attr 1_WZ_T2_3_notify alias 1_WZ_T2_Taste3
attr 1_WZ_T2_3_notify room Schalterbelegung

MarcS

... funktioniert nicht mehr mit der geänderten Schreibweise !

Puschel74

Hallo,

Step-by-Step

Erstmal den Code bitte der momentan bei dir mit toggle funktioniert.

Das dimupdown ist eine etwas "härtere" Story ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

MarcS

Ok, danke für deine Unterstützung.

Das hier ist der Code, der funktioniert:



define 1_WZ_T2_3_notify notify FS20_a82602 \
  {my $t23 = $value{"1_WZ_D3"};;\
  if ($t23 eq "off") {fhem "set 1_WZ_D3 dim87%%"} else {fhem "set 1_WZ_D3 off"}}
attr 1_WZ_T2_3_notify alias 1_WZ_T2_Taste3
attr 1_WZ_T2_3_notify room Schalterbelegung

Puschel74

Hallo,

ok:

define 1_WZ_T2_3_notify notify FS20_a82602 \
  {my $t23 = $value{"1_WZ_D3"};;\
  if ($t23 eq "off") {fhem "set 1_WZ_D3 dim87%%"} else {fhem "set 1_WZ_D3 off"}}


Das $value wird umgebaut - wie von Zrrronggg!!! schon angemerkt funktioniert das irendwann mal nicht mehr.

Du weißt aber das du, wenn dein Sender ein off sendet, das Licht hochdimmst und bei on ausschaltest?

Wenn das so bleiben soll - ok.
Ich würds umbauen ;-)

Aber das hängt vom WAF ab - je nachdem ob sich die übrigen "Tastendrücker" schon dran gewöhnt haben ^^

Ich häng dir gleich mal einen angepassten Code rein den du mal ausprobieren kannst.

Nur das dimup/down wird etwas tricky werden.

Grüße

Edith: Wieso prüfst du auf on/off?? Ich dachte dein Sender sendet ein toggle??
Edith2: hat sich erledigt - das ist der Empfänger-Status und nicht der Sender.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Puschel74

Hallo,

bevor ich mir da mein Hirn auswinde für den Dimup/Down.
Gibt es da nicht schon was mit untoggledirect/untoggleindirect??

Der Dim-Befehl soll ja WAF-gerecht gesendet werden ...
Licht aus ---> Langer Tastendruck ---> Hochdimmen
Licht gedimmt ---> Langer Tastendruck ---> Hochdimmen ---> Langer Tastendruck ---> Runterdimmen
Licht an ---> Langer Tastendruck ---> Runterdimmen

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

MarcS

Hmmmm, ich hab das mit UntoggleIndirect probiert, aber das hat nicht funktioniert.
Im Wiki steht, dass das für Dimmer nicht funktioniert...