diff --git a/fhem/CHANGED b/fhem/CHANGED index ded6cb1c6..09cc15e89 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,7 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - change: 10_RESIDENTS.pm: Readings residentsTotalOwners* were renamed to + residentsTotalRoommates* - feature: CUL_MAX: allow multiple instances Make sure that you set attr IODev on each MAX device (pointing to its CUL_MAX) and set attr IODev on each CUL_MAX diff --git a/fhem/FHEM/10_RESIDENTS.pm b/fhem/FHEM/10_RESIDENTS.pm index ad5f2e7d5..63b517f3f 100644 --- a/fhem/FHEM/10_RESIDENTS.pm +++ b/fhem/FHEM/10_RESIDENTS.pm @@ -22,20 +22,6 @@ # You should have received a copy of the GNU General Public License # along with fhem. If not, see . # -# -# Version: 1.2.3 -# -# Major Version History: -# - 1.2.0 - 2015-03-11 -# -- add RESIDENTStoolkit support -# -# - 1.1.0 - 2014-04-07 -# -- new readings in computer readable format (*_cr) -# -- format of readings durTimer readings changed from minutes to HH:MM:ss -# -# - 1.0.0 - 2014-02-08 -# -- First release -# ############################################################################## package main; @@ -677,9 +663,9 @@ sub RESIDENTS_UpdateReadings (@) { my $state_totalGuests = 0; my $state_totalGuestsPresent = 0; my $state_totalGuestsAbsent = 0; - my $state_totalOwners = 0; - my $state_totalOwnersPresent = 0; - my $state_totalOwnersAbsent = 0; + my $state_totalRoommates = 0; + my $state_totalRoommatesPresent = 0; + my $state_totalRoommatesAbsent = 0; my $state_guestDev = 0; my $residentsDevs_home = "-"; my $residentsDevs_absent = "-"; @@ -693,8 +679,8 @@ sub RESIDENTS_UpdateReadings (@) { my $residentsDevs_totalPresent = "-"; my $residentsDevs_totalAbsentGuest = "-"; my $residentsDevs_totalPresentGuest = "-"; - my $residentsDevs_totalAbsentOwner = "-"; - my $residentsDevs_totalPresentOwner = "-"; + my $residentsDevs_totalAbsentRoommates = "-"; + my $residentsDevs_totalPresentRoommates = "-"; my $residents_home = "-"; my $residents_absent = "-"; my $residents_asleep = "-"; @@ -707,8 +693,8 @@ sub RESIDENTS_UpdateReadings (@) { my $residents_totalPresent = "-"; my $residents_totalAbsentGuest = "-"; my $residents_totalPresentGuest = "-"; - my $residents_totalAbsentOwner = "-"; - my $residents_totalPresentOwner = "-"; + my $residents_totalAbsentRoommates = "-"; + my $residents_totalPresentRoommates = "-"; my $wayhome = 0; my $wakeup = 0; my $newstate; @@ -726,7 +712,7 @@ sub RESIDENTS_UpdateReadings (@) { # count child states for ROOMMATE devices foreach my $roommate (@registeredRoommates) { $state_total++; - $state_totalOwners++; + $state_totalRoommates++; my $roommateName = AttrVal( $roommate, @@ -748,23 +734,23 @@ sub RESIDENTS_UpdateReadings (@) { if ( $roommateName ne "" && $residents_home eq "-" ); $state_totalPresent++; - $state_totalOwnersPresent++; + $state_totalRoommatesPresent++; $residentsDevs_totalPresent .= "," . $roommate if ( $residentsDevs_totalPresent ne "-" ); $residentsDevs_totalPresent = $roommate if ( $residentsDevs_totalPresent eq "-" ); - $residentsDevs_totalPresentOwner .= "," . $roommate - if ( $residentsDevs_totalPresentOwner ne "-" ); - $residentsDevs_totalPresentOwner = $roommate - if ( $residentsDevs_totalPresentOwner eq "-" ); + $residentsDevs_totalPresentRoommates .= "," . $roommate + if ( $residentsDevs_totalPresentRoommates ne "-" ); + $residentsDevs_totalPresentRoommates = $roommate + if ( $residentsDevs_totalPresentRoommates eq "-" ); $residents_totalPresent .= ", " . $roommateName if ( $roommateName ne "" && $residents_totalPresent ne "-" ); $residents_totalPresent = $roommateName if ( $roommateName ne "" && $residents_totalPresent eq "-" ); - $residents_totalPresentOwner .= ", " . $roommateName - if ( $roommateName ne "" && $residents_totalPresentOwner ne "-" ); - $residents_totalPresentOwner = $roommateName - if ( $roommateName ne "" && $residents_totalPresentOwner eq "-" ); + $residents_totalPresentRoommates .= ", " . $roommateName + if ( $roommateName ne "" && $residents_totalPresentRoommates ne "-" ); + $residents_totalPresentRoommates = $roommateName + if ( $roommateName ne "" && $residents_totalPresentRoommates eq "-" ); } elsif ( $defs{$roommate}{READINGS}{state}{VAL} eq "gotosleep" ) { @@ -779,23 +765,23 @@ sub RESIDENTS_UpdateReadings (@) { if ( $roommateName ne "" && $residents_gotosleep eq "-" ); $state_totalPresent++; - $state_totalOwnersPresent++; + $state_totalRoommatesPresent++; $residentsDevs_totalPresent .= "," . $roommate if ( $residentsDevs_totalPresent ne "-" ); $residentsDevs_totalPresent = $roommate if ( $residentsDevs_totalPresent eq "-" ); - $residentsDevs_totalPresentOwner .= "," . $roommate - if ( $residentsDevs_totalPresentOwner ne "-" ); - $residentsDevs_totalPresentOwner = $roommate - if ( $residentsDevs_totalPresentOwner eq "-" ); + $residentsDevs_totalPresentRoommates .= "," . $roommate + if ( $residentsDevs_totalPresentRoommates ne "-" ); + $residentsDevs_totalPresentRoommates = $roommate + if ( $residentsDevs_totalPresentRoommates eq "-" ); $residents_totalPresent .= ", " . $roommateName if ( $roommateName ne "" && $residents_totalPresent ne "-" ); $residents_totalPresent = $roommateName if ( $roommateName ne "" && $residents_totalPresent eq "-" ); - $residents_totalPresentOwner .= ", " . $roommateName - if ( $roommateName ne "" && $residents_totalPresentOwner ne "-" ); - $residents_totalPresentOwner = $roommateName - if ( $roommateName ne "" && $residents_totalPresentOwner eq "-" ); + $residents_totalPresentRoommates .= ", " . $roommateName + if ( $roommateName ne "" && $residents_totalPresentRoommates ne "-" ); + $residents_totalPresentRoommates = $roommateName + if ( $roommateName ne "" && $residents_totalPresentRoommates eq "-" ); } elsif ( $defs{$roommate}{READINGS}{state}{VAL} eq "asleep" ) { @@ -810,23 +796,23 @@ sub RESIDENTS_UpdateReadings (@) { if ( $roommateName ne "" && $residents_asleep eq "-" ); $state_totalPresent++; - $state_totalOwnersPresent++; + $state_totalRoommatesPresent++; $residentsDevs_totalPresent .= "," . $roommate if ( $residentsDevs_totalPresent ne "-" ); $residentsDevs_totalPresent = $roommate if ( $residentsDevs_totalPresent eq "-" ); - $residentsDevs_totalPresentOwner .= "," . $roommate - if ( $residentsDevs_totalPresentOwner ne "-" ); - $residentsDevs_totalPresentOwner = $roommate - if ( $residentsDevs_totalPresentOwner eq "-" ); + $residentsDevs_totalPresentRoommates .= "," . $roommate + if ( $residentsDevs_totalPresentRoommates ne "-" ); + $residentsDevs_totalPresentRoommates = $roommate + if ( $residentsDevs_totalPresentRoommates eq "-" ); $residents_totalPresent .= ", " . $roommateName if ( $roommateName ne "" && $residents_totalPresent ne "-" ); $residents_totalPresent = $roommateName if ( $roommateName ne "" && $residents_totalPresent eq "-" ); - $residents_totalPresentOwner .= ", " . $roommateName - if ( $roommateName ne "" && $residents_totalPresentOwner ne "-" ); - $residents_totalPresentOwner = $roommateName - if ( $roommateName ne "" && $residents_totalPresentOwner eq "-" ); + $residents_totalPresentRoommates .= ", " . $roommateName + if ( $roommateName ne "" && $residents_totalPresentRoommates ne "-" ); + $residents_totalPresentRoommates = $roommateName + if ( $roommateName ne "" && $residents_totalPresentRoommates eq "-" ); } elsif ( $defs{$roommate}{READINGS}{state}{VAL} eq "awoken" ) { @@ -841,23 +827,23 @@ sub RESIDENTS_UpdateReadings (@) { if ( $roommateName ne "" && $residents_awoken eq "-" ); $state_totalPresent++; - $state_totalOwnersPresent++; + $state_totalRoommatesPresent++; $residentsDevs_totalPresent .= "," . $roommate if ( $residentsDevs_totalPresent ne "-" ); $residentsDevs_totalPresent = $roommate if ( $residentsDevs_totalPresent eq "-" ); - $residentsDevs_totalPresentOwner .= "," . $roommate - if ( $residentsDevs_totalPresentOwner ne "-" ); - $residentsDevs_totalPresentOwner = $roommate - if ( $residentsDevs_totalPresentOwner eq "-" ); + $residentsDevs_totalPresentRoommates .= "," . $roommate + if ( $residentsDevs_totalPresentRoommates ne "-" ); + $residentsDevs_totalPresentRoommates = $roommate + if ( $residentsDevs_totalPresentRoommates eq "-" ); $residents_totalPresent .= ", " . $roommateName if ( $roommateName ne "" && $residents_totalPresent ne "-" ); $residents_totalPresent = $roommateName if ( $roommateName ne "" && $residents_totalPresent eq "-" ); - $residents_totalPresentOwner .= ", " . $roommateName - if ( $roommateName ne "" && $residents_totalPresentOwner ne "-" ); - $residents_totalPresentOwner = $roommateName - if ( $roommateName ne "" && $residents_totalPresentOwner eq "-" ); + $residents_totalPresentRoommates .= ", " . $roommateName + if ( $roommateName ne "" && $residents_totalPresentRoommates ne "-" ); + $residents_totalPresentRoommates = $roommateName + if ( $roommateName ne "" && $residents_totalPresentRoommates eq "-" ); } elsif ( $defs{$roommate}{READINGS}{state}{VAL} eq "absent" ) { @@ -872,23 +858,23 @@ sub RESIDENTS_UpdateReadings (@) { if ( $roommateName ne "" && $residents_absent eq "-" ); $state_totalAbsent++; - $state_totalOwnersAbsent++; + $state_totalRoommatesAbsent++; $residentsDevs_totalAbsent .= "," . $roommate if ( $residentsDevs_totalAbsent ne "-" ); $residentsDevs_totalAbsent = $roommate if ( $residentsDevs_totalAbsent eq "-" ); - $residentsDevs_totalAbsentOwner .= "," . $roommate - if ( $residentsDevs_totalAbsentOwner ne "-" ); - $residentsDevs_totalAbsentOwner = $roommate - if ( $residentsDevs_totalAbsentOwner eq "-" ); + $residentsDevs_totalAbsentRoommates .= "," . $roommate + if ( $residentsDevs_totalAbsentRoommates ne "-" ); + $residentsDevs_totalAbsentRoommates = $roommate + if ( $residentsDevs_totalAbsentRoommates eq "-" ); $residents_totalAbsent .= ", " . $roommateName if ( $roommateName ne "" && $residents_totalAbsent ne "-" ); $residents_totalAbsent = $roommateName if ( $roommateName ne "" && $residents_totalAbsent eq "-" ); - $residents_totalAbsentOwner .= ", " . $roommateName - if ( $roommateName ne "" && $residents_totalAbsentOwner ne "-" ); - $residents_totalAbsentOwner = $roommateName - if ( $roommateName ne "" && $residents_totalAbsentOwner eq "-" ); + $residents_totalAbsentRoommates .= ", " . $roommateName + if ( $roommateName ne "" && $residents_totalAbsentRoommates ne "-" ); + $residents_totalAbsentRoommates = $roommateName + if ( $roommateName ne "" && $residents_totalAbsentRoommates eq "-" ); } elsif ( $defs{$roommate}{READINGS}{state}{VAL} eq "gone" ) { @@ -903,23 +889,23 @@ sub RESIDENTS_UpdateReadings (@) { if ( $roommateName ne "" && $residents_gone eq "-" ); $state_totalAbsent++; - $state_totalOwnersAbsent++; + $state_totalRoommatesAbsent++; $residentsDevs_totalAbsent .= "," . $roommate if ( $residentsDevs_totalAbsent ne "-" ); $residentsDevs_totalAbsent = $roommate if ( $residentsDevs_totalAbsent eq "-" ); - $residentsDevs_totalAbsentOwner .= "," . $roommate - if ( $residentsDevs_totalAbsentOwner ne "-" ); - $residentsDevs_totalAbsentOwner = $roommate - if ( $residentsDevs_totalAbsentOwner eq "-" ); + $residentsDevs_totalAbsentRoommates .= "," . $roommate + if ( $residentsDevs_totalAbsentRoommates ne "-" ); + $residentsDevs_totalAbsentRoommates = $roommate + if ( $residentsDevs_totalAbsentRoommates eq "-" ); $residents_totalAbsent .= ", " . $roommateName if ( $roommateName ne "" && $residents_totalAbsent ne "-" ); $residents_totalAbsent = $roommateName if ( $roommateName ne "" && $residents_totalAbsent eq "-" ); - $residents_totalAbsentOwner .= ", " . $roommateName - if ( $roommateName ne "" && $residents_totalAbsentOwner ne "-" ); - $residents_totalAbsentOwner = $roommateName - if ( $roommateName ne "" && $residents_totalAbsentOwner eq "-" ); + $residents_totalAbsentRoommates .= ", " . $roommateName + if ( $roommateName ne "" && $residents_totalAbsentRoommates ne "-" ); + $residents_totalAbsentRoommates = $roommateName + if ( $roommateName ne "" && $residents_totalAbsentRoommates eq "-" ); } } @@ -1204,51 +1190,51 @@ sub RESIDENTS_UpdateReadings (@) { || $hash->{READINGS}{residentsTotalGuestsAbsentNames}{VAL} ne $residents_totalAbsentGuest ); - readingsBulkUpdate( $hash, "residentsTotalOwners", $state_totalOwners ) - if ( !defined( $hash->{READINGS}{residentsTotalOwners}{VAL} ) - || $hash->{READINGS}{residentsTotalOwners}{VAL} ne $state_totalOwners ); + readingsBulkUpdate( $hash, "residentsTotalRoommates", $state_totalRoommates ) + if ( !defined( $hash->{READINGS}{residentsTotalRoommates}{VAL} ) + || $hash->{READINGS}{residentsTotalRoommates}{VAL} ne $state_totalRoommates ); - readingsBulkUpdate( $hash, "residentsTotalOwnersPresent", - $state_totalOwnersPresent ) - if ( !defined( $hash->{READINGS}{residentsTotalOwnersPresent}{VAL} ) - || $hash->{READINGS}{residentsTotalOwnersPresent}{VAL} ne - $state_totalOwnersPresent ); + readingsBulkUpdate( $hash, "residentsTotalRoommatesPresent", + $state_totalRoommatesPresent ) + if ( !defined( $hash->{READINGS}{residentsTotalRoommatesPresent}{VAL} ) + || $hash->{READINGS}{residentsTotalRoommatesPresent}{VAL} ne + $state_totalRoommatesPresent ); readingsBulkUpdate( $hash, - "residentsTotalOwnersPresentDevs", - $residentsDevs_totalPresentOwner + "residentsTotalRoommatesPresentDevs", + $residentsDevs_totalPresentRoommates ) - if ( !defined( $hash->{READINGS}{residentsTotalOwnersPresentDevs}{VAL} ) - || $hash->{READINGS}{residentsTotalOwnersPresentDevs}{VAL} ne - $residentsDevs_totalPresentOwner ); + if ( !defined( $hash->{READINGS}{residentsTotalRoommatesPresentDevs}{VAL} ) + || $hash->{READINGS}{residentsTotalRoommatesPresentDevs}{VAL} ne + $residentsDevs_totalPresentRoommates ); - readingsBulkUpdate( $hash, "residentsTotalOwnersPresentNames", - $residents_totalPresentOwner ) - if ( !defined( $hash->{READINGS}{residentsTotalOwnersPresentNames}{VAL} ) - || $hash->{READINGS}{residentsTotalOwnersPresentNames}{VAL} ne - $residents_totalPresentOwner ); + readingsBulkUpdate( $hash, "residentsTotalRoommatesPresentNames", + $residents_totalPresentRoommates ) + if ( !defined( $hash->{READINGS}{residentsTotalRoommatesPresentNames}{VAL} ) + || $hash->{READINGS}{residentsTotalRoommatesPresentNames}{VAL} ne + $residents_totalPresentRoommates ); - readingsBulkUpdate( $hash, "residentsTotalOwnersAbsent", - $state_totalOwnersAbsent ) - if ( !defined( $hash->{READINGS}{residentsTotalOwnersAbsent}{VAL} ) - || $hash->{READINGS}{residentsTotalOwnersAbsent}{VAL} ne - $state_totalOwnersAbsent ); + readingsBulkUpdate( $hash, "residentsTotalRoommatesAbsent", + $state_totalRoommatesAbsent ) + if ( !defined( $hash->{READINGS}{residentsTotalRoommatesAbsent}{VAL} ) + || $hash->{READINGS}{residentsTotalRoommatesAbsent}{VAL} ne + $state_totalRoommatesAbsent ); readingsBulkUpdate( $hash, - "residentsTotalOwnersAbsentDevs", - $residentsDevs_totalAbsentOwner + "residentsTotalRoommatesAbsentDevs", + $residentsDevs_totalAbsentRoommates ) - if ( !defined( $hash->{READINGS}{residentsTotalOwnersAbsentDevs}{VAL} ) - || $hash->{READINGS}{residentsTotalOwnersAbsentDevs}{VAL} ne - $residentsDevs_totalAbsentOwner ); + if ( !defined( $hash->{READINGS}{residentsTotalRoommatesAbsentDevs}{VAL} ) + || $hash->{READINGS}{residentsTotalRoommatesAbsentDevs}{VAL} ne + $residentsDevs_totalAbsentRoommates ); - readingsBulkUpdate( $hash, "residentsTotalOwnersAbsentNames", - $residents_totalAbsentOwner ) - if ( !defined( $hash->{READINGS}{residentsTotalOwnersAbsentNames}{VAL} ) - || $hash->{READINGS}{residentsTotalOwnersAbsentNames}{VAL} ne - $residents_totalAbsentOwner ); + readingsBulkUpdate( $hash, "residentsTotalRoommatesAbsentNames", + $residents_totalAbsentRoommates ) + if ( !defined( $hash->{READINGS}{residentsTotalRoommatesAbsentNames}{VAL} ) + || $hash->{READINGS}{residentsTotalRoommatesAbsentNames}{VAL} ne + $residents_totalAbsentRoommates ); readingsBulkUpdate( $hash, "residentsTotalPresent", $state_totalPresent ) if ( !defined( $hash->{READINGS}{residentsTotalPresent}{VAL} ) @@ -1455,7 +1441,7 @@ sub RESIDENTS_UpdateReadings (@) { # none elsif ($state_totalGuests == 0 - && $state_totalOwners == 0 + && $state_totalRoommates == 0 && $state_gone == 0 && $state_absent == 0 && $state_home == 0 @@ -1478,7 +1464,7 @@ sub RESIDENTS_UpdateReadings (@) { : "absent"; Log3 $name, 4, -"RESIDENTS $name: calculation result - residentsTotal:$state_total residentsTotalOwners:$state_totalOwners residentsTotalOwnersPresent:$state_totalOwnersPresent residentsTotalOwnersAbsent:$state_totalOwnersAbsent residentsTotalGuests:$state_totalGuests residentsTotalGuestsPresent:$state_totalGuestsPresent residentsTotalGuestsAbsent:$state_totalGuestsAbsent residentsTotalPresent:$state_totalPresent residentsTotalAbsent:$state_totalAbsent residentsHome:$state_home residentsGotosleep:$state_gotosleep residentsAsleep:$state_asleep residentsAwoken:$state_awoken residentsAbsent:$state_absent residentsGone:$state_gone presence:$newpresence state:$newstate"; +"RESIDENTS $name: calculation result - residentsTotal:$state_total residentsTotalRoommates:$state_totalRoommates residentsTotalRoommatesPresent:$state_totalRoommatesPresent residentsTotalRoommatesAbsent:$state_totalRoommatesAbsent residentsTotalGuests:$state_totalGuests residentsTotalGuestsPresent:$state_totalGuestsPresent residentsTotalGuestsAbsent:$state_totalGuestsAbsent residentsTotalPresent:$state_totalPresent residentsTotalAbsent:$state_totalAbsent residentsHome:$state_home residentsGotosleep:$state_gotosleep residentsAsleep:$state_asleep residentsAwoken:$state_awoken residentsAbsent:$state_absent residentsGone:$state_gone presence:$newpresence state:$newstate"; # safe current time my $datetime = FmtDateTime(time); @@ -1850,25 +1836,25 @@ sub RESIDENTS_UpdateReadings (@) { residentsTotalGuestsPresentNames - device alias of all active guests who are currently at home
  • - residentsTotalOwners - number of residents treated as being a permanent resident + residentsTotalRoommates - number of residents treated as being a permanent resident
  • - residentsTotalOwnersAbsent - number of all owners who are currently underway + residentsTotalRoommatesAbsent - number of all roommates who are currently underway
  • - residentsTotalOwnersAbsentDevs - device name of all owners who are currently underway + residentsTotalRoommatesAbsentDevs - device name of all roommates who are currently underway
  • - residentsTotalOwnersAbsentNames - device alias of all owners who are currently underway + residentsTotalRoommatesAbsentNames - device alias of all roommates who are currently underway
  • - residentsTotalOwnersPresent - number of all owners who are currently at home + residentsTotalRoommatesPresent - number of all roommates who are currently at home
  • - residentsTotalOwnersPresentDevs - device name of all owners who are currently at home + residentsTotalRoommatesPresentDevs - device name of all roommates who are currently at home
  • - residentsTotalOwnersPresentNames - device alias of all owners who are currently at home + residentsTotalRoommatesPresentNames - device alias of all roommates who are currently at home
  • residentsTotalPresent - number of all residents who are currently at home @@ -2209,25 +2195,25 @@ sub RESIDENTS_UpdateReadings (@) { residentsTotalGuestsPresentNames - Gerätealias der aktiven Gäste, die momentan zu Hause sind
  • - residentsTotalOwners - Anzahl der Bewohner, die als permanente Bewohner behandelt werden + residentsTotalRoommates - Anzahl der Bewohner, die als permanente Bewohner behandelt werden
  • - residentsTotalOwnersAbsent - Anzahl der Besitzer, die momentan unterwegs sind + residentsTotalRoommatesAbsent - Anzahl der Besitzer, die momentan unterwegs sind
  • - residentsTotalOwnersAbsentDevs - Gerätename der Besitzer, die momentan unterwegs sind + residentsTotalRoommatesAbsentDevs - Gerätename der Besitzer, die momentan unterwegs sind
  • - residentsTotalOwnersAbsentNames - Gerätealias der Besitzer, die momentan unterwegs sind + residentsTotalRoommatesAbsentNames - Gerätealias der Besitzer, die momentan unterwegs sind
  • - residentsTotalOwnersPresent - Anzahl der Besitzer, die momentan zu Hause sind + residentsTotalRoommatesPresent - Anzahl der Besitzer, die momentan zu Hause sind
  • - residentsTotalOwnersPresentDevs - Gerätename der Besitzer, die momentan zu Hause sind + residentsTotalRoommatesPresentDevs - Gerätename der Besitzer, die momentan zu Hause sind
  • - residentsTotalOwnersPresentNames - Gerätealias der Besitzer, die momentan zu Hause sind + residentsTotalRoommatesPresentNames - Gerätealias der Besitzer, die momentan zu Hause sind
  • residentsTotalPresent - Summe aller aktiven Bewohner, die momentan zu Hause sind