2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-22 08:11:44 +00:00

10_RHASSPY: fix priority mapping for desired-temp

git-svn-id: https://svn.fhem.de/fhem/trunk@25886 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Beta-User 2022-03-27 09:29:00 +00:00
parent 081cf858e3
commit 890f2543bd

View File

@ -1239,7 +1239,7 @@ sub _analyze_genDevType {
} }
if ( $gdt eq 'thermostat' ) { if ( $gdt eq 'thermostat' ) {
my $desTemp = $allset =~ m{\b(desiredTemp)([\b:\s]|\Z)}xms ? $1 : 'desired-temp'; my $desTemp = $allset =~ m{\b(desiredTemp|desired)([\b:\s]|\Z)}xms ? $1 : 'desired-temp';
my $measTemp = InternalVal($device, 'TYPE', 'unknown') eq 'CUL_HM' ? 'measured-temp' : 'temperature'; my $measTemp = InternalVal($device, 'TYPE', 'unknown') eq 'CUL_HM' ? 'measured-temp' : 'temperature';
$currentMapping = $currentMapping =
{ GetNumeric => { 'desired-temp' => {currentVal => $desTemp, type => 'desired-temp'}, { GetNumeric => { 'desired-temp' => {currentVal => $desTemp, type => 'desired-temp'},
@ -2037,13 +2037,13 @@ sub getDeviceByIntentAndType {
my $room = shift; my $room = shift;
my $intent = shift; my $intent = shift;
my $type = shift; #Beta-User: any necessary parameters...? my $type = shift; #Beta-User: any necessary parameters...?
#my $inBulk = shift // 0; my $subType = shift // $type;
#rem. Beta-User: atm function is only called by GetNumeric! #rem. Beta-User: atm function is only called by GetNumeric!
my $device; my $device;
# Devices sammeln # Devices sammeln
my ($matchesInRoom, $matchesOutsideRoom) = getDevicesByIntentAndType($hash, $room, $intent, $type); my ($matchesInRoom, $matchesOutsideRoom) = getDevicesByIntentAndType($hash, $room, $intent, $type, $subType);
Log3($hash->{NAME}, 5, "matches in room: @{$matchesInRoom}, matches outside: @{$matchesOutsideRoom}"); Log3($hash->{NAME}, 5, "matches in room: @{$matchesInRoom}, matches outside: @{$matchesOutsideRoom}");
my ($response, $last_item, $first_items); my ($response, $last_item, $first_items);
@ -2057,7 +2057,7 @@ sub getDeviceByIntentAndType {
for my $dev (@{$matchesInRoom}) { for my $dev (@{$matchesInRoom}) {
push @aliases, $hash->{helper}{devicemap}{devices}{$dev}->{alias}; push @aliases, $hash->{helper}{devicemap}{devices}{$dev}->{alias};
if (defined $hash->{helper}{devicemap}{devices}{$dev}->{prio} && defined $hash->{helper}{devicemap}{devices}{$dev}{prio}->{inRoom}) { if (defined $hash->{helper}{devicemap}{devices}{$dev}->{prio} && defined $hash->{helper}{devicemap}{devices}{$dev}{prio}->{inRoom}) {
push @priority, $dev if $hash->{helper}{devicemap}{devices}{$dev}{prio}->{inRoom} =~ m{\b$type\b}xms; push @priority, $dev if $hash->{helper}{devicemap}{devices}{$dev}{prio}->{inRoom} =~ m{\b$subType\b}xms;
} }
} }
if (@priority) { if (@priority) {
@ -2135,9 +2135,10 @@ sub getActiveDeviceForIntentAndType {
my $room = shift; my $room = shift;
my $intent = shift; my $intent = shift;
my $type = shift; #Beta-User: any necessary parameters...? my $type = shift; #Beta-User: any necessary parameters...?
my $subType = shift // $type;
my $device; my $device;
my ($matchesInRoom, $matchesOutsideRoom) = getDevicesByIntentAndType($hash, $room, $intent, $type); my ($matchesInRoom, $matchesOutsideRoom) = getDevicesByIntentAndType($hash, $room, $intent, $type, $subType);
# Anonyme Funktion zum finden des aktiven Geräts # Anonyme Funktion zum finden des aktiven Geräts
my $activeDevice = sub ($$) { my $activeDevice = sub ($$) {
@ -4382,9 +4383,12 @@ sub handleIntentSetNumeric {
my $unit = $data->{Unit}; my $unit = $data->{Unit};
my $change = $data->{Change}; my $change = $data->{Change};
my $type = $data->{Type}; my $type = $data->{Type};
my $subType= $data->{Type};
if ( !defined $type && defined $change ){ if ( !defined $type && defined $change ){
$type = $internal_mappings->{Change}->{$change}->{Type}; $type = $internal_mappings->{Change}->{$change}->{Type};
$data->{Type} = $type if defined $type; $data->{Type} = $type if defined $type;
$subType = 'desired-temp' if $data->{Type} eq 'temperature';
} }
my $value = $data->{Value}; my $value = $data->{Value};
my $room = getRoomName($hash, $data); my $room = getRoomName($hash, $data);
@ -4398,7 +4402,7 @@ sub handleIntentSetNumeric {
getActiveDeviceForIntentAndType($hash, $room, 'SetNumeric', $type) getActiveDeviceForIntentAndType($hash, $room, 'SetNumeric', $type)
// return respond( $hash, $data, getResponse( $hash, 'NoActiveMediaDevice') ); // return respond( $hash, $data, getResponse( $hash, 'NoActiveMediaDevice') );
} else { } else {
$device = getDeviceByIntentAndType($hash, $room, 'SetNumeric', $type); $device = getDeviceByIntentAndType($hash, $room, 'SetNumeric', $type, $subType);
} }
return respond( $hash, $data, getResponse( $hash, 'NoDeviceFound' ) ) if !defined $device; return respond( $hash, $data, getResponse( $hash, 'NoDeviceFound' ) ) if !defined $device;