NEWS
YAHKA + AVM FRITZ!DECT 301 Heizkörperthermostat
-
Hallo,
ich versuche meine FRITZ!DECT 301 Heizkörperthermostate sinnvoll in ![FRITZ301.JPG] YAHKA einzubinden. Leider habe ich folgende Punkte nicht hinbekommen:
- In der Home App zeigt der Adapter "auf 10 ° kühlen" an, auch wenn der Thermostat auf "aus" steht.
- Wenn ich in der Home App auf den Heizkörper-Knopf drücke zeigt kann ich auch in den Einstellungen "Aus" und "Heizung" eine Temperatur auswählen, auch wenn diese hier keinen Sinn macht, da entweder nicht oder voll geheizt wird.
- Wenn ich in ioBroker - YAHKA die Option "CurrentHeatingCoolingState" auswähle wird in der App immer ein gelbes "!" angezeigt und ich erhalte den Hinweis "keine Antwort".
Wie habt Ihr das eingerichtet?
Vielen Dank!
Tony
-
@tony-blue Ich suche immer noch dringend nach einer Lösung. Ist die Kombination zu exotisch?
-
@tony-blue Zwischenzeitlich habe ich selbst eine Lösung gefunden, die ich gerne hier onlinie stelle. Vielleicht hat jemand noch bessere Lösungen oder kann von meinen Gedanken profitieren.
Ziel der Einbindung der AVM FRITZ!DECT 301 Heizkörperthermostate in YAHKA:
- möglichst vollständige Abbildung aller Funktionen der Heizkörperthermostate in YAHKA
- intuitive Bedienung (d. h. hoher WAF = woman aceptanc factor)
Technische Besonderheiten und Herausforderungen
- YAHKA kennt nur einen "Thermostat", der im Gegensatz zum Heizkörperregler auch kühlen kann. Die Themen rund um das "Kühlen" habe ich deshalb ausgeblendet.
- Zur Nutzung in YAHKA stehen die Modes
- "Automatisch" (= Heizbetrieb nach vorgegebener Soll-Temperatur (tsoll)
- " Heizung" (= Heizbetrieb auf volle Öffnung - keine Regelung nach Thermostat) -> Hier lässt YAHKA allerdings trotzdem eine Veränderung im Temperatur-"Tacho" zu. Deshalb habe ich hier per Blockly-Script die Temperatur auf Maximum gesetzt, damit dem Bedienter intuitiv klar ist, was "Heizung" bedeutet. Wenn anschließend die Temperatur manuell nach unten geregelt wird, schalte ich per Blockly-Script auf Modus "Automatisch" um.
- "Aus" (= kein Heizbetrieb, Ventil geschlossen)
- Die unmittelbare Ansprache des AVM FRITZ!DECT 301 per fritzdect über den Wert "hkrmode" hat bei mir nicht zuverlässig geklappt. Deshalb habe ich die Steuerung per Blockly-Script über die Parameter "setmodeauto", "setmodeon" und "setmodeoff" realisiert.
Hier ein paar Screenshots vom Ergebnis:
Umsetzung
1. Anlage eines Datenpunktes für den gewünschten Betriebs-Mode:
2. Blockly-Script das die technischen Besonderheiten und Herausforderungen löst (siehe oben)
Hier zum importieren (Datenpunkte und Objekte müssen angepasst werden)
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="comment" id="5,**|(fRR/vL+Y=`rRDe" x="88" y="-387"> <field name="COMMENT">Datenpunkte zunächst mit den Werten der Heizkörper befüllen</field> <next> <block type="debug" id="Gxa5(3%~m`9U[z=aAvSY"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="Q=YT6NKxc;0INo9aMgEi"> <field name="TEXT">Script startet - Datenpunkte werden mit den Werten der Heizkörper beschrieben</field> </shadow> </value> <next> <block type="update" id="~d]kr}cBL4GVT$N6=-Qk"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.variables.Heizkörper_Bad_mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="1uPr/KzJRm~je!Y?L@kI"> <field name="ATTR">val</field> <field name="OID">fritzdect.0.DECT_099950388435.hkrmode</field> </block> </value> <next> <block type="comment" id=")^6`[kWK:a^TD6]X,;|y"> <field name="COMMENT">BAD</field> <next> <block type="comment" id="`/g$NSrL12cm$a.V}nlc"> <field name="COMMENT">Trigger auf die Datenpunkte, die dann die Modes steuern</field> <next> <block type="on" id="K85{q^5~|IfzUlj+xC1z"> <field name="OID">javascript.0.variables.Heizkörper_Bad_mode</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="debug" id="[?[PSLYYO:{#f/aSs`-O"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="s]CP4{TnPmfxdSv*LTd["> <field name="TEXT">Trigger Heizkörper_Bad_mode wurde ausgelöst</field> </shadow> </value> <next> <block type="controls_if" id="Fft^Wb!TxnGLRoLDMcqz"> <mutation elseif="2"></mutation> <value name="IF0"> <block type="logic_compare" id="nEs=+L|WJHD06NVmp$w8"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Pj~wRfR^TQ]RH7;w;%=9"> <field name="ATTR">val</field> <field name="OID">javascript.0.variables.Heizkörper_Bad_mode</field> </block> </value> <value name="B"> <block type="math_number" id="^ZdDPRGA3_^M+f(eIF6X"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="Y1H-i[[uZog4!E]Epm4r"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="n$J6@d!k$50r3:MJ(g;h"> <field name="TEXT">Heizkörper Bad umgeschaltet auf AUTO 0</field> </shadow> </value> <next> <block type="toggle" id="rW.7jzJ{_+Si-r}1?82^"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.DECT_099950388435.setmodeauto</field> <field name="WITH_DELAY">FALSE</field> <next> <block type="control" id="Ndg:HoV{:{`L=*7zoHcU"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.DECT_099950388435.tsoll</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="6;qg+Y_pOn6P$|jIA4k_"> <field name="NUM">21</field> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="kZ#BgUrx;3x.o$g]L!qD"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=".EEZM1J+mT`7omv%ksqU"> <field name="ATTR">val</field> <field name="OID">javascript.0.variables.Heizkörper_Bad_mode</field> </block> </value> <value name="B"> <block type="math_number" id="749YBKF)?Udg~Zkmy4Eu"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO1"> <block type="debug" id=";|Wrl6uYrWdK*3lgbgFa"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="pM~?VzMer4@4]yw=Oo1I"> <field name="TEXT">Heizkörper Bad umgeschaltet auf OFF 1</field> </shadow> </value> <next> <block type="toggle" id="=l)o_s-=Y+(|_K=5W@8/"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.DECT_099950388435.setmodeoff</field> <field name="WITH_DELAY">FALSE</field> </block> </next> </block> </statement> <value name="IF2"> <block type="logic_compare" id="GUjolX3{kMdrk+R|@w,2"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="~t.4nJ,T[#Ym?21dcHP["> <field name="ATTR">val</field> <field name="OID">javascript.0.variables.Heizkörper_Bad_mode</field> </block> </value> <value name="B"> <block type="math_number" id="%1|WcsZcv$!#c#eVge)K"> <field name="NUM">2</field> </block> </value> </block> </value> <statement name="DO2"> <block type="debug" id=",ySq6^+X=rL_r_TsVCX*"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="|DQl|Z3uF8rXD#lQb;-`"> <field name="TEXT">Heizkörper Bad umgeschaltet auf ON 2</field> </shadow> </value> <next> <block type="toggle" id="Gs_kiey7#~!IuE.54Kag"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.DECT_099950388435.setmodeon</field> <field name="WITH_DELAY">FALSE</field> <next> <block type="control" id="nDQWUL=(gS{GkaPTz_c`"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.DECT_099950388435.tsoll</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="Ef]{GKb_KePP[nbi%:h7"> <field name="NUM">28</field> </block> </value> <next> <block type="toggle" id="id.UA$QsAgRYjknMj{;W"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.DECT_099950388435.setmodeon</field> <field name="WITH_DELAY">FALSE</field> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> <next> <block type="comment" id="``G,6j%SX70IKJUWID9b"> <field name="COMMENT">Trigger auf Temperaturänderung um im Mode On auf Auto umzuschalten</field> <next> <block type="on" id="|{aYkG2oh%q%/8r,SCTe"> <field name="OID">fritzdect.0.DECT_099950388435.tsoll</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="debug" id="|f)@tgA@_miAw2qsr#gp"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="VEbEtBOy*|wBgW-~#[|d"> <field name="TEXT">Trigger Temperaturänderung Bad wurde ausgelöst</field> </shadow> </value> <next> <block type="controls_if" id="}{?=K-T=|TNF2(pfUSE."> <value name="IF0"> <block type="logic_compare" id="b=)%W+X597dw*EaGTYx@"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="`!QNZ(x3/M@Pha7AEInW"> <field name="ATTR">val</field> <field name="OID">fritzdect.0.DECT_099950388435.hkrmode</field> </block> </value> <value name="B"> <block type="math_number" id="Pp%JCHk/ffevy}yY`:oy"> <field name="NUM">2</field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="V/_M~_3M?g;O~9:uKwHy"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="n._^aiwT.Ae9OdE*P*|}"> <field name="TEXT">Im Mode ON wurde die Temperatur geändert -> umschalten auf AUTO</field> </shadow> </value> <next> <block type="toggle" id="x[P,)OZ:y2%?kELVrC_G"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">fritzdect.0.DECT_099950388435.setmodeauto</field> <field name="WITH_DELAY">FALSE</field> <next> <block type="update" id="O0q9Baytb[tg4xMiWuml"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.variables.Heizkörper_Bad_mode</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="T=1-EP{Umo^YOlKU3Zkh"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
- YAHKA Integration***
3.1 Gerät hinzufügen
3.2 Service für Heizkörperthermostat hinzufügen
3.4 weitere Services für Batteriestand, Boost und Fensterauf hinzufügen
(Datenpunkte und Objekte müssen angepasst werden)
4. Test
Nun solltet Ihr Euer neues Gerät in YAHKA sehen (Screenshots siehe oben).
4.1 Veränderungen bei den Objekten
Wenn Veränderungen in YAHKA vorgenommen werden solltet ihr dies in den Objektwerten sehen können.
4.2 Veränderungen auf der Fritzbox Oberlfäche
Die Veränderungen kommen mit kurzer Zeitverzögerung auf der Weboberfläche der Fritzbox an (vermutlich hängt das ab vom Parameter Polling im fritzdect Adapter).
4.3 Veränderungen am Heizkörperthermostat
Die Übertragung von der Fritzbox an den Heizkörperthermostat kann bis zu 15 Minuten dauern. Dann solltet ihr dies hier auch sehen.
Über Verbesserungen oder Tipps freue ich mich .
Tony
-
Edit:
Wollte meine Variante Posten, habe aber nach dem Absenden gemerkt, dass das noch nicht zuverlässig läuft
-
Hallo Leute,
ich bin neu hier im Forum und habe direkt mal eine Frage bezüglich der AVM Fritz!DECT301 und der Einbindung in ioBroker zur Übergabe an Apple HomeKit.
Zur Zeit nutze ich einen Raspberry Pi 4 mit installiertem ioBroker. Diesen hatte ich mir angeschafft, um meine RWE/innogy SmartHome Rollladenschalter und die AVM Fritz!DECT301 in Apple HomeKit zu integrieren. Das hat mit den Rollladenschaltern nach etlichem Rumgefrickel auch irgendwann funktioniert. Allerdings steige ich diesbezüglich jetzt auf Shelly 2.5 mit HK-Firmware um, da ich mir die zusätzliche Zentrale (von RWE/innogy) sparen möchte und ich die Shellys direkt in HomeKit einbinden kann.
Dann habe ich versucht, die AVM Fritz!DECT301 über ioBroker bzw. den yahka-Adapter in HomeKit zu integrieren, woran ich aber bislang kläglich gescheitert bin. Ich komme da einfach nicht weiter. Liegt sicherlich auch daran, dass ich von Scripting leider keine Ahnung habe.
Ich habe es hinbekommen, dass ich über den Adapter "fritzdect.0" alle meine AVM-Geräte auslesen und deren Werte weiterverarbeiten kann. Die Geräte werden mit auch in den Objekten alle angezeigt, aber es hapert wie gesagt an den Einstellungen für die Datenweitergabe, so dass ich die AVM Fritz!DECT301 auch problemlos in HomeKit integrieren kann.
Habe schon so viel selbst probiert an Einstellungen und Wertzuweisungen, aber ich komme einfach auf keinen grünen Zweig.
Das Forum hier ist jetzt meine letzte Hoffnung, es mit eurer Hilfe doch noch hin zu bekommen, ansonsten werde ich wohl zu einem anderen Hersteller wechseln müssen, der eine direkte HomeKit-Integration bietet, was natürlich mit ziemlich hohen Kosten verbunden ist.
Also, kann mir Jemand von euch weiterhelfen?
Danke schon mal,Grüße, Andi
@tony-blue : Ich hoffe, ich darf deinen Thread "missbrauchen"
-
@snowman78 Hallo,
ich habe leider kein FRITZ! sondern ein Spirit Zigbee, habe mich aber anhand der Anleitung hier durchgehangelt und es so zum laufen gebracht. Auf spezifische Punkte zum FRITZ! kann ich also leider nicht eingehen. Ich versuche aber mal ein paar Ansätze zu liefern die vielleicht weiterhelfen.
Ob das script im ganzen Umfang benötigt wird kann ich nicht sagen. Aber:
@tony-blue said in YAHKA + AVM FRITZ!DECT 301 Heizkörperthermostat:
" Heizung" (= Heizbetrieb auf volle Öffnung - keine Regelung nach Thermostat) -> Hier lässt YAHKA allerdings trotzdem eine Veränderung im Temperatur-"Tacho" zu. Deshalb habe ich hier per Blockly-Script die Temperatur auf Maximum gesetzt, damit dem Bedienter intuitiv klar ist, was "Heizung" bedeutet. Wenn anschließend die Temperatur manuell nach unten geregelt wird, schalte ich per Blockly-Script auf Modus "Automatisch" um.
Das beschreibt ja eigentlich die Boost-Funktion. Ich nutze den Boost allerdings nicht (obwohl das Spirit das auch kann). Auch einen extra Datenpunkt habe ich nicht angelegt. Wenn das mit dem Auto-Modus allerdings benötigt wird nehme ich mal an, dass hier das script an diesem Punkt unumgänglich ist.
Bei den properties kannst du ausschließen, dass dir kühlen angezeigt wird. 0 = aus, 1 = heizen, 2 = kühlen, 3 = Automatik daher die validValues [0,1,3] also "aus", "heizen" und "automatisch".
Bei der Conversion: map kannst du die Modi sozusagen übersetzen, falls die nicht 1 zu 1 mit Homekit übereinstimmen.
Hier im Beispiel ist im ioBroker der status "aus" mit der 1 aktiviert und im Homekit (wie oben schon erwähnt) mit 0. Wenn du also in der Homeapp die Heizung ausschaltest, sendet die App an yahka die 0 und yahka übersetzt es für den ioBroker in die 1 (um es mal einfach zu sagen).
Die Erklärung zu den InOut-Funktionen und Conversion-Funktionen findest du hier.
Falls noch Fragen offen sind, kann ich gerne versuchen dir weiterzuhelfen.
Gruß Martin
-
@tony-blue said in YAHKA + AVM FRITZ!DECT 301 Heizkörperthermostat:
<xml xmlns="https://developers.google.com/blockly/xml">
Hallo Tony. Super Lösung. wie hast du das hinbekommen das er bei Boost und Fenster auf den Namen über den Schaltern anzeigt?
-
Das Problem mit nicht angezeigten Namen habe ich auch. Hast Du da schon eine Möglichkeit gefunden ?
-
@uwered-0 leider nein
-
@tony-blue @UweRed-0 Wie es bei mir aktuell funktioniert ist, die beiden Schalter als Extra Geräte anzeigen lassen im Homekit. Sprich das er das nicht als eine Kachel anzeigt. Dann im Homekit den Namen manuel setzen.