FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Damian am 29 Januar 2022, 19:25:50

Titel: Wunschtemperaturen
Beitrag von: Damian am 29 Januar 2022, 19:25:50
Hiermit kann man eine Steuerung der Raumtemperaturen mit GUI für sein Smart Home erstellen. Der Verlauf der Raumtemperaturen wird visualisiert. Die Anzahl der Zeitpunkte sowie Anzahl der Räume kann beliebig erweitert werden. Funktioniert mit Wandthermostaten von Homematic, kann jedoch auch für andere Thermostate leicht angepasst werden.

defmod di_Therm DOIF subs  {\
## Schaltzeitpunkte, Liste kann angepasst werden  \
@{$_Timer}= qw(morgens vormittags nachmittags abends);;\
@{$_Timer_default_at} = qw(04:00 08:00 13:00 22:00);;\
@{$_Timer_default_we} = qw(05:00 09:00 13:00 22:00);;\
$_temp_default_at=20;; ## Wunschtemperaturvorgabe für Arbeitstage\
$_temp_default_we=20;; ## Wunschtemperaturvorgabe fürs Wochenende\
$_temp_default_diff=1;; ## Reduzierung der Wunschtemperatur außerhalb der Heizzeiten um X-Grad\
\
\
## Definition der Räume mit dazugehörigen Thermostaten, Angaben können zweilenweise erweitert werden\
push (@{$_sc},[qw(Bad TH_Bad_HM)]);;\
push (@{$_sc},[qw(Dachgeschoss TH_DG_HM)]);;\
push (@{$_sc},[qw(Kueche TH_Kueche_HM)]);;\
push (@{$_sc},[qw(Kinderzimmer_ost TH_Kz_o_HM)]);;\
push (@{$_sc},[qw(Kinderzimmer_west TH_Kz_w_HM)]);;\
push (@{$_sc},[qw(Wohnzimmer TH_WZ_HM)]);;\
push (@{$_sc},[qw(Keller TH_Keller_HM)]);;\
\
## Bei Initialisierung oder Änderung der Definition werden Timer-Readings und Temperatur-Readings erstellt und vorbelegt\
if ($::init_done) {\
    fhem("deletereading $SELF .*");;   ## Lösche alle Readings\
for (my $j=0;;$j<@{$_Timer};;$j++)  { ## Für alle Timer\
  set_Reading($_Timer[$j],$_Timer_default_at[$j]);; ## Vorbelegung der Zeit für Arbeitstage\
  set_Reading("$_Timer[$j]_WE",$_Timer_default_we[$j]);; ## Vorbelegung der Zeit für Wochenende\
      for (my $i=0;;$i < @{$_sc};;$i++)  { ## Vorbelegung der Wunschtemperaturen für alle Räume\
     set_Reading("$_sc[$i][0]_temp_at_$_Timer[$j]",$j % 2 ? $_temp_default_at-$_temp_default_diff: $_temp_default_at);;\
set_Reading("$_sc[$i][0]_temp_we_$_Timer[$j]",$j % 2 ? $_temp_default_we-$_temp_default_diff: $_temp_default_we);;\
  }\
}\
}\
\
sub temp_at_set { ## Routine zum Setzen der Wunschtemperaturen aller Räume für einen Zeitpunkt an Arbeitstagen\
  my ($timer)=@_;;\
  for (my $i=0;;$i< @{$_sc};;$i++)  {\
     fhem_set("$_sc[$i][1] desired-temp ".get_Reading ("$_sc[$i][0]_temp_at_$timer"));;\
  }\
}\
sub temp_we_set { ## Routine zum Setzen der Wunschtemperaturen aller Räume für einen Zeitpunkt am Wochenende\
  my ($timer)=@_;;\
  for (my $i=0;;$i< @{$_sc};;$i++)  {\
fhem_set("$_sc[$i][1] desired-temp ".get_Reading ("$_sc[$i][0]_temp_we_$timer"));;\
  }\
}\
} ## subs\
\
DEF TPL_set_temp ( ## Definition des Templates namens TPL_set_temp zum Setzen der Thermostat-Vorgabetemperatur\
Timer_at_$1 {[$2|AT];;temp_at_set("$1");;}  ## Block zum Setzen der Wunschtemperatur an Arbeitstagen, Parameter: $1:Timername, $2:Time_AT\
Timer_we_$1 {[$3|WE];;temp_we_set("$1");;}  ## Block zum Setzen der Wunschtemperatur am Wochenende,   Parameter: $1:Timername, $3:Time_WE\
) ## TPL_set_temp\
\
## Generierung der Steuerung pro Raum mit Hilfe des obigen Templates\
FOR(@{$_Timer},TPL_set_temp($1,[$SELF:$_],[$SELF:$1_WE]))
attr di_Therm room Heizung
attr di_Therm uiTable {\
  package ui_Table;;\
  $TABLE='text-align:right;;';;\
  $TD{0}{2..5} = "align='center'";;\
  $TC{0}="align='left'";;\
}\
\
""|""|FOR (@{$_Timer},"$1"|)""\
""|"Arbeitstage"|FOR (@{$_Timer},WID([$SELF:$1],"time")|)""\
""|"Wochenende"|FOR (@{$_Timer},WID([$SELF:$1_WE],"time")|)""\
FOR (@{$_sc},"$1$1"|card([$1$2:measured-temp:col1d],undef,"temperature_humidity\@silver",17,23,undef,undef,"°C",\&temp_hue,"1,,fill:silver","130,1,,1,,,",undef,undef,[$1$2:humidity:col1d],40,60,undef,undef,"%",\&hum_hue,"0,,fill:silver")|FOR(@{$_Timer},("AT: ".widget([$SELF:$1$1_temp_at_$2],"selectnumbers,18,0.5,22,1,lin"),,"WE: ".widget([$SELF:$1$1_temp_we_$2],"selectnumbers,18,0.5,22,1,lin")|))"")


