Dummy mit Dimmer/Rampe für andere Geräte nutzen

Begonnen von Spiff, 09 März 2015, 21:56:40

Vorheriges Thema - Nächstes Thema

Spiff

Hi,

gibt es einen Dummy, den man für das Dimmen von "fremden" Geräten verwenden kann?

Ich benutze eine eigene RGB-Beleuchtung (über DMXControl) und das MediaPortal-Modul für die Musikwiedergabe.
Bei der Beleuchtung hätte ich gerne ein definierbares Faden von 0 bis 255 und bei der Lautstärke der Musik von 0 bis 100.

Ich habe einen FS20-Dummy ausprobiert ("set dummyfs20 dim100% 180"), aber ich sehe kein Reading o.ä., an das ich rankommen würde, um es über notify mit meinen Geräten zu verbinden.

Ich könnte vielleicht auch eine kleine Funktion schreiben, die für jede Stufe einen Timer definiert - aber ich dachte, es gibt ja schon verschiedene Module, die eine Rampe haben oder dimmen können; vielleicht kann ich mich da ja irgendwie einklinken.

Wäre für Tipps sehr dankbar!
Viele Grüße,
Spiff

Puschel74

Hallo,

damit
define Dum_Volume_D dummy
attr Dum_Volume_D alias Volume
attr Dum_Volume_D group Volume,
attr Dum_Volume_D room Radio
attr Dum_Volume_D setList state:slider,0,1,100
attr Dum_Volume_D webCmd state

bekommst du einen Slider am Dummy.
Darauf kannst du wunderbar per notify reagieren.
siehe Wiki zu StreamRadio.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Spiff

Ah mist, ich hab mich glaube ich nicht gut ausgedrückt.

Mir geht es nicht um das Dimmen selbst, sondern um das automatische "faden", also dass der set-Wert in einer definierbaren Zeit von x nach y läuft.
Also sowas wie set dummyfs20 dim100% 180.

Gibt's da generell verfügbare Routinen, auf die man zugreifen kann?

Gruß
Spiff

flurin

Zitat von: Spiff am 11 März 2015, 09:37:40
Ah mist, ich hab mich glaube ich nicht gut ausgedrückt.

Mir geht es nicht um das Dimmen selbst, sondern um das automatische "faden", also dass der set-Wert in einer definierbaren Zeit von x nach y läuft.
Also sowas wie set dummyfs20 dim100% 180.

Gibt's da generell verfügbare Routinen, auf die man zugreifen kann?

Gruß
Spiff

Das könnte man mit einer Perl-Funktion lösen aber mir ist es noch nicht klar, wie Du den Wert auswerten willst?

Angenommen eine Perl-Funktion liefert nach einem Startbefehl einen linearen Wert zwischen 0 und 255 innerhalb einer Zeitspanne von 3 min, wie willst Du diesen Wert verwenden?

Gruss
flurin

Spiff

Über ein notify, das darauf reagiert und das jeweilige Gerät mit set bedient.

Gruß
Spiff

flurin

#5
Zitat von: Spiff am 11 März 2015, 13:00:05
Über ein notify, das darauf reagiert und das jeweilige Gerät mit set bedient.

Gruß
Spiff

OK, hier ein erster Wurf (ohne Optimierung)

in 99_myUtils.pm kopieren:

{
my $x;

sub get_value($$$$)
{
  my ($y1,$y2,$time_length,$time_step) = @_;
 
  $x += $time_step;
  $x = $time_step if ($x > $time_length);
 
  my $y = $y1 + $x * ($y2 - $y1) / $time_length;
  Log(3, "x = $x - y = $y");
  return $y;
}
}


Anwendung (DEF-Editor):

define fade_dummy dummy

define di_fade DOIF ([+00:00:10]) ({my $var = get_value(0,255,180,10);; fhem("set fade_dummy $var")})
attr di_fade do always


