FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: ronzo am 09 Dezember 2020, 22:59:09

Titel: [gelöst] sequence mit Homematic-Dimmer
Beitrag von: ronzo am 09 Dezember 2020, 22:59:09
Ich hätte gerne eine sequence definiert, über die ich per "Doppelklick" alle Lichter eines Raumes ein- und ausschalten kann.

Die Lichter habe ich über eine Structure zusammengefasst. Die sequence funktioniert auch, wenn ich sie auf die Tasten meiner Homematic-Fernbedienung lege. Ich hätte diese Funktionalität aber gerne über meinen Wandschalter (Homematic Dimmer HM-LC-DIM1TPBU-FM) gelöst. (Alternativ hätte ich dort in der Wand noch einen HM-RC-2-PBU-FM und einen HM-LC-SW1PBU-FM)

Habe schon ein paar Sachen ausprobiert, nichts davon wollte funktionieren. Im Moment bin ich bei

DimmerWohnzimmer_Dim:pressS:self02 1.0 DimmerWohnzimmer_Dim:pressS:self02

in der Definition der sequence.

Was mache ich falsch?
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Otto123 am 09 Dezember 2020, 23:03:33
normale Homematic Aktoren sind keine Fernbedienungen. Die Tasten geben keine Events nach außen, die funktionieren nur intern.
Mit der HM-RC-2-PBU-FM wird es gehen, mit dem HM-LC-SW1PBU-FM nicht.
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: ronzo am 09 Dezember 2020, 23:05:02
Vielen Dank für deine überaus rasche Antwort! Hatte schon befürchtet, dass es mit keinem Taster in der Wand funktionieren wird...
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Otto123 am 09 Dezember 2020, 23:11:03
der HM-RC-2-PBU-FM ist doch ein Taster an der Wand?
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: ronzo am 09 Dezember 2020, 23:21:16
Hier noch der Link zum Foreneintrag, wo ich mir die Kombination aus sequence und notify abgeschaut habe:
https://forum.fhem.de/index.php/topic,26772.msg198050.html#msg198050

Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: ronzo am 28 Dezember 2020, 12:51:12
Leider funktioniert die Sache mit dem HM-RC-2-PBU-FM noch nicht wie gewünscht. Die gewünschte Aktion wird bereits bei einmaligem Drücken eines Buttons ausgelöst...
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Pfriemler am 28 Dezember 2020, 19:48:57
gib uns Lists vom DEF der sequence und des notify...
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: ronzo am 28 Dezember 2020, 22:59:04
WehnzimmerBeleuchtungOnSeq DEF
ArbeitsbeleuchtungKueche_Btn_02 0.5 ArbeitsbeleuchtungKueche_Btn_02

WohnzimmerBeleuchtungOnNotify DEF
WohnzimmerBeleuchtungOnSeq:trigger set WohnzimmerBeleuchtung on

Hatte vorher
WohnzimmerBeleuchtungOnSeq:partial_2 set WohnzimmerBeleuchtung on

Aber auch das wollte nicht wie gewünscht funktionieren...
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Pfriemler am 29 Dezember 2020, 12:49:33
es hätte etwas mehr sein dürfen, um bspw. die Namen von sequence und die Trigger zu kontrollieren... auch ein Auszug aus der RAW-Definition.

Gegenbeispiel von mir:
Internals:
   DEF        Wz6TasterRightDown:Short.* 2 Wz6TasterRightDown:Short.* 2 Wz6TasterRightDown:Short.*
...
   NAME       seqMoveEGRightBlindUp
...
   TYPE       sequence
   READINGS:
     2020-12-28 09:16:59   state           active
Attributes:
   comment    erster erreichbarer Taster zum Lichtmachen per Rollo-Öffnung
   room       Spielwiese,Steuerungen


und darauf reagiert
Internals:
   DEF        seqMoveEGRightBlindUp.* set RolloEGWzReDF dawn
...
   NAME       nfyEGWzRolloRechtsWandtaster
   NOTIFYDEV  seqMoveEGRightBlindUp.*
