Lineare Steigung zwischen zwei Eckwerten, ähnlich wie Heizkurve

Begonnen von Jogi, 02 Juni 2018, 13:10:31

Vorheriges Thema - Nächstes Thema

Jogi

Hallo zusammen,
ich würde gerne mehrere Dinge in meiner Anlage so automatisieren, dass sich Dinge linear ändern.
Beispiele:
Beleuchtung soll abhängig von der Außenhelligkeit gedimmt werden.
Heiztemperatur soll abhängig von der Außentemperatur verändert werden.
Die RGB-LED sollen Abhängikeit von der Uhrzeit die Farbe wechseln.

Das könnte ich natürlich alles mit einem DOIF bauen, aber das wird dann ein großes DOIF und das geht bestimmt einfacher.

Prinzipiell ist das ja alles so wie bei einer Heizkurve. Man gibt zwei Fixpunkte und die Steigung ein.
Bestimmt gibt es so ein Modul, allerdings habe ich es bei meinen Recherchen (hier im Forum und bei Google) nicht gefunden. Es gab zwar einige Treffer, aber nirgend war ein Bezug auf ein Modul, sondern es ging immer um fertige Lösungen z.B. zu Heizungsmodulen oder Homematic. Ich suche aber etwas, was ich universal anwenden kann. Ich will ja nicht nur Temperaturen, sondern z.B. auch Helligkeitswerte vergleichen.

Ich habe nach "Heizkurve" gesucht, aber vielleicht heisst es ganz anders. Daher wäre ein Tipp, wo ich es finden kann super.
Vielen Dank!


Damian

Zitat von: Jogi am 02 Juni 2018, 13:10:31
Hallo zusammen,
ich würde gerne mehrere Dinge in meiner Anlage so automatisieren, dass sich Dinge linear ändern.
Beispiele:
Beleuchtung soll abhängig von der Außenhelligkeit gedimmt werden.
Heiztemperatur soll abhängig von der Außentemperatur verändert werden.
Die RGB-LED sollen Abhängikeit von der Uhrzeit die Farbe wechseln.

Das könnte ich natürlich alles mit einem DOIF bauen, aber das wird dann ein großes DOIF und das geht bestimmt einfacher.

Prinzipiell ist das ja alles so wie bei einer Heizkurve. Man gibt zwei Fixpunkte und die Steigung ein.
Bestimmt gibt es so ein Modul, allerdings habe ich es bei meinen Recherchen (hier im Forum und bei Google) nicht gefunden. Es gab zwar einige Treffer, aber nirgend war ein Bezug auf ein Modul, sondern es ging immer um fertige Lösungen z.B. zu Heizungsmodulen oder Homematic. Ich suche aber etwas, was ich universal anwenden kann. Ich will ja nicht nur Temperaturen, sondern z.B. auch Helligkeitswerte vergleichen.

Ich habe nach "Heizkurve" gesucht, aber vielleicht heisst es ganz anders. Daher wäre ein Tipp, wo ich es finden kann super.
Vielen Dank!


wie in der Schule: <Steigung> und <y-Achsenabschnitt> musst du jeweils als Zahl einmal aus zwei Punkten berechnen und dann:

DOIF (...) (set bla {([X-wert]*<Steigung>+<y-Achsenabschnitt>)})



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

Byte09

Zitat von: Jogi am 02 Juni 2018, 13:10:31
Hallo zusammen,
ich würde gerne mehrere Dinge in meiner Anlage so automatisieren, dass sich Dinge linear ändern.
Beispiele:
Beleuchtung soll abhängig von der Außenhelligkeit gedimmt werden.
Heiztemperatur soll abhängig von der Außentemperatur verändert werden.
Die RGB-LED sollen Abhängikeit von der Uhrzeit die Farbe wechseln.

Das könnte ich natürlich alles mit einem DOIF bauen, aber das wird dann ein großes DOIF und das geht bestimmt einfacher.

