NEWS
YAHKA Homematic Heizung
-
Hallo,
zusammen durch diesen Link habe ich den entscheidenden Hinweis gefunden:
https://github.com/jensweigele/ioBroker.yahka/issues/34
Allerdings hat die Einstellung unter CurrentHeatingCoolingState bei mir nicht funktioniert. Unter TargetHeatingCoolingState ging es dann, siehe Screenshot.
Zusammengefasst ging es darum das nach einen Neustart von YAHKA, bei jedem Themostat in IOS der Heizmodus manuell auf Automatisch gestellt werden musste.
Grüße
-
Same hier,
also wenn ich es so einstelle wie auf dem screenshot:
~~![](</s><URL url=)https://i.imgur.com/tZ6Ocvc.png" />
dann passiert folgendes mit den modi
Mode AUS in Homekit stellt auf 0 = Auto Mode <– leider ist dies nicht Aus sondern die Thermostate bleiben auf der Temperatur die eingestellt war...
Mode Heizung in Homekit stellt auf 1 = Manu Mode
Mode Kühlung in Homekit stellt auf 0 = Auto Mode
Mode Automatisch in Homekit stellt auf 0 = Auto Mode
kann jemand helfen?
ich sehe auch zwar das die Modi im Objekt umgestellt werden, jedoch sehe ich auf dem Thermostat keine Veränderung der Modi.
Hat das wer zum laufen bekommen?
PS: ich habe auch mal nur eine der Optionen angeschaltet also Current oder Target, bei Current zeigts nur den Status, währen er bei Target keinen Status zeigt aber die variable in den Objekten ändert.
Beides an klingt für mich stimmig, er registriert die Änderung und zeigt auch diese, kann Änderungen vornehmen, jedoch ja nicht wirklich :/~~
-
Moin,
ich habe eine Lösung für die Einbindung.
Ist ein wenig aufwendiger und vielleicht auch nicht die sauberste.
Ich habe zwei Objekte zu dem Thermostat hinzugefügt. Das erste um die Modi von Yahka und HM auf einen Nenner zu bringen und das zweite für die Anzeige des HeatingCoolingstates.
Beide als Zahlenwert.
Genannt habe ich diese:
1. Modus
2. HeatingCooling
Dann habe ich Yahka eingerichtet:
Anschließend habe ich noch ein Skript mit Blocky erstellt, um die beiden Objekte zu aktualisieren.
Der erste Teil, um die Modi von Yahka mit sinnigen Modi bzw. Einstellungen von HM zu verbinden.
Der zweite Teil zeigt den HeatingCoolingState an.
Sobald sich die Ventilstellung des Thermostates verändert, wird der Temperaturunterschied zwischen Raum und Set geprüft und demnach der HealingCoolingstate für Yahka geschrieben.
Hoffe der Weg ist soweit verständlich.
Ich bin mir sicher, dass jemand, der mehr Ahnung von dem Ganzen hat, eine elegantere Lösung findet, aber so funktioniert es für mich sehr gut.
-
Nachdem ich aus dem Forum auch schon so viel ziehen konnte, stelle ich hier mal mein Use-Case mit HomeMatic Thermostaten und HomeKit vor.
Also, unser HomeMatic Nutzungsszenario bedingt wie wir das ganze über HomeKit steuern wollen.
I.d.R. laufen unsere Thermostate über das Programm der CCU. Über den Tag sind je nach Nutzung ein paar Räume im Comfort Mode oder im Lowering Mode. Wenn wir eingreifen, dann (fast) nur über das Abrufen von Comfort oder Lowering. Gelegentlich wird auch mal kurz geboostet. Selten wird ein Thermostat auch mal ausgeschaltet oder in den manuellen Modus gewechselt.
Wichtig war uns, in HomeKit schnell zu sehen, wenn ein Thermostat manuell läuft, das sollte eher die Ausnahme sein.
Zudem sollte die Bedienung in beide Richtungen gehen, also sowohl über die Thermostate als auch in HomeKit.
Erst einmal habe ich mir angeschaut, welche Kombinationen von HK CurrentHeatingCoolingState (Rückmeldung des Thermostates an HK, kürze ich mal als Currentstate ab) und TargetHeatingCoolingState (Trigger in Richtung Thermostat, für mich Targetstate) welche Visualisierung in HomeKit bedingen:
Das Vorgeschlagene Mapping Targetstate HK zu Control Mode HM von Yahka fand ich nicht so toll.
Ich dachte an folgende Möglichkeiten:
Targetstate HK <> Control Mode HM
Off <> Urlaub
Heat <> Boost
Cool <> Manu
Auto <> Auto
Vorteil: man hätte für jeden Zustand in HK einen Control Mode in HM.
Nachteil: Ich finde das Mapping nicht eingängig (cool = Manu? Hmm). Außerdem finden wir unsere Abrufwerte für Comfort und Lowering nicht wieder (Use Case!).
Deswegen habe ich folgende Funktionsweise umgesetzt:
Targetstate HK <> Control Mode HM
Off > Manu, 4.5°
Heat > Auto-Mode, Comfort-Mode
Cool > Auto-Mode, Lowering-Mode
Auto > Auto
"Heat" und "Cool" sind in HomeKit "Taster", nach 300ms springt die Einstellung auf "Auto".
Um unseren Boost umzusetzen, nutze ich den HomeKit Temperaturregler. Wenn er auf >25° gezogen wird, aktiviert das den Boost-Modus. Als Feedback springt in HomeKit die Temperatur dann auf Anschlag (38°) und geht wieder auf die reguläre Target Temperatur nach dem Boost.
Jetzt gibt es verschiedene Möglichkeiten die Betriebszustände eines HomeMatic Thermostates sinnvoll zu visualisieren, hier würden sich mit Hilfe des CurrentHeatingCoolingStates mehrere Szenarien anbieten:
Targetstate = off ist klar, ganz aus ist weiß, manuell mit Set Temp > 4.5° ist grau.
Innerhalb von Targetstate = Auto hätte ich folgende Ideen:
Visualisierung von warmen Räumen
nach Ist-Temperatur
Ist° >= 20° = orange (Currentstate heat)
Ist° < 20° = blau (Currentstate cool)
nach Soll-Temperatur
Soll° >= 20° = orange
Soll° < 20° = blau
Visualisierung nach Heizungsverhalten (aufheizen, abkühlen)
Soll° > Ist° = orange
Soll° < Ist° = blau
Soll° = Ist° = grün
Ich habe mich erstmal für letztere Darstellung entschieden. Auch wenn ich ebenso interessant finde, anhand der Farben schnell zu sehen welche Räume gerade warm sind oder sein sollen (denn in der letzten Logik ist sowohl ein konstant kalter als auch ein konstant warmer Raum grün).
Aber diesen Teil könnte man ja auch noch recht schnell im Script ändern
Kleiner Zusatz: Boost wird immer orange visualisiert, egal wie Soll° und Ist° aktuell stehen.
Als Übersicht könnte das so ungefähr aussehen:
Zu Umsetzung. Ich benötige drei Hilfsobjekte, die ich unterhalb einer Gruppe (=Thermostat) angelegt habe (alle vom Typ Number).
CurrentHeatingCoolingState
TargetHeatingCoolingState
TargetTemperature
Die Verknüpfung im Adapter sieht so aus:
Dann noch ein paar Hürden die mir aufgefallen sind:
HomeKit geht nicht unter 10°. Das sorgt für nicht ganz korrespondierende Darstellung zu HomeMatic.
Ich stolpere immer noch über gegenseitige Trigger-Abhängigkeiten in der Programmierung, bin da auch kein Profi. Ich dachte ich könnte über den Acknowledge-State unterscheiden, ob eine Änderung durch das Gerät oder mein Script kommt, das ging aber nicht zuverlässig. Ich habe mir nun mit Zeitstempeln geholfen.
Insbesondere die Control-Mode-Änderung in HM hat teilweise bis 1 Sekunde Lag, das sorgt für etwas holprige (viel schnellere) Scriptausführung (manche Schleifen laufen daher doppelt in zwei Schritten durch). Da sollte aber nichts kaputt gehen
Schade, dass nicht erkennbar ist, ob sich ein Thermostat in der Lowering- oder Comfort-Temperatur befindet. Sonst hätte meine Umsetzung etwas anders ausgesehen. Aber so geht's auch.
Hier nun einzelne Screenshots, Blockly 1-5 ist bei mir ein Script. Ich habe die Debug-Blöcke dringelassen, weil sie für die Erläuterung vielleicht ganz hilfreich sind.
Blockly 1
Um das Script jeweils schnell für meine Handvoll Thermostate bei einer neuen Version zu duplizieren, habe ich mit Variablen gearbeitet, so dass ich nur zwei ObjectIDs ganz oben wählen muss. Damit ich alles mit Blockly abbilden kann, musste ich noch zwei mini-Funktionen bauen.
Blockly 2
Auf Änderungen des HomeMatic Control-Modes reagieren
Blockly 3
Auf Änderungen des HomeKit Targetstates reagieren
Blockly 4
Temperaturänderungen durch HomeMatic verarbeiten und davon abhängig CurrentHeatingCoolingState setzen (Thema Visualisierung)
Blockly 5
Temperaturänderungen von HomeKit verarbeiten
Mit mehr ioBroker- und JS-Kenntnissen könnte man dieses Thermostatverhalten bestimmt in eine globale Funktion packen, die man dann nur noch mit dem jeweiligen Thermostat aufruft. Wenn jemand Lust hat, das fortzuführen…
Für Tipps bin ich offen, bin mir sicher, dass es teilweise elegantere Methoden gibt um an das gleiche Ziel zu kommen.
Bei Interesse kann ich auch gerne das Script bereitstellen!
-
Nachdem ich aus dem Forum auch schon so viel ziehen konnte, stelle ich hier mal mein Use-Case mit HomeMatic Thermostaten und HomeKit vor. `
Super Arbeit… Könntest Du eventuell noch für alle deine Blockly-Skripte die Exporte zur Verfügung stellen? Danke...
-
Nachdem ich aus dem Forum auch schon so viel ziehen konnte, stelle ich hier mal mein Use-Case mit HomeMatic Thermostaten und HomeKit vor. `
Danke für die Ausführliche Aufstellung. Darf ich deine Arbeit in den Adapter übernehmen?
HomeKit geht nicht unter 10°. `
Mit der aktuellen Master Version kannst du Min, Max und Step für jede Characteristic ändern (einfach auf "[properties]" klicken).
-
Super Arbeit… Könntest Du eventuell noch für alle deine Blockly-Skripte die Exporte zur Verfügung stellen? Danke... `
Danke für die Ausführliche Aufstellung. Darf ich deine Arbeit in den Adapter übernehmen? `
Danke, freut mich wenn's gefällt. Ja, Du kannst gerne davon übernehmen was Dir sinnvoll erscheint (auch ggf Bildmaterial).
Meinen Blockly Code (Achtung, bin wie gesagt kein gelernter Progger, bitte gut prüfen) habe ich angehängt.
Mit der aktuellen Master Version kannst du Min, Max und Step für jede Characteristic ändern (einfach auf "[properties]" klicken).
Screenshot 2019-01-14 at 22.43.57.png `
Oh, sehr cool! Dein Screenshot verrät, dass Du auch schon getrennte Lese- und Schreibfelder planst - auch sehr willkommen
Habe für "min" nun 4.5 gewählt und die Schritte gleich analog zu HomeMatic auf 0.5 gesetzt, gefällt mir!
(nur am Rande, wie bekomme ich denn ohne Versionssprünge am besten mit, wenn es wieder neue Features im Github-Master gibt?)
2650_iobroker-homekit-homematic-thermostatanbindung.xml -
Dürft ich hier noch mal unbedarft nachfragen?
Wäre diese Einstellung mit den hier besprochenen Features jetzt richtig?
(HmiP-WTH-2 mit 4 Thermostaten in einer Gruppe)
-
Oder habe ich das falsch verstanden und die neuen Features sind noch nicht im Yahka Master verfügbar?
-
Ich hab das bei mir so gelöst und das funktioniert bis jetzt einwandfrei. Bei den Modes kann man allerdings nur Automatisch und Manuell (Heizen in HomeKit) einstellen.
Das ist der Inhalt der Funktionen in Blockly
/** * Beschreibe diese Funktion … */ function setAutoMode(objectID, autoMode) { setState(objectID.replace("CONTROL_MODE", "AUTO_MODE"), autoMode); } /** * Beschreibe diese Funktion … */ function setManuMode(objectID) { setState(objectID.replace("CONTROL_MODE", "AUTO_MODE"), false); getState(objectID.replace("CONTROL_MODE", "SET_TEMPERATURE"), function (err, state) { var value = state.val; setState(objectID.replace("CONTROL_MODE", "MANU_MODE"), value); }); }
Und hier der Yahka Teil
-
Darf ich mich hier nochmal ran hängen?
Hab die Funktionen im Scriptblock erstellt - jedoch bekomme ich nur "Javascript-Funktion setAutoMode </>" angezeigt.
Der Rest dieser Funktion "mit Objekt ID" und drunter "setAutoMode" ist nicht dabei.
So habe ich das in das "</>" Feld eingetragen:
function setAutoMode(objectID, autoMode) { setState(objectID.replace("CONTROL_MODE", "AUTO_MODE"), autoMode); }
-
Hallo,
habe die Tage auch eine iobroker Instanz mit yahka aufgesetzt.
Inzwischen sind auch einige eq-3 (max!) Thermostate eingebunden und lassen sich ansprechen.
(Entsprechendes Mapping der Werte auf HomeKit etc.)
So weit so gut!Hier war auch schon mal die Rede davon das jedesmal wenn wieder die HomeApp geöffnet wird oder erstmalig auf einem anderen iPhone/iPad gestartet wird, alle Thermostate auf OFF stehen.
Mir wäre es lieber die IST-Temperatur, die SOLL-Temperatur sowie der Status OFF/MANU/AUTO würde beim Aufruf über HomeKit->ioBroker (hier stehen die korrekten Werte) direkt abgerufen werden.
Hat das jemand hinbekommen und kann hier entsprechende Hinweise geben?
-
Hallo,
ist bei der neusten Version von Yahka die Ansicht geändert worden? Es fehlt die Möglichkeit ein Mapping durchzuführen. Lediglich vorgefertigte Conversion sind möglich. So kann ich aber nicht den Status so verändern, wie ich es brauche.
Max!
0(auto)
1(manual)
2(vacation)
3(boost)Homekit
0(aus)
1(heizung)
2(kühlung)
3(automatisch)0=3
1=1
2=0
3=2Weiß jemand, wie ich mit der "neuen" Version wieder ein einfaches mapping hinbekomme?
Danke und GrüßeDominik
-
@dominik-oyen
Hi Domink,
ich habe für das Problem, das die Thermostate in der Homkit App AUS anzeigen folgenden Workaround gefunden, der funktioniert, ich kann dir aber nicht erklären warum. Ich habe einfach so lange rumprobiert, bis es geklappt hat.
Mein Ziel war es, das die Heizkörperthermostate immer auf "Heizen" stehen in der App, auch wenn es keine Funktion hat, es ging mir nur um eine schönere Anzeige.In Yahka habe ich für die Thermostate bei "CurrentHeatingCoolingState" folgende Einstellung:
InOut: const
Value: 1
Conversion: HomematicControlModeToHomekitHeathingCoolingState
State: 1Bei Value und State kannst du auch einen anderen Zustand wählen wie du ja schon gepostet hast:
0(aus)
1(heizung)
2(kühlung)
3(automatisch)Ich habe zwar keine Homematic Geräte, aber die folgenden Adapter installiert (und deaktiviert), einer davon liefert wohl den Wert den man für "Conversion" setzen muss (HomematicControlModeToHomekitHeathingCoolingState):
HomeMatic ReGaHSS
HomeMatic RPCWie gesagt: keine befriedigende Antwort für dei die wissen wollen warum und wie, aber es funktioniert.
Frank!
-
Hi,
ich habe mir mal die Datenpunkte angeschaut und festgestellt, dass der Datenpunkt "CONTROL_MODE" eines HmIP-WTH-2 Wandthermostats zum Setzen und der Datenpunkt "SET_POINT_MODE" zum Anzeigen des aktuellen Betriebsmodus verwendet wird (0: AUTO, 1: Manu, 2: Urlaub). Also habe ich mal folgende Einstellungen im yahka-Adapter vorgenommen:
Damit funktioniert auf jeden Fall der Wechsel zwischen AUTO und Manu und es werden in der Home App die korrekten Ist- und Soll-Werte angezeigt, wobei bei manueller Einstellung der Temperatur von "Automatisch" auf "Heizung" gewechselt wird.
Dies nur mal als Info. Es werden keinerlei Skripte benötigt.
-
@dtp
Habe ich mal bei einem WTH-2 so eingestellt und zum Testen auch bei einem einzelnen etrv-2.Meiner Meinung nach vollkommen unbrauchbar. Steht die Heizung laut (korrekter) Angabe der CCU3 auf Manu, wird in Homekit gerne schon mal Auto angezeigt. Stellt man in HK auf Aus, stellt sich in der CCU nix auf Aus. Steht die Heizung tatsächlich auf Manu und man ändert in Homekit auf Auto passiert hier gar nichts.
Also entweder weiter mit gefühlt 80 Scripten rumpfuschen, oder eine andere Lösung nehmen (HA, HAP oder Homebridge).
-
@mucki Hast nicht ganz unrecht. Ich habe bemerkt, dass der Datenpunkt "CONTROL_MODE" ungeeignet ist zum Steuern. Da muss dann wohl auch besser "SET_POINT_MODE" für verwendet werden. Es ist übrigens kein direkter Modus für "AUS" vorgesehen. Stellt man das direkt im WebUI ein, dann bleibt der "SET_POINT_MODE" auf dem Wert 0 (also Manuell bzw. HEIZUNG) und nur die Soll-Temperatur wird auf 4,5 °C gesetzt. In der Home App beträgt jedoch die minimale Soll-Temperatur 10 °C. Weniger geht nicht. Eigentlich ist es aber ja egal, ob man nun 4,5 oder 10 °C einstellt. So kalt sollte es in keinem Wohnraum sein. Und ob da dann "AUS" oder "HEIZUNG" angezeigt wird, ist doch wurscht. Man sieht's ja an der Soll-Temperatur.
Ich persönlich stelle übrigens meine Heizung so gut wie nie über die Home App um. Das macht sie schon automatisch. Wenn ich etwas umstellen möchte, dann höchstens die Soll-Temperatur. Und das klappt auch.
-
@dtp
Da hast du recht - ich stelle auch maximal die Solltemp über Homekit. Aber auch das eher selten, da dann meist die Sprachansage an Alexa schneller und komfortabler ist.Die Thermostate habe ich über HAP-Homematic in Homekit eingebunden und alle Funktionen sind damit verfügbar.
Gesteuert wird aber eigentlich eh ausschließlich über Automationen - hier insbesondere mit der Anwesenheitserkennung mehrerer Personen und mit Programmen direkt auf der CCU3. Ist nach meinen Erfahrungen einfach die stabilste Variante.