Der Wert in fade_dummy wird zyklisch von 0 auf 255 innerhalb 180 sec in 10 sec Schritte erhöht.

define di_dimmer DOIF ([fade_dummy]) ({my $var = Value("fade_dummy");;Log(3, "dimmer $var")})
attr di_dimmer do always


oder mit einem notify:

define n_dimmer notify fade_dummy {my $var = Value("fade_dummy");Log(3, "dimmer $var")}

Gruss
flurin

Spiff

Hi flurin,

danke für deinen Vorschlag! Damit hat sich die erste Frage also beantwortet: anscheinend gibt es in dieser Richtung nichts bereits Verfügbares.

Dein Beispiel geht bei mir leider nicht, da scheint etwas mit der Formatierung falsch zu sein.
Es gibt ein error-Reading:
error
{my $var = get_value(0,255,180,10); fhem("set fade_dummy $var")}: Unknown command {my, try help. Unknown command fhem("set, try help.


Er scheint die geschweiften Klammern nicht als Perl-Befehl anzuerkennen.
Hast du eine Idee?

Gruß
Spiff

flurin

Zitat von: Spiff am 16 März 2015, 13:49:03
Hi flurin,

danke für deinen Vorschlag! Damit hat sich die erste Frage also beantwortet: anscheinend gibt es in dieser Richtung nichts bereits Verfügbares.

Dein Beispiel geht bei mir leider nicht, da scheint etwas mit der Formatierung falsch zu sein.
Es gibt ein error-Reading:
error
{my $var = get_value(0,255,180,10); fhem("set fade_dummy $var")}: Unknown command {my, try help. Unknown command fhem("set, try help.


Er scheint die geschweiften Klammern nicht als Perl-Befehl anzuerkennen.
Hast du eine Idee?

Gruß
Spiff

Vermutlich ein Semikolon-Problem

im Def-Editor ist ein Semikolon-Duett ;; nötig, in fhem.cfg wird ein Semikolon-Quartett ;;;; gespeichert

Spiff

Ah ja, das wars, danke.

Jetzt müsste die Funktion nur noch beim Erreichen des Zielwertes gestoppt werden.
...und im nächsten Schritt die Richtung umgekehrt werden können.

Das könnte auch für andere Anwendungen eine hilfreiche Zusatzfunktion werden.

Gruß
Spiff

flurin

Zitat von: Spiff am 16 März 2015, 15:10:40
Ah ja, das wars, danke.

Jetzt müsste die Funktion nur noch beim Erreichen des Zielwertes gestoppt werden.
...und im nächsten Schritt die Richtung umgekehrt werden können.

Das könnte auch für andere Anwendungen eine hilfreiche Zusatzfunktion werden.

Gruß
Spiff

Umkehren > erste zwei Parameter tauschen:


define di_fade DOIF ([+00:00:10]) ({my $var = get_value(255,0,180,10);; fhem("set fade_dummy $var")})


Stoppen > lässt sich in get_value relativ einfach umsetzen, sonst nachfragen.

Gruss
flurin

bartman121

Hallo,

ich habe diesen Thread hier gefunden, weil ich einen Sleepmodus für eine Squeezebox bauen will.

Ich möchte die Lautstärke in einer Rampe über 30Minuten in einer-Schritten senken.

Kann ich das für sowas nutzen oder gibt es etwas sinnvolleres?

czcbe

Wie würde man denn einen Stopp umsetzen? Die Funktion macht ja sonst eine Endlosschleife.

Danke für die Hilfe.
FHEM 5.9 mit TabletUI | Pagebuttonmenü | Win2012R2 | Lubuntu 18.04 | Load-Balancing/Failover 2xFHEM | cygwin | nanoCUL 433 | Harmony Hub | IT Funksteckdosen | Squeezebox-Server (LMS) | Kodi | Sprachsteuerung | Webcams | Wetteransage | Telegram Bot | Presence-Script | Winconnect-Powershell