Prinzipiell ist das ja alles so wie bei einer Heizkurve. Man gibt zwei Fixpunkte und die Steigung ein.
Bestimmt gibt es so ein Modul, allerdings habe ich es bei meinen Recherchen (hier im Forum und bei Google) nicht gefunden. Es gab zwar einige Treffer, aber nirgend war ein Bezug auf ein Modul, sondern es ging immer um fertige Lösungen z.B. zu Heizungsmodulen oder Homematic. Ich suche aber etwas, was ich universal anwenden kann. Ich will ja nicht nur Temperaturen, sondern z.B. auch Helligkeitswerte vergleichen.

Ich habe nach "Heizkurve" gesucht, aber vielleicht heisst es ganz anders. Daher wäre ein Tipp, wo ich es finden kann super.
Vielen Dank!

grundsätlich fallen mir dazu einige module ein, die das könnten . der aufwand dabei ist wohl eher die definitionen erstmal festzulegen .

welche helligkeit ( gemessen in was )  entpricht 100 % um den dimmer entsprechend auf auf den kleinsten wert zu setzen etc.
woher nimmst du diese eckdaten ?

welche aussentemperatur muss herschen , damit die heizung auf 100 % schaltet - welche für 0 %

etc.pp.

wie willst du das triggern ? auf ein event ( tempänderung/lichtänderung ) ?
zeitgesteuert ( alle x min ) ?

wenn du z.B einen dummy hättest in dem alle diese werte ( mind 4 in diesem fall ) stehen , (max helligkeit - entspricht 0% dimmer / min helligkeit / entspricht 100% dimmer ) , dann ist es nicht mehr so schwierig !


ggf. bastel ich nachher mal was und poste es.
grundsätzlich habe ich ein Device, was einen wert linear oder umgekehrt linear zu einem anderen wert setzt  schnell zusammegeklickt

gruss Byte09


Jogi

Vielen Dank für Eure Hinweise.

@Damian: Vielen Dank mit dem Hinweis auf die Möglichkeit auch im DOIF mit linearen Steigungen zu arbeiten. Das wusste ich bisher nicht. Da muss ich mich aber erst einmal reinfinden. Das DOIF ist so ein unglaublich umfangreiches, starkes und gutes Instrument, da habe ich noch lange nicht alle Möglichkeiten begriffen und mache leider noch viele Fehler und nutze es nicht richtig. Aber ich bleibe dran.

@Byte09: Ich möchte beispielsweise eine Lampe in Abhängigkeit der Außenhelligkeit dimmen.
Die Außenhelligkeit messe ich über ESPEasy:
Internals:
   CHANGED   
   DEF        192.168.178.63 80 espBridge ESP_Modul2_Reserve_Helligkeit
   ESP_BUILD  140
   ESP_SLEEP  0
   ESP_UNIT   0
   ESP_VERSION 9
   HOST       192.168.178.63
   IDENT      ESP_Modul2_Reserve_Helligkeit
   INTERVAL   300
   IODev      espBridge
   LASTInputDev espBridge
   MSGCNT     654
   NAME       Helligkeit
   NOTIFYDEV  global
   NR         232
   NTFY_ORDER 50-Helligkeit
   PORT       80
   STATE      Lux: 65535.00
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    1.39
   espBridge_MSGCNT 654
   espBridge_TIME 2018-06-03 12:13:51
   READINGS:
     2018-06-03 12:13:51   Lux             65535.00
     2018-06-03 12:14:09   presence        present
     2018-06-03 12:14:09   state           Lux: 65535.00
   helper:
     fpc        1527937920
     pm:
       Encode     1
       JSON       1
     received:
       Lux        1528020831
Attributes:
   IODev      espBridge
   Interval   300
   devStateStyle style=color:orange
   event-on-change-reading state,Lux,presence
   group      ESPEasy Device,Status,Wetter
   presenceCheck 1
   readingSwitchText 1
   room       1.Start,3.Temperatur,7.Aussen,ESPEasy
   setState   3
   sortby     8