Edit: Der aktuelle Code wurde ins Wiki übernommen: https://wiki.fhem.de/wiki/DOIF/Automatisierung#Steuerung_von_Raumthermostaten_f.C3.BCr_mehrere_R.C3.A4ume_mit_GUI
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 30 Januar 2022, 09:35:48
Man kann den Code auch so erweitern, dass man statt der Feuchtigkeit den Schaltverlauf der Stellantriebe zeitlich festhält. Ebenfalls lässt sich per Icon visualisieren, ob gerade das Ventil offen ist oder geschlossen - bei Interesse melden.
Titel: Antw:Wunschtemperaturen
Beitrag von: FHEM-User22 am 30 Januar 2022, 09:56:30
Hallo Damian,

Super, das istt ganz große Klasse.

Ich hätte Interesse an den Erweiterungen.


Schönen Sonntag
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 30 Januar 2022, 10:11:06
Zitat von: FHEM-User22 am 30 Januar 2022, 09:56:30
Hallo Damian,

Super, das istt ganz große Klasse.

Ich hätte Interesse an den Erweiterungen.


Schönen Sonntag

Na, dann. Bei Fragen zum Code oder bei erforderlichen Anpassungen für eigene Geräte, bitte melden.

defmod di_Therm DOIF subs  {\
## Schaltzeitpunkte, Liste kann angepasst werden  \
@{$_Timer}= qw(morgens vormittags nachmittags abends);;\
@{$_Timer_default_at} = qw(04:00 08:00 13:00 22:00);;\
@{$_Timer_default_we} = qw(05:00 09:00 13:00 22:00);;\
$_temp_default_at=20;; ## Wunschtemperaturvorgabe für Arbeitstage\
$_temp_default_we=20;; ## Wunschtemperaturvorgabe fürs Wochenende\
$_temp_default_diff=1;; ## Reduzierung der Wunschtemperatur außerhalb der Heizzeiten um X-Grad\
\
\
## Angaben: Raumbezeichnung, Thermostat, Schalter;; Angaben können zweilenweise erweitert werden\
push (@{$_sc},[qw(Bad TH_Bad_HM H_Bad)]);;\
push (@{$_sc},[qw(Dachgeschoss TH_DG_HM H_DG)]);;\
push (@{$_sc},[qw(Kueche TH_Kueche_HM H_Kueche)]);;\
push (@{$_sc},[qw(Kinder_ost TH_Kz_o_HM H_Kz_o)]);;\
push (@{$_sc},[qw(Kinder_west TH_Kz_w_HM H_Kz_w)]);;\
push (@{$_sc},[qw(Wohnzimmer TH_WZ_HM H_WZ)]);;\
push (@{$_sc},[qw(Keller TH_Keller_HM H_Keller)]);;\
\
## Bei Initialisierung oder Änderung der Definition werden Timer-Readings und Temperatur-Readings erstellt und vorbelegt\
if ($::init_done) {\
    fhem("deletereading $SELF .*");;   ## Lösche alle Readings\
for (my $j=0;;$j<@{$_Timer};;$j++)  { ## Für alle Timer\
  set_Reading($_Timer[$j],$_Timer_default_at[$j]);; ## Vorbelegung der Zeit für Arbeitstage\
  set_Reading("$_Timer[$j]_WE",$_Timer_default_we[$j]);; ## Vorbelegung der Zeit für Wochenende\
      for (my $i=0;;$i < @{$_sc};;$i++)  { ## Vorbelegung der Wunschtemperaturen für alle Räume\
     set_Reading("$_sc[$i][0]_temp_at_$_Timer[$j]",$j % 2 ? $_temp_default_at-$_temp_default_diff: $_temp_default_at);;\
set_Reading("$_sc[$i][0]_temp_we_$_Timer[$j]",$j % 2 ? $_temp_default_we-$_temp_default_diff: $_temp_default_we);;\
  }\
}\
}\
\
sub temp_at_set { ## Routine zum Setzen der Wunschtemperaturen aller Räume für einen Zeitpunkt an Arbeitstagen\
  my ($timer)=@_;;\
  for (my $i=0;;$i< @{$_sc};;$i++)  {\
     fhem_set("$_sc[$i][1] desired-temp ".get_Reading ("$_sc[$i][0]_temp_at_$timer"));;\
  }\
}\
sub temp_we_set { ## Routine zum Setzen der Wunschtemperaturen aller Räume für einen Zeitpunkt am Wochenende\
  my ($timer)=@_;;\
  for (my $i=0;;$i< @{$_sc};;$i++)  {\
fhem_set("$_sc[$i][1] desired-temp ".get_Reading ("$_sc[$i][0]_temp_we_$timer"));;\
  }\
}\
} ## subs\
\
DEF TPL_set_temp ( ## Definition des Templates namens TPL_set_temp zum Setzen der Thermostat-Vorgabetemperatur\
Timer_at_$1 {[$2|AT];;temp_at_set("$1");;}  ## Block zum Setzen der Wunschtemperatur an Arbeitstagen, Parameter: $1:Timername, $2:Time_AT\
Timer_we_$1 {[$3|WE];;temp_we_set("$1");;}  ## Block zum Setzen der Wunschtemperatur am Wochenende,   Parameter: $1:Timername, $3:Time_WE\
) ## TPL_set_temp\
\
## Generierung der Steuerung pro Raum mit Hilfe des obigen Templates\
FOR(@{$_Timer},TPL_set_temp($1,[$SELF:$_],[$SELF:$1_WE]))
attr di_Therm room Heizung
attr di_Therm uiTable {\
  package ui_Table;;\
  $TABLE='text-align:right;;';;\
  $TD{0}{2..5} = "align='center'";;\
  $TC{0}="align='left'";;\
  \
  sub onoff_hue {\
    my($redblue)=@_;;\
    return ($redblue == 0 ? 240 : 0);;  \
  }\
}\
\
""|""|FOR (@{$_Timer},"$1"|)""\
""|"Arbeitstage"|FOR (@{$_Timer},WID([$SELF:$1],"time")|)""\
""|"Wochenende"|FOR (@{$_Timer},WID([$SELF:$1_WE],"time")|)""\
FOR (@{$_sc},"$1$1"|card([$1$2:measured-temp:col1d],undef,[$1$3:state] eq "off" ? "sani_floor_heating_neutral\@silver" : "sani_floor_heating\@red" ,15,25,undef,undef,"°C",\&temp_hue,"1,,fill:silver","130,1,1,1,1,,",undef,undef,[$1$3:onoff:col1d],0,5,0,0,"I-O",\&onoff_hue,"0,,fill:silver")|FOR(@{$_Timer},("AT: ".widget([$SELF:$1$1_temp_at_$2],"selectnumbers,18,0.5,22,1,lin"),,"WE: ".widget([$SELF:$1$1_temp_we_$2],"selectnumbers,18,0.5,22,1,lin")|))"")



Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 30 Januar 2022, 10:29:31
Wichtig ist noch, dass man den Status des Relais auf 1/0 abbildet, das kann man über userReadings der Schalter einfach realisieren, z. B.:

attr H_Bad userReadings onoff {ReadingsVal($name,"state",0) ne "on" ? 0 : 1}

oder für alle betroffenen Stellantriebschalter der Räume mit:

attr <Regex der Schalternamen> userReadings onoff {ReadingsVal($name,"state",0) ne "on" ? 0 : 1}
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 30 Januar 2022, 10:42:49
Man kann die Grafik auch auseinanderziehen, falls mehr Details gewünscht sind:

Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 30 Januar 2022, 14:39:45
Und so sieht es aus nach ein paar Stunden Laufzeit:
Titel: Antw:Wunschtemperaturen
Beitrag von: gestein am 30 Januar 2022, 20:07:37
Hallo Damian,

Wieder mal ein echt toller Überblick. Danke.

Eine Frage hätte ich bitte dazu:
- ich habe keine Schalter sondern meine Ventile können Werte von 0-100% annehmen.
  Wie könnte man das darstellen?

Und eines wollte ich schon seit längerem fragen.
In der Beschreibung der ui-Table im Wiki zeigst Du einen echt coolen Statusbildschirm:
https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg (https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg)

Ich habe versucht mir den selber zusammen zu stellen. Aber ...  ;)
Wäre es vielleicht möglich dafür auch den Code zu posten?

Danke im Voraus
Lg, Gerhard
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 30 Januar 2022, 20:18:07
Zitat von: gestein am 30 Januar 2022, 20:07:37
Hallo Damian,