...
   STATE      active
...
   TYPE       notify
   .attraggr:
   .attrminint:
   READINGS:
     2020-12-29 12:36:42   state           active
Attributes:
   room       System->Steuerungen


Ich stolpere derzeit noch ein bisschen über das :trigger in der commandref. Als reines "RegEx" interpretiert müsste das Notify auf ein Event des Readings "trigger" reagieren, was es aber gar nicht gibt. Allerdings scheint das hier eine Sonderfunktion zu sein... Partielle Trigger benötigen zudem zusätzliche Attribute, siehe commandref.
Ohne das alles funktioniert es bei mir wie beschrieben, d.h. jedes beliebige Event der Sequence triggert das Notify. Ein dreimaliger Knopfdruck auf die Taste im Abstand von etwa einer Sekunde (erlaubt sind 2) öffnet den Rolladen. Klappt seit Jahren und über alle Updates. Auf zwei Knopfdrücke (oft praktiziert zum sofortigen Ausschalten (Überspringen der off-Rampe) des eigentlich mit der Taste gepeerten Dimmers) passiert am Rolladen nichts.
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: ronzo am 29 Dezember 2020, 17:22:41
Mir fehlte offenbar das

:Short.*

in der Sequence. Warum ist ".*" nötig?
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Otto123 am 29 Dezember 2020, 18:52:31
ZitatEin sequence kann verwendet werden, um ein neues Event zu generieren, wenn eine bestimmte Folge von anderen Events in einem festgelegten Zeitraum eingetroffen ist.
Wenn der Begriff Event vorkommt - findest Du die Antworten auf solche Fragen immer im Eventmonitor :)

Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: ronzo am 29 Dezember 2020, 22:49:22
Sehe im Eventlog schon Events à la Short_<counter>.

Welches Event hier jedoch das Auslösende ist, check ich noch nicht 100%ig:

2020-12-29 22:43:04 sequence WohnzimmerBeleuchtungOnSeq trigger
2020-12-29 22:43:04 CUL_HM ArbeitsbeleuchtungKueche_Btn_02 Short 1_29 (to DimmerKueche)
2020-12-29 22:43:04 CUL_HM ArbeitsbeleuchtungKueche_Btn_02 trigger: Short_29
2020-12-29 22:43:04 CUL_HM ArbeitsbeleuchtungKueche_Btn_02 triggerTo_DimmerKueche: Short_29
2020-12-29 22:43:04 CUL_HM ArbeitsbeleuchtungKueche_Btn_02 trigger_cnt: 29
2020-12-29 22:43:04 CUL_HM ArbeitsbeleuchtungKueche_Btn_02 triggerTo_DimmerKueche: Short_29_ack


DimmerKueche ist das gepeerte Device. Das kann es ja nicht sein...
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Otto123 am 29 Dezember 2020, 23:16:38
Du hast ja gesagt Dir fehlte :Short.* das wäre mit Deinem ursprünglichen Code dieser finale Trigger in Deiner Sequence?
ArbeitsbeleuchtungKueche_Btn_02:Short.*
Der reagiert auf den Event:
2020-12-29 22:43:04 CUL_HM ArbeitsbeleuchtungKueche_Btn_02 Short 1_29 (to DimmerKueche)

Short alleine würde nicht passen denn es kommt ja noch was hinterher. Du brauchst einen "full match" auf die komplette Zeile.
Kurz gesprochen steht . für irgendein Zeichen und der * für beliebig viele - in Summe: beliebig viele irgendwelche Zeichen.

Kannst Du hier ausprobieren https://regex101.com/
Hier musst Du hinter Short dann mal ein .* setzen, da siehts Du was passiert:
https://regex101.com/r/hwyjEL/1


Guten Rutsch
Otto
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: ronzo am 29 Dezember 2020, 23:32:15
@Otto123: Danke für deine Antwort!

