NEWS
homeconnect Spülmaschine per Script starten
-
Hallo zusammen!
Ich habe folgendes Problem: Ich kann die Spülmaschine nicht per Script starten. Wenn ich aber bei den Objekten unter
programs.active.BSH_Common_Root_ActiveProgram
aus dem Dropdown den Wert "Auto 45-65°" auswähle, dann startet die Maschine. Versuche ich das per Blockly, dann kommt folgender Fehler:
"programs/active/options: There is no program active."Mein Script sieht so aus:
Bzw hier als Code:
on({id: 'senec.0.ENERGY.GUI_GRID_POW', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("homeconnect.0.011080424772004684.status.BSH_Common_Status_RemoteControlStartAllowed").val == true && getState("senec.0.ENERGY.GUI_GRID_POW").val < -100) { setState("homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState"/*Energiezustand*/, 'An', true); setState("homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram"/*BSH_Common_Root_SelectedProgram*/, 'Auto 45-65°', true); setState("homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram"/*BSH_Common_Root_ActiveProgram*/, 'Auto 45-65°', true); } });
Was ich nicht verstehe ist, ich kann über setState den
programs.selected.BSH_Common_Root_SelectedProgram
verändern, der in den Objekten auch als Dropdown angezeigt wird, aber beiactive.BSH_Common_Root_ActiveProgram
kommt dann im Log der Fehler.Da ich definitiv kein Programmierer bin, kann es auch daran liegen, dass ich das versuche falsch zu setzen. Ich bin für jeden Tipp dankbar!
Beste Grüße
-
@paba42 du musst eine number auswählen nicht das Programm... schau mal in den RAW Objekt von dem BSH_Common_Root_ActiveProgram auf welcher Stelle es das was du auswählen willst steht..
setState("homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram"/*BSH_Common_Root_ActiveProgram*/, 'Auto 45-65°', true);
also hier anstatt 'Auto 45-65°' muss eine Zahl rein
-
@arteck sagte: anstatt 'Auto 45-65°' muss eine Zahl rein
... und anstelle der Blöcke "aktualisiere" die Blöcke "steuere" verwenden!
-
@arteck der Typ ist aber als String definiert, oder sehe ich das falsch?
Wenn ich das Objekt bearbeite steht da folgendes:
{ "type": "state", "common": { "name": "BSH_Common_Root_ActiveProgram", "type": "string", "role": "indicator", "write": true, "read": true, "states": { "Dishcare.Dishwasher.Program.Intensiv70": "Intensiv 70°", "Dishcare.Dishwasher.Program.Auto2": "Auto 45-65°", "Dishcare.Dishwasher.Program.Eco50": "Eco 50°", "Dishcare.Dishwasher.Program.PreRinse": "Vorspülen", "Dishcare.Dishwasher.Program.Quick65": "Express 65° - 1h", "Dishcare.Dishwasher.Program.MachineCare": "Maschinenpflege" } }, "native": {}, "from": "system.adapter.homeconnect.0", "user": "system.user.admin", "ts": 1650857019858, "_id": "homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Wie gesagt den
BSH_Common_Root_SelectedProgram
kann ich auch ändern, und der ist so konfiguriert:{ "type": "state", "common": { "name": "BSH_Common_Root_SelectedProgram", "type": "string", "role": "indicator", "write": true, "read": true, "states": { "Dishcare.Dishwasher.Program.Intensiv70": "Intensiv 70°", "Dishcare.Dishwasher.Program.Auto2": "Auto 45-65°", "Dishcare.Dishwasher.Program.Eco50": "Eco 50°", "Dishcare.Dishwasher.Program.PreRinse": "Vorspülen", "Dishcare.Dishwasher.Program.Quick65": "Express 65° - 1h", "Dishcare.Dishwasher.Program.MachineCare": "Maschinenpflege" } }, "native": {}, "from": "system.adapter.homeconnect.0", "user": "system.user.admin", "ts": 1650857019858, "_id": "homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@paba42 sagte in homeconnect Spülmaschine per Script starten:
Dishcare.Dishwasher.Program.Auto2
dann so Dishcare.Dishwasher.Program.Auto2
setState("homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram"/*BSH_Common_Root_SelectedProgram*/, 'Dishcare.Dishwasher.Program.Auto2', true);
und vergiss das steuere nicht was der @paul53 geschrieben hat
immer den indicator nicht den Text den du letztendlich in der combobox siehst
-
@arteck sagte: vergiss das steuere nicht
Dann entferne mal true am Ende von setState().
-
Ich hab das jetzt mal so angepasst:
on({id: 'senec.0.ENERGY.GUI_GRID_POW', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("homeconnect.0.011080424772004684.status.BSH_Common_Status_RemoteControlStartAllowed").val == true && getState("senec.0.ENERGY.GUI_GRID_POW").val < -100) { setState("homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState"/*Energiezustand*/, 'An'); setState("homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram"/*BSH_Common_Root_SelectedProgram*/, 'Dishcare.Dishwasher.Program.Auto2'); setState("homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram"/*BSH_Common_Root_ActiveProgram*/, 'Dishcare.Dishwasher.Program.Auto2'); } });
Testen kann ich das gerade nicht, weil einen höhere Instanz nicht mehr warten wollte, und die Maschine kurzerhand manuell gestartet hat.
Wo ist denn der Unterschied zwischen steuere und aktualisiere?
-
@paba42 sagte in homeconnect Spülmaschine per Script starten:
setState("homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState"/Energiezustand/, 'An');
ist der richtig ? check mal das RAW object
-
@arteck
Nee ist er nicht, aber es gab keine Fehlermeldung im Log. Ich teste das heute Abend noch mal.{ "type": "state", "common": { "name": "Energiezustand", "type": "string", "role": "indicator", "write": true, "read": true, "unit": "", "states": { "BSH.Common.EnumType.PowerState.Off": "Aus", "BSH.Common.EnumType.PowerState.On": "An" } }, "native": {}, "from": "system.adapter.homeconnect.0", "user": "system.user.admin", "ts": 1650880220130, "_id": "homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@paba42 doch ist der wohl... was hab ich vorer gesagt..
der indikator und der ist nicht AN AUS sondern
BSH.Common.EnumType.PowerState.Off
und
BSH.Common.EnumType.PowerState.On
-
@arteck Danke für die Hilfe.
Ich habe das Script jetzt laufen, muss jetzt nur noch die Startbedingungen anpassen. Das ist der aktuelle Stand:
on({id: 'senec.0.ENERGY.GUI_GRID_POW', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("homeconnect.0.011080424772004684.status.BSH_Common_Status_OperationState").val != 'BSH.Common.EnumType.OperationState.Run') { if (getState("homeconnect.0.011080424772004684.status.BSH_Common_Status_RemoteControlStartAllowed").val == true && getState("senec.0.ENERGY.GUI_GRID_POW").val < -100) { setState("homeconnect.0.011080424772004684.settings.BSH_Common_Setting_PowerState"/*Energiezustand*/, 'BSH.Common.EnumType.PowerState.On'); setState("homeconnect.0.011080424772004684.programs.selected.BSH_Common_Root_SelectedProgram"/*BSH_Common_Root_SelectedProgram*/, 'Dishcare.Dishwasher.Program.Auto2'); setState("homeconnect.0.011080424772004684.programs.active.BSH_Common_Root_ActiveProgram"/*BSH_Common_Root_ActiveProgram*/, 'Dishcare.Dishwasher.Program.Auto2'); } } });
-
@paba42 Kurze Frage zum Skript: Wie stellst Du sicher, dass die Spülmaschine auch nur angeht, wenn sie gefüllt ist? Dafür gibts ja eigentlich keinen passenden Zustand, oder? Und so würde sie immer angehen, wenn PV-Überschuss da ist, egal ob leer, gefüllt und mit oder ohne Reinigungstab...