Hauptmenü

Initialwerte

Begonnen von thinman, 04 November 2015, 14:06:12

Vorheriges Thema - Nächstes Thema

thinman

Servus Allerseits,

ich bin noch ein "Neuling" und hab so meine Schwierigkeiten mit der Sprache. (FHEM && Perl)
Hab schon eine menge gelesen aber ich komme trotzdem nicht hinter der Lösung.
Ich bastle an meinen Heizungssteuerung (mit MAX Elementen) aber meine Frage ist nicht MAX Spezifisch.

Ich hab ein Slider erzeugt und damit steuere ich 3 Thermostate. Das funktioniert auch gut.
Ich würde gern beim ersten Aufruf der Seite der Slider mit der aktuell im Thermostat eingestellten Wert starten.
Das kriege ich aber nicht gebacken. Es stehen nur Fragezeichen neben der Slider als Status.
Sobald ich der Slider einmal bewege, funktioniert alles.

# Badezimmer
define Heizkoerper_Badezimmer dummy
attr Heizkoerper_Badezimmer group HeizungGroup
attr Heizkoerper_Badezimmer setList state:slider,14,0.5,25,1
attr Heizkoerper_Badezimmer webCmd state
define Heizkoerper_Badezimmer.ntfy notify Heizkoerper_Badezimmer.* {\
  my $valtemp1 = "%";;\
  my $cmd1 = 'set MAX_025eae desiredTemperature auto '.$valtemp1;;\
  fhem($cmd1);;\
}
define Dummy_SetHeizungBZ notify Heizkoerper_Badezimmer {my $tWZ = ReadingsVal("MAX_025eae ", "desiredTemperature", "16");; fhem("set Heizkoerper_Badezimmer".$tWZ);; }
trigger Dummy_SetHeizungBZ


Ich verstehe einfach die Logik nicht dahinter wie der Anfangswert einen Slider oder ein Knopf oder was auch immer zu steuern geht.

Grüße
Steve

Wzut

#1
streiche :

define Dummy_SetHeizungBZ notify Heizkoerper_Badezimmer {my $tWZ = ReadingsVal("MAX_025eae ", "desiredTemperature", "16");; fhem("set Heizkoerper_Badezimmer".$tWZ);; }
trigger Dummy_SetHeizungBZ


benutze :

define Dummy_SetHeizungBZ notify MAX_025eae:desiredTemperature:.* set Heizkoerper_Badezimmer $EVTPART1

um den Slider im Dummy mit dem aktuellen Sollwert von MAX_025eae zu belegen.
ggf. schau dir noch die attr Liste von MAX_025eae an, um sicher zu stellen das die Events auch wirklich erzeugt werden die du auswerten willst, Bsp :
attr MAX_025eae event-on-update-reading desiredTemperature
so ist sichergestellt das immer wenn die Soll Temp verstellt wird das notify greift und deinen Slider nachzieht.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Elektrolurch

Es geht auch ohne dummy, wenn Du die desired temp Deines Thermostates in einer readingsGroup darstellst und mit

attr myrg command {'desired-temp' ='desired-temp:slider,14,0.5,22'}

für die Bedienung dort einen slider definierst.
Charme an der Sache ist, dass Du dann auch noch andere Werte, wie die aktuelle RAumtemperatur usw. anzeigen lassen kannst.

Ich benutze bei meiner GUI fast keine fhem-Objekte mehr direkt, sondern gruppire sie alle über readingsGroup.

Elektrolurch
configDB und Windows befreite Zone!

thinman

Vielen Dank Euch!

Ich muss mal mit der unterschied zwischen FHEM und Perl auseinander setzen weil die vereinfachte Code ist nicht nur lesbarer sondern auch effizienter.
Es ist noch alles ein bisschen diffuse.  :)

Ich hab bisher nur Programme geschrieben welche mit ein "Programmstart" angefangen haben und damit alle Variablen initiierten.
Hier Läuft ja das Programm schon und man "wählt" sich nur rein. Das hat mich verwirrt.
Wenn ich richtig verstanden haben, werden hier Variablen erst gefüllt wenn ein Event stattfindet oder eine notify ausgelöst wurde.
In meinen Beispiel musste ich nur geduldig warten dann füllten sich die frisch erzeugten Slider mit Werten...  :D

Mit readingGroups habe ich schon ein bisschen experimentiert aber eher auf copy & paste basis aus der entsprechenden FHEM Beitrag.
Vielversprechend aber da muss ich auch mehr Hirn reinstecken.
FHEM ist ein sehr mächtiges Werkzeug.  :)

Grüße
Steve