Die RegEx hat mich nicht verwirrt. Was ".*" bedeutet, ist mir klar. Was ich noch nicht ganz checke ist, warum ich hier nix von meiner Sequence sehe bzw. vom Notify das von der Sequence getriggert wird. Das "to DimmerKueche" verwirrt mich (das ist der gepeerte Dimmer und nicht die Structure, die ich im Notify anspreche.)
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Otto123 am 29 Dezember 2020, 23:44:38
Die Zeile die ich markiert und herausgezogen habe ist der Event von deinem Taster. Der ist so, das hat erstmal gar nichts mit dem zu tun was Du dran strickst.

Was Du jetzt genau gemacht hast und wo Du einen Event erwarten könntest, ist mir nicht klar. Dazu hast Du zu wenig gepostet. Du hast gesagt es funktioniert, Du kannst ja die Events der Geräte die Du schaltest auch verhindern, dann siehst Du nix im Eventmonitor nur das Licht geht an :)
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Gisbert am 30 Dezember 2020, 05:26:52
Zitat von: Otto123 am 09 Dezember 2020, 23:03:33
normale Homematic Aktoren sind keine Fernbedienungen. Die Tasten geben keine Events nach außen, die funktionieren nur intern.
Mit der HM-RC-2-PBU-FM wird es gehen, mit dem HM-LC-SW1PBU-FM nicht.

Hallo Otto,
hallo ronzo,

ich hab einen Rollladenschalter HM-LC-BL1PBU-FM (es hängt eine Senkrechtmarmise dran), an der hab ich 2 sequence-Devices dranhängen:
defmod Treppenhaus.Markise.manhoch sequence Treppenhaus.Markise:off 6 :off 6 :off 6 :off
defmod Treppenhaus.Markise.manrunter sequence Treppenhaus.Markise:on 6 :on 6 :on 6 :on

Damit kann ich die eigentliche vollautomatische Steuerung auf Handbetrieb nehmen; es hängen notifys und ein DOIF dahinter, die das regeln. Mit diesem Aktor funktionieren die sequence-Devices in Fhem bei der Vorort-Bedienung

Viele​ Grüße​ Gisbert​
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: ronzo am 30 Dezember 2020, 09:05:24
Hallo Gisbert,

das wären gute Neuigkeiten. Meine Frau beschwert sich nämlich darüber, dass die Funktion derzeit nämlich am falschen von vier Tastern läge.

Werde es asap testen.
Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Pfriemler am 30 Dezember 2020, 15:39:58
Danke an Otto für die Erklärung von "short.*" . Ich hatte gestern auch was geschrieben, aber vermutlich nicht final abgeschickt ...

Zur Frage ob man auch mit Aktoren Sequenzen bedienen kann: Gisbert hat ein Timeout von 6 Sekunden. Natürlich erzeugt auch ein Aktor ein passendes Event, nämlich wenn er das Ergebnis der letzten Aktion an die Zentrale meldet. Wenn ich einen Aktor, der schon aus ist, nochmal von Hand ausschalte, wird er also ein "off" an die Zentrale melden. Hat man aber gemäß einer üblichen Empfehlung das Atrribut "event-on-change-reading .*" gesetzt, wird es kein Event geben - der Aktor ist ja schon "off". Dann muss man also dafür sorgen, dass ein bestimmtes Reading dennoch Events erzeugt, um sie in einer Sequence nutzen zu können...
Diese Statusmeldung kommt zudem mit einer gewissen Verzögerung. Das erfordert ein entsprechend langes Timeout und eine entsprechende verzögerte Betätigung. Es setzt zudem voraus, dass der Aktor sich in der fraglichen Stellung befindet (ein Schalter wird natürlich sofort ausschalten, ein Rolladen muss sich aber schon in der richtigen Position befinden).

Trotz allem: Gute Idee und auf jeden Fall einen Versuch wert.

Titel: Antw:sequence mit Homematic-Dimmer
Beitrag von: Gisbert am 30 Dezember 2020, 16:04:18
Hallo Pfriemler,

