Hauptmenü

Ikea dimmen - langsam

Begonnen von ChristianH, 31 August 2018, 10:42:06

Vorheriges Thema - Nächstes Thema

ChristianH

Hallo,

ich habe das Forum durchsucht und nicht das Richtige gefunden. Wenn ich es richtig verstanden habe, dann ist die dim Zeitfunktion für F20 Devices, ich würde aber gerne ein IKEA Device, welches über jtraedfri angebunden, langsam Zeitgesteuert dimmen. Rein fiktiv so etwas wie dies.

18:00 - 90%
18:25-18:30 schrittweise dimmen auf 60%
22:25-22:30 schrittweise dimmen auf 40%
23:55 - 0%

Ich habe keinen Stress für jeden dieser Zeitpunkte ein AT zu generieren, weiss bloss nicht, wie ich die, in diesem Beispiel, 5 Minuten Dimintervalle realisieren kann. Hat jemand so etwas schon mal gemacht. Muss ja gar nicht ein IKEA device sein, einfach einen Wert Schrittweise über ein Zeitintervall verändert.

Gruss

Christian

Damian

Zitat von: ChristianH am 31 August 2018, 10:42:06
Hallo,

ich habe das Forum durchsucht und nicht das Richtige gefunden. Wenn ich es richtig verstanden habe, dann ist die dim Zeitfunktion für F20 Devices, ich würde aber gerne ein IKEA Device, welches über jtraedfri angebunden, langsam Zeitgesteuert dimmen. Rein fiktiv so etwas wie dies.

18:00 - 90%
18:25-18:30 schrittweise dimmen auf 60%
22:25-22:30 schrittweise dimmen auf 40%
23:55 - 0%

Ich habe keinen Stress für jeden dieser Zeitpunkte ein AT zu generieren, weiss bloss nicht, wie ich die, in diesem Beispiel, 5 Minuten Dimintervalle realisieren kann. Hat jemand so etwas schon mal gemacht. Muss ja gar nicht ein IKEA device sein, einfach einen Wert Schrittweise über ein Zeitintervall verändert.

Gruss

Christian

Eine mögliche Lösung wäre: https://forum.fhem.de/index.php/topic,84969.msg831798.html#msg831798

Die Befehle, die Prozentangaben und die Zeiten lassen sich leicht anpassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ChristianH

Ok, wir sprechen also gerade über:

defmod LED_Simulation DOIF init {@{$_a}=qw/121212 242424 363636 474747 595959 6B6B6B 7D7D7D 8F8F8F A1A1A1 B3B3B3 C4C4C4 D6D6D6 E8E8E8 FAFAFA FFFFFF/;;$_counter=0}\
main {if ([11:10-12:21,+00:04]) {fhem"set Aquarium RGB $_a[$_counter++]";; $_counter=($_counter==@{$_a} ? 0:$_counter)}}


