diff --git a/FHEM/70_BOTVAC.pm b/FHEM/70_BOTVAC.pm index 7c59f7105..b9a812bf0 100755 --- a/FHEM/70_BOTVAC.pm +++ b/FHEM/70_BOTVAC.pm @@ -879,7 +879,7 @@ sub ReceiveCommand($$$) { # getSchedule, enableSchedule, disableSchedule if ( ref($return->{data}) eq "HASH" ) { my $scheduleData = $return->{data}; - readingsBulkUpdateIfChanged($hash, "scheduleEnabled", $scheduleData->{enabled}); + readingsBulkUpdateIfChanged($hash, "scheduleEnabled", GetBoolean($scheduleData->{enabled})); readingsBulkUpdateIfChanged($hash, "scheduleType", $scheduleData->{type}) if (defined($scheduleData->{type})); @@ -1060,19 +1060,19 @@ sub ReceiveCommand($$$) { } if ( ref($return->{details}) eq "HASH" ) { my $details = $return->{details}; - readingsBulkUpdateIfChanged($hash, "isCharging", $details->{isCharging}); - readingsBulkUpdateIfChanged($hash, "isDocked", $details->{isDocked}); - readingsBulkUpdateIfChanged($hash, "isScheduleEnabled", $details->{isScheduleEnabled}); - readingsBulkUpdateIfChanged($hash, "dockHasBeenSeen", $details->{dockHasBeenSeen}); - readingsBulkUpdateIfChanged($hash, "batteryPercent", $details->{charge}); + readingsBulkUpdateIfChanged($hash, "isCharging", GetBoolean($details->{isCharging})); + readingsBulkUpdateIfChanged($hash, "isDocked", GetBoolean($details->{isDocked})); + readingsBulkUpdateIfChanged($hash, "scheduleEnabled", GetBoolean($details->{isScheduleEnabled})); + readingsBulkUpdateIfChanged($hash, "dockHasBeenSeen", GetBoolean($details->{dockHasBeenSeen})); + readingsBulkUpdateIfChanged($hash, "batteryPercent", $details->{charge}); } if ( ref($return->{availableCommands}) eq "HASH" ) { my $availableCommands = $return->{availableCommands}; - readingsBulkUpdateIfChanged($hash, ".start", $availableCommands->{start}); - readingsBulkUpdateIfChanged($hash, ".pause", $availableCommands->{pause}); - readingsBulkUpdateIfChanged($hash, ".resume", $availableCommands->{resume}); - readingsBulkUpdateIfChanged($hash, ".goToBase", $availableCommands->{goToBase}); - readingsBulkUpdateIfChanged($hash, ".stop", $availableCommands->{stop}) + readingsBulkUpdateIfChanged($hash, ".start", GetBoolean($availableCommands->{start})); + readingsBulkUpdateIfChanged($hash, ".pause", GetBoolean($availableCommands->{pause})); + readingsBulkUpdateIfChanged($hash, ".resume", GetBoolean($availableCommands->{resume})); + readingsBulkUpdateIfChanged($hash, ".goToBase", GetBoolean($availableCommands->{goToBase})); + readingsBulkUpdateIfChanged($hash, ".stop", GetBoolean($availableCommands->{stop})) unless ($cmd =~ /start.*/ or $cmd eq "getRobotManualCleaningInfo"); } if ( ref($return->{availableServices}) eq "HASH" ) { @@ -1386,6 +1386,22 @@ sub CheckRegistration($$$$$) { return; } +sub GetBoolean($) { + my ($value) = @_; + my $booleans = { + '0' => "0", + 'false' => "0", + '1' => "1", + 'true' => "1" + }; + + if (defined( $booleans->{$value})) { + return $booleans->{$value}; + } else { + return $value; + } +} + sub BuildState($$$$) { my ($hash,$state,$action,$error) = @_; my $states = { @@ -1647,8 +1663,8 @@ sub GetStatistics($) { $ret .= ''; $ret .= ''; $ret .= ''; $ret .= '';
Report: '.ReadingsVal($name,"name","name").', '.InternalVal($name,"VENDOR","VENDOR").', '.ReadingsVal($name,"model","model").'