ZitatDiese Statusmeldung kommt zudem mit einer gewissen Verzögerung. Das erfordert ein entsprechend langes Timeout und eine entsprechende verzögerte Betätigung. Es setzt zudem voraus, dass der Aktor sich in der fraglichen Stellung befindet (ein Schalter wird natürlich sofort ausschalten, ein Rolladen muss sich aber schon in der richtigen Position befinden).

du hast alles richtig vermutet.

Mehrfach ein on/off zu senden, geht natürlich nur, wenn der Schalter schon in der entsprechenden Position ist. Es setzt auch außerdem eine Schulung des Bedienpersonals ;D voraus, was nur unter deutlichem Protest möglich war. Immerhin habe ich mit der Sequenz und verschiedenen notifys und einem DOIF es geschafft, die eigentliche (Voll)Automatik auf Hand zu nehmen (je nach Definition ein oder 2 Stunden) und so die Automatik zwischenzeitlich zu übersteuern.

Ich hänge hier nur zu Dokumentationszwecken alle Definitionen (aus der .cfg) an, aber Vorsicht, wer es nachvollziehen möchte, hat nachher ein paar Knoten mehr in seinem Frontallappen, Benutzung auf eigene Gefahr ;D:


define Treppenhaus.Markise CUL_HM 30F323
setuuid Treppenhaus.Markise 5c430dca-f33f-b139-7ef4-c7812fafecad6886
attr Treppenhaus.Markise .mId 006A
attr Treppenhaus.Markise IODev myHmUARTLGW1
attr Treppenhaus.Markise IOgrp VCCU:myHmUARTLGW1,myHmUARTLGW2
attr Treppenhaus.Markise autoReadReg 5_readMissing
attr Treppenhaus.Markise comment Dieses userReadings wird anscheinend nicht mehr benötigt: \
Level {sprintf '%.0f', ReadingsVal($name,'level','') != 50 ? ReadingsVal($name,'level','') : "100"}\
Das Attribut webCmd wurde eingekürzt:\
statusRequest:toggleDir:on:off:up:down:stop
attr Treppenhaus.Markise devStateIcon on:fts_shutter_10 off:fts_shutter_90@red up:fts_shutter_10@red down:fts_shutter_90@red
attr Treppenhaus.Markise expert defReg,rawReg
attr Treppenhaus.Markise firmware 2.11
attr Treppenhaus.Markise group Switch
attr Treppenhaus.Markise icon fts_sunblind
attr Treppenhaus.Markise model HM-LC-BL1PBU-FM
attr Treppenhaus.Markise peerIDs 00000000,
attr Treppenhaus.Markise room CUL_HM,Rollladen
attr Treppenhaus.Markise serialNr LEQ1023775
attr Treppenhaus.Markise subType blindActuator
attr Treppenhaus.Markise webCmd on:off:up:down:stop

define FileLog_Treppenhaus.Markise FileLog ./log/Treppenhaus.Markise-%Y-%m.log Treppenhaus.Markise.(level|state):.*
setuuid FileLog_Treppenhaus.Markise 5c430dca-f33f-b139-1713-c848382de8e8e399
attr FileLog_Treppenhaus.Markise archivedir /media/USBBackup/Fhemlogbackup/logbackup/
attr FileLog_Treppenhaus.Markise createGluedFile 1
attr FileLog_Treppenhaus.Markise logtype text
attr FileLog_Treppenhaus.Markise nrarchive 0

