FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: sylvester am 06 Oktober 2022, 08:06:25

Titel: Variablen
Beitrag von: sylvester am 06 Oktober 2022, 08:06:25
Hallo,

ich habe eine Frage zur Heizungssteuerung.
Aktuell setze ich die Temperatur folgendermaßen:


{fhem("set WC_Fussboden desired-temp  10")}


Ist es möglich, am Anfang der config-Datei eine Art Variable zu definieren und die dann im Set-Befehl zu nutzen?
Ich möchte auf diese Weise verschiedene Temperaturen wie Komfort, Lüften, Absenkung zentral definieren und ändern können ...

Vielen Dank für eure Hilfe

Stephan
Titel: Antw:Variablen
Beitrag von: jhohmann am 06 Oktober 2022, 08:14:41
Du könntest dir an diesem Device oder am Device global oder an einem Dummy eigene passende Readings definieren und diese dann verwenden.
Ich mache was ähnliches, um den Dim-Wert einer Lampe zu setzen.
fhem("set CouchLampe dim".ReadingsNum("Tag","CouchLampeDim", 90));
Z.B.:
setreading global WC_Fussboden 15
und dann analog meinem Beispiel dann nutzen.
Titel: Antw:Variablen
Beitrag von: Beta-User am 06 Oktober 2022, 09:52:12
Zitat von: sylvester am 06 Oktober 2022, 08:06:25
Ist es möglich, am Anfang der config-Datei eine Art Variable zu definieren und die dann im Set-Befehl zu nutzen?
Zum einen ist dringlich davon abzuraten, die config-Datei manuell zu editieren!

Wenn du unbedingt was in der config speichern willst, geht das über Attribute, Initialwerte könnten z.B. auch über ein global:INITIALIZED-notify gesetzt werden (dafür käme dann z.B. auch die globale Datenstruktur unter %data in Frage).

Der (von jhomann) vorgeschlagene Weg über Readings speichert das dann woanders (statefile), geht auch.

Zitat
Ich möchte auf diese Weise verschiedene Temperaturen wie Komfort, Lüften, Absenkung zentral definieren und ändern können ...
Wenn es um Temperatur(profile) geht, könntest du dir auch weekprofile mal ansehen, Lüften könnte da ein "topic" sein.

Was ähnliches wäre auch mit LightScene oder structure zu erreichen.
Titel: Antw:Variablen
Beitrag von: Jamo am 06 Oktober 2022, 20:10:18
2 Möglichkeiten:

1) in der 99_MyUtils.pm: use constant {
  Temp1      => 25,
  Temp2      => 22}
dann der Aufruf:fhem ('set WC_Fussboden desired-temp '.+Temp1);


2) ein device , z.B.defmod GlobalConstants dummy
attr GlobalConstants WCTemp:20,21,22,23 Temp1 Temp2

dann der Aufruf:fhem ('set WC_Fussboden desired-temp '.AttrNum('GlobalConstants','WCTemp',2.5));
alternativ:
my $temperatur = AttrNum('GlobalConstants','WCTemp',22.5)
fhem ("set WC_Fussboden desired-temp $temperatur");