Autor Thema: Dishwasher Options  (Gelesen 2011 mal)

Offline killah78

  • Full Member
  • ***
  • Beiträge: 272
Dishwasher Options
« am: 03 Juni 2022, 12:51:08 »
Hi, ich habe einen Geschirrspüler, mit welchem ich das Modul schon einige Zeit nutze.
Leider kann ich nur das Programm selbst wählen, aber keine Option setzen. Es gibt da Optionen wie VarioSpeedPlus, ExtraDry, etc.
Diese werden auch gelesen und angezeigt, aber ich kann sie im Modul nicht setzen.
Kann ich das irgendwie hinzufügen? Muss das im Modul hinzugefügt werden?

Was ich getestet habe:
per API gesendet:
"{
  "data": {
    "key": "Dishcare.Dishwasher.Option.BrillianceDry",
    "value": true
  }
}"
an: https://api.home-connect.com/api/homeappliances/{haid}/programs/selected/options/Dishcare.Dishwasher.Option.BrillianceDry

Das wird auch dann gesetzt.
Kann ich da was machen?

Edit: Was soll passieren bei "requestProgramOptions"? Wenn ich das ausführe, sehe ich mit Verbose 5, dass die Optionen zurückkommen, es wird aber kein Reading upgedatet.
« Letzte Änderung: 03 Juni 2022, 15:28:49 von killah78 »

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8587
Antw:Dishwasher Options
« Antwort #1 am: 26 August 2022, 16:38:11 »
Das ist ganz einfach. Im Modul 48_HomeConnect.pm müssen die zusätzlichen Optionen eingetragen werden, und zwar ab Zeile 39 als

my @HomeConnect_SettablePgmOptions = (
  "BSH.Common.Option.StartInRelative",
  #-- PAH
  "Dishcare.Dishwasher.Option.BrillianceDry",
  "Dishcare.Dishwasher.Option.IntensivZone",
  "Dishcare.Dishwasher.Option.SilenceOnDemand",
  "Dishcare.Dishwasher.Option.VarioSpeedPlus",
  #-- end PAH
  "Cooking.Oven.Option.SetpointTemperature",
  "ConsumerProducts.CoffeeMaker.Option.FillQuantity",
  "ConsumerProducts.CoffeeMaker.Option.BeanAmount",
  "ConsumerProducts.CoffeeMaker.Option.CoffeeTemperature"
);

Dann einfach absetzen "set <device> Dishcare.Dishwasher.Option.SilenceOnDemand true" => schaltet die Option ein, mit "false" wird sie ausgeschaltet.

Ich hoffe, dass der Modulautor mitliest und die Zeilen zwischen "#-- PAH" und "#-- end PAH" in sein Release einbaut.

Da ich inzwischen noch mehr BSH-Geräte habe, werde ich mal sehen, dass ich auch die weiteren Optionen der anderen Geräte sammele.

LG

pah
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline killah78

  • Full Member
  • ***
  • Beiträge: 272
Antw:Dishwasher Options
« Antwort #2 am: 07 September 2022, 11:41:19 »
Hi,
vielen Dank. Wenn ich die Optionen hinzufüge, kann ich diese setzen, aber das starten funktioniert dann nicht mehr.
Habe auch herausgefunden woran es liegt:
beim startProgram werden auch die Optionen mit übergeben:
{"key":"Dishcare.Dishwasher.Option.BrillianceDry","value":"false"},{"key":"Dishcare.Dishwasher.Option.VarioSpeedPlus","value":"true"},{"key":"Dishcare.Dishwasher.Option.ExtraDry","value":"false"},{"key":"BSH.Common.Option.StartInRelative","value":0,"unit":"seconds"}
true/false darf aber nicht in Anführungszeichen stehen, sonst ist es ein "unexpected value". 0 und 1 funktioniert auch nicht.
true/false ohne Anführungszeichen funktioniert dagegen aber.

Hoffe das wird im Code irgendwann korrigiert.
Danke für die Lösung... :-)

Edit:
Noch was beobachtet: Scheinbar werden 0 und 1 mit true/false "vertauscht". Der korrekte Wert für diese Optionen soll true/false sein. Aus der cloud aber kommt ein 1/0 und wenn das dann wieder zum starten verwendet wird, ist es natürlich ungültig.

Ich habe den Code für mich jetzt so geändert: wenn true/false, dann ohne Anführungszeichen senden, wenn 0/1, aber keine Unit, dann wandeln in true/false. Wenn nachfolgende Unit, dann bleibt es nummerisch.


sieht im Code so aus:
PS: Bin kein programmierer, daher nur sehr quick and dirty...
    my $options="";
    foreach my $key ( @HomeConnect_SettablePgmOptions ) {
      my $optval = ReadingsVal($hash->{NAME},$key,undef);
      if (defined $optval) {
        my @a = split("[ \t][ \t]*", $optval);
        $options .= "," if (length($options)>0);

##start
##        if (looks_like_number($a[0])) {
##          $options .= "{\"key\":\"$key\",\"value\":$a[0]";
##
          if (@a[0] eq "true" || @a[0] eq "false") {
          $options .= "{\"key\":\"$key\",\"value\":$a[0]";

        } elsif (@a[0] eq "0" && @a[1] eq "") {
          $options .= "{\"key\":\"$key\",\"value\":false";
        } elsif (@a[0] eq "1" && @a[1] eq "") {
          $options .= "{\"key\":\"$key\",\"value\":true";

        } elsif (looks_like_number($a[0])) {
          $options .= "{\"key\":\"$key\",\"value\":$a[0]";
##ende

        } else {
          $options .= "{\"key\":\"$key\",\"value\":\"$a[0]\"";
        }
        $options .= ",\"unit\":\"$a[1]\"" if defined $a[1];
        $options .= "}";
      }
    }

« Letzte Änderung: 09 September 2022, 16:44:48 von killah78 »

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8587
Antw:Dishwasher Options
« Antwort #3 am: 10 September 2022, 14:37:37 »
Das problem ist hier die Option "SilenceOnDemand". Wenn die beim Start mitgesendet wird, startet die Spülmaschine NICHT.

Offenbar dürfen nicht alle setzbaren Optionen beim Startbefehl mit dabei sein.

LG

pah

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8587
Antw:Dishwasher Options
« Antwort #4 am: 11 September 2022, 09:29:33 »