HM Dimmer Trigger up down abwechselnd mit einer Taste

Begonnen von Ronald, 22 Februar 2017, 21:49:22

Vorheriges Thema - Nächstes Thema

Ronald

Hallo,

ich möchte über eine HM Fernbedienung auf einer Taste mit langem Tastendruck abwechseln hoch- und runterdimmen.
Beispiel für runterdimmen:
define Button1_KuecheDeckenLicht_DIM_Toggle notify Remote8_1_Btn_01:Long.* set Kueche.DeckenLicht down
Beispiel für hochdimmen:
define Button1_KuecheDeckenLicht_DIM_Toggle notify Remote8_1_Btn_01:Long.* set Kueche.DeckenLicht up
Ich möchte beide Befehle mit Taste 1 Long abwechselnd ausführen, gibt es da eine Möglichkeit?

Ronald

Noch ein Nachtrag dazu:
Wenn ich diesen Code benutze
define Button1_KuecheDeckenLicht_DIM_Toggle notify Remote8_1_Btn_01:Long.* {if (Value("Wohnzimmer.Lampe") eq "off") { fhem(" set Kueche.DeckenLicht down")}  else { fhem(" set Kueche.DeckenLicht up")}}
kann ich in Abhängigkeit von dem state Wohnzimmer.Lampe das Küchenlicht hoch- oder runterdimmen.
Stattdessen möchte ich gerne eine Variable bei jedem dimmen mit umschalten, sodass abwechselnd hoch- oder runtergedimmt wird.
Wie lässt sich das umsetzen?

automatisierer

#2
beiträge nicht schließen wenn sie gelöst sind, sondern als gelöst markieren.

wenn du dir die commandref zu notify durchliest, sollte dir klar werden wieso etwas mit .* funktioniert oder auch nicht.

zu diesem thema: dazu gibt es sicher mehrere lösungen. du könntest auf das event long_release reagieren und damit einen dummy umschalten. oder aber das ganze mit einem DOIF lösen. und ich tippe mal, ohne es probiert zu haben, das dir die forumsuche mit sicherheit ein paar Beiträge zum gleichen Thema ausspuckt.

Ronald

zu Beiträge nicht schließen:
OK, kann ich die wieder freischalten oder kannst Du das machen?
zu diesem Thema:
Das Notify habe ich mir zusammengesetzt
define Button1_KuecheDeckenLicht_DIM_Toggle notify Remote8_1_Btn_01:Long.* {if (ReadingsVal("Btn_dim1", "state", "") eq "off") { fhem(" set Kueche.DeckenLicht up")}  else { fhem(" set Kueche.DeckenLicht down")}}
Es fonktioniert wenn ich dummy Btn_dim1 zu Fuß auf on oder off schalte.
Für automatisches wechseln auf long release habe ich dies angelegt:
define Btn_set1 notify Remote8_1_Btn_01:LongRelease.* {if (ReadingsVal("Btn_dim1", "state", "") eq "off") { fhem(" set Btn_dim1 on")}  else { fhem(" set Btn_dim1 off")}}
Wenn ich hinter :LongRelease das .* weglasse wird die variable Btn_dim1 generell nicht umgeschaltet.
Mit .* schaltet die variable mehrfach, sieht aus wie "prellen".
Ideen, wie ich das abstellen kann?

MadMax-FHEM

In den EventMonitor kucken und schauen ob sich ein besseres RegEx bauen lässt...
...evtl. auch mal das Attribut event-on-change-reading anschauen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

DeeSPe

Zitat von: Ronald am 25 Februar 2017, 01:06:19
zu Beiträge nicht schließen:
OK, kann ich die wieder freischalten oder kannst Du das machen?
zu diesem Thema:
Das Notify habe ich mir zusammengesetzt
define Button1_KuecheDeckenLicht_DIM_Toggle notify Remote8_1_Btn_01:Long.* {if (ReadingsVal("Btn_dim1", "state", "") eq "off") { fhem(" set Kueche.DeckenLicht up")}  else { fhem(" set Kueche.DeckenLicht down")}}
Es fonktioniert wenn ich dummy Btn_dim1 zu Fuß auf on oder off schalte.
Für automatisches wechseln auf long release habe ich dies angelegt:
define Btn_set1 notify Remote8_1_Btn_01:LongRelease.* {if (ReadingsVal("Btn_dim1", "state", "") eq "off") { fhem(" set Btn_dim1 on")}  else { fhem(" set Btn_dim1 off")}}
Wenn ich hinter :LongRelease das .* weglasse wird die variable Btn_dim1 generell nicht umgeschaltet.
Mit .* schaltet die variable mehrfach, sieht aus wie "prellen".
Ideen, wie ich das abstellen kann?