Wieder mal ein echt toller Überblick. Danke.

Eine Frage hätte ich bitte dazu:
- ich habe keine Schalter sondern meine Ventile können Werte von 0-100% annehmen.
  Wie könnte man das darstellen?

Das dürfte noch einfacher sein, weil du dann kein Userreading bei den Schaltern setzen musst.

statt

Zitatcard([$1$2:measured-temp:col1d],undef,[$1$3:state] eq "off" ? "sani_floor_heating_neutral\@silver" : "sani_floor_heating\@red" ,15,25,undef,undef,"°C",\&temp_hue,"1,,fill:silver","130,1,1,1,1,,",undef,undef,[$1$3:onoff:col1d],0,5,0,0,"I-O",\&onoff_hue,"0,,fill:silver")


Zitatcard([$1$2:measured-temp:col1d],undef,[$1$3:state] eq "off" ? "sani_floor_heating_neutral\@silver" : "sani_floor_heating\@red" ,15,25,undef,undef,"°C",\&temp_hue,"1,,fill:silver","130,1,1,1,1,,",undef,undef,[$1$3:onoff:col1d],0,100,120,0,"%",undef,"0,,fill:silver")

bei

[$1$3:state] eq "off"

für die Darstellung des Icons musst du das Reading deines Ventils mit der Prozentzahl angeben:

evtl.:

[$1$3:value] == 0 

Zitat
Und eines wollte ich schon seit längerem fragen.
In der Beschreibung der ui-Table im Wiki zeigst Du einen echt coolen Statusbildschirm:
https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg (https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg)

Ich habe versucht mir den selber zusammen zu stellen. Aber ...  ;)
Wäre es vielleicht möglich dafür auch den Code zu posten?

Meine Übersicht hat sich inzwischen schon paar mal geändert, hier habe ich dazu etwas gepostet: https://forum.fhem.de/index.php/topic,120088.msg1170436.html#msg1170436

Titel: Antw:Wunschtemperaturen
Beitrag von: gestein am 31 Januar 2022, 08:57:26
Hallo Damian,

Vielen Dank.

Das mit der Übersicht muss ich mir noch anschauen.

Funktioniert fast. Toll!
In der Uni-Table musste ich nur noch den VentilPos-Parameter auch in der

In der uiTable habe ich also folgendes geändert:
FOR (@{$_sc},"$1$1"|card([$1$2:TempIst:col1d],undef,[$1$2:VentilPos:d] == 0 ? "sani_floor_heating_neutral\@silver" : "sani_floor_heating\@red" ,15,25,undef,undef,"°C",\&temp_hue,"1,,fill:silver","130,1,1,1,1,,",undef,undef,[$1$2:VentilPos:col1d],0,100,120,0,"%",undef,"0,,fill:silver")|FOR(@{$_Timer},("AT: ".widget([$SELF:$1$1_temp_at_$2],"selectnumbers,18,0.5,22,1,lin"),,"WE: ".widget([$SELF:$1$1_temp_we_$2],"selectnumbers,18,0.5,22,1,lin")|))"")

