Hallo zusammen,
ich bin neu hier im Forum und habe bisher nur alle tollen Berichte und Tutorials gelesen. Leider komme ich jetzt nicht weiter und hoffe, dass mir jemand einen Tipp geben kann.
Folgende Ausgangssituation:
Ich habe eine Buderus Heizung welche über das Buderus-Fhem Modul eingebunden wurde. Das Device heißt entsprechend: "Buderus". Bisher habe ich mir alle notwendigen Informationen daraus gezogen. FHEM läuft bei mir mit Homebridge (Siri) - Integration. Ich habe schon diverse Funkthermostate und es läuft alles wie gewünscht.
Nun zu meinem Problem:
Die Buderus Heizung liefert mir folgende Werte, mit welchen ich gerne arbeiten möchte:
- RoomDesiredTemp
- RoomTemporaryDesiredTemp
- RoomManualDesiredTemp
In der Heizung läuft ein Automatik-Programm. So lange dieses Programm aktiv ist und ich nicht manuell eingegriffen habe, liefert mir das Reading: "RoomTemporaryDesiredTemp" den Wert: -1 zurück.
define Heizkreis readingsGroup Buderus:<%temp_temperature>,RoomDesiredTemp
attr Heizkreis genericDeviceType thermostat
attr Heizkreis homebridgeMapping TargetTemperature=Buderus:RoomTemporaryDesiredTemp,minValue=16,maxValue=28,minStep=0.5,nocache=1,valid=OFF;;HEAT\\
CurrentTemperature=Buderus:RoomDesiredTemp
attr Heizkreis room Heizung,Homekit
attr Heizkreis valueFormat { my $tempDesired = ReadingsVal("Buderus","RoomTemporaryDesiredTemp","-1");; if ( $tempDesired < 0 ) { return ReadingsVal("Buderus","RoomManualDesiredTemp","-1");; } else { return $tempDesired;;}}
attr Heizkreis valueSuffix °C
Durch das valueFormat habe ich es jetzt hinbekommen, dass er mir den Wert "RoomManualDesiredTemp" zurück gibt, so lange nicht per set RoomTemporaryDesiredTemp ein manueller Wert gesetzt wurde.
Mein Problem ist jetzt: In Home bekomme ich jetzt einen schönen Schieber um die Temperatur einstellen zu können und der IST-Wert wird korrekt durch das valueFormat angezeigt.
Jetzt die Frage: Wie bekomme ich es hin, dass durch Veränderung des Schiebers (Temperatur) dieser Wert: Buderus:RoomTemporaryDesiredTemp gesetzt wird? Ich habe es schon mit
"TargetTemperature=Buderus:RoomTemporaryDesiredTemp" probiert, leider ohne Erfolg.
Zusammenfassend: Ich möchte einen Wert aus einer ReadingGroup in Abhängigkeit des Wertes korrekt darstellen (passt eigentlich), durch Veränderung möchte ich erreichen, dass das Device: Buderus darüber informiert wird, dass der Wert: "RoomTemporaryDesiredTemp" entsprechend gesetzt wird (funktioniert leider nicht).
Muss ich hier eventuell mit einem Notify arbeiten? Oder könnte ich mein Problem lösen?
Vielen Dank im Voraus.
Gruß
Florian
Hallo Florian,
bau doch in deinen Code vom valueFormat einfach den set Befehl für Buderus mit ein? Das wird doch richtig abgearbeitet habe ich verstanden.
Ich habe noch nicht ganz ob der Trigger passt, aber ich denke schon.
Ein notify welches auf den IST Wert triggert würde doch auch nichts anderes machen.
Gruß Otto
Hallo Otto,
Danke für Deine schnelle Rückmeldung. Ich dachte eigentlich, dass das hierüber erfolgt:
homebridgeMapping TargetTemperature=Buderus:RoomTemporaryDesiredTemp...
valueFormat nutze ich ja nur dafür, dass mir nicht -1 angezeigt wird, wenn die Heizung im AutomatikProgramm läuft und der Wert nicht über set Buderus RoomTemporaryDesiredTemp 23 oder so gesetzt wurde.
Ich habe jetzt auch mal nach Deinem Hinweis danach gesucht aber leider bisher nichts brauchbares gefunden. Könntest Du mir sagen, wie sowas aussehen würde/könnte?
Vielen Dank im Voraus.
VG, Florian
Mit homebridge kenne ich mich nicht aus :-[
Du hast doch hier Perl Code{ my $tempDesired = ReadingsVal("Buderus","RoomTemporaryDesiredTemp","-1");; if ( $tempDesired < 0 ) { return ReadingsVal("Buderus","RoomManualDesiredTemp","-1");; } else { return $tempDesired;;}}
Dort packst Du an die richtige Stelle einfach diesen Code dazufhem("set DeviceName(Buderus) Temperatur(keine Ahnung wie das wirklich heisst) $tempDesired")
Gruß Otto
Das hat mich leider noch nicht weiter gebracht. Ich bin jetzt einen Schritt weiter, dass zumindest der Wert aus meinem Slider an die Heizung übergeben und gesetzt wird.
Ungeachtet der Homebridge Integration ist da glaube ich ein genereller Fehler drinnen, den ich (als Anfänger) noch nicht sehe.
define Heizkreis dummy
attr Heizkreis genericDeviceType thermostat
attr Heizkreis homebridgeMapping TargetTemperature=Buderus:RoomTemporaryDesiredTemp,minValue=16,maxValue=28,minStep=0.5,nocache=1,valid=OFF;;HEAT\\
CurrentTemperature=Buderus:RoomDesiredTemp
attr Heizkreis valueFormat { my $tempDesired = ReadingsVal("Buderus","RoomTemporaryDesiredTemp","-1");; if ( $tempDesired < 0 ) { return ReadingsVal("Buderus","RoomManualDesiredTemp","-1");; } else { return $tempDesired;;}}
attr Heizkreis room Heizung,Homekit
attr Heizkreis setList state:slider,15,0.5,28
attr Heizkreis webCmd state
define change_Heizkreis notify Heizkreis:.* {my $currentVal = ReadingsVal("Heizkreis","state","");; fhem("set Buderus RoomTemporaryDesiredTemp $currentVal");; }
Ich habe jetzt aus dem readingGroups einen Dummy gemacht und nutze ein Notify. Aber irgendwie passt das noch nicht :-(
Ich würde jetzt erstmal von Homebridge Abstand nehmen und folgendes in FHEM erreichen wollen:
- Aktueller Wert von Buderus im Slider darstellen. Falls der Wert -1 ist, dann mappen auf "Auto"
- Sobald Slider betätigt wird, per fhem ('set Buderus RoomTemporaryDesiredTemp $neuerWert') verändern
@Otto: Hättest Du dafür eventuell noch einen Ansatz?
Vielen Dank.
VG, Florian
Das geht einfacher, ist aber am Ende nichts anderes:
{my $currentVal = ReadingsVal("Heizkreis","state","");; fhem("set Buderus RoomTemporaryDesiredTemp $currentVal");; }
so mit set magic
set Buderus RoomTemporaryDesiredTemp [Heizkreis:state]
Das muss aber prinzipiell so in der FHEM Kommandozeile gehen!
Tipps zum notify: https://wiki.fhem.de/wiki/Notify
Gibt es denn den Event -> Heizkreis:.*