Ich denke das macht schon logisch keinen Sinn!
Bei langem Drücken willst Du also hoch dimmen falls aus ist. Nach dem langen Drücken kommt das lange Loslassen und das schaltet  sofort wieder aus sofern das Device an ist. Hmm, ich glaube nicht dass es das ist was Du willst.
Also entweder machst Du "Long" oder eben "LongRelease". Beides gleichzeitig ist doof.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Ronald

Ich versuche zu verdeutlichen, was ich machen will und wo aktuell die Tücken sind.
vor HomeMatic / FHEM hatte ich standard Tast Dimmer mit folgender funktionalität, die ich in etwa mit HM/FHEM nachilden möchte:
Taste antippen, toggeln zwischen 0% und 100% Lichthelligkeit.
Taste lang betätigen abwechselnd hoch- bzw. runter dimmen.
Mein Lösungsversuch sieht so aus:
Taste Btn_01:Short.* toggelt Dimer mit 0% / 100%:
define Button1_KuecheDeckenLichtToggle notify Remote8_1_Btn_01:Short.* set Kueche.DeckenLicht toggle
Das funktioniert sauber, allerdings auch nur durch das .* hinter short
Dimmen, hoch oder runter:
define Btn_dim1 dummy
attr Btn_dim1 setList on off
set Btn_dim1 on
define Button1_KuecheDeckenLicht_DIM_Toggle notify Remote8_1_Btn_01:Long.* {if (ReadingsVal("Btn_dim1", "state", "") eq "off") { fhem(" set Kueche.DeckenLicht up")}  else { fhem(" set Kueche.DeckenLicht down")}}
define Btn_set1 notify Remote8_1_Btn_01:LongRelease.* {if (ReadingsVal("Btn_dim1", "state", "") eq "off") { fhem(" set Btn_dim1 on")}  else { fhem(" set Btn_dim1 off")}}

