FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MarcS am 19 März 2013, 15:41:40

Titel: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 19 März 2013, 15:41:40
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...):




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 ?!?!?
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: broadway am 19 März 2013, 16:41:03
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 ...  }
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 19 März 2013, 16:47:05
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
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: broadway am 20 März 2013, 18:26:29
Zitatif ($value{1_WZ_D1} eq "off")

müsste lauten:

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

also ohne $ und mit runden Klammern ()
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Zrrronggg! am 20 März 2013, 18:59:25


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.
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 20 März 2013, 19:17:16
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
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 20 März 2013, 19:28:08
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.
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 20 März 2013, 19:55:23
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 ......

:-)
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 20 März 2013, 20:22:25
... 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
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 20 März 2013, 20:29:15
... funktioniert nicht mehr mit der geänderten Schreibweise !
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 20 März 2013, 20:45:08
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
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 20 März 2013, 20:54:49
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
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 20 März 2013, 21:01:28
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.
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 20 März 2013, 21:18:20
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
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 20 März 2013, 21:23:38
Hmmmm, ich hab das mit UntoggleIndirect probiert, aber das hat nicht funktioniert.
Im Wiki steht, dass das für Dimmer nicht funktioniert...
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 20 März 2013, 21:23:59
Ok.
Ich hab dir deinen geposteten Code mal umgebaut:

define 1_WZ_T2_3_notify notify FS20_a82602 \{
  if (Value("1_WZ_D3") eq "off")  {
    fhem ("set 1_WZ_D3 dim100%%");
  }
  else {
    fhem ("set 1_WZ_D3 off");
  }
}


Sollte soweit, ohne Dim, funktionieren.

Grüße

P.S.: Über den Rest muss ich erst ne Nacht schlafen.
Vllt. hat ja jemand anders ne (schnellere) Lösung, oder eine gute Idee
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 20 März 2013, 21:27:26
Zitat von: MarcS schrieb am Mi, 20 März 2013 21:23Hmmmm, ich hab das mit UntoggleIndirect probiert, aber das hat nicht funktioniert.
Im Wiki steht, dass das für Dimmer nicht funktioniert...

Klar. Weils ganz schön tricky ist.
Du musst den letzten Status auslesen und den letzten Dim-Befehl um zu entscheiden ob du weiter runterdimmen oder wieder hochdimmen sollst.
Dann noch auf welchen Wert zu dimmen ist und das ganze, für den WAF, ohne die Taste loslassen zu müssen ;-)

Grüße

P.S.: Wenn zum dimmen grobe Stufen reichen kann das auch selbst in einige if-abfragen zerlegt werden - viel Spaß^^
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 20 März 2013, 21:31:32
Danke erstmal!
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 21 März 2013, 09:49:12
Hallo und Guten morgen (Urlaub ist echt was schönes ;-) )

hier mal zu Versuchszwecken ein Code:

define 1_WZ_T2_3_notify notify FS20_a82602 {
  if (Value("FS20_a82602") eq "toggle")  {
    if (Value("1_WZ_D3") eq "off")  {
      fhem ("set 1_WZ_D3 dim100%%");
    }
    else {
      fhem ("set 1_WZ_D3 off");
    }
  }
  if (Value("FS20_a82602") eq "dimupdown")  {
    fhem ("set 1_WZ_D3 %");
  }
}


FS20_a82602 ist der "Schalter" nehm ich mal an.

Erst prüfen wir ob dieser ein "toggle" sendet ... wenn ja wird geprüft ob das Licht an oder aus ist und dementsprechend um-geschaltet.
Aber Achtung! Wenn das Licht NICHT off ist wird IMMER erst ausgeschaltet und beim zweiten toggle eingeschaltet resp. auf 100% hoch gedimmt.
Wenn kein toggle gesendet wurde prüfen wir ob FS20_a82602 ein dimupdown sendet (dies bitte ggf. anpassen je nachdem was gesendet wird)
und schaleifen diesen Befehl dann 1:1 an 1_WZ_D3 durch.

Theoretisch sollte ein kurzer Tastendruck (toggle) das Licht ausschalten / auf 100% dimmen und ein langer Tastendruck (dimm) das Licht dann dimmen.

