diff --git a/fhem/contrib/RHASSPY/10_RHASSPY.pm b/fhem/contrib/RHASSPY/10_RHASSPY.pm
index 9b03f28ac..6bef856cf 100644
--- a/fhem/contrib/RHASSPY/10_RHASSPY.pm
+++ b/fhem/contrib/RHASSPY/10_RHASSPY.pm
@@ -345,7 +345,7 @@ sub Define {
$hash->{defaultRoom} = $defaultRoom;
my $language = $h->{language} // shift @{$anon} // lc AttrVal('global','language','en');
- $hash->{MODULE_VERSION} = '0.4.19';
+ $hash->{MODULE_VERSION} = '0.4.21';
$hash->{baseUrl} = $Rhasspy;
initialize_Language($hash, $language) if !defined $hash->{LANGUAGE} || $hash->{LANGUAGE} ne $language;
$hash->{LANGUAGE} = $language;
@@ -940,7 +940,7 @@ sub _analyze_rhassypAttr {
my($unnamed, $named) = parseParams($val);
my $combined = _combineHashes( $hash->{helper}{devicemap}{devices}{$device}{intents}{SetScene}->{SetScene}, $named);
for (keys %{$combined}) {
- delete $combined->{$_} if $combined->{$_} eq 'none' || $named->{all} eq 'none';
+ delete $combined->{$_} if $combined->{$_} eq 'none' || defined $named->{all} && $named->{all} eq 'none';
}
keys %{$combined} ?
$hash->{helper}{devicemap}{devices}{$device}{intents}{SetScene}->{SetScene} = $combined
@@ -1145,10 +1145,12 @@ sub _analyze_genDevType_setter {
for my $scname (split m{,}xms, $+{scnames}) {
my $clscene = $scname;
# cleanup HUE scenes
- if ($clscene =~ m{[#]\[id}xms) {
+ if ($clscene =~ m{[#]}xms) {
+ #next if $clscene =~ m{[#]\[id}xms;
$clscene = (split m{[#]\[id}xms, $clscene)[0] if $clscene =~ m{[#]\[id}xms;
$clscene =~ s{[#]}{ }gxm;
- $scname =~ s{.*[#]\[(id=.+)]}{$1}xms;
+ $scname =~ s{.*[#]\[(id=.+)]}{$1}xms if $scname =~ m{[#]\[id}xms;
+ $scname =~ s{[#]}{ }gxm;
}
$mapping->{SetScene}->{SetScene}->{$scname} = $clscene;
}
@@ -1437,7 +1439,7 @@ sub getAllRhasspyNamesAndGroupsByIntent {
for my $device (devspec2array($hash->{devspec})) {
next if !defined $hash->{helper}{devicemap}{devices}{$device}{intents}->{$intent};
push @names, split m{,}x, $hash->{helper}{devicemap}{devices}{$device}->{names};
- push @groups, split m{,}x, $hash->{helper}{devicemap}{devices}{$device}->{groups};
+ push @groups, split m{,}x, $hash->{helper}{devicemap}{devices}{$device}->{groups} if defined $hash->{helper}{devicemap}{devices}{$device}->{groups};
}
@names = uniq(@names);
@@ -1709,17 +1711,16 @@ sub getDevicesByGroup {
my $data = shift // return;
my $group = $data->{Group} // return;
- #my $room = $data->{Room} // return;
my $room = getRoomName($hash, $data);
my $devices = {};
for my $dev (keys %{$hash->{helper}{devicemap}{devices}}) {
my $allrooms = $hash->{helper}{devicemap}{devices}{$dev}->{rooms};
- next if $room ne 'global' && $allrooms !~ m{\b$room(?:[\b:\s]|\Z)}x;
+ next if $room ne 'global' && $allrooms !~ m{\b$room(?:[\b:\s]|\Z)}i; ##no critic qw(RequireExtendedFormatting)
my $allgroups = $hash->{helper}{devicemap}{devices}{$dev}->{groups} // next;
- next if $allgroups !~ m{\b$group(?:[\b:\s]|\Z)}x;
+ next if $allgroups !~ m{\b$group\b}i; ##no critic qw(RequireExtendedFormatting)
my $specials = $hash->{helper}{devicemap}{devices}{$dev}{group_specials};
my $label = $specials->{partOf} // $dev;
@@ -2086,7 +2087,7 @@ my $dispatchFns = {
SetColorGroup => \&handleIntentSetColorGroup,
SetScene => \&handleIntentSetScene,
GetTime => \&handleIntentGetTime,
- GetWeekday => \&handleIntentGetWeekday,
+ GetDate => \&handleIntentGetDate,
SetTimer => \&handleIntentSetTimer,
ConfirmAction => \&handleIntentConfirmAction,
CancelAction => \&handleIntentCancelAction,
@@ -3396,17 +3397,21 @@ sub handleIntentSetScene{
$device = getDeviceByName($hash, $room, $data->{Device});
$mapping = getMapping($hash, $device, 'SetScene', undef, defined $hash->{helper}{devicemap});
# restore HUE scenes
+ $scene = qq([$scene]) if $scene =~ m{id=.+}xms;
+=pod
if ($scene =~ m{id=.+}xms) {
my $allset = getAllSets($device);
if ($allset =~ m{\bscene:(?