Hallo zusammen,
trotz intensiver Recherche und etlichen Trial&Error Versuchen komme ich nicht zum Ziel und hoffe auf Eure Expertise:
Gern möchte ich die Innengeräte meiner Splitklimageräte auch in Homekit einbinden (dort sind schon etliche Geräte via FHEM erfolgreich aktiv) und möchte dazu das
genericDeviceType=thermostatverwenden.
Problem:
Das FHEM-Device des Innengerätes wird über folgende zwei Readings gesteuert/angesprochen:
ZitatoperationMode:fanOnly,heating,cooling,auto,dry
onOffMode:on,off
setpoint: [gewünschte Zieltemperatur]
roomTemperature: [Ist-Temperatur]
Folgende Elemente funktionieren bereits in Homekit:
- Ziel-Temperatur: TargetTemperature=setpoint::setpoint,minValue=18,maxValue=30,minStep=0.5
- Ist-Temperatur: CurrentTemperature=roomTemperature
- Modus-Darstellung (solala): CurrentHeatingCoolingState=HeatingState,values=HEAT:HEAT;COOL:COOL;AUTO:AUTO;OFF:OFF
- Ein- & Aus: TargetHeatingCoolingState=operationMode::operationMode,cmds=OFF:onOffMode+off;COOL:onOffMode+on+;;+operationMode+cooling;HEAT:onOffMode+on;;+operationMode+heating;AUTO:onOffMode+on;;+operationMode+auto
Dazu habe ich ein userReadings
HeatingState gebastelt:
HeatingState {
my $onoff = ReadingsVal("DaikinCloud_Wohnzimmer","onOffMode","off");
my $mode = ReadingsVal("DaikinCloud_Wohnzimmer","operationMode","off");
return "OFF" if($onoff eq "off");
return "HEAT" if($onoff eq "on" && $mode eq "heating");
return "COOL" if($onoff eq "on" && $mode eq "cooling");
return "AUTO" if($onoff eq "on" && $mode eq "auto");
return "AUTO" if($onoff eq "on" && $mode eq "fanOnly");
return "AUTO" if($onoff eq "on" && $mode eq "dry");
return "OFF";
}Zwischenfazit:
Ich kann die Ist-Temperatur ablesen, die Soll-Temperatur erfolgreich ändern(Änderung kommt in FHEM auch fein an) und den Betriebsmodus beschränkt auf Ein/Aus erfolgreich ändern. So sieht es derzeit aus: IMG_6743.jpg
Ich schaffe es jedoch nicht, den Betriebsmodus aus Homekit heraus vollständig zu ändern (Cool/Heat/Auto). Wie kann ich das realisieren, damit Homekit einen Befehl an FHEM versendet, welcher dort in zwei verschiedene Befehle (Ein- bzw. Ausschalten UND Modus=Heat/Cool/Auto) umgewandelt wird?
TargetHeatingCoolingState= ?Folgenden Codeschnipsel fand ich im Forum und habe ihn versucht anzupassen. Es macht mir immerhin möglich, die Anlage Ein- und Auszuschalten, jedoch wird der Modus Heizen/Kühlen/Auto nicht übernommen. Kann ich die Befehle doppelt mappen?
TargetHeatingCoolingState=operationMode::operationMode,cmds=OFF:onOffMode+off;COOL:onOffMode+on+;;+operationMode+cooling;HEAT:onOffMode+on;;+operationMode+heating;AUTO:onOffMode+on;;+operationMode+auto