Bitte mal versuchen und Rückmelden was das Licht macht.

Grüße
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 23 März 2013, 07:27:50
Hallo und danke für den Code. Ich war leider mit Grippe lach gelegen, konnte deswegen nicht schreiben. Ich werde das heute mal ausprobieren und Rückmeldung geben, was da geht...
V G
Marc
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: MarcS am 25 März 2013, 19:55:09
So - positive Rückmeldung !!!
Das Ganze funktioniert, wie es soll.

Getoggelt an/aus plus Dimmfunktion bei langem Tastendruck.

Vielen Dank für die Hilfe !!!
Titel: Aw: Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 25 März 2013, 20:03:58
Hallo,

wunderbar wenn es klappt.

Auf zu neuen Ufern ;-)

Grüße
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: schalkan56 am 01 August 2014, 00:26:55
Hallo, wie kann ich den obigen Code in fhem integrieren? Muss das in die 99myutil???
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 01 August 2014, 11:08:21
Hallo,

wenn ein Code in eine 99_irgendwas.pm kommt findet sich am Anfang das Schlüsselwort "sub".
Das fehlt hier - also nein, der code kommt nicht in dei 99_irgendwas.pm

Weiters findet sich im define das Schlüsselwort "notify".
Das heisst der Code kommt direkt in die FHEM-Konfiguration.

Wie du den Code dort eingibst (FHEM-Befehlszeile) wurde hier schon einige Male erklärt - evtl. mal danach suchen.

Grüße
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: schalkan56 am 01 August 2014, 12:37:43
Ja sorry habe das etwas blöd geschrieben. also ich habe folgenden befehl an meine stehlampe gekoppelt:

define Schalt notify FS20_015d00 set wz_Stehlampe toggle

Damit kann ich logischerweise nur ON - Off schalten -> Funktioniert auch.

Jetzt wollte ich diesen notify per webfrontend (DEF) mit dem obigen code anpassen um auch dimmen
zu können. SPrich in den notify per copy and paste. WEnn ich das mache geht aber garnichts mehr (weder an -aus noch dimmen).
Ist diese Art der Eingabe komplett falsch? ( Habe auch gerade versucht nach Codeeingabe zu suchen aber mir fehlen
anscheinend die keywords)....
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 01 August 2014, 12:49:28
Hallo,

wenn du das per DEF versuchst wären ein paar Screenshots interessant damit wir sehen was du siehst.
Weiters wirft FHEM Fehlermeldungen aus - diese wären auch recht interessant.

Und wenn du den obigen Code 1:1 per copy&paste einträgst wird sich nichst tun - es sei den deine Geräte heissen exakt gleich wie in dem Code.

Grüße

P.S.: Suchbegirffe "Konfiguration bearbeiten" oder "notify anlegen" und in der erweiterten Suche nach Puschel* suchen lassen.
Dann solltest du ein paar Treffer bekommen.
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: schalkan56 am 01 August 2014, 13:18:42
Ok schonmal vielen Dank für die Hilfe...werde mich auf jeden Fall durch das Forum suchen...Screenshots
habe ich im Anhang...wobei notify_alt die lampe toggelt und notify_neu garnicht reagiert.....Fehlermeldung bekomme ich nicht
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 01 August 2014, 13:20:49
Hallo,

im DEF sollte das so
FS20_a82602 {
  if (Value("FS20_a82602") eq "toggle")  {
    if (Value("1_WZ_D3") eq "off")  {
      fhem ("set 1_WZ_D3 dim100%%");
    }
    else {
      fhem ("set 1_WZ_D3 off");
    }
  }
  if (Value("FS20_a82602") eq "dimupdown")  {
    fhem ("set 1_WZ_D3 %");
  }
}