define TreppenhausMarkisenBefehl DOIF ([?Treppenhaus.Markise.hoch.dum] eq "off" and ($md ge "04-01" and $md le "10-15") \
and [?Treppenhaus.Markise:level] != 0 and [TH.Kuhlmannweg8:temperature] >= 20 and [?Temp.OG:OG.Flur] >= 21 \
and [?Lichtstaerke.West:MAX44009_Illuminance] > 15000 and [Lichtstaerke.West:quot] > 2 \
and [?Lichtstaerke.West:MAX44009_Illuminance:sec] < 600 and [?Lichtstaerke:BH1750_Illuminance:sec] < 600 \
and [?Buienradar:maxrain] <= 1 and [?myTwilight:azimuth] >= 185 and sunset_abs(-9000) gt $hms) \
(set Treppenhaus.Markise off) \
(set Treppenhaus.Markise.runter.dum on-for-timer 1800) \
(IF ([RollladenWohnzimmerWest:cmd] =~ "Up|Stop") (set RollladenWohnzimmerWest DriveSlit)) \
DOELSEIF ([?Treppenhaus.Markise.runter.dum] =~ "on" and [?Treppenhaus.Markise:level] < 10 \
and ([Wetter.Proplanta:wind] > 30 or [Buienradar:maxrain] > 1 \
or ([Lichtstaerke.West:MAX44009_Illuminance] < 5000 and [Lichtstaerke.West:quot] < 0.6) \
or [Lichtstaerke.West:MAX44009_Illuminance:sec] >= 600 or [Lichtstaerke:BH1750_Illuminance:sec] >= 600)) \
(set Treppenhaus.Markise on) \
(set Treppenhaus.Markise.hoch.dum on-for-timer 1800) \
(set RollladenWohnzimmerWest DriveUp) \
DOELSEIF ([?Treppenhaus.Markise.runter.dum] eq "off" and [?Treppenhaus.Markise:level] < 10 \
and ([Wetter.Proplanta:wind] > 30 or [Buienradar:maxrain] > 1 or [TH.Kuhlmannweg8:temperature] <= 19 \
or ([Lichtstaerke.West:MAX44009_Illuminance] < 8000 and [Lichtstaerke.West:quot] < 1) \
or [Lichtstaerke.West:MAX44009_Illuminance:sec] >= 600 or [Lichtstaerke:BH1750_Illuminance:sec] >= 600 \
or [myTwilight:azimuth] < 185 or sunset_abs(-6600) le $hms)) \
(set Treppenhaus.Markise on) \
(set Treppenhaus.Markise.hoch.dum on-for-timer 1800) \
(set RollladenWohnzimmerWest DriveUp) \
DOELSEIF ([Treppenhaus.Markise:level] == 100 and [+600]) (setreading Treppenhaus.Markise level 100) \
DOELSEIF ([Treppenhaus.Markise:level] == 0 and [+600]) (setreading Treppenhaus.Markise level 0)
setuuid TreppenhausMarkisenBefehl 5c430dca-f33f-b139-5d56-f01028b2c34286f2
attr TreppenhausMarkisenBefehl alias Markise im Treppenhaus
attr TreppenhausMarkisenBefehl comment Wegen Umstellung auf eigene Helligkeitsmessung werden die folgenden Definitionen nicht mehr benötigt. \
Umlaut in bewölkt durch einen Punkt (.) ersetzt. \
Der Punkt kann alles mögliche sein, ein normales Zeichen, ein Umlaut oder auch ein Leerzeichen. \
Das scheint aber bei "stark bewölkt" nicht gut zu funktionieren. \
Deshalb wurde eine weiteres Reading bei Wetter.Proplanta (weather2) erzeugt, welches "starkbewoelkt" zurückliefert. \
Das Reading maxrain des Devices Buienradar/Proplanta ist der Maximalwert der Regenmenge aus folgenden Devices: \
- Buienradar \
- Leverkusen.DarkSky - wegen fehlerhaften Daten (Werte ~ 0.01 mm/qm) rausgenommen  \
- verschiedene Netatmo-Geräte in der Umgebung\
Nicht mehr genutzte Wetterabfragen:\
[?Wetter.Proplanta:weather] =~ /^(sonnig|klar|heiter|wolkig)$/\
[?Wetter.Proplanta:weather2] =~ /^(starkbewoelkt)$/\
Abfragen mit mehreren Werte:\
[Device:Reading] =~ "Input1|Input2"\
siehe: https://forum.fhem.de/index.php/topic,111552.msg1057864.html#msg1057864
attr TreppenhausMarkisenBefehl devStateIcon (cmd_1|cmd_5):fts_shutter_down@red (cmd_2|cmd_3|cmd_4):fts_sunblind_0@gray
attr TreppenhausMarkisenBefehl icon fts_sunblind
attr TreppenhausMarkisenBefehl repeatsame 1:1:1:35000:60
attr TreppenhausMarkisenBefehl room CUL_HM,Rollladen
attr TreppenhausMarkisenBefehl sortby 8
attr TreppenhausMarkisenBefehl wait 15,5:5,5,5:5,5,5:1:1

