(Gelöst) Dummy und Notify Wert erhöhen und verringern aktualisiert nicht

Begonnen von pillepalle12, 25 November 2016, 12:33:22

Vorheriges Thema - Nächstes Thema

pillepalle12

Hallo, ich habe ein Dummy, Notify Problem, dass ich leider trotz recherche in anderen Themen nicht gelöst bekomme:

Meine Wärmepumpenheizung hängt mit dem Modul LUXTRONIK2 als "Heizung" definiert in FHEM.

Um die Rücklauftemperatur um +-5 Kelvin zu verändern, habe ich einen Dummy mit 2 Notifys gebaut die den Wert jeweils erhöhen oder verringern sollen beim klick.

Das funktioniert auch wirklich gut, die Änderung sehe ich im Luxtronik2 Gerät in den Readings (returnTemperatureSetBack) perfekt.

Das eigentliche Problem ist, dass der aktuell angezeigte Wert leider immer um +-1 Grad hinterher hinkt. Die Aktualisierung erfolgt erst nach dem Klick aber der Wert ist der vorherige.

Hier mein Code:

define HeizungsTemp dummy
attr HeizungsTemp stateFormat Wert
attr HeizungsTemp userReadings Wert { ReadingsVal("Heizung","returnTemperatureSetBack",0);;;; }
attr HeizungsTemp webCmd wärmer:kälter
define Heizungceraendern notify HeizungsTemp {my $Wert=ReadingsVal("Heizung","returnTemperatureSetBack",0);;\
    if ($EVENT eq "wärmer") {\
    $Wert = $Wert+1};;\
fhem("set Heizung returnTemperatureSetBack $Wert");;\
}
define Heizungveraendern2 notify HeizungsTemp {my $Wert=ReadingsVal("Heizung","returnTemperatureSetBack",0);;\
    if ($EVENT eq "kälter") {\
    $Wert = $Wert-1};;\
fhem("set Heizung returnTemperatureSetBack $Wert");;\
}


Ich habe schon mit einem DoIf Trigger gespielt und versucht so immer den aktuellen Wert von Heizung:returnTemperatureSetBack zu ziehen, hab es bisher aber nicht geschafft.

Hat jemand von Euch einen heißen Tipp?
Vielen Dank

Benni

Was passiert, wenn du zum setzen des Wertes über setreading gehst?


fhem("setreading Heizung returnTemperatureSetBack $Wert");;\

pillepalle12

#2
Dann funktioniert es einwandfrei!!  :D
DU bist ein Schatz!!!


VIELEN DANK - wahnsinn wie schnell hier geholfen wird!


Der vollständigkeit halber hier der komplette Code mit DOIF:

#Heizungswärme steuern:

define HeizungsTemp dummy
attr HeizungsTemp group 01_Klima
attr HeizungsTemp icon temp_control
attr HeizungsTemp room Heizung
attr HeizungsTemp stateFormat Wert
attr HeizungsTemp userReadings Wert { ReadingsVal("Heizung","returnTemperatureSetBack",0);;;; }
attr HeizungsTemp webCmd wärmer:kälter
define Heizungceraendern notify HeizungsTemp {my $Wert=ReadingsVal("Heizung","returnTemperatureSetBack",0);;\
    if ($EVENT eq "wärmer") {\
    $Wert = $Wert+1};;\
fhem("setreading Heizung returnTemperatureSetBack $Wert");;\
}
define Heizungveraendern2 notify HeizungsTemp {my $Wert=ReadingsVal("Heizung","returnTemperatureSetBack",0);;\
    if ($EVENT eq "kälter") {\
    $Wert = $Wert-1};;\
fhem("setreading Heizung returnTemperatureSetBack $Wert");;\
}


define Heizungstempaktualisieren DOIF ([Heizung]) (set HeizungsTemp Werte)
attr Heizungstempaktualisieren do always

pillepalle12

Leider zu früh gefreut...

Wollte Gestern die Wärme anpassen und da hab ich gemerkt, dass der Wert zwar im Luxtronik2 Modul in FHEM geändert wird, nicht aber auf der Heizung selbst.
Wenn ich ein Set verwende, kommt es auch bei der Heizung an, bei setreadng nur im FHEM.

Ich komme nicht weiter  :-[

dev0

Zitat von: pillepalle12 am 01 Dezember 2016, 07:19:09
Ich komme nicht weiter  :-[

http://fhem.de/commandref.html#setreading
Zitat
Note: setreading won't generate an event for device X, if it is called from a notify for device X. Use "sleep 0.1; setreading X Y Z" in this case.

pillepalle12

Danke für den Tipp, mit einer Kombi aus SET und SETREADING funktioniert es jetzt wie gewünscht:

#Heizungswärme steuern:

define HeizungsTemp dummy
attr HeizungsTemp group 01_Klima
attr HeizungsTemp icon temp_control
attr HeizungsTemp room Heizung
attr HeizungsTemp stateFormat Wert
attr HeizungsTemp userReadings Wert { ReadingsVal("Heizung","returnTemperatureSetBack",0);;;; }
attr HeizungsTemp webCmd wärmer:kälter
define Heizungveraendern notify HeizungsTemp {my $Wert=ReadingsVal("Heizung","returnTemperatureSetBack",0);;\
    if ($EVENT eq "wärmer") {\
    $Wert = $Wert+1};;\
fhem("set Heizung returnTemperatureSetBack $Wert;;setreading Heizung returnTemperatureSetBack $Wert");;\
}
define Heizungveraendern2 notify HeizungsTemp {my $Wert=ReadingsVal("Heizung","returnTemperatureSetBack",0);;\
    if ($EVENT eq "kälter") {\
    $Wert = $Wert-1};;\
fhem("set Heizung returnTemperatureSetBack $Wert;;setreading Heizung returnTemperatureSetBack $Wert");;\
}


define Heizungstempaktualisieren DOIF ([Heizung]) (set HeizungsTemp Werte)
attr Heizungstempaktualisieren do always

regii

ich finde es schöner, wenn man die beiden Notifies vereint und zudem auch gleicht den Wert des HeizungsTemp aktualisiert, damit man sofort sieht, dass was passiert, wenn man auf den Button klickt:

HeizungsTemp {
  my $Wert=ReadingsVal("Heizung","returnTemperatureSetBack",0);
  if($EVENT eq "wärmer") {
   $Wert = $Wert+1;
  }
  if($EVENT eq "kälter") {
   $Wert = $Wert-1;
  }
  fhem("set Heizung returnTemperatureSetBack $Wert;setreading Heizung returnTemperatureSetBack $Wert;set HeizungsTemp $Wert");
}