aussehen.
Passt aber nicht so ganz zu deinem notify_neu - wirf mal die Leerzeile nach dem Device raus und setz die erste { so wie im Beispiel.

Grüße
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: schalkan56 am 01 August 2014, 17:51:20
Bin schon etwas weiter, was die erste Schleife angeht....nun kann ich wieder ein und aus schalten.


FS20_015d00 {
  if (Value("FS20_015d00") eq "toggle")  {
    if (Value("wz_Stehlampe") eq "off")  {
      fhem ("set wz_Stehlampe on");
    }
    else {
      fhem ("set wz_Stehlampe off");
    }
  }
  if (Value("FS20_015d00") eq "dimup")  {
    fhem ("set wz_Stehlampe %");
  }
}


Habe auch die Klippe des dimmens entdeckt - die Fernbedinung ist von F20, der dimmer ist
von Homematic.Mir ist aber nicht klar wie ich den Tastendruck auf die HM-Hardware
abstimme....nur mit press long geht das leider nicht...Gibt es da einen Ansatz?
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 01 August 2014, 18:13:59
Hallo,

die HM-Dimmer wollen mit "up" und "down" angesprochen werden zum dimmen  ;)

Was den Dim-Teil in etwa so
if (Value("FS20_015d00") eq "dimup")  {
    fhem ("set wz_Stehlampe up");
  }
if (Value("FS20_015d00") eq "dimdown")  {
    fhem ("set wz_Stehlampe down");
  }
}

erweitern würde.

Grüße
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: schalkan56 am 01 August 2014, 20:39:36
Danke jetzt klappt alles....allerdings ist die Verzögerung zu gross...da dauert es Sekunden bis die Lampe reagiert...daher habe ich mich für ein Stufenmodell entschieden:

Kanal1_Stehlampe {
  if (Value("Kanal1_Stehlampe") eq "toggle")  {
    if (Value("wz_Stehlampe") eq "off")  {
      fhem ("set wz_Stehlampe 40");
    }
   
  if (Value("wz_Stehlampe") eq "40")  {
      fhem ("set wz_Stehlampe 70");
   

    }
if (Value("wz_Stehlampe") eq "70")  {
      fhem ("set wz_Stehlampe on");
   
    }
if (Value("wz_Stehlampe") eq "on")  {
      fhem ("set wz_Stehlampe 0 0 5");
   

    }
  }
  if (Value("Kanal1_Stehlampe") eq "dimupdown")  {

fhem ("set wz_Stehlampe on");
  }

}


Allerdings noch stark verbesserungswürdig....meine andere Idee

Toggle -> Lampe dimmt innerhalb von 15 sek auf 100 %
erneuter toggle innerhalb des hochfahrens stoppt bei der aktuellen Position
Kanal1_Stehlampe {
 
if (Value("Kanal1_Stehlampe") eq "toggle")  {

    if (Value("wz_Stehlampe") eq "off")  {
fhem ("set wz_Stehlampe on");     
fhem ("set wz_Stehlampe 0 0 20");
    }
   else {

      fhem ("set wz_Stehlampe stop");
    }

  }
  if (Value("Kanal1_Stehlampe") eq "dimupdown")  {
    fhem ("set wz_Stehlampe off");
  }
}


Es wird heruntergedimmt, da der on Befehl ohne Verzögerung umgesetzt wird....
Klappt bisher ganz gut...werde den Code morgen nochmal überdenken..
Vielen Dank für die Hilfe
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: Puschel74 am 01 August 2014, 20:54:31
Hallo,

die Verzögerung wundert mich jetzt etwas - wie lange ist den die Zeitspanne vom Tastendruck bis zur Reaktion?

Ich schalte und dimme bei mir einige HM-Aktoren über solche notify auf diverse FS20AS4 (sind glaub ich die 4-fach Wandtaster).
Das klappt bei mir einwandfrei.
Ich werd das aber evtl. doch mal in einem Sub packen - mal schauen.

Grüße
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: schalkan56 am 01 August 2014, 22:24:26
Also beim on- und off Befehl reagiert der Aktor sofort. Nur beim dimmen vergehen ca.4 Sekunden bis er das dimmen anfängt....lg
Titel: Antw:Toggle-Befehl kombiniert mit dimupdown für FS20-DI verwenden
Beitrag von: schalkan56 am 02 August 2014, 19:53:20
Hi, eine Frage habe ich noch:

Kann man einen speziellen Status beim den HM-Aktoren abfragen wenn er gerade
in eine andere Position fährt? Also z.B. wenn er von 0 auf 100% fährt gibt er so
lange den Status "in Bewegung" aus.....