Könnte man die Solltemperatur auch noch irgendwie in den Graphen bringen?

Danke, Lg, Gerhard


Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 31 Januar 2022, 09:02:19
Funktioniert denn das Setzen der Solltemperatur?

Zitatfhem_set("$_sc[$i][1] desired-temp ".get_Reading ("$_sc[$i][0]_temp_we_$timer"));;\

Die aktuelle Solltemperatur könntest du in der Kopfzeile der Karte unterbringen, in einem weiteren Halbring oder in einer separaten Spalte in der Tabelle definieren.
Titel: Antw:Wunschtemperaturen
Beitrag von: gestein am 31 Januar 2022, 09:16:00
Das Setzen der gewünschten Temperatur ist noch ein eigenes Thema.
Ich habe nämlich die Heizungssteuerung über die Siemens synco.
Da muss ich erst noch herausfinden, wie ich das am besten setzen kann.
Das ist sicherlich ein etwas aufwändigeres Projekt ;-)

Danke für die Tipps.
Auch das schaue ich mir gerne noch an.
Könnte man denn z.B. einen Strich im Bogen der Ist-Temperatur anbringen?

Lg, Gerhard
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 31 Januar 2022, 09:22:43
Damit die Solltemperatur im Diagramm visualisiert wird, muss sie als weitere Temperatur angegeben werden, dann hast du schon drei Werte und dann geht es nur noch mit Halbringen. Ein Ring kann nur zwei Werte aufnehmen.

Siehe Beispiel zur Energie mit drei Werten, also drei Halbringen:

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzeige_eines_Werteverlaufs_und_des_aktuellen_Wertes_mit_Hilfe_der_SVG-Funktion_card
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 31 Januar 2022, 21:08:47
Ich habe noch etwas dran geschraubt. Man kann jetzt pro Raum die Steuerung abschalten (off-Modus) oder auf Automatik stellen. Zusätzlich sieht man die gerade eingestellte Solltemperatur (aktuell), die man zum nächsten Zeitschaltpunkt ebenfalls verändern kann.

