FHEM Forum

FHEM - Hausautomations-Systeme => Home Connect => Thema gestartet von: killah78 am 03 Juni 2022, 12:51:08

Titel: Dishwasher Options
Beitrag von: killah78 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.
Titel: Antw:Dishwasher Options
Beitrag von: Prof. Dr. Peter Henning 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
Titel: Antw:Dishwasher Options
Beitrag von: killah78 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 .= "}";
      }
    }

Titel: Antw:Dishwasher Options
Beitrag von: Prof. Dr. Peter Henning 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
Titel: Antw:Dishwasher Options
Beitrag von: Prof. Dr. Peter Henning am 11 September 2022, 09:29:33
Schau mal hier...

https://forum.fhem.de/index.php/topic,129128.0.html

LG

pah