Enocean Dimmer über mehrere Minuten abdimmen

Begonnen von Spartacus, 12 Dezember 2016, 20:57:54

Vorheriges Thema - Nächstes Thema

Spartacus

Hallo,
ich besitze einige enocean Dimmer und suche eine Möglichkeit, die Leuchten langsam auf- bzw. abzudimmen.
Es gibt die Möglichkeit der ramptime, aber eine ramptime von 255 ist immer noch zu wenig.

Bei Homematic kann ich die Zeiten in Minuten angeben, sodass ich hier eine Leuchte über mehrere Minuten abschalten kann.

Wie mache ich das bei enocean Devices am Besten?

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

reibuehl

Sollte sich das nicht relativ einfach mit einer Funktion mit "at" Befehlen nachbilden lassen?

Etwa so (ungetestet!):

# In 20 Schritten über 10 Minuten ausschalten 
sub langsamAus($) {
    my $dev = $_[0];
    fhem "define langsamAus95 at +00:00:30 set $dev 95"
    fhem "define langsamAus90 at +00:01:00 set $dev 90"
    fhem "define langsamAus85 at +00:01:30 set $dev 85"
    fhem "define langsamAus80 at +00:02:00 set $dev 80"
    fhem "define langsamAus75 at +00:02:30 set $dev 75"
    fhem "define langsamAus70 at +00:03:00 set $dev 70"
    fhem "define langsamAus65 at +00:03:30 set $dev 65"
    fhem "define langsamAus60 at +00:04:00 set $dev 60"
    fhem "define langsamAus55 at +00:04:30 set $dev 55"
    fhem "define langsamAus50 at +00:05:00 set $dev 50"
    fhem "define langsamAus45 at +00:05:30 set $dev 45"
    fhem "define langsamAus40 at +00:06:00 set $dev 40"
    fhem "define langsamAus35 at +00:06:30 set $dev 35"
    fhem "define langsamAus30 at +00:07:00 set $dev 30"
    fhem "define langsamAus25 at +00:07:30 set $dev 25"
    fhem "define langsamAus20 at +00:08:00 set $dev 20"
    fhem "define langsamAus15 at +00:08:30 set $dev 15"
    fhem "define langsamAus10 at +00:09:00 set $dev 10"
    fhem "define langsamAus05 at +00:09:30 set $dev 5"
    fhem "define langsamAus00 at +00:10:00 set $dev off"
}

Aufruf dann mit { langsamAus(lampe1) } für ein Device "lampe1".

Mit beliebig viel zusätzlichem Perl Code lässt sich das sicher noch eleganter und flexibler gestalten um z.B. mit dem aktuellen Wert des Dimmers zu starten oder Gesamtzeit und Anzahl der Schritte noch als Funktionsparameter übergeben zu können.

Gruß,
Reiner
Reiner.

Spartacus

Hallo Reiner,
danke für Deine Antwort. Ich hatte viel mehr daran gedacht, eine Funktion zu bauen, die  den Dimwert und die Zeit als Parameter nutzt, damit es flexibler ist.

z.B.
dim Lampe 80, 3600
in 3600s auf 80% Helligkeit.

D.h. es muss erst die aktuelle Helligkeit der Lampe bestimmt werden um dann die Zielhelligkeit über die Zeit einzustellen. M.E. wird das bei den HM-Devices so gemacht.

Vielleicht hat ja jemand so etwas im Einsatz und kann einen Tipp geben, mit welchen fhem-Bordmitteln man hier am Besten arbeitet um dies mit möglichst wenig Aufwand realisieren zu können.

Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

Hallo,
ich habe ein paar Versuche unternommen, das langsame auf- bzw. abdimmen über DOIF zu realisieren.
In diesem Bsp. wird das Reading "dim" des Enocean Devices mit einem Dummy-Reading verglichen, welches den Zielwert in % enthält. Es wird so lange im Sekundentakt hochgedimmt, bis das Zeil erreicht ist. Das funktioniert zwar, aber das Ganze frisst dermaßen viel Rechenzeit, dass mein Raspberry kaum noch reagiert. Er läuft bei 99,8% CPU-Last. Ohne dieses DOIF ist er bei 2%. Somit wohl der falsche Ansatz.
   