Dimmen möchte ich einen Homematic Dimmer:
Internals:
   DEF        5DE6AE01
   NAME       Lampe_Flur
   NOTIFYDEV  global
   NR         1559
   NTFY_ORDER 50-Lampe_Flur
   STATE      off
   TYPE       CUL_HM
   chanNo     01
   device     HM_5DE6AE
   READINGS:
     2018-06-03 08:52:04   CommandAccepted yes
     2018-03-25 12:16:44   R-powerUpAction off
     2018-03-25 12:16:44   RegL_01.        30:06 32:50 33:64 34:4B 35:50 56:00 57:24 00:00
     2018-06-03 08:52:04   deviceMsg       off (to CUL868)
     2018-06-03 08:52:04   dim             stop:off
     2018-06-03 08:52:04   level           0
     2018-06-01 10:39:58   levelMissed     desired:0
     2018-06-03 08:52:04   overheat        off
     2018-06-03 08:52:04   overload        off
     2018-06-03 08:52:04   pct             0
     2018-06-03 08:52:04   recentStateType ack
     2018-06-03 08:52:04   reduced         off
     2018-06-03 08:52:04   state           off
     2018-06-03 08:52:04   timedOn         off
   helper:
     regLst     ,1,3p
     dir:
       cur        stop
       rct        up
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
Attributes:
   group      Lampen
   icon       scene_keyboard
   model      HM-LC-DIM1T-FM
   peerIDs    00000000,
   room       1.Start,4.Technik,CUL_HM
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
   webCmd     on:off

Meine Vorstellung wäre ungefähr so:
Außenhelligkeit: Lux:1500 => Dimmwert:80%
Außenhelligkeit: Lux:0 => Dimmwert:20%
Dazwischen soll eine lineare Regelung erfolgen.

Weitere Anwendungsbeispiele für mich sind:
Mit fortlaufender Uhrzeit soll die RGBW-Leiste die Blautöne durchwechseln: 20:00= hellblau, Helligkeit 100% // 22:00 dunkelblau, Helligkeit 70%. Dazwischen linear durch die Blautöne und Helligkeit.
Der Einschaltpunkt einer Pumpe soll in Abhängigkeit einer Raumtemperatur verschoben werden. Die Pumpe wird normalerweise bei 15 Grad Wassertemperatur eingeschaltet. Sofern die Raumtemperatur steigt soll sich der Wert nach oben verschieben. Beispiel: Bei 20 Grad Raumtemperatur: Einschalten bei 15 Grad Wassertemperatur. Bei 30 Grad Raumtemperatur: Einschalten bei 20 Grad Wassertemperatur. Dazwischen linear.

Welche/s Modul/e würdest Du dazu empfehlen?

Eine Info zum Verständnis. Ich erwarte hier keine fertigen Lösungen. In der Regel reicht mir ein Ansatz oder ein Beispiel und dann schaffe ich es meistens, mich da reinzuwurschteln.

Vielen Dank für Tipps.




Byte09

Zitat von: Jogi am 03 Juni 2018, 12:29:10
Vielen Dank für Eure Hinweise.

@Damian: Vielen Dank mit dem Hinweis auf die Möglichkeit auch im DOIF mit linearen Steigungen zu arbeiten. Das wusste ich bisher nicht. Da muss ich mich aber erst einmal reinfinden. Das DOIF ist so ein unglaublich umfangreiches, starkes und gutes Instrument, da habe ich noch lange nicht alle Möglichkeiten begriffen und mache leider noch viele Fehler und nutze es nicht richtig. Aber ich bleibe dran.

@Byte09: Ich möchte beispielsweise eine Lampe in Abhängigkeit der Außenhelligkeit dimmen.
Die Außenhelligkeit messe ich über ESPEasy:
Internals:
   CHANGED   
   DEF        192.168.178.63 80 espBridge ESP_Modul2_Reserve_Helligkeit
   ESP_BUILD  140
   ESP_SLEEP  0
   ESP_UNIT   0
   ESP_VERSION 9
   HOST       192.168.178.63
   IDENT      ESP_Modul2_Reserve_Helligkeit
   INTERVAL   300
   IODev      espBridge
   LASTInputDev espBridge
   MSGCNT     654
   NAME       Helligkeit
   NOTIFYDEV  global
   NR         232
   NTFY_ORDER 50-Helligkeit
   PORT       80
   STATE      Lux: 65535.00
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    1.39
   espBridge_MSGCNT 654
   espBridge_TIME 2018-06-03 12:13:51
   READINGS:
     2018-06-03 12:13:51   Lux             65535.00
     2018-06-03 12:14:09   presence        present
     2018-06-03 12:14:09   state           Lux: 65535.00
   helper:
     fpc        1527937920
     pm:
       Encode     1
       JSON       1
     received:
       Lux        1528020831