Wenn ich die letzte Zeile auskommentiere und den Dummy Btn_dim1 von Hand auf on oder off setze kann ich mit langem Tastendruck hoch - oder runterdimmen in Abhängigkeit von Btn_dim1.
Wenn ich die letzte Zeile im Einsatz habe erwarte ich nach jedem langen Tastendruck ein long release. Damit will ich wie in der letzten ZEile angegeben die Dimmrichtung toggeln.
Anscheinend senden die HM FErnbedienungen aber die Befehle, auch ling release mehrfach, dann gibt es natürlich Probleme.
Weiter unten ein listing aus dem Event Monitor.
Ist die Frage ob es andere Ideen gibt, die das Problem umgehen oder ob es Möglichkeiten gibt die Fernbedienungen sauberer abzufangen. Die Fernebdienung wird nur von FHEM ausgewertet, es gibt keine direkte Kopplung mit dem Dimmer. Kann man der Fernbedienung evtl. irgendwie aus FHEM ein Ackn. senden? Oder bin ich auf dem falschen Dampfer?
Hier das Listing aus dem Event Monitor:
18:29:07 kommt ein LongRelease, dummy Btn_dim1 wird auf on gesetzt.
18:29:08 kommt noch ein LongRelase, dummy Btn_dim1 wird zurück auf off gesetzt, dim Richtung toggelt nicht  :-\

  • 2017-02-25 18:29:07 CUL_HM Remote8_1 Remote8_1_Btn_01 Long
    2017-02-25 18:29:07 structure Wohnraum undefined
    2017-02-25 18:29:07 structure Kueche undefined
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht level: set_10.5
    2017-02-25 18:29:07 structure Wohnraum undefined
    2017-02-25 18:29:07 structure Kueche undefined
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht set_10.5
    2017-02-25 18:29:07 CUL_HM Remote8_1_Btn_01 Long 2_99 (to HMUART)
    2017-02-25 18:29:07 CUL_HM Remote8_1_Btn_01 trigger: Long_99
    2017-02-25 18:29:07 CUL_HM Remote8_1_Btn_01 trigger_cnt: 99
    2017-02-25 18:29:07 structure Wohnraum undefined
    2017-02-25 18:29:07 structure Kueche undefined
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht deviceMsg: 3.5 (to HMUART)
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht dim: up:3.5
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht level: 3.5
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht overheat: off
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht overload: off
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht pct: 3.5
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht reduced: off
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht 3.5
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht timedOn: off
    2017-02-25 18:29:07 CUL_HM Remote8_1 battery: ok
    2017-02-25 18:29:07 CUL_HM Remote8_1 CMDs_done
    2017-02-25 18:29:07 CUL_HM Remote8_1 Remote8_1_Btn_01 LongRelease
    2017-02-25 18:29:07 dummy Btn_dim1 on
    2017-02-25 18:29:07 structure Wohnraum undefined
    2017-02-25 18:29:07 structure Kueche undefined
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht level: set_0
    2017-02-25 18:29:07 structure Wohnraum undefined
    2017-02-25 18:29:07 structure Kueche undefined
    2017-02-25 18:29:07 CUL_HM Kueche.DeckenLicht set_0
    2017-02-25 18:29:07 CUL_HM Remote8_1_Btn_01 LongRelease 3_99 (to HMUART)
    2017-02-25 18:29:07 CUL_HM Remote8_1_Btn_01 trigDst_19A5F7: noConfig
    2017-02-25 18:29:07 CUL_HM Remote8_1_Btn_01 trigger: Long_99
    2017-02-25 18:29:07 CUL_HM Remote8_1_Btn_01 trigger_cnt: 99
    2017-02-25 18:29:08 CUL_HM Remote8_1 battery: ok
    2017-02-25 18:29:08 CUL_HM Remote8_1 CMDs_done
    2017-02-25 18:29:08 CUL_HM Remote8_1 Remote8_1_Btn_01 LongRelease
    2017-02-25 18:29:08 dummy Btn_dim1 off
    2017-02-25 18:29:08 structure Wohnraum undefined
    2017-02-25 18:29:08 structure Kueche undefined
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht level: set_10
    2017-02-25 18:29:08 structure Wohnraum undefined
    2017-02-25 18:29:08 structure Kueche undefined
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht set_10
    2017-02-25 18:29:08 CUL_HM Remote8_1_Btn_01 LongRelease 4_99 (to HMUART)
    2017-02-25 18:29:08 CUL_HM Remote8_1_Btn_01 trigDst_19A5F7: noConfig
    2017-02-25 18:29:08 CUL_HM Remote8_1_Btn_01 trigger: Long_99
    2017-02-25 18:29:08 CUL_HM Remote8_1_Btn_01 trigger_cnt: 99
    2017-02-25 18:29:08 structure Wohnraum undefined
    2017-02-25 18:29:08 structure Kueche undefined
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht deviceMsg: 5.5 (to HMUART)
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht dim: down:5.5
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht level: 5.5
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht overheat: off
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht overload: off
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht pct: 5.5
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht reduced: off
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht 5.5
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht timedOn: off
    2017-02-25 18:29:08 structure Wohnraum undefined
    2017-02-25 18:29:08 structure Kueche undefined
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht deviceMsg: 5 (to HMUART)
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht dim: up:5
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht level: 5
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht overheat: off
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht overload: off
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht pct: 5
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht reduced: off
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht 5
    2017-02-25 18:29:08 CUL_HM Kueche.DeckenLicht timedOn: off
    2017-02-25 18:29:13 structure Wohnraum undefined
    2017-02-25 18:29:13 structure Kueche undefined
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht deviceMsg: 10 (to HMUART)
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht dim: stop:10
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht level: 10
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht overheat: off
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht overload: off
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht pct: 10
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht reduced: off
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht 10
    2017-02-25 18:29:13 CUL_HM Kueche.DeckenLicht timedOn: off