([+1] and [?OG.sz.DI.Christian:dim] <= [?Dimmer_2:Helligkeit])
(set OG.sz.DI.Christian dim {([?OG.sz.DI.Christian:dim]+1)})
DOELSE
(set Lampe 0)


Vielleicht hat ja jemand doch noch eine Lösung für eine individuelle RAMP-Time bei enocean Devices...

Spartacus.
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

krikan

Hallo!
Schau Dir mal https://forum.fhem.de/index.php/topic,51906.msg436451.html#msg436451 an. Vielleicht ist es damit ressourcenschonender umsetzbar.
Gruß, Christian

Damian

Mein Rechner ist etwas performanter, mit deiner Lösung steigt bei mir die Last immerhin von 0 % auf 1 %. Alleine set OG.sz.DI.Christian dim 0 braucht schon fast das eine zusätzliche Prozent.

Mit der Nutzung von Perlvariablen bleibt bei mir die Last auf 0 % Prozent:

([+1] and $defs{"$SELF"}{helper}{count} <= [$SELF:End])
  ({$defs{"$SELF"}{helper}{count}++})


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Damian am 05 Januar 2017, 22:34:36
Mein Rechner ist etwas performanter, mit deiner Lösung steigt bei mir die Last immerhin von 0 % auf 1 %. Alleine set OG.sz.DI.Christian dim 0 braucht schon fast das eine zusätzliche Prozent.

Mit der Nutzung von Perlvariablen bleibt bei mir die Last auf 0 % Prozent:

([+1] and $defs{"$SELF"}{helper}{count} <= [$SELF:End])
  ({$defs{"$SELF"}{helper}{count}++})


Ich sehe gerade, dass es dir nicht viel hilft, da du ja noch dimmen willst ;) und nicht nur einen Dummy setzen, so wie ich es bei mir getestet habe. Da wird dir wohl auch Perl nicht viel helfen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spartacus

Hallo zusammen,
ich danke Euch für das Feedback!

Ich werde den Link von Christian mal ausprobieren. Sollte dies ebenfalls zu viel Rechenzeit fressen, dann muss ich wohl auf das langsame Dimmen verzichten.

Ist aber auch zu blöd, das die "ollen" Enocean-Devices das nicht direkt unterstützen. M.W. ist das mit HomeMatic kein Thema!
Tja,
wieder mal auf die falsche Technik gesetzt  :(

Bis bald,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Damian

Zitat von: Spartacus am 06 Januar 2017, 15:53:20
Hallo zusammen,
ich danke Euch für das Feedback!

Ich werde den Link von Christian mal ausprobieren. Sollte dies ebenfalls zu viel Rechenzeit fressen, dann muss ich wohl auf das langsame Dimmen verzichten.

Ist aber auch zu blöd, das die "ollen" Enocean-Devices das nicht direkt unterstützen. M.W. ist das mit HomeMatic kein Thema!
Tja,
wieder mal auf die falsche Technik gesetzt  :(

Bis bald,
Christian

ja, ich befürchte allerdings, das die ganze Performance in set ... dim -Kommando verbleibt. Zum Vergleich kannst du auf deinem Rechner in deinem DOIF mit set  statt das Enocean-Devices einen Dummy setzen und die Auslastung messen, wenn sie unwesentlich höher als 2 % ist, dann weißt du wo die Last hingeht, dann kannst du dir gleich jegliche Perlprogrammierung für das Dimmen des Enocean-Devices sparen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spartacus

Moin Damian,
danke Dir, das versuche ich erst mal!
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

Hallo,
Damin hat recht! Mit einem Dummy läuft das ohne nennenswerte Lastzunahme (ca. 2%)
Die Ansteuerung von Enocean Devices frisst enorm viel CPU-Last bei mir. Selbst bei einem einfachen
"set OG.sz.DI.Christian on" schießt die CPU Last von ca. 15% (Grundrauschen) kurzzeitig auf über 50%. Bei einem Dim-Befehl liege ich dann fast bei 80%

Ist das normal, oder ist hier irgendwo der Wurm drin?

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R