Attributes:
   IODev      espBridge
   Interval   300
   devStateStyle style=color:orange
   event-on-change-reading state,Lux,presence
   group      ESPEasy Device,Status,Wetter
   presenceCheck 1
   readingSwitchText 1
   room       1.Start,3.Temperatur,7.Aussen,ESPEasy
   setState   3
   sortby     8

Dimmen möchte ich einen Homematic Dimmer:
Internals:
   DEF        5DE6AE01
   NAME       Lampe_Flur
   NOTIFYDEV  global
   NR         1559
   NTFY_ORDER 50-Lampe_Flur
   STATE      off
   TYPE       CUL_HM
   chanNo     01
   device     HM_5DE6AE
   READINGS:
     2018-06-03 08:52:04   CommandAccepted yes
     2018-03-25 12:16:44   R-powerUpAction off
     2018-03-25 12:16:44   RegL_01.        30:06 32:50 33:64 34:4B 35:50 56:00 57:24 00:00
     2018-06-03 08:52:04   deviceMsg       off (to CUL868)
     2018-06-03 08:52:04   dim             stop:off
     2018-06-03 08:52:04   level           0
     2018-06-01 10:39:58   levelMissed     desired:0
     2018-06-03 08:52:04   overheat        off
     2018-06-03 08:52:04   overload        off
     2018-06-03 08:52:04   pct             0
     2018-06-03 08:52:04   recentStateType ack
     2018-06-03 08:52:04   reduced         off
     2018-06-03 08:52:04   state           off
     2018-06-03 08:52:04   timedOn         off
   helper:
     regLst     ,1,3p
     dir:
       cur        stop
       rct        up
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
Attributes:
   group      Lampen
   icon       scene_keyboard
   model      HM-LC-DIM1T-FM
   peerIDs    00000000,
   room       1.Start,4.Technik,CUL_HM
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
   webCmd     on:off

Meine Vorstellung wäre ungefähr so:
Außenhelligkeit: Lux:1500 => Dimmwert:80%
Außenhelligkeit: Lux:0 => Dimmwert:20%
Dazwischen soll eine lineare Regelung erfolgen.

Weitere Anwendungsbeispiele für mich sind:
Mit fortlaufender Uhrzeit soll die RGBW-Leiste die Blautöne durchwechseln: 20:00= hellblau, Helligkeit 100% // 22:00 dunkelblau, Helligkeit 70%. Dazwischen linear durch die Blautöne und Helligkeit.
Der Einschaltpunkt einer Pumpe soll in Abhängigkeit einer Raumtemperatur verschoben werden. Die Pumpe wird normalerweise bei 15 Grad Wassertemperatur eingeschaltet. Sofern die Raumtemperatur steigt soll sich der Wert nach oben verschieben. Beispiel: Bei 20 Grad Raumtemperatur: Einschalten bei 15 Grad Wassertemperatur. Bei 30 Grad Raumtemperatur: Einschalten bei 20 Grad Wassertemperatur. Dazwischen linear.

Welche/s Modul/e würdest Du dazu empfehlen?

Eine Info zum Verständnis. Ich erwarte hier keine fertigen Lösungen. In der Regel reicht mir ein Ansatz oder ein Beispiel und dann schaffe ich es meistens, mich da reinzuwurschteln.

Vielen Dank für Tipps.

