<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lolle</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lolle"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Lolle"/>
	<updated>2026-04-13T04:32:31Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern&amp;diff=10705</id>
		<title>Enocean Dimmer mit kurzem und langem Tastendruck ansteuern</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern&amp;diff=10705"/>
		<updated>2015-03-30T18:46:00Z</updated>

		<summary type="html">&lt;p&gt;Lolle: Sektion &amp;quot;Motivation&amp;quot; ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe ==&lt;br /&gt;
Ein Enocean Dimmer soll mit einem Taster folgendermaßen bedient werden: &lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Tasterbedienung (Tastendruck)&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Dimmer-Funktion (Lampe dimmen)&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;kurz an&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;an, volle Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;kurz aus&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;aus&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;lang an&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;rauf dimmen&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;lang aus&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;runter dimmen&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
Das oben beschriebene Verhalten ist das Standardverhalten der meisten Funksysteme mit Dimmer. Die Taster-Dimmer-Kombination bei Direktverbindung der Enocean-Komponenten verhält sich zwar ähnlich, aber in den folgenden Punkten doch unterschiedlich: &lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Tasterbedienung (Tastendruck)&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Dimmer-Funktion bei Direktverbindung&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;gewünschte Dimmer-Funktion&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;kurz an&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;zuletzt eingestellte Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;an, volle Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;kurz 2x hintereinander an&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;an, volle Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;keine Funktion&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei Steuerung über den Server (FHEM) können zusätzlich individuelle Dimmkurven und Dimmgrenzwerte festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
Über FHEM ist insbesondere die Umsetzung der langen Tastendrücke etwas komplizierter und wird im Folgenden beschrieben. &lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
In fhem.cfg ist ein Enocean Dimmer als &amp;quot;deviceDimmer&amp;quot; ein Enocean Taster als &amp;quot;deviceSwitch&amp;quot; definiert und eingelernt. &lt;br /&gt;
Getestet wurde mit einem [[EnOcean-FUD61NPN-Funk-Universal-Dimmaktor|&amp;quot;Eltako FUD61NPN&amp;quot; Dimmer]] und einem &amp;quot;Eltako FT55&amp;quot; Taster, andere Enocean-Geräte sollten aber auch funktionieren.&lt;br /&gt;
&lt;br /&gt;
=== Script ===&lt;br /&gt;
In 99_myUtils.pm (siehe [[99_myUtils_anlegen]]) die Konstanten für die Dimmer-Funktionen definieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package main;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
use POSIX;&lt;br /&gt;
sub&lt;br /&gt;
myUtils_Initialize($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($hash) = @_;&lt;br /&gt;
&lt;br /&gt;
  our $varDimValueMinimum = &amp;quot;25&amp;quot;;&lt;br /&gt;
  our $varDimValueMaximum = &amp;quot;80&amp;quot;;&lt;br /&gt;
  our $varDimStepsPerLongPressPeriod = &amp;quot;2&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In fhem.cfg die Dimmer-Funktionen definieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# deviceSwitch -&amp;gt; deviceDimmer on/dim up&lt;br /&gt;
define sequenceSwitch_B0_ShortAndLongPress sequence deviceSwitch:B0 0.5 deviceSwitch:buttons:.released&lt;br /&gt;
attr sequenceSwitch_B0_ShortAndLongPress triggerPartial 1&lt;br /&gt;
define notifyDimmer_B0_ShortPress notify sequenceSwitch_B0_ShortAndLongPress:trigger set deviceDimmer on;;setstate deviceDimmer 100&lt;br /&gt;
define notifyDimmer_B0_LongPress notify sequenceSwitch_B0_ShortAndLongPress:partial_1 trigger dummyDimmer_DimUp_Start&lt;br /&gt;
define dummyDimmer_DimUp_Start dummy&lt;br /&gt;
attr dummyDimmer_DimUp_Start room hidden&lt;br /&gt;
define notifyDimmer_DimUp_Start notify dummyDimmer_DimUp_Start { my $varCurrentDimValue = Value(&amp;quot;deviceDimmer&amp;quot;);; $varCurrentDimValue = $varCurrentDimValue &amp;lt; $main::varDimValueMinimum ? $varCurrentDimValue + $main::varDimValueMinimum : $varCurrentDimValue &amp;lt; $main::varDimValueMaximum ? $varCurrentDimValue + $main::varDimStepsPerLongPressPeriod : 100;; fhem( &amp;quot;set deviceDimmer dim $varCurrentDimValue;;setstate deviceDimmer $varCurrentDimValue&amp;quot; );; fhem( &amp;quot;trigger dummyDimmer_DimUp&amp;quot;) }&lt;br /&gt;
define dummyDimmer_DimUp dummy&lt;br /&gt;
attr dummyDimmer_DimUp room hidden&lt;br /&gt;
define sequenceSwitch_DimUp sequence dummyDimmer_DimUp 0.1 deviceSwitch:buttons:.released&lt;br /&gt;
attr sequenceSwitch_DimUp triggerPartial 1&lt;br /&gt;
define notifySwitch_DimUp notify sequenceSwitch_DimUp:partial_1 { my $varCurrentDimValue = Value(&amp;quot;deviceDimmer&amp;quot;);; $varCurrentDimValue = $varCurrentDimValue &amp;lt; $main::varDimValueMinimum ? $varCurrentDimValue + $main::varDimValueMinimum : $varCurrentDimValue &amp;lt; $main::varDimValueMaximum ? $varCurrentDimValue + $main::varDimStepsPerLongPressPeriod : 100;; fhem( &amp;quot;set deviceDimmer dim $varCurrentDimValue;;setstate deviceDimmer $varCurrentDimValue&amp;quot; );; fhem( &amp;quot;trigger dummyDimmer_DimUp&amp;quot;) }&lt;br /&gt;
&lt;br /&gt;
# deviceSwitch -&amp;gt; deviceDimmer off/dim down&lt;br /&gt;
define sequenceSwitch_BI_ShortAndLongPress sequence deviceSwitch:BI 0.5 deviceSwitch:buttons:.released&lt;br /&gt;
attr sequenceSwitch_BI_ShortAndLongPress triggerPartial 1&lt;br /&gt;
define notifyDimmer_BI_ShortPress notify sequenceSwitch_BI_ShortAndLongPress:trigger set deviceDimmer off;;setstate deviceDimmer 0&lt;br /&gt;
define notifyDimmer_BI_LongPress notify sequenceSwitch_BI_ShortAndLongPress:partial_1 trigger dummyDimmer_DimDown_Start&lt;br /&gt;
define dummyDimmer_DimDown_Start dummy&lt;br /&gt;
attr dummyDimmer_DimDown_Start room hidden&lt;br /&gt;
define notifyDimmer_DimDown_Start notify dummyDimmer_DimDown_Start { my $varCurrentDimValue = Value(&amp;quot;deviceDimmer&amp;quot;);; $varCurrentDimValue = $varCurrentDimValue &amp;gt; $main::varDimValueMaximum ? $varCurrentDimValue - (100 - $main::varDimValueMaximum) : $varCurrentDimValue &amp;gt; $main::varDimValueMinimum ? $varCurrentDimValue - $main::varDimStepsPerLongPressPeriod : 0;; fhem( &amp;quot;set deviceDimmer dim $varCurrentDimValue;;setstate deviceDimmer $varCurrentDimValue&amp;quot; );; fhem( &amp;quot;trigger dummyDimmer_DimDown&amp;quot;) }&lt;br /&gt;
define dummyDimmer_DimDown dummy&lt;br /&gt;
attr dummyDimmer_DimDown room hidden&lt;br /&gt;
define sequenceSwitch_DimDown sequence dummyDimmer_DimDown 0.1 deviceSwitch:buttons:.released&lt;br /&gt;
attr sequenceSwitch_DimDown triggerPartial 1&lt;br /&gt;
define notifySwitch_DimDown notify sequenceSwitch_DimDown:partial_1 { my $varCurrentDimValue = Value(&amp;quot;deviceDimmer&amp;quot;);; $varCurrentDimValue = $varCurrentDimValue &amp;gt; $main::varDimValueMaximum ? $varCurrentDimValue - (100 - $main::varDimValueMaximum) : $varCurrentDimValue &amp;gt; $main::varDimValueMinimum ? $varCurrentDimValue - $main::varDimStepsPerLongPressPeriod : 0;; fhem( &amp;quot;set deviceDimmer dim $varCurrentDimValue;;setstate deviceDimmer $varCurrentDimValue&amp;quot; );; fhem( &amp;quot;trigger dummyDimmer_DimDown&amp;quot;) }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anpassung ===&lt;br /&gt;
Die Konstanten in 99_myUtils.pm haben die folgenden Bedeutungen:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Bedeutung&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;varDimValueMinimum &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;die minimale am Dimmer einzustellende Dim-Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;varDimValueMaximum&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;die maximale am Dimmer einzustellende Dim-Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;varDimStepsPerLongPressPeriod&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;um soviele Helligkeitsstufen-Stufen (in %) wird pro 100ms langem Tastendruck inkrementiert/dekrementiert -&amp;gt; beeinflusst die Dimmgeschwindigkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Timeouts der FHEM-sequences &amp;quot;sequenceSwitch_B0_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_DimUp&amp;quot; bzw. &amp;quot;sequenceSwitch_BI_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_DimDown&amp;quot; haben die folgenden Bedeutungen:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Timeout von FHEM-sequence&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Bedeutung&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;quot;sequenceSwitch_B0_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_BI_ShortAndLongPress&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;ab dieser Tastendruckdauer (in Sekunden) wird ein langer Tastendruck erkannt&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;quot;sequenceSwitch_DimUp&amp;quot; und &amp;quot;sequenceSwitch_DimDown&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;mit dieser Periode (in Sekunden) wird die Helligkeit beim Dimmen um &amp;quot;varDimStepsPerLongPressPeriod&amp;quot; erhöht/reduziert&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verbesserungsbedarf ==&lt;br /&gt;
Die Timeouts der FHEM-sequences &amp;quot;sequenceSwitch_B0_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_DimUp&amp;quot; bzw. &amp;quot;sequenceSwitch_BI_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_DimDown&amp;quot; (derzeit fest auf 0.5 und 0.1) sollten auch als Konstante in 99_myUtils.pm definiert werden. &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Lolle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern&amp;diff=10704</id>
		<title>Diskussion:Enocean Dimmer mit kurzem und langem Tastendruck ansteuern</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern&amp;diff=10704"/>
		<updated>2015-03-30T18:35:23Z</updated>

		<summary type="html">&lt;p&gt;Lolle: /* Grund für indirekte Dimmersteuerung? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Grund für indirekte Dimmersteuerung? ==&lt;br /&gt;
Gibt es einen besonderen Grund, warum Du den phys. Taster nicht zusätzlich zu Fhem in den Dimmer einlernst? Würdest Du den Taster direkt einlernen, wäre diese komplexe Ansteuerung ja nicht notwendig. Ich würde das gerne verstehen, bevor ich das Wiki-intern verlinke.&lt;br /&gt;
Danke und Gruß, [[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]])&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
:Ja: Hallo Krikan. Wenn der Taster direkt am Dimmer eingelernt ist, führt ein kurzer Tastendruck dazu, dass die zuletzt eingestellte Helligkeit angefahren wird. Deshalb hatte ich auch geschrieben &amp;quot;Ähnlich verhält sich auch die Taster-Dimmer-Kombination bei Direktverbindung&amp;quot;, also nicht identisch. Für mich ist dieses Verhalten nicht akzeptabel, ich möchte bei einem kurzen Tastendruck immer die maximale Helligkeit angefahren haben. &lt;br /&gt;
:Das &amp;quot;zusätzliche&amp;quot; Einlernen würde also zu Konflikten in der Ansteuerung führen. &lt;br /&gt;
:Außerdem hat die Direktverbindung auch die Doppeldruck-Funktionalität (Dimmen auf maximale Helligkeit), die ich wiederum nicht haben möchte. &lt;br /&gt;
:Über das Skript ist es zudem möglich die Dimmkurve zu parametrisieren (Einstellung der minimalen und maximalen Helligkeit sowie Dimmgeschwindigkeit über die Konstanten in 99_myUtils), was bei Direktverbindung nicht möglich ist.&lt;br /&gt;
:Und zu guter Letzt wird bei meinem Vorgehen auch die Helligkeit als Status (&amp;quot;State&amp;quot; des Dimmer-Devices) im FHEM-Webinterface angezeigt und auch bei Bedienung über den Taster aktualisiert. Das hatte ich auch bei bidirektionaler Kommunikation mit dem Dimmer bei Direktverbindung nicht hinbekommen.&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
:: Danke, verstehe Deine Beweggründe nun im Wesentlichen. Nur den letzten Punkt kann ich nicht nachvollziehen; die Aktualisierung bei bidi-Aktoren sollte eigentlich funktionieren. Evtl. liegt das ja am Produktionszeitraum Deines Aktors.&lt;br /&gt;
::Habe Deine Seite hier [[EnOcean-FUD61NPN-Funk-Universal-Dimmaktor#Ansteuerung_eines_ausschlie.C3.9Flich_indirekt_angelernten_Dimmers]] verlinkt. Bitte schaue, ob das für Dich so OK ist. Ansonsten ändere es bitte selbst passend ab. Gruß, [[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]])&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
:::Mein Dimmer ist mit bidirektionalem Funk ausgestattet, allerdings wird immer nur &amp;quot;dimValueStored&amp;quot; aktualisiert und dieser Wert wird nicht beeinflusst wenn man an/aus schaltet, sondern nur beim Dimmen. Deshalb hatte das nicht genügt. Vielleicht würde es auch mit den Bestätigungstelegrammen funktionieren, wenn man die richtigen Readings ausliest, ich hatte aber keinen Erfolg damit bzw. habe das entsprechende Reading nicht gefunden.&lt;/div&gt;</summary>
		<author><name>Lolle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern&amp;diff=10695</id>
		<title>Diskussion:Enocean Dimmer mit kurzem und langem Tastendruck ansteuern</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern&amp;diff=10695"/>
		<updated>2015-03-29T11:27:06Z</updated>

		<summary type="html">&lt;p&gt;Lolle: /* Grund für indirekte Dimmersteuerung? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Grund für indirekte Dimmersteuerung? ==&lt;br /&gt;
Gibt es einen besonderen Grund, warum Du den phys. Taster nicht zusätzlich zu Fhem in den Dimmer einlernst? Würdest Du den Taster direkt einlernen, wäre diese komplexe Ansteuerung ja nicht notwendig. Ich würde das gerne verstehen, bevor ich das Wiki-intern verlinke.&lt;br /&gt;
Danke und Gruß, [[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]])&lt;br /&gt;
&lt;br /&gt;
:Ja: Hallo Krikan. Wenn der Taster direkt am Dimmer eingelernt ist, führt ein kurzer Tastendruck dazu, dass die zuletzt eingestellte Helligkeit angefahren wird. Deshalb hatte ich auch geschrieben &amp;quot;Ähnlich verhält sich auch die Taster-Dimmer-Kombination bei Direktverbindung&amp;quot;, also nicht identisch. Für mich ist dieses Verhalten nicht akzeptabel, ich möchte bei einem kurzen Tastendruck immer die maximale Helligkeit angefahren haben. &lt;br /&gt;
:Das &amp;quot;zusätzliche&amp;quot; Einlernen würde also zu Konflikten in der Ansteuerung führen. &lt;br /&gt;
:Außerdem hat die Direktverbindung auch die Doppeldruck-Funktionalität (Dimmen auf maximale Helligkeit), die ich wiederum nicht haben möchte. &lt;br /&gt;
:Über das Skript ist es zudem möglich die Dimmkurve zu parametrisieren (Einstellung der minimalen und maximalen Helligkeit sowie Dimmgeschwindigkeit über die Konstanten in 99_myUtils), was bei Direktverbindung nicht möglich ist.&lt;br /&gt;
:Und zu guter Letzt wird bei meinem Vorgehen auch die Helligkeit als Status (&amp;quot;State&amp;quot; des Dimmer-Devices) im FHEM-Webinterface angezeigt und auch bei Bedienung über den Taster aktualisiert. Das hatte ich auch bei bidirektionaler Kommunikation mit dem Dimmer bei Direktverbindung nicht hinbekommen.&lt;/div&gt;</summary>
		<author><name>Lolle</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern&amp;diff=10676</id>
		<title>Enocean Dimmer mit kurzem und langem Tastendruck ansteuern</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern&amp;diff=10676"/>
		<updated>2015-03-28T12:32:36Z</updated>

		<summary type="html">&lt;p&gt;Lolle: Seite erstellt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe ==&lt;br /&gt;
Ein Enocean Dimmer soll mit einem Taster folgendermaßen bedient werden: &lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Tasterbedienung (Tastendruck)&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Dimmer-Funktion (Lampe dimmen)&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;kurz an&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;an, volle Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;kurz aus&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;aus&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;lang an&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;rauf dimmen&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;lang aus&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;runter dimmen&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies ist das Standardverhalten der meisten Funksysteme. Ähnlich verhält sich auch die Taster-Dimmer-Kombination bei Direktverbindung der Enocean-Komponenten. Über FHEM ist insbesondere die Umsetzung der langen Tastendrücke etwas komplizierter und wird im Folgenden beschrieben. &lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
In fhem.cfg ist ein Enocean Dimmer als &amp;quot;deviceDimmer&amp;quot; ein Enocean Taster als &amp;quot;deviceSwitch&amp;quot; definiert und eingelernt. &lt;br /&gt;
Getestet wurde mit einem &amp;quot;Eltako FUD61NPN&amp;quot; Dimmer und einem &amp;quot;Eltako FT55&amp;quot; Taster, andere Enocean-Geräte sollten aber auch funktionieren.&lt;br /&gt;
&lt;br /&gt;
== Script ==&lt;br /&gt;
In 99_myUtils.pm (siehe [[99_myUtils_anlegen]]) die Konstanten für die Dimmer-Funktionen definieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package main;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
use POSIX;&lt;br /&gt;
sub&lt;br /&gt;
myUtils_Initialize($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($hash) = @_;&lt;br /&gt;
&lt;br /&gt;
  our $varDimValueMinimum = &amp;quot;25&amp;quot;;&lt;br /&gt;
  our $varDimValueMaximum = &amp;quot;80&amp;quot;;&lt;br /&gt;
  our $varDimStepsPerLongPressPeriod = &amp;quot;2&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In fhem.cfg die Dimmer-Funktionen definieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# deviceSwitch -&amp;gt; deviceDimmer on/dim up&lt;br /&gt;
define sequenceSwitch_B0_ShortAndLongPress sequence deviceSwitch:B0 0.5 deviceSwitch:buttons:.released&lt;br /&gt;
attr sequenceSwitch_B0_ShortAndLongPress triggerPartial 1&lt;br /&gt;
define notifyDimmer_B0_ShortPress notify sequenceSwitch_B0_ShortAndLongPress:trigger set deviceDimmer on;;setstate deviceDimmer 100&lt;br /&gt;
define notifyDimmer_B0_LongPress notify sequenceSwitch_B0_ShortAndLongPress:partial_1 trigger dummyDimmer_DimUp_Start&lt;br /&gt;
define dummyDimmer_DimUp_Start dummy&lt;br /&gt;
attr dummyDimmer_DimUp_Start room hidden&lt;br /&gt;
define notifyDimmer_DimUp_Start notify dummyDimmer_DimUp_Start { my $varCurrentDimValue = Value(&amp;quot;deviceDimmer&amp;quot;);; $varCurrentDimValue = $varCurrentDimValue &amp;lt; $main::varDimValueMinimum ? $varCurrentDimValue + $main::varDimValueMinimum : $varCurrentDimValue &amp;lt; $main::varDimValueMaximum ? $varCurrentDimValue + $main::varDimStepsPerLongPressPeriod : 100;; fhem( &amp;quot;set deviceDimmer dim $varCurrentDimValue;;setstate deviceDimmer $varCurrentDimValue&amp;quot; );; fhem( &amp;quot;trigger dummyDimmer_DimUp&amp;quot;) }&lt;br /&gt;
define dummyDimmer_DimUp dummy&lt;br /&gt;
attr dummyDimmer_DimUp room hidden&lt;br /&gt;
define sequenceSwitch_DimUp sequence dummyDimmer_DimUp 0.1 deviceSwitch:buttons:.released&lt;br /&gt;
attr sequenceSwitch_DimUp triggerPartial 1&lt;br /&gt;
define notifySwitch_DimUp notify sequenceSwitch_DimUp:partial_1 { my $varCurrentDimValue = Value(&amp;quot;deviceDimmer&amp;quot;);; $varCurrentDimValue = $varCurrentDimValue &amp;lt; $main::varDimValueMinimum ? $varCurrentDimValue + $main::varDimValueMinimum : $varCurrentDimValue &amp;lt; $main::varDimValueMaximum ? $varCurrentDimValue + $main::varDimStepsPerLongPressPeriod : 100;; fhem( &amp;quot;set deviceDimmer dim $varCurrentDimValue;;setstate deviceDimmer $varCurrentDimValue&amp;quot; );; fhem( &amp;quot;trigger dummyDimmer_DimUp&amp;quot;) }&lt;br /&gt;
&lt;br /&gt;
# deviceSwitch -&amp;gt; deviceDimmer off/dim down&lt;br /&gt;
define sequenceSwitch_BI_ShortAndLongPress sequence deviceSwitch:BI 0.5 deviceSwitch:buttons:.released&lt;br /&gt;
attr sequenceSwitch_BI_ShortAndLongPress triggerPartial 1&lt;br /&gt;
define notifyDimmer_BI_ShortPress notify sequenceSwitch_BI_ShortAndLongPress:trigger set deviceDimmer off;;setstate deviceDimmer 0&lt;br /&gt;
define notifyDimmer_BI_LongPress notify sequenceSwitch_BI_ShortAndLongPress:partial_1 trigger dummyDimmer_DimDown_Start&lt;br /&gt;
define dummyDimmer_DimDown_Start dummy&lt;br /&gt;
attr dummyDimmer_DimDown_Start room hidden&lt;br /&gt;
define notifyDimmer_DimDown_Start notify dummyDimmer_DimDown_Start { my $varCurrentDimValue = Value(&amp;quot;deviceDimmer&amp;quot;);; $varCurrentDimValue = $varCurrentDimValue &amp;gt; $main::varDimValueMaximum ? $varCurrentDimValue - (100 - $main::varDimValueMaximum) : $varCurrentDimValue &amp;gt; $main::varDimValueMinimum ? $varCurrentDimValue - $main::varDimStepsPerLongPressPeriod : 0;; fhem( &amp;quot;set deviceDimmer dim $varCurrentDimValue;;setstate deviceDimmer $varCurrentDimValue&amp;quot; );; fhem( &amp;quot;trigger dummyDimmer_DimDown&amp;quot;) }&lt;br /&gt;
define dummyDimmer_DimDown dummy&lt;br /&gt;
attr dummyDimmer_DimDown room hidden&lt;br /&gt;
define sequenceSwitch_DimDown sequence dummyDimmer_DimDown 0.1 deviceSwitch:buttons:.released&lt;br /&gt;
attr sequenceSwitch_DimDown triggerPartial 1&lt;br /&gt;
define notifySwitch_DimDown notify sequenceSwitch_DimDown:partial_1 { my $varCurrentDimValue = Value(&amp;quot;deviceDimmer&amp;quot;);; $varCurrentDimValue = $varCurrentDimValue &amp;gt; $main::varDimValueMaximum ? $varCurrentDimValue - (100 - $main::varDimValueMaximum) : $varCurrentDimValue &amp;gt; $main::varDimValueMinimum ? $varCurrentDimValue - $main::varDimStepsPerLongPressPeriod : 0;; fhem( &amp;quot;set deviceDimmer dim $varCurrentDimValue;;setstate deviceDimmer $varCurrentDimValue&amp;quot; );; fhem( &amp;quot;trigger dummyDimmer_DimDown&amp;quot;) }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anpassung ==&lt;br /&gt;
Die Konstanten in 99_myUtils.pm haben die folgenden Bedeutungen:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Bedeutung&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;varDimValueMinimum &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;die minimale am Dimmer einzustellende Dim-Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;varDimValueMaximum&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;die maximale am Dimmer einzustellende Dim-Helligkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;varDimStepsPerLongPressPeriod&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;um soviele Helligkeitsstufen-Stufen (in %) wird pro 100ms langem Tastendruck inkrementiert/dekrementiert -&amp;gt; beeinflusst die Dimmgeschwindigkeit&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Timeouts der FHEM-sequences &amp;quot;sequenceSwitch_B0_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_DimUp&amp;quot; bzw. &amp;quot;sequenceSwitch_BI_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_DimDown&amp;quot; haben die folgenden Bedeutungen:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1px solid #aaa&amp;quot; style=&amp;quot;text-align:center&amp;quot; class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Timeout von FHEM-sequence&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Bedeutung&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;quot;sequenceSwitch_B0_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_BI_ShortAndLongPress&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;ab dieser Tastendruckdauer (in Sekunden) wird ein langer Tastendruck erkannt&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;quot;sequenceSwitch_DimUp&amp;quot; und &amp;quot;sequenceSwitch_DimDown&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;mit dieser Periode (in Sekunden) wird die Helligkeit beim Dimmen um &amp;quot;varDimStepsPerLongPressPeriod&amp;quot; erhöht/reduziert&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verbesserungsbedarf ==&lt;br /&gt;
Die Timeouts der FHEM-sequences &amp;quot;sequenceSwitch_B0_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_DimUp&amp;quot; bzw. &amp;quot;sequenceSwitch_BI_ShortAndLongPress&amp;quot; und &amp;quot;sequenceSwitch_DimDown&amp;quot; (derzeit fest auf 0.5 und 0.1) sollten auch als Konstante in 99_myUtils.pm definiert werden. &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Lolle</name></author>
	</entry>
</feed>