automatisierer

Dimmen per Taster und notify ist eher suboptimal und nicht empfehlenswert. Eine Möglichkeit wäre vielleicht den Long_xx Zähler zu nehmen, damit den Dimmwert zu "berechnen" und dann einmalig an den Dimmer zu übertragen - aber doll is das bestimmt auch nicht...

Wenn du den Dimmer per Taster Steuern willst, empfehle ich dir diese zu peeren. Das bedeutet, dass der Taster und der Dimmer direkt miteinander reden und nicht über FHEM.


Die Geschichte mit dem .*
Der Punkt steht für ein beliebiges Zeichen, aber nicht für kein Zeichen.
Der Stern steht für eine oder mehrere Wiederholungen des davor stehenden Zeichens, auch für keine Wiederholung.

Beispiel:
Long.*
passt also auf:
Long_99
und
LongRelease
aber nicht auf:
Long

weil bei Long.* noch midestens ein weiteres Zeichen nach dem Long erwartet wird.

Ronald

Beim peeren benötige ich generell zwei Taster, einen für up/on, einen für down/off.
Mein Ziel ist mit einer Taste on/off, dim up/ down.
Ich habe in dem Raum 6 verschiedene Dimmer / Lampen zu steuern.
Mit je einem Tastenpaar wird es da schnell unübersichtlich.

rvideobaer

Hallo,

zum Dimmen braucht es nur einen Taster, Du must das mit Hilfe von fhem peeren dann kannst Du als Dual Peeren.

set <sensChan> peerChan 0 <actChan> [single|dual] [set|unset]

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

Ronald

Hallo Rolf,

ich wollte das mit dem Dual peeren probieren, habe aber wohl die Terminologie falsch:
Habe vorher in der fhem.cfg die notifys für Btn_01 auskommentiert und nach shutdown restart direkt im browser eingegeben
set Kueche.DeckenLicht peerChan 0 4FAFC401 dual

liefert zurück:

  • Unknown argument peerChan, choose one of assignHmKey clear deviceRename down fwUpdate getConfig getDevInfo getRegRaw getSerial getVersion inhibit off old on-for-timer on-till on pair pct peerBulk peerIODev press raw regBulk regSet reset sign statusRequest stop toggle unpair up
Wie wäre denn die richtige Schreibweise um Taste 1 der FB als dual peer für den dimmer laufen zu lassen?
Auszug aus der fhem.cfg für Fernbedienung und Dimmer:


  • define Remote8_1 CUL_HM 4FAFC4
    attr Remote8_1 IODev HMUART
    attr Remote8_1 autoReadReg 4_reqStatus
    attr Remote8_1 expert 2_raw
    attr Remote8_1 firmware 1.1
    attr Remote8_1 model HM-RC-8
    attr Remote8_1 room CUL_HM
    attr Remote8_1 serialNr NEQ1274626
    attr Remote8_1 subType remote
    attr Remote8_1 webCmd getConfig:clear msgEvents
    define FileLog_Remote8_1 FileLog ./log/Remote8_1-%Y.log Remote8_1
    attr FileLog_Remote8_1 logtype text
    attr FileLog_Remote8_1 room CUL_HM
    define Remote8_1_Btn_01 CUL_HM 4FAFC401
    attr Remote8_1_Btn_01 model HM-RC-8
    attr Remote8_1_Btn_01 peerIDs 00000000,
    define Remote8_1_Btn_02 CUL_HM 4FAFC402
    attr Remote8_1_Btn_02 model HM-RC-8
    attr Remote8_1_Btn_02 peerIDs 00000000,

  • define Kueche.DeckenLicht CUL_HM 4D219C
    attr Kueche.DeckenLicht userattr room_map structexclude
    attr Kueche.DeckenLicht IODev HMUART
    attr Kueche.DeckenLicht autoReadReg 4_reqStatus
    attr Kueche.DeckenLicht expert 2_raw
    attr Kueche.DeckenLicht firmware 2.6
    attr Kueche.DeckenLicht model HM-LC-DIM1T-FM
    attr Kueche.DeckenLicht peerIDs 00000000,
    attr Kueche.DeckenLicht room Kueche
    attr Kueche.DeckenLicht serialNr NEQ0864963
    attr Kueche.DeckenLicht subType dimmer
    attr Kueche.DeckenLicht webCmd statusRequest:toggle:on:off:up:down
    define FileLog_Kueche.DeckenLicht FileLog ./log/Kueche.DeckenLicht-%Y.log Kueche.DeckenLicht
    attr FileLog_Kueche.DeckenLicht logtype text
    attr FileLog_Kueche.DeckenLicht room CUL_HM