defmod di_Therm DOIF subs  {\
## Schaltzeitpunkte, Liste kann angepasst werden  \
@{$_Timer}= qw(morgens vormittags nachmittags abends);;\
@{$_Timer_default_at} = qw(04:30 08:00 13:00 22:00);;\
@{$_Timer_default_we} = qw(05:30 09:00 13:00 22:00);;\
$_temp_default_at=20;; ## Wunschtemperaturvorgabe für Arbeitstage\
$_temp_default_we=20;; ## Wunschtemperaturvorgabe fürs Wochenende\
$_temp_default_diff=1;; ## Reduzierung der Wunschtemperatur außerhalb der Heizzeiten um X-Grad\
\
\
## Angaben: Raumbezeichnung, Thermostat, Schalter;; Angaben können zweilenweise erweitert werden\
push (@{$_sc},[qw(Bad TH_Bad_HM H_Bad)]);;\
push (@{$_sc},[qw(Dachgeschoss TH_DG_HM H_DG)]);;\
push (@{$_sc},[qw(Kueche TH_Kueche_HM H_Kueche)]);;\
push (@{$_sc},[qw(Kinder_ost TH_Kz_o_HM H_Kz_o)]);;\
push (@{$_sc},[qw(Kinder_west TH_Kz_w_HM H_Kz_w)]);;\
push (@{$_sc},[qw(Wohnzimmer TH_WZ_HM H_WZ)]);;\
push (@{$_sc},[qw(Schlafzimmer TH_Keller_HM H_Keller)]);;\
push (@{$_sc},[qw(Keller TH_AKeller_HM H_AKeller)]);;\
\
## Bei Initialisierung oder Änderung der Definition werden Timer-Readings und Temperatur-Readings erstellt und vorbelegt\
if ($::init_done) {\
    fhem("deletereading $SELF .*");;   ## Lösche alle Readings\
for (my $j=0;;$j<@{$_Timer};;$j++)  { ## Für alle Timer\
  set_Reading($_Timer[$j],$_Timer_default_at[$j]);; ## Vorbelegung der Zeit für Arbeitstage\
  set_Reading("$_Timer[$j]_WE",$_Timer_default_we[$j]);; ## Vorbelegung der Zeit für Wochenende\
      for (my $i=0;;$i < @{$_sc};;$i++)  { ## Vorbelegung der Wunschtemperaturen für alle Räume\
     set_Reading("$_sc[$i][0]_mode","auto");;\
     set_Reading("$_sc[$i][0]_temp_at_$_Timer[$j]",$j % 2 ? $_temp_default_at-$_temp_default_diff: $_temp_default_at);;\
set_Reading("$_sc[$i][0]_temp_we_$_Timer[$j]",$j % 2 ? $_temp_default_we-$_temp_default_diff: $_temp_default_we);;\
  }\
}\
}\
\
sub temp_at_set { ## Routine zum Setzen der Wunschtemperaturen aller Räume für einen Zeitpunkt an Arbeitstagen\
  my ($timer)=@_;;\
  for (my $i=0;;$i< @{$_sc};;$i++)  {\
     fhem_set("$_sc[$i][1] desired-temp ".get_Reading ("$_sc[$i][0]_temp_at_$timer")) if (get_Reading("$_sc[$i][0]_mode") eq "auto");;\
  }\
}\
sub temp_we_set { ## Routine zum Setzen der Wunschtemperaturen aller Räume für einen Zeitpunkt am Wochenende\
  my ($timer)=@_;;\
  for (my $i=0;;$i< @{$_sc};;$i++)  {\
fhem_set("$_sc[$i][1] desired-temp ".get_Reading ("$_sc[$i][0]_temp_we_$timer")) if (get_Reading("$_sc[$i][0]_mode") eq "auto");;\
  }\
}\
} ## subs\
\
DEF TPL_set_temp ( ## Definition des Templates namens TPL_set_temp zum Setzen der Thermostat-Vorgabetemperatur\
Timer_at_$1 {[$2|AT];;temp_at_set("$1")}  ## Block zum Setzen der Wunschtemperatur an Arbeitstagen, Parameter: $1:Timername, $2:Time_AT\
Timer_we_$1 {[$3|WE];;temp_we_set("$1")}  ## Block zum Setzen der Wunschtemperatur am Wochenende,   Parameter: $1:Timername, $3:Time_WE\
) ## TPL_set_temp\
\
## Generierung der Steuerung pro Raum mit Hilfe des obigen Templates\
FOR(@{$_Timer},TPL_set_temp($1,[$SELF:$_],[$SELF:$1_WE]))
attr di_Therm room Heizung
attr di_Therm uiTable {\
  package ui_Table;;\
  $TABLE='text-align:right;;';;\
  $TD{0}{2..6} = "align='center'";;\
  $TC{0}="align='left'";;\
  \
  sub onoff_hue {\
    my($redblue)=@_;;\
    return ($redblue == 0 ? 240 : 0);;  \
  }\
}\
\
""|""|""|FOR (@{$_Timer},"$1"|)""\
""|""|"Arbeitstage"|FOR (@{$_Timer},WID([$SELF:$1],"time")|)""\
""|""|"Wochenende"|FOR (@{$_Timer},WID([$SELF:$1_WE],"time")|)""\
FOR (@{$_sc},("$1$1"|card([$1$2:measured-temp:col1d],undef,[$1$3:state] eq "off" ? "sani_floor_heating_neutral\@silver" : "sani_floor_heating\@red" ,15,25,undef,undef,"°C",\&temp_hue,"1,,fill:silver","130,1,1,1,1,,200",undef,undef,[$1$3:onoff:col1d],0,5,0,0,"I-O",\&onoff_hue,"0,,fill:silver")|"modus:".widget([$SELF:$1$1_mode],"select,auto,off"),,"aktuell:".widget([$1$2:desired-temp],"selectnumbers,18,0.5,22,1,lin","set")|FOR(@{$_Timer},("AT: ".widget([$SELF:$1$1_temp_at_$2],"selectnumbers,18,0.5,22,1,lin"),,"WE: ".widget([$SELF:$1$1_temp_we_$2],"selectnumbers,18,0.5,22,1,lin")|))""))

Titel: Antw:Wunschtemperaturen
Beitrag von: FHEM-User22 am 01 Februar 2022, 06:56:28
Hallo Damian,
Du bist ja der Wahnsinn....
Dankeschön für Deine Arbeit.