Zugegeben, ich verstehe es nicht  :-[

Am Anfang definierst du ein Array {$_a} und setzt einen Counter erst einmal auf 0.

Dann, und nun geht es mit einem "educated guess" los:


  • zwischen 11:10 und 12:21 machst du was in 4min Schritten
  • du erhöhst du den counter++
  • verlassen sie mich

Richtig?

Christian

Beta-User

Das mit den Dimmintervallen ginge auch mit einem wiederholenden at:define a1 at +*{5}00:00:10 set Test_Dimmer dimdownDas define müßte dann über ein at (10 Min vor dem eigentlichen Ausführungszeitpunkt) erfolgen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

r00t2

#4
Zitat von: ChristianH am 31 August 2018, 11:16:17...
Zugegeben, ich verstehe es nicht  :-[...
Wenn man es ein wenig entzerrt ist es lesbarer:

{
  @{$_a}=qw/121212 242424 363636 474747 595959 6B6B6B 7D7D7D 8F8F8F A1A1A1 B3B3B3 C4C4C4 D6D6D6 E8E8E8 FAFAFA FFFFFF;
  $_counter=0
}

main
{
  if ([11:10-12:21,+00:04])
  {
    fhem"set Aquarium RGB $_a[$_counter++]";
    $_counter=($_counter==@{$_a} ? 0:$_counter
  }
}


Zuerst wird ein Farbwert-Array mit 15 Werten (also den Array-Indexen von 0 .. 14) erzeugt und dann eine Zählervariable mit 0 initialisiert.

Dann (in main) wird zwischen 1110h und 1221h alle 4 Minuten der Farbwert auf den Wert an Stelle "counter" des Arrays gesetzt. Z. B. ganz am Anfang auf den Wert von Array[0], was 121212  wäre. Danach wird gleich noch der Zähler (counter) im 1 erhöht.

Schließlich wird geprüft, ob der Wert des Zählers der Länge des zuvor angelegten Arrays entspricht. Ist das der Fall, wird der Zähler wieder auf 0 gesetzt. Ist es nicht der Fall, wird der Wert gleich gelassen.

Und die Schleife beginnt von neuem - falls die angegebene Zeitspanne nicht schon rum ist.

Hoffe ich habe nichts grob fahrlässig übersehen :)

Gruß

P.S. @ChristianH oder Damian:
Sind die Übergänge dann wirklich "hart" oder berechnet die Hardware im Hintergrund aus den fixen Werten einen weichen Übergang?
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

ChristianH

@Beta-User ....

Den DIMDOWN Befehl gibt es ja nun mal nur für FS20 Devices

Bezüglich harter Übergang, ja, eine Reduktion von 30% ist schon deutlich sichtbar und wird im Bruchteil einer Sekunde durchgeführt, deswegen wollte ich es ja auch ziehen.

Christian

Beta-User

Zitat von: ChristianH am 31 August 2018, 11:41:02
@Beta-User ....
Den DIMDOWN Befehl gibt es ja nun mal nur für FS20 Devices
War nur als Anregung gedacht für weitere eigene Überlegungen. 

Auf die Schnelle in die Richtung: im "Start-at" gleich einen Dimmwert festlegen und dann zusätzlich das "Wiederholungs-at" definieren, in welchem dann der derzeitige Dimmlevel des Devices mit ReadingsVal() ausgelesen und davon was abgezogen und das als neuer Dimmwert festgelegt wird.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

Zitat von: r00t2 am 31 August 2018, 11:27:19
Wenn man es ein wenig entzerrt ist es lesbarer:

{
  @{$_a}=qw/121212 242424 363636 474747 595959 6B6B6B 7D7D7D 8F8F8F A1A1A1 B3B3B3 C4C4C4 D6D6D6 E8E8E8 FAFAFA FFFFFF;
  $_counter=0
}

main
{
  if ([11:10-12:21,+00:04])
  {
    fhem"set Aquarium RGB $_a[$_counter++]";
    $_counter=($_counter==@{$_a} ? 0:$_counter
  }
}


Zuerst wird ein Farbwert-Array mit 15 Werten (also den Array-Indexen von 0 .. 14) erzeugt und dann eine Zählervariable mit 0 initialisiert.

Dann (in main) wird zwischen 1110h und 1221h alle 4 Minuten der Farbwert auf den Wert an Stelle "counter" des Arrays gesetzt. Z. B. ganz am Anfang auf den Wert von Array[0], was 121212  wäre. Danach wird gleich noch der Zähler (counter) im 1 erhöht.

Schließlich wird geprüft, ob der Wert des Zählers der Länge des zuvor angelegten Arrays entspricht. Ist das der Fall, wird der Zähler wieder auf 0 gesetzt. Ist es nicht der Fall, wird der Wert gleich gelassen.

Und die Schleife beginnt von neuem - falls die angegebene Zeitspanne nicht schon rum ist.

Hoffe ich habe nichts grob fahrlässig übersehen :)


Hast du nicht. Es ist im Wesentlichen Perl-Code, der um Ereignissteuerung hier [11:10-12:21,+00:04] erweitert ist.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

r00t2

Zitat von: Damian am 31 August 2018, 11:50:24
Hast du nicht. Es ist im Wesentlichen Perl-Code, der um Ereignissteuerung hier [11:10-12:21,+00:04] erweitert ist.
Danke.

Der TO möchte die Farbwertänderungen nun gerne weich haben. Das ist mit dem Codeschnipsel aber alleine nicht möglich, sondern die angeschlossene Hardware bzw. das angesteuerte Modul (bei Dir "Aquarium ") muss das (zusammen mit der Hardware) bewerkstelligen, richtig?

Ist die Frage, ob das die Ikea Module und die Hardware können.
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

Byte09

Hi Christian

Das kannst du mit einem MSwitch in einem Device mit ein paar Klicks lösen . Bin gerade unterwegs , von daher kurz.  Schreibe dir aber heute abend gerne was dazu. 

Gruss Byte09
Zitat von: ChristianH am 31 August 2018, 10:42:06
Hallo,

ich habe das Forum durchsucht und nicht das Richtige gefunden. Wenn ich es richtig verstanden habe, dann ist die dim Zeitfunktion für F20 Devices, ich würde aber gerne ein IKEA Device, welches über jtraedfri angebunden, langsam Zeitgesteuert dimmen. Rein fiktiv so etwas wie dies.

18:00 - 90%
18:25-18:30 schrittweise dimmen auf 60%
22:25-22:30 schrittweise dimmen auf 40%
23:55 - 0%

Ich habe keinen Stress für jeden dieser Zeitpunkte ein AT zu generieren, weiss bloss nicht, wie ich die, in diesem Beispiel, 5 Minuten Dimintervalle realisieren kann. Hat jemand so etwas schon mal gemacht. Muss ja gar nicht ein IKEA device sein, einfach einen Wert Schrittweise über ein Zeitintervall verändert.

Gruss

Christian

Gesendet von meinem SM-G900F mit Tapatalk


Damian

#10
Zitat von: r00t2 am 31 August 2018, 12:07:56
Danke.

Der TO möchte die Farbwertänderungen nun gerne weich haben. Das ist mit dem Codeschnipsel aber alleine nicht möglich, sondern die angeschlossene Hardware bzw. das angesteuerte Modul (bei Dir "Aquarium ") muss das (zusammen mit der Hardware) bewerkstelligen, richtig?

Ist die Frage, ob das die Ikea Module und die Hardware können.

Ich habe das Aquariumbeispiel aufgrund einer konkreten Anfrage gebastelt. Welches Device welche Befehle akzeptiert, weiß ich im einzelnen auch nicht.

Es ging mir um die Anforderung:  eine Abfolge von Befehlen abzubilden und dabei die Werte in einer Liste abzulegen.

Die ursprüngliche Idee es so zu lösen kam von hier: https://forum.fhem.de/index.php/topic,90259.msg827210.html#msg827210
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Damit hätte man eine weichere Dimmdown-Simulation in 20 Minuten, je Minute in 5-er Schritten:

defmod LED_Simulation DOIF init {$_value=100}\
main {if ([15:00-15:21,+00:01]) {fhem"set lampe pct $_value";; $_value-=5} else {$_value=100}}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ChristianH

Zitat von: Byte09 am 31 August 2018, 12:15:06
Hi Christian

Das kannst du mit einem MSwitch in einem Device mit ein paar Klicks lösen . Bin gerade unterwegs , von daher kurz.  Schreibe dir aber heute abend gerne was dazu. 

Gruss Byte09
Gesendet von meinem SM-G900F mit Tapatalk
Hey Byte09,

Magst du das mit dem MSwitch noch genauer erklären?

Danke Christian

Gesendet von meinem ONEPLUS A5010 mit Tapatalk


Byte09

Zitat von: ChristianH am 01 September 2018, 07:30:51
Hey Byte09,

Magst du das mit dem MSwitch noch genauer erklären?

Danke Christian

Gesendet von meinem ONEPLUS A5010 mit Tapatalk

gib mir doch bitte mal ein list von deinem IKEA Device welches du schalten wills.

gruss Byte09

ChristianH

Hier mal das eine Device



Internals:
   DEF        65544
   IODev      TradfriGateway
   LASTInputDev TradfriGateway
   MSGCNT     4
   NAME       trafo_wohnzimmer
   NR         298
   STATE      off
   TYPE       TradfriDevice
   TradfriGateway_MSGCNT 4
   TradfriGateway_TIME 2018-09-01 09:15:02
   address    65544
   name       trafo_wohnzimmer
   Helper:
     DBLOG:
       lastSeen:
         myDbLog:
           TIME       1535785527.75668
           VALUE      Sat, 01 Sep 2018 07:05:31 GMT
       onoff:
         myDbLog:
           TIME       1535786102.48823
           VALUE      off
       pct:
         myDbLog:
           TIME       1535786102.48823
           VALUE      0
       state:
         myDbLog:
           TIME       1535786102.48823
           VALUE      off
   READINGS:
     2018-08-25 21:28:53   createdAt       Sat, 25 Aug 2018 07:05:22 GMT
     2018-08-25 21:39:44   dimvalue        25
     2018-09-01 09:05:27   lastSeen        Sat, 01 Sep 2018 07:05:31 GMT
     2018-08-25 21:28:53   manufacturer    IKEA of Sweden
     2018-08-25 21:28:53   name            expedit
     2018-09-01 09:15:02   onoff           off
     2018-09-01 09:15:02   pct             0
     2018-08-25 21:28:53   reachableState  1
     2018-08-25 21:28:53   softwareVersion 1.2.245
     2018-09-01 09:15:02   state           off
     2018-08-25 21:28:53   type            TRADFRI transformer 10W
Attributes:
   group      Licht
   icon       dim31%
   room       Ikea,Licht,Wohnzimmer
   userattr   room_map structexclude
   webCmd     on:off:dimvalue


Gruss

Christian