Gruß, Ronald
[/list]

Ronald

Nochmals @ Rolf
bin etwas weiter, habe folgendes probiert:
set Remote8_1_Btn_01 peerChan 0 Kueche.DeckenLicht dual

Damit scheint die Taste gepeered, allerdings direkt wieder Taste 1 für off/down, Taste 2 für on/up
Was mache ich da falsch?

  • define Remote8_1_Btn_01 CUL_HM 4FAFC401
    attr Remote8_1_Btn_01 model HM-RC-8
    attr Remote8_1_Btn_01 peerIDs 00000000,4D219C01,
  • define Kueche.DeckenLicht CUL_HM 4D219C
    attr Kueche.DeckenLicht userattr room_map structexclude
    attr Kueche.DeckenLicht IODev HMUART
    attr Kueche.DeckenLicht autoReadReg 4_reqStatus
    attr Kueche.DeckenLicht expert 2_raw
    attr Kueche.DeckenLicht firmware 2.6
    attr Kueche.DeckenLicht model HM-LC-DIM1T-FM
    attr Kueche.DeckenLicht peerIDs 00000000,4FAFC401,4FAFC402,
    attr Kueche.DeckenLicht room Kueche
    attr Kueche.DeckenLicht serialNr NEQ0864963
    attr Kueche.DeckenLicht subType dimmer
    attr Kueche.DeckenLicht webCmd statusRequest:toggle:on:off:up:down
    define FileLog_Kueche.DeckenLicht FileLog ./log/Kueche.DeckenLicht-%Y.log Kueche.DeckenLicht
    attr FileLog_Kueche.DeckenLicht logtype text
    attr FileLog_Kueche.DeckenLicht room CUL_HM

rvideobaer

Hallo,

dann must Du wohl erstmal das alte peer aufheben

set Remote8_1_Btn_01 peerChan 0 Kueche.DeckenLicht single unset

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr

automatisierer

Und die Befehle sind nicht vollständig, da fehlt das 'set' oder halt 'unset' am Ende.

set Remote8_1_Btn_01 peerChan 0 Kueche.DeckenLicht dual set

Hier ist das peering beschrieben, evtuell bringt das ein wenig Licht ins Dunkel...
https://wiki.fhem.de/wiki/Homematic_Peering_Beispiele


Hab allerdings die Befürchtung, dass das peeren in die falsche Richtung geht:
ZitatBei einem "dual" Peering werden die beiden zusammengehörenden Kanäle der Fernbedienung mit einem Aktorkanal gepeert - einer der Buttons wirkt dann als "on", der andere als "off"-Schalter.
Demnach werden bei peering dual, die beiden Sensor Kanäle mit einem Aktor Kanal gepeert.

rvideobaer

Hallo,

@automatisierer
Du hast recht, aber ich habe jetzt auch erst gemerkt das eine vorher gehende Antwort von mir nicht angekommen ist.
erstmal
set Remote8_1_Btn_01 peerChan 0 Kueche.DeckenLicht dual unset
und dann
set Remote8_1_Btn_01 peerChan 0 Kueche.DeckenLicht single set

Gruß Rolf
Raspberry Pi 2, HM-Uart,1x HM-LC-Sw1PBU-FM, 1x HM-RC-2-PBU-FM,1x HM-LC-SW4-DR,1x HM-LC-Sw1-Pl-DN-R1,1x HM-TC-IT-WM-W-EU, 5x HM-CC-RT-DN und noch mehr