habe dazu heute morgen was mit meinem modul gebastelt, dürfte genau deinen anforderungen entsprechen ( ausser farbe , das ist nochmal eine sache für sich - Helligkeit kein Problem) , da ich aber erst heute abend eine neue Version des moduls einspiele, die die benötigten daten importieren kann , kann ich dier das erst heute abend posten.

sieht aber in der angehängten art aus, und ist dann recht universell anwendbar, wobei du die Variablen ( $emin etc. nicht manuell belegen musst, sondern auch auf ein reading etc. zugreifen kannst .

gruss Byte09

Jogi

Zitat von: Byte09 am 03 Juni 2018, 14:38:39
habe dazu heute morgen was mit meinem modul gebastelt, dürfte genau deinen anforderungen entsprechen ( ausser farbe , das ist nochmal eine sache für sich - Helligkeit kein Problem) , da ich aber erst heute abend eine neue Version des moduls einspiele, die die benötigten daten importieren kann , kann ich dier das erst heute abend posten.

sieht aber in der angehängten art aus, und ist dann recht universell anwendbar, wobei du die Variablen ( $emin etc. nicht manuell belegen musst, sondern auch auf ein reading etc. zugreifen kannst .

gruss Byte09
Das sieht sehr interessant aus und ich bin schon sehr gespannt. Ich habe keine Eile und freue mich auf Deinen Beitrag.
Gruß,
Jogi

Byte09

Zitat von: Jogi am 03 Juni 2018, 15:43:00
Das sieht sehr interessant aus und ich bin schon sehr gespannt. Ich habe keine Eile und freue mich auf Deinen Beitrag.
Gruß,
Jogi

hat doch einen tag länger gedauert,ich habe die modulversion, welche die daten importieren kann eben in das GIT gestellt .
wenn du es probieren möchtest , bitte hier kurz einlesen https://wiki.fhem.de/wiki/MSwitch.pm .

nach installation und fhemneustart folgende RAWS einspielen:

defmod lineareingang dummy
attr lineareingang room Lineartest
attr lineareingang webCmd 100:130:230:430:500:1000

setstate lineareingang 1000
setstate lineareingang 2018-06-04 18:40:07 state 1000

defmod linearausgang dummy
attr linearausgang room Lineartest
attr linearausgang setList on off

setstate linearausgang 110
setstate linearausgang 2018-06-04 18:40:07 state 110


danach:
defmod Linearschalter MSwitch lineareingang # FreeCmd
attr Linearschalter MSwitch_Debug 0
attr Linearschalter MSwitch_Delete_Delays 1
attr Linearschalter MSwitch_Expert 0
attr Linearschalter MSwitch_Extensions 0
attr Linearschalter MSwitch_Help 0
attr Linearschalter MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr Linearschalter MSwitch_Include_Devicecmds 1
attr Linearschalter MSwitch_Include_MSwitchcmds 0
attr Linearschalter MSwitch_Include_Webcmds 0
attr Linearschalter MSwitch_Inforoom MSwitch
attr Linearschalter MSwitch_Lock_Quickedit 1
attr Linearschalter MSwitch_Mode Notify
attr Linearschalter room Lineartest

setstate Linearschalter active
setstate Linearschalter 2018-06-04 18:35:40 .Device_Affected FreeCmd-AbsCmd1,FreeCmd-AbsCmd2
setstate Linearschalter 2018-06-04 18:35:12 .Device_Affected_Details FreeCmd-AbsCmd1,cmd,cmd,{my $eingang =ReadingsVal( "lineareingang"## "state"## 0 );;my $emin=100;;my $emax=1000;;my $amin=20;;my $amax=110;;$eingang = $emin if $eingang < $emin;;$eingang = $emax if $eingang > $emax;;my $y= (($amax-$amin)/($emax-$emin)*($eingang-$emin))+$amin;;readingsSingleUpdate( $hash## "to_set"## int ($y)## 1 );;},,delay1,delay1,000000,000000,,,0,0|FreeCmd-AbsCmd2,cmd,cmd,set linearausgang [Linearschalter:to_set],,delay1,delay1,000000,000000,,,,
setstate Linearschalter 2018-06-04 18:40:07 .Device_Events no_trigger
setstate Linearschalter 2018-06-04 18:24:21 .First_init done
setstate Linearschalter 2018-06-04 18:39:34 .Trigger_cmd_off no_trigger
setstate Linearschalter 2018-06-04 18:39:34 .Trigger_cmd_on *
setstate Linearschalter 2018-06-04 18:39:23 .Trigger_condition
setstate Linearschalter 2018-06-04 18:39:34 .Trigger_off no_trigger
setstate Linearschalter 2018-06-04 18:39:34 .Trigger_on no_trigger
setstate Linearschalter 2018-06-04 18:39:23 .Trigger_time
setstate Linearschalter 2018-06-04 18:24:21 .V_Check V 0.3
setstate Linearschalter 2018-06-04 18:40:07 EVENT state: 1000
setstate Linearschalter 2018-06-04 18:40:07 EVTFULL lineareingang:state: 1000
setstate Linearschalter 2018-06-04 18:40:07 EVTPART1 lineareingang
setstate Linearschalter 2018-06-04 18:40:07 EVTPART2 state
setstate Linearschalter 2018-06-04 18:40:07 EVTPART3  1000
setstate Linearschalter 2018-06-04 18:40:07 Exec_cmd   set linearausgang [Linearschalter:to_set]
setstate Linearschalter 2018-06-04 18:39:23 Trigger_device lineareingang
setstate Linearschalter 2018-06-04 18:39:34 Trigger_log off
setstate Linearschalter 2018-06-04 18:40:07 last_event state: 1000
setstate Linearschalter 2018-06-04 18:48:25 state active
setstate Linearschalter 2018-06-04 18:40:07 to_set 110



sollte er beim einspielen nicht alle daten richtig laden ( habe da etwas probleme gehabt ) , hier nochmal ein seperates configfile , beschreibung zum einspielen im wiki:

#V V1.54
#S .Device_Affected -> FreeCmd-AbsCmd1,FreeCmd-AbsCmd2
#S .Device_Affected_Details -> FreeCmd-AbsCmd1,cmd,cmd,{my $eingang =ReadingsVal( "lineareingang"## "state"## 0 )[S]my $emin=100[S]my $emax=1000[S]my $amin=20[S]my $amax=110[S]$eingang = $emin if $eingang < $emin[S]$eingang = $emax if $eingang > $emax[S]my $y= (($amax-$amin)/($emax-$emin)*($eingang-$emin))+$amin[S]readingsSingleUpdate( $hash## "to_set"## int ($y)## 1 )[S]},,delay1,delay1,000000,000000,,,0,0|FreeCmd-AbsCmd2,cmd,cmd,set linearausgang [Linearschalter.to_set],,delay1,delay1,000000,000000,,,,
#S .Device_Events -> *
#S .First_init -> done
#S .Trigger_Whitelist -> undef
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> *
#S .Trigger_condition -> undef
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time -> undef
#S .V_Check -> V 0.3
#S Trigger_device -> lineareingang
#S Trigger_log -> off
#S last_event -> state: 500
#S state -> active
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Debug -> 0
#A MSwitch_Help -> 0
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Extensions -> 0
#A MSwitch_Include_Webcmds -> 0
#A room -> Lineartest
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Expert -> 0
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Mode -> Full
#A MSwitch_Delete_Delays -> 1


bittenach dem einspielen immer einmal 'modify trigger device ' klicken .

weiteres gerne im MSwitch Thread  .... essen steht auf dem Tisch  ;)
https://forum.fhem.de/index.php/topic,86199.0.html


gruss Byte09

Jogi

Wow,
das sieht nach einem mächtigen Tool aus!
VIELEN DANK für deine Mühe.

Das werde ich aber nicht so mal eben nebenbei ausprobieren, sondern planen.

Gruß,
Jogi

Prof. Dr. Peter Henning

Das Problem ist dabei, dass die Zahlenwerte bei den Dimmern in der Regel nicht mit der tatsächlichen Helligkeit übereinstimmen. Genauso, wie beim Rollladenaktor "50%" in der Regel nicht bedeutet, dass der Rollladen zu 50% heruntergefahren wurde. Insofern ist das ein frommer Wunsch, dass sich Werte linear ändern sollen.

Eine Änderung von Farben ist linear ebenfalls reichlich sinnlos. Stattdessen habe ich hier schon vor Jahren ein etwas ausgefeilteres Verfahren beschrieben, um an eine Farbskala zu kommen: https://wiki.fhem.de/wiki/Temperaturfarbe. Ist auch im Modul Color enthalten, siehe https://wiki.fhem.de/wiki/Color#Farbskala_mit_Color::pahColor

Genauere Diskussion in den SmartHome Hacks.

LG

pah


Byte09

Zitat von: Prof. Dr. Peter Henning am 05 Juni 2018, 16:30:03
Das Problem ist dabei, dass die Zahlenwerte bei den Dimmern in der Regel nicht mit der tatsächlichen Helligkeit übereinstimmen. Genauso, wie beim Rollladenaktor "50%" in der Regel nicht bedeutet, dass der Rollladen zu 50% heruntergefahren wurde. Insofern ist das ein frommer Wunsch, dass sich Werte linear ändern sollen.

sicherlich hast du recht , aber ich denke für eine z.B anpassung der innenlichtverhältnisse an die Aussenlichtverhältnisse , oder entsprechende Jalousiefahrten ist dieses wohl zu vernachlässigen - im schlimmsten Fall kann man das ja auch durch eine Änderung der Formel etwas 'verbiegen' .


Zitat von: Prof. Dr. Peter Henning am 05 Juni 2018, 16:30:03
Eine Änderung von Farben ist linear ebenfalls reichlich sinnlos. Stattdessen habe ich hier schon vor Jahren ein etwas ausgefeilteres Verfahren beschrieben, um an eine Farbskala zu kommen: https://wiki.fhem.de/wiki/Temperaturfarbe. Ist auch im Modul Color enthalten, siehe https://wiki.fhem.de/wiki/Color#Farbskala_mit_Color::pahColor

Genauere Diskussion in den SmartHome Hacks.

LG

pah

Der Sache mit dem Farbverlauf stimme ich zu , sehe ich auch so - das ist wohl etwas aufwendiger.

fruss Byte09

Prof. Dr. Peter Henning

Na ja. Ich habe einen sehr großen Terrassenrollladen, bei dem die "Halb"-Stellung wegen des relativ schleppenden Anlaufs einem Parameterwert von 70% entspricht. Insofern nicht vernachlässigbar.

Verbiegen braucht man das in diesem Fall noch nicht einmal, es reicht, einen Offset und eine Steigung einzubauen. Irgendwo im Hinterkopf habe ich ein Modul, mit dem man beliebige (auch nichtlineare...) Umrechungen einer einzelnen Skala an Hand von wenigen Stützstellen machen kann. Geht ganz ähnlich wie in den Bezierkurven bei den Farbskalen.


LG

pah

kotaro

Zitat von: Prof. Dr. Peter Henning am 05 Juni 2018, 17:15:50
Na ja. Ich habe einen sehr großen Terrassenrollladen, bei dem die "Halb"-Stellung wegen des relativ schleppenden Anlaufs einem Parameterwert von 70% entspricht. Insofern nicht vernachlässigbar.

Verbiegen braucht man das in diesem Fall noch nicht einmal, es reicht, einen Offset und eine Steigung einzubauen. Irgendwo im Hinterkopf habe ich ein Modul, mit dem man beliebige (auch nichtlineare...) Umrechungen einer einzelnen Skala an Hand von wenigen Stützstellen machen kann. Geht ganz ähnlich wie in den Bezierkurven bei den Farbskalen.


LG

pah

Hallo,

hast du mittlerweise die Formel gefunden?
ich würde genau diese (ähnlich wie das Color:pahcolor) für die Helligkeit nutzen (ähnlich wie mit einem Rolladen ^^). Daher wäre ich sehr interessiert

lg
Mathias