NEWS
Test Adapter homeconnect (BSH Home-Connect) v0.0.x
-
@gezi70
Moin, also, aktuell gibt es da wohl Probleme seitens Siemens, wenn ich die Maschine einschalte und den Fernstart aktiviere, löscht der sich wieder nach X Zeit, wenn die Kiste wieder ausgeht. Bin mir fast sicher, dass es früher anders war, dass wenn der Fernstart aktiv war, dass die Kiste halt auch anbliebt und der Fernstart 24h gültig war und wurde nur gelöscht, wenn die Tür wieder geöffnet wurde. Ich habe mal ein Ticket bei Siemens aufgemacht.
Ansonsten gibt es jetzt wohl die Möglichkeit des permanenten Fernstarts, da braucht man den Knopf wohl nicht mehr und kann immer aus der Ferne die Kiste anschalten und Fernstart auslösen.
Ist aber für mich gerade nicht geeignet, weil ich somit keinen genauen Trigger habe, wann wirklich gestartet werden soll. Einzige Idee ist, ich speichere mit den gewollten Start weg, wenn die Maschine eingeschaltet wurde für X Zeit.
Ist dann nur blöde, wenn die Maschine mal so eingeschaltet wird, ohne das die starten soll. Naja, ich probier es mal aus, wenn Siemens da keine Lösung für hat.Hier mal das kurze nicht ausgebaute Script
// Abfrage ob die Spülmaschine starten darf, wenn genügend PV Export zur Verfügung steht, andernfalls halt // am nächsten Tag, wenn die Sonne aufgeht. var status = 'homeconnect.0.0.05466786785688.settings.BSH_Common_Setting_PowerState' var close = 'homeconnect.0.0.05466786785688.status.BSH_Common_Status_DoorState' var aktiv = 'homeconnect.0.0.05466786785688.status.BSH_Common_Status_OperationState' var start_allow = 'homeconnect.0.0.05466786785688.status.BSH_Common_Status_RemoteControlStartAllowed' var select_Prog = 'homeconnect.0.0.05466786785688.programs.selected.BSH_Common_Root_SelectedProgram' var root_Prog_start = 'homeconnect.0.0.05466786785688.programs.active.BSH_Common_Root_ActiveProgram' var pv_export = '0_userdata.0.Huawei.Dongle.Grid_power' var pv_vorgabe = 3000 on({ id: pv_export/*Huawei*/, change: "any" }, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState(pv_export).val >= pv_vorgabe && getState(start_allow).val && getState(close).val == "BSH.Common.EnumType.DoorState.Closed" && getState(aktiv).val != "BSH.Common.EnumType.OperationState.Run" ) { await setStateAsync(status, "BSH.Common.EnumType.PowerState.On") setStateDelayed(root_Prog_start, getState(select_Prog).val),60000 console.log("Fremdstart wurde ausgelöst für Spülmaschine") } });
Um ein Programm zu starten schiebe ich einzig alleine das ausgewählte ins Root. Die Maschine muss dafür aber an sein. Sonst geht es nicht.
setStateDelayed(root_Prog_start, getState(select_Prog).val),60000
-
@ple Ich danke dir für deine Ausführungen.
Meines Erachtens nach ist doch der Fernstart dann dauerhaft aktiviert, wenn ich von überall und immer per Handyapp darauf zugreifen kann. Und das ist ja bei mir der Fall.
Meine Frage wäre halt: Sind deine o.g. Datenpunkte alle beschreibbar? Bei mir käme es ungefähr so infrage:
Wenn "virt. Schalter" START PER PV = ein & entsprechendes Programm über "Taste" am Vis vorgewählt --> dann über ...W AKTIVIERE FERNSTART; ansonsten Start um 17 Uhr.
Die Tür wäre ja dann sowieso geschlossen, da das Programm und ob ausgelöst werden soll oder nicht sowieso manuell am Display an der Wand erfolgen soll. Mir geht es darum, welche Datenpunkte ich halt beschreiben kann... -
@gezi70
Da musst du mal in der App gucken, ob Fernstart dauerhaft aktiv ist bei dir, wenn ja, dann kannst mit deinen virtuellen Schalter in der Vis das realisieren.
Das gewählte Programm wird ja im Datenpunkt'homeconnect.0.05466786785688.programs.selected.BSH_Common_Root_SelectedProgram'
und wenn du den Inhalt ins
'homeconnect.0.05466786785688.programs.active.BSH_Common_Root_ActiveProgram'
schiebst, startet das Prog.
-
@ple Ich danke dir. Dann fange ich mal an zu basteln...
-
@gezi70
Hallo habe das mit dem Geschirrspüler und Solar Überschussladen hingekriegt.
Im Gegensatz zur Waschmaschine und Trockner hat der Geschirrspüler ja keine "pause" Funktion. War daher eine schwierigere Geburt.Ablauf ist wie folgt:
a) Bediener- Geschirrspüler einschalten
- Programm wählen
- Fernstart aktivieren
- Gerät starten
b) Iobroker Skript
- Schaltet Geschirrspüler wieder aus
Var 1:
sobald PV grösser 1500W Leistung schalte Geschirrspüler ein --> Programm wird fortgesetzt
Var 2
sollte bis 11:45 Uhr nicht durch PV Überschuss gestartet, dann schalte Geschirrspüler ein... --> Programm wird fortgesetztGruss
Karacho
-
@karacho meins läuft auch schon ein paar Tage. Allerdings brauche ich nur den Tab einwerfen und die Tür schließen. Das Programm wähle ich am Display (Tablet an der Wand) und wähle aus, dass er bei Überschreiten des Schwellwertes von 350 W startet. Der Rest geht prima von alleine.
-
@karacho magst du das script vielleicht zur verfügung stellen?
-
So richtig zu gebrauchen ist der Fernstart bei den Spülmaschinen aktuell ja wohl nicht. Mein Modell S255HB800E ist jetzt im permanenten Fernstart in 10 Minuten 7x erreichbar und 7x nicht erreichbar gewesen. Also hat die Verbindung laufend verloren und wieder bekommen.
Da kann man nur hoffen dass Neff das Problem in den Griff bekommt. -
Hallo, ich krieg es einfach nicht auf die Reihe mit der Anmeldung:
Ich habe schon die Anmeldung im Developer und auch in der Home Connect App erneuert, den Adapter gelöscht und neu installiert, es hilft alles nichts.
Kann es sein dass ein Port geöffnet sein muss in der Firewall für den Adapter ?
-
@dskrt
OAuth Flow ist Device Flow ausgewählt und du hast die Zugangsdaten der App eingegeben? -
@tombox Klar, schon x-mal probiert seit Samstag. Kann es eventuell auch an diesem Single-Key ID hängen?
-
@frana120500 ich bin noch am Tüfteln, wie ich es übermitteln soll: allein der Code für das Blockly überschreitet den Maximalwert von 10000 Zeichen, die in einem Beitrag gesendet werden können...
-
@gezi70 screenshot
oder pack es in eine txt datei
-
@gezi70 kannst du hier als txt hochladen
-
@frana120500 Um den Geschirrspüler vom Tablet aus zu steuern, habe ich mir erstmal einige Datenpunkte als Boolean und als String angelegt.
Mit den Booleans wähle ich die Programme vor, und "drücke" quasi nochmals auf den "Auslöser", nicht dass der Geschirrspüler macht was er will, wennn der eingestellte Schwellwert der PV überschritten wurde.
Bei der Auswahl am Display wird dann die Maschine für einen kurzen Moment eingeschaltet und geprüft, ob die Tür geschlossen ist. Wenn nicht, erfolgt eine Sprachausgabe (bei mir direkt am Display).
Wenn dann der Schwellwert der PV Anlage überschritten ist (ich habe bei mir 350 W genommen, der Wert ab dem meine Anlage ins Netz einspeist), schaltet der Datenpunkt um, das durch den bool. Wert vorgewählte Programm wird in den entsprechenden Datenpunkt des Geschirrspülers übernommen und anschließend noch mit ein paar ms in den Datenpunkt zum Start der Maschine geschrieben.
Ist das Programm fertig und der Geschirrspüler meldet dies in seinem Datenpunkt, wird der Auslöser für den Schwellwert und das angewählte Programm wieder auf "false" gesetzt, dass alles wieder im Ausgangszustand ist, und das Programm nicht automatisch am nächsten Tag wieder von selbst startet.
Das ganze ließe sich vermutlich mit Informatik- und Programmierkenntnissen eleganter lösen, aber es funktioniert und der Geschirrspüler macht was er soll.
-
@frana120500
Hallo,
here it is<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout2">timeout2</variable> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="on" id="=EI[P$3d[ib4/E[]qTX3" x="-538" y="-1388"> <field name="OID">homeconnect.0.BOSCH-SMV68TX06E-68A40E0869E8.status.BSH_Common_Status_RemoteControlStartAllowed</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="timeouts_wait" id="-WH}/45^BS2g5C1=6Xyh"> <field name="DELAY">15</field> <field name="UNIT">sec</field> <next> <block type="controls_if" id="A-jAjhjdA.2P9k/^:kNn"> <value name="IF0"> <block type="logic_operation" id="EaMdkJm/87Aqeg[Vnr@-" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="{F*aph}D-rUiM:biJlIQ"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="xf$j/jK-wX_F[ej*Yq?u"> <field name="ATTR">val</field> <field name="OID">homeconnect.0.BOSCH-SMV68TX06E-68A40E0869E8.status.BSH_Common_Status_OperationState</field> </block> </value> <value name="B"> <block type="text" id=",ID^WV;lNe./J78xG;`G"> <field name="TEXT">BSH.Common.EnumType.OperationState.Run</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="T(]5gJdYZPG{;Z=*ON)Z"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="r|aJg6_qa5vJW,h-ZE5O"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Geschirrspüler_Einschalt_Logik</field> </block> </value> <value name="B"> <block type="logic_boolean" id="dKGJB{U;(DHJ1O.1xoP~"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="2aD:`yfy$77s2ePc6t-2"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">homeconnect.0.BOSCH-SMV68TX06E-68A40E0869E8.settings.BSH_Common_Setting_PowerState</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="D{OCAjnPRFzbEm{))Exc"> <field name="TEXT">BSH.Common.EnumType.PowerState.Off</field> </block> </value> </block> </statement> <next> <block type="update" id="7#5t/t6vpX8Bx8;}+b]`"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.Geschirrspüler_Einschalt_Logik</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="/eW|EAVP9)ElNE!JwPT;"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="comment" id="LAGlYNmQyZrwK#S%W.?E"> <field name="COMMENT">Start bei Überschuss Solar</field> <next> <block type="on" id="QTovZ4ZkHP_?mn$#1AkV"> <field name="OID">solarlog.0.status.pac</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="comment" id="hP:)Ji(05X0G8x];bui["> <field name="COMMENT">Start bei Überschreiten Wert</field> <next> <block type="controls_if" id="9=ZM~}[,@;uLNJs|gWS."> <value name="IF0"> <block type="logic_operation" id="Cn)Ey+~s;~~/HPhD:RHK" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="oG_5RH5:sT{o:TmfO:UU"> <field name="OP">GT</field> <value name="A"> <block type="convert_tonumber" id="(rvt,:Lz]wi!6wn,AOr9"> <value name="VALUE"> <block type="on_source" id="NfEKMc(.|`/`ceV+Xc(x"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="9:pYzKpedF,G+ZQhr*Zb"> <field name="NUM">1500</field> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="BV;$I3scoiIgfyQZS:EI" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="Sau(8t/Rr*PXdM*`Jz!k"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="]6E@yrt2ZS^d,D;ik7Ft"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Geschirrspüler_Ueberschuss_Start_Push</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Oa*OIa0#r_hb,xHl0Xq_"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id=",rcqOV}z,qF3+ott{gS7"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="G5t)rQbgseV+]DgB*Nd2"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Geschirrspüler_Einschalt_Logik</field> </block> </value> <value name="B"> <block type="logic_boolean" id="]R`R-X.(}+.pd8r978,O"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="$J-6tu.kk$Qj0XU4XQXy"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">homeconnect.0.BOSCH-SMV68TX06E-68A40E0869E8.settings.BSH_Common_Setting_PowerState</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="BZt8?ng9|R_g`w@gIdIf"> <field name="TEXT">BSH.Common.EnumType.PowerState.On</field> </block> </value> <next> <block type="pushover" id="~UI=Q}W/,4+i13S6:oha"> <field name="INSTANCE"></field> <field name="SOUND">siren</field> <field name="PRIORITY">1</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text"> <field name="TEXT">Temperatur CPU >70°. Sehr Kritisch !!!!</field> </shadow> <block type="text" id="{s.^9Dx.eR.us|~u5xbd"> <field name="TEXT">Geschirrspüler Solar Überschuß gestartet!</field> </block> </value> <next> <block type="update" id="5_.`JPw~HMwxefal:/be"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.Geschirrspüler_Ueberschuss_Start_Push</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">15</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="*^e-,n+Mlz+ohsYz(7!~"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="timeouts_settimeout" id="Dv1U_d!#QzBfIzRb}^aq"> <field name="NAME">timeout</field> <field name="DELAY">300</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="update" id="A;+5l[buM5vg[P:yXP^9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Geschirrspüler_Ueberschuss_Start_Push</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="_cU]Yt-ceHWU1VkQY/v1"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> <next> <block type="comment" id="]Y|nGr/HGp.%NeCKo1?j"> <field name="COMMENT">Alternativ Start zur Uhrzeit</field> <next> <block type="schedule" id="u=ZNG?~q}/*4?~k4)Ri0"> <field name="SCHEDULE">45 11 * * *</field> <statement name="STATEMENT"> <block type="controls_if" id="ej9`tgAVvEGbSa4GfTaO"> <value name="IF0"> <block type="logic_compare" id="{^3tB$4XLz6x,CEoi4/e"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="?bFJk)v@nD3M~ngisiCJ"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Geschirrspüler_Einschalt_Logik</field> </block> </value> <value name="B"> <block type="logic_boolean" id="*Vn:EaZl;,uMD.%3D{ZP"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="m_{MI:p?0bpcq{u=-7(f"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">homeconnect.0.BOSCH-SMV68TX06E-68A40E0869E8.settings.BSH_Common_Setting_PowerState</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="X1%vMYrj,vEGqMh{jCx~"> <field name="TEXT">BSH.Common.EnumType.PowerState.On</field> </block> </value> <next> <block type="pushover" id="-MmTLoZlX2-4SSzJ]U]0"> <field name="INSTANCE"></field> <field name="SOUND">siren</field> <field name="PRIORITY">1</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="tj=Q6,rH?K:HjrowMoW."> <field name="TEXT">Temperatur CPU >70°. Sehr Kritisch !!!!</field> </shadow> <block type="text" id="H3j(?H)Cj/|{uPY?0{$;"> <field name="TEXT">Geschirrspüler Klassisch gestartet!</field> </block> </value> </block> </next> </block> </statement> </block> </statement> <next> <block type="timeouts_settimeout" id="xI=iO2h2F[2jDFQwa_7s"> <field name="NAME">timeout2</field> <field name="DELAY">300</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="update" id="nrNd;)PxF`4V8BV;$E%x"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Geschirrspüler_Einschalt_Logik</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="u$,0!UB^Bc]Yg1Qe$Ba^"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Bin kein Profi... vielleicht zu umständlich.....
Der Geschirrspüler hat Bedienfeld verdeckt in der Klappe. Er muss nur ganz normal bedient werden.
Starten - Programm wählen - Fernstarte aktivieren - Starten - zumachen
Wollte das nicht über ein Ipad oder so realisieren....Gruss
Karacho -
@ricogesch Was war denn das Problem ? ich steh auf dem gleichen Schlauch und kriege den Adapter nicht grün...
-
@maxpower-0 Was war denn jetzt die Lösung dieses Problems ? ich habe das Gleiche und komme nicht weiter...
-
Guten Tag.
Habe auch adapter Installiert und bin nach Anleitung gegangen.
Bekomme aber keine Verbindung aufgebaut.
Fehler im Log steht:homeconnect.0
2022-10-08 09:03:36.669 info Wait 10 seconds to retry
homeconnect.0
2022-10-08 09:03:36.669 error {"error":"expired_token","error_description":"Device authorization session not found, expired or blocked"}
homeconnect.0
2022-10-08 09:03:36.668 error https://api.home-connect.com/security/oauth/device_verify?user_code=U646-CI2D
homeconnect.0
2022-10-08 09:03:36.663 error Bitte überprüfe Benutzername und Passwort oder besuche diese Seite für manuelle Anmeldung:
homeconnect.0
2022-10-08 09:03:36.662 error Please check username and password or visit this site for manually login:Kann mir da einer weiterhelfen
-
@bockwurst19 Bitte die GitHub version probieren da ist das gelöst mit singlekey login