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 .= "}";
}
}