NEWS
Test Adapter homeconnect (BSH Home-Connect) v0.0.x
-
@antoun22 Anbei der Blockly_Code für die Ansagen welcher Kaffe fertig ist und falls der Event "Wasser leer" oder "Tropfschale leeren" getriggert wird.
"warmMilk" und "hotWater" musst Du aber noch via if/then abfangen, da es bei Dir ja hotWater gibt...Achja- eigenen eigenen DP für zuletzt gewählten Kaffe muss man noch per Hand erstellen.
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="comment" id="LapTK?,zWE6pz2iV@=Bd" x="112" y="-112"> <field name="COMMENT">Zuletzt gewählten Kaffee in eigenen DP einsetzen</field> <next> <block type="on" id="P[p|KIv3DklZ*7m`J=N|"> <field name="OID">homeconnect.0.BOSCH-CTL636ES6-68A40E26C6C6.programs.selected.BSH_Common_Root_SelectedProgram</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="~6{*Ca*7l4%hOUmLmL{c"> <value name="IF0"> <block type="logic_compare" id="l7)TWOm#vM5l/2R}t#2X"> <field name="OP">NEQ</field> <value name="A"> <block type="on_source" id="v!zVQIk]LtLD!f6}(RI5"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_null" id="_tcb=-(;tZt(9GRfBEol"></block> </value> </block> </value> <statement name="DO0"> <block type="update" id="-$7Dw9!Tr_n]x24=+ud]"> <mutation delay_input="false"></mutation> <field name="OID">0_userdata.0.Kaffemaschine.last_coffee</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="on_source" id="R:@y-I4Qe1h({z;lMu[%"> <field name="ATTR">state.val</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="comment" id="Pb~:L+1hh!xT[39H,0HM"> <field name="COMMENT">Alexa Ansage wenn der Kaffee fertig ist</field> <next> <block type="on" id="8715eV~RN{[[atjqp@A8"> <field name="OID">homeconnect.0.BOSCH-CTL636ES6-68A40E26C6C6.programs.active.options.BSH_Common_Option_ProgramProgress</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="i$4lS6+x-a-AN;|Wmh]X"> <value name="IF0"> <block type="logic_compare" id="v9co4T,*.REvm,*8J2i#"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="W?RA#KxD4^Kb9*?T7_h?"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="B+(*%MY~j/GNKQIdmFM9"> <field name="TEXT">100</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Je-575z]PxkP_zFl(Z!U"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U509914419KQ.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="@~B,i;x$I)8%Je^k*)DR"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="Q5Xjmj~g%]*WvRW4EvTX"> <field name="TEXT">Hallo, Dein </field> </block> </value> <value name="ADD1"> <block type="text_getSubstring" id="X|YKPo0/!GBgZ0^5z/2," inline="false"> <mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"> <block type="get_value" id="p5%H5#w[it6WS9iE|tj["> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Kaffemaschine.last_coffee</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="bF186|FznYoaFBx}io9o" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="A`TLz5Lbfgw;=mJOp}(^"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="j1|aA3l$S=z^m.Ug8?B=" inline="false"> <field name="END">LAST</field> <value name="VALUE"> <block type="get_value" id="4}HZ*/+Ss/,Q?CV4P7Kh"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Kaffemaschine.last_coffee</field> </block> </value> <value name="FIND"> <shadow type="text" id="P5s;aJDPT*F;y(,VtRBs"> <field name="TEXT">abc</field> </shadow> <block type="text" id="Mir}i#n{YT[K@4t#)Q?v"> <field name="TEXT">.</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="-9+`M14/p._`PvUM3`yk"> <field name="NUM">1</field> </shadow> <block type="math_number" id="I%mK$b3fzLFhu88Z[g?_"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="-DS/R`ePW!paNc:WF^eT"> <field name="TEXT"> ist fertig</field> </block> </value> </block> </value> <next> <block type="debug" id="E;l%;geOn!|rdiT.sc5a"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="Xs_M92/GAeD6l2|_Y~dT"> <field name="TEXT">BSH_Common_Option_ProgramProgress_auf_100%</field> </shadow> <block type="text_join" id="Pl2tbDK3unWM,c-2~(po"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="1]-mr1)bwgU!2iJW7Gr-"> <field name="TEXT">Hallo, Dein </field> </block> </value> <value name="ADD1"> <block type="text_getSubstring" id="7_gd/nDVsY5t7X^aC(dH" inline="false"> <mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"> <block type="get_value" id="u#1/@sb^88T:atE:rk+*"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Kaffemaschine.last_coffee</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="L04we+5X]U^5?@Ua.Jr!" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="A`TLz5Lbfgw;=mJOp}(^"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="7Hg3~{#zFgX^4e]iEu[/" inline="false"> <field name="END">LAST</field> <value name="VALUE"> <block type="get_value" id="]}8EkT?*B-y[0%o4SU5_"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Kaffemaschine.last_coffee</field> </block> </value> <value name="FIND"> <shadow type="text" id="P5s;aJDPT*F;y(,VtRBs"> <field name="TEXT">abc</field> </shadow> <block type="text" id="pe(!(TuP#HoKY39*~{G+"> <field name="TEXT">.</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="-9+`M14/p._`PvUM3`yk"> <field name="NUM">1</field> </shadow> <block type="math_number" id="cXVm+lfkz-m:|X#O5tQ2"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="0WPrr.Q,}Mn2P{0-WrTW"> <field name="TEXT"> ist fertig</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </statement> <next> <block type="comment" id="bdo3D}FyKm7rm:j@4jn:"> <field name="COMMENT">Alexa Ansage wenn Tropfschale voll ist</field> <next> <block type="on" id="%Qry3R,F-w~eDWIZ;v~Q"> <field name="OID">homeconnect.0.BOSCH-CTL636ES6-68A40E26C6C6.events.ConsumerProducts_CoffeeMaker_Event_DripTrayFull</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="s+uRRm_,=H?8|j|GSLrD"> <value name="IF0"> <block type="logic_compare" id="({v/UANZbItzMGQVz;PO"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="pecp$)zA!mFQ,:p2NR($"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="9)#UKeJGU=0BXO9mzOft"> <field name="TEXT">BSH.Common.EnumType.EventPresentState.Present</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id=",,H!U35,2=48#DuW,!+$"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U509914419KQ.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="z|J(n/Z1m%yc,kWJUl=J"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="BqB=N.D1{}my3ZRt8o[6"> <field name="TEXT">Bitte Tropfschale leeren.</field> </block> </value> </block> </value> </block> </statement> </block> </statement> <next> <block type="comment" id="TklKTCg(o7sKGG+Soo5`"> <field name="COMMENT">Alexa Ansage wenn Wasserbehälter leer ist</field> <next> <block type="on" id="j?sr8Kd.S/N@pQN(A1vt"> <field name="OID">homeconnect.0.BOSCH-CTL636ES6-68A40E26C6C6.events.ConsumerProducts_CoffeeMaker_Event_WaterTankEmpty</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="8{?uPOLRWYL.d~nt8AUV"> <value name="IF0"> <block type="logic_compare" id="@tLM~A-j]@aUA@-Wt`C3"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="K4CbR^8njT!H]#RdQdqS"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id=".uE~(4Ui~h(LX?VY}yHN"> <field name="TEXT">BSH.Common.EnumType.EventPresentState.Present</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="y?HpJNT?9z_[/UhEvK-p"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U509914419KQ.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="t/y|E^|@|NJ`QM*vQMY2"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="VINF;n`EDeCMwW6JowOA"> <field name="TEXT">Bitte Wassertank füllen.</field> </block> </value> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
-
@oberfragger super, Danke Dir!
-
Mal ne Frage zum Funktionsumfang des Adapters.
Aktuell haben wir einen Kaffeevollautomaten, eine Waschmaschine und einen Geschirrspüler, die über Home Connect kommunizieren können.
Beim Kaffeevollautomaten gibt es die Möglichkeit, per IFTTT bestimmte Getränke zubereiten zu lassen. Das funktioniert auch soweit. So habe ich dann diese IFTTT-Befehle mit entsprechenden Webhooks verknüpft, die ich über den iot- und den yahka-Adapter aufrufen kann.
Ich frage mich aber, ob ich wirklich immer den Umweg über IFTTT gehen muss (läuft leider nicht immer zuverlässig), oder ob man das nicht auch direkt mit dem homeconnect-Adapter umsetzen kann? Was per IFTTT geht, sollte doch auch über den Adapter laufen können. Oder hat BSH hier Einschränkungen vorgenommen?
-
@dtp Die API kann auf jeden Fall nicht alle Optionen die die App kann. Aber wenn ich das Bild so sehe müssten die Optionen gehen.
Die Version von github installieren.
Einfach unter programs/selected/programname auswählen und dann das Programm aktiv setzen -
Nun ja, das Problem ist ja, dass man über IFTTT individuelle Einstellungen z.B. hinsichtlich der Milchmenge, der Getränkegröße oder der Kaffeestärke vornehmen kann, die man als Applet ablegt. Es wird also nicht nur einfach ein Programm aufgerufen, sondern es werden zusätzlich noch gewisse Parameter gesetzt, die ich bisher in den Datenpunkten des Adapters nicht finden konnte. Oder geht das mit der aktuellsten Version?
-
@dtp
Hier kannst du die aktuellen Optionen sehen:
https://developer.home-connect.com/docs/coffee-maker/supported_programs_and_options
ConsumerProducts.CoffeeMaker.Option.BeanAmount
ConsumerProducts.CoffeeMaker.Option.FillQuantity
ConsumerProducts.CoffeeMaker.Option.CoffeeTemperatureFür weitere Wünsche einfach eine englische Mail hier hin schreiben, dass du dir die IFTTT Optionen auch in die API wünscht.
https://developer.home-connect.com/support/contact -
Danke. Das sieht ja schon mal recht vielfältig aus. Fehlt - soweit ich das sehe - eigentlich nur die Milchmenge.
EDIT: Hab mir jetzt noch mal die Datenpunkte des homeconnect-Adapters angesehen. Soweit ist alles vorhanden.
Aber wie kombiniere ich jetzt das entsprechende Getränk mit den weiteren Optionen?
Gruß,
Thorsten
-
Hi,
wäre es möglich, die Namensinfo eines Geräts automatisch in die Spalte Name das Adapters eintragen zu lassen? Ich suche mir da jedesmal einen Wolf, bis ich das richtige Gerät gefunden habe.
-
@dtp lösche mal alle Geräte und installiere via github
Dann kannst du gleich testen am besten mit einer Kaffeemaschine ob noch alle select Programm gehe
-
Sieht gut aus.
Die Select-Programme werden auf alle Fälle alle angezeigt. Hab mir aber gerade nen Kaffee gemacht. Muss also noch etwas warten, bis ich es teste.
-
@dtp ich habe umgestellt das alle select mit ihren jeweiligen Optionen
-
So sieht's bei mir mit der Version 0.0.27 aus.
Von weiteren Optionen der Programme kann ich da nichts erkennen. Was mir auch fehlt, ist die Möglichkeit, die Maschine ein- und auszuschalten. Das geht derzeit wohl nur über IFTTT, oder?
-
@dtp eigenartig mal im eingeschaltet Zustand den Adapter Neustarten. Über den settings State kannst du das Gerät ein und ausschalten
-
Jetzt sind die Optionen da.
Latte Macchiatto ist aber das einzige Getränk ohne Eintrag im Namen.
Und danke für die Info mit dem Datenpunkt settings.BSH_Common_Setting_PowerState zum Ein- und Ausschalten. Setze ich den Datenpunkt dazu einfach auf true oder false?
-
@dtp Nein es muss der jeweilige bsh State gesetzt werden den du findest wenn du auf den edit Stift klickst
-
Hi,
ich hab gerade den Adapter für unseren Trockner installiert und mehrere Fragen dazu
Wie kann ich unter Events das Present auswerten für ein Skript?
Für mein Denken wäre doch 0/1 besser für Programm Ende oder Knitterschutz Ende.....
Der Doorstate steht auf offen obwohl der Trockner läuft .....
Bei Betriebsstatus das gleiche wie oben, wie kann ich das Auswerten oder ändern auf 0 und 1 ??
Danke
Tobias -
@tobi83 Das ist eigenartig mit dem Knitterschutz gab es schon mal eine Diskussion um das zu erkennen.
Wenn man mit Skript auswerten will muss man die langen States nehmen BSH.Common... man sieht sie alle wenn man auf den Stift klickt. -
Hallo liebe Community,
UPDATE: Nach dem Neustart der Node-RED sind die Objekte jetzt auswählbar...
Frage zu HomeConnect und Node-RED:
Derzeit sehe ich meinen Geschirrspüler und kann ihn auch über die Objekte in IOBroker starten.
Nun möchte ich den Fernstart per Node-Red ab 5.000 Watt PV-Leistung starten.
Den Trigger (aus Modbus.0) habe ich gefunden, nur mit IOBroker-Out kann ich bei den Objekten kein Gerät auswählen.
Unter Homeconnect.0 gibt es nur den Ordner dev.
Welche Node muss ich nutzen, um ein Homeconnect Objekt zu ändern ?In den Objekten (ausserhalb Node-RED) stehen: Backofen, Herd, Dunstabzug, Geschirrspüler.
Grüße aus Brandenburg.
Michael -
@Dancekid das ist eine Node red spezifische Frage da würde ich dir empfehlen ein eignen thread aufzumachen
-
Ist das bei euch eigentlich auch, dass ihr regelmäßig einen neuen Token erzeugen müsst, weil der Adapter seine Verbindung zu den Geräten verloren hat? So ist das Ganze leider nicht wirklich praktikabel. Oder mache ich da was falsch?