Ich bin zwar noch dabei rauszusuchen, was ich auf meine Anlage umstricken muss, aber das werde ich auch schaffen.
Für Nichtkönner wie mich wäre es interessant, die "Variablen" zu wissen, eventuell sogar gebündelt an einer Stelle, die man aufs eigene System (z.B. die Devices, Readings, usw) anpassen muss. Der Code ist ja inzwischen so umfangreich geworden und viele Zeilen braucht man ja gar nicht anzufassen.

Beste Grüße
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 01 Februar 2022, 07:41:38
Zitat von: FHEM-User22 am 01 Februar 2022, 06:56:28
Hallo Damian,
Du bist ja der Wahnsinn....
Dankeschön für Deine Arbeit.

Ich bin zwar noch dabei rauszusuchen, was ich auf meine Anlage umstricken muss, aber das werde ich auch schaffen.
Für Nichtkönner wie mich wäre es interessant, die "Variablen" zu wissen, eventuell sogar gebündelt an einer Stelle, die man aufs eigene System (z.B. die Devices, Readings, usw) anpassen muss. Der Code ist ja inzwischen so umfangreich geworden und viele Zeilen braucht man ja gar nicht anzufassen.

Beste Grüße

ja, das Problem ist, dass jedes Thermostat eigene Befehle zum Setzen der Temperaturen hat, wenn man hier verschiedene Lösungen zusammenträgt, dann kann ich versuchen es zu verallgemeinern. Aber, wie ich es kenne, wird jeder es etwas anders haben wollen. Der nächste wird dann vielleicht jeden Wochentag getrennt einstellen wollen oder für jeden Tag eine andere Zeit einstellen wollen usw.

Es war vor allem eine Lösung für meine Anforderungen. Bei mir z. B. sind die Heizzeiten der Raumthermostate mit den Zeiten der FB-Therme synchronisiert.

Es ist ein Beispiel dafür wie effizient, wenn auch kryptisch (zwei dimensionale Arrays mit Referenzen), man mit ein paar Zeilen so etwas erstellen kann.
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 04 Februar 2022, 16:42:29
Der aktuelle Code wurde ins Wiki übernommen: https://wiki.fhem.de/wiki/DOIF/Automatisierung#Steuerung_von_Raumthermostaten_f.C3.BCr_mehrere_R.C3.A4ume_mit_GUI
Titel: Antw:Wunschtemperaturen
Beitrag von: FHEM-User22 am 25 Februar 2022, 08:02:58
Guten Morgen,
ich hätte eine Frage zu den Homematic HM-CC-RT-DN. Was muss da bei

## Angaben: Raumbezeichnung, Thermostat, Schalter;

eingetragen werden, es sind ja pro Thermostat 6 Devices:

HM_HZ_Schlaf01_Clima T: 17.3 desired: 17.0 valve: 6
HM_HZ_Schlaf01_ClimaTeam
HM_HZ_Schlaf01_Climate
HM_HZ_Schlaf01_Weather 17.3
HM_HZ_Schlaf01_WindowRec last:trigLast
HM_HZ_Schlaf01_remote


Also was ist der Thermostat und was der Schalter?

## Angaben: Raumbezeichnung, Thermostat, Schalter; Angaben können zweilenweise erweitert werden
push (@{$_sc},[qw(Schlaf_Sued HM_HZ_Schlaf01_Weather HM_HZ_Schlaf01_Clima)]);
push (@{$_sc},[qw(Schlaf_Test HM_HZ_Schlaf01)]);


Oder muss ich noch mehr anpassen?

Zur Zeit sehe ich keine Grafik und auch die Übertrageung der Wunschtemperatur funzt nicht.

Sorry für die Anfängerfragen....


Beste Grüße
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 25 Februar 2022, 08:59:06
Ich besitze den HM-CC-RT-DN nicht. Das Codeschnipsel ist für Wandthermostate mit Stellantrieben programmiert. Die Stellantriebe werden von ON/OFF-Schaltern geschaltet. Die Schalter sind jeweils direkt mit den Thermostaten gepeert.

Geschaltet wird per set <Thermostat-Device> desired-temp <Temperatur>

Temperatur wird ausgelesen über das Reading measured-temp des Thermostats.

Jedes Thermostat schaltet einen Schalter bei mir. Der seinerseits mehrere Ventile schaltet.