define Treppenhaus.Markise.hoch.dum dummy
setuuid Treppenhaus.Markise.hoch.dum 5c430dca-f33f-b139-b8b2-c8873cb1b0a752e2
attr Treppenhaus.Markise.hoch.dum devStateIcon on-for-timer.*:fts_shutter_up@red off:fts_shutter_automatic@gray
attr Treppenhaus.Markise.hoch.dum icon fts_sunblind
attr Treppenhaus.Markise.hoch.dum room CUL_HM
attr Treppenhaus.Markise.hoch.dum setExtensionsEvent 1
attr Treppenhaus.Markise.hoch.dum setList on off
attr Treppenhaus.Markise.hoch.dum useSetExtensions 1

define Treppenhaus.Markise.runter.dum dummy
setuuid Treppenhaus.Markise.runter.dum 5c430dca-f33f-b139-f7cb-5a29d08a5cc9b5cd
attr Treppenhaus.Markise.runter.dum devStateIcon on-for-timer.*:fts_shutter_down@red off:fts_shutter_automatic@gray
attr Treppenhaus.Markise.runter.dum icon fts_sunblind
attr Treppenhaus.Markise.runter.dum room CUL_HM
attr Treppenhaus.Markise.runter.dum setExtensionsEvent 1
attr Treppenhaus.Markise.runter.dum setList on off
attr Treppenhaus.Markise.runter.dum useSetExtensions 1

define Treppenhaus.Markise.manhoch sequence Treppenhaus.Markise:off 6 :off 6 :off 6 :off
setuuid Treppenhaus.Markise.manhoch 5c430dca-f33f-b139-7629-03e9de553c426e38
attr Treppenhaus.Markise.manhoch room CUL_HM

define Treppenhaus.Markise.hoch.notify notify Treppenhaus.Markise.manhoch:trigger \
{fhem ("set Treppenhaus.Markise.hoch.dum on-for-timer 7200;; \
set Treppenhaus.Markise on;; \
set RollladenWohnzimmerWest DriveUp")}
setuuid Treppenhaus.Markise.hoch.notify 5c430dca-f33f-b139-823e-6cf56a00d0f49018
attr Treppenhaus.Markise.hoch.notify alias Treppenhaus.hoch
attr Treppenhaus.Markise.hoch.notify room CUL_HM,Rollladen

define Treppenhaus.Markise.manrunter sequence Treppenhaus.Markise:on 6 :on 6 :on 6 :on
setuuid Treppenhaus.Markise.manrunter 5c430dca-f33f-b139-f04d-702fd7a22f735666
attr Treppenhaus.Markise.manrunter room CUL_HM

define Treppenhaus.Markise.runter.notify notify Treppenhaus.Markise.manrunter:trigger \
{fhem ("set Treppenhaus.Markise.runter.dum on-for-timer 3600;; set Treppenhaus.Markise off;;")} \
{if (ReadingsVal('RollladenWohnzimmerWest','Event','') eq "Up") {fhem ("set RollladenWohnzimmerWest DriveSlit;;")}}
setuuid Treppenhaus.Markise.runter.notify 5c430dca-f33f-b139-f106-a4def274e9b5d12a
attr Treppenhaus.Markise.runter.notify alias Treppenhaus.runter
attr Treppenhaus.Markise.runter.notify room CUL_HM,Rollladen


Viele Grüße Gisbert