Vermutlich müsstest du einiges anpassen, damit es für Heizkörper funktioniert, denn HM-CC-RT-DN  haben vermutlich keine ON/OFF-Zustände. Sie öffnen die Ventile in Stufen.
Titel: Antw:Wunschtemperaturen
Beitrag von: bmwfan am 25 Februar 2022, 19:32:56
Hallo,
tolles Codeschnipsel, das ich auch gleich einbauen wollte.
Allerdings verstehe ich nicht, wie ich die
Zitat## Angaben: Raumbezeichnung, Thermostat, Schalter;
beim HmIP-BWTH eingeben soll. Der ist ja Thermostat und Schalter in einem und steuert mit 230 V direkt die Stellmotoren an.

Dann einfach mit
[qw(Thermostat_WZ HmIP_BWTH_000C9A4999F2BC_9 HmIP_BWTH_000C9A4999F2BC_9)]
?

Gruß Jürgen
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 25 Februar 2022, 20:16:48
Wie vorhin schon von mir ausgeführt:

Thermostat:

Vorwahl der Wunschtemperatur im Beispiel:

set <Thermostatname> desired-temp <Temperatur>

mit

<Thermostatname>:measured-temp wird die Raumtemperatur angezeigt:

Schalter:

Ein Device, dessen Status on für Heizen, off für nicht Heizen ist, zur Visualisierung des aktuellen Zustands.

Wenn dein Thermostat den Status on beim Heizen und off beim nicht Heizen hat, dann kannst du ihn als Schalter angeben.

Ansonsten kannst du den Code hier anpassen:

Zitatcard([$1$2:measured-temp:col1d],undef,\
        [$1$3:state] eq "off" ? "sani_floor_heating_neutral\@silver" : "sani_floor_heating\@red" ,15,25,\

aus der Wiki-Seite: https://wiki.fhem.de/wiki/DOIF/Automatisierung#Steuerung_von_Raumthermostaten_f.C3.BCr_mehrere_R.C3.A4ume_mit_GUI


Titel: Antw:Wunschtemperaturen
Beitrag von: Hackstall am 08 März 2022, 21:57:50
kurze Frage, sieht echt super aus:

Koennte man das auch nach smartVisu portieren ueber fronthem adptiert.

Danke Andreas
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 08 März 2022, 22:05:41
Das wird schwierig sein, sowohl die Steuerung, als auch die Eingaben und Visualisierungen nutzen DOIF-Eigenschaften, die auf FHEMWEB-Schnittstelle basieren.
Titel: Antw:Wunschtemperaturen
Beitrag von: satprofi am 11 März 2022, 11:03:07
Hallo Damian.
Blöde Frage, das alles wird mit einem DOIF definiert? Oder muss man die myUtils auch ergänzen?

LG
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 11 März 2022, 11:15:34
Man braucht keine weiteren Definitionen, alles steckt in der DOIF-Definition. Man braucht natürlich Raum-Thermostate, die Stellantrieb-Aktoren bedienen.
Titel: Antw:Wunschtemperaturen
Beitrag von: satprofi am 11 März 2022, 15:07:46
danke, homematic antriebe hab ich
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 11 März 2022, 18:54:01
Zitat von: satprofi am 11 März 2022, 15:07:46
danke, homematic antriebe hab ich

Wenn du das Beispiel aus dem Wiki nutzen willst, dann musst du für die Visualisierung bei den Aktoren den Status on/off auf 1/0 abbilden. Das steht aber alles hier:

https://wiki.fhem.de/wiki/DOIF/Automatisierung#Steuerung_von_Raumthermostaten_f.C3.BCr_mehrere_R.C3.A4ume_mit_GUI
Titel: Antw:Wunschtemperaturen
Beitrag von: Damian am 13 März 2022, 11:23:46
Zitat von: Damian am 11 März 2022, 18:54:01
Wenn du das Beispiel aus dem Wiki nutzen willst, dann musst du für die Visualisierung bei den Aktoren den Status on/off auf 1/0 abbilden. Das steht aber alles hier:

https://wiki.fhem.de/wiki/DOIF/Automatisierung#Steuerung_von_Raumthermostaten_f.C3.BCr_mehrere_R.C3.A4ume_mit_GUI

Mit der aktuellen Version braucht man keine userReadings mehr anlegen, um on/off-Status auf 1/0 abzubilden, das regelt jetzt das Modul selbst.

siehe: https://forum.fhem.de/index.php/topic,120088.msg1213220.html#msg1213220

Beispieldefinition wurde angepasst.