From f26eee1325484f3f002c849fb7e78f7364019fc9 Mon Sep 17 00:00:00 2001 From: loredo Date: Mon, 11 Jan 2016 01:25:06 +0000 Subject: [PATCH] 10_RESIDENTS: add readings for delayed wayhome git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@10459 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_RESIDENTS.pm | 82 ++++++++++++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 14 deletions(-) diff --git a/fhem/FHEM/10_RESIDENTS.pm b/fhem/FHEM/10_RESIDENTS.pm index d98bd7dee..00150bf6f 100644 --- a/fhem/FHEM/10_RESIDENTS.pm +++ b/fhem/FHEM/10_RESIDENTS.pm @@ -662,6 +662,7 @@ sub RESIDENTS_UpdateReadings (@) { my $residentsDevs_gotosleep = "-"; my $residentsDevs_wakeup = "-"; my $residentsDevs_wayhome = "-"; + my $residentsDevs_wayhomeDelayed = "-"; my $residentsDevs_totalAbsent = "-"; my $residentsDevs_totalPresent = "-"; my $residentsDevs_totalAbsentGuest = "-"; @@ -676,6 +677,7 @@ sub RESIDENTS_UpdateReadings (@) { my $residents_gotosleep = "-"; my $residents_wakeup = "-"; my $residents_wayhome = "-"; + my $residents_wayhomeDelayed = "-"; my $residents_totalAbsent = "-"; my $residents_totalPresent = "-"; my $residents_totalAbsentGuest = "-"; @@ -683,6 +685,7 @@ sub RESIDENTS_UpdateReadings (@) { my $residents_totalAbsentRoommates = "-"; my $residents_totalPresentRoommates = "-"; my $wayhome = 0; + my $wayhomeDelayed = 0; my $wakeup = 0; my $newstate; @@ -909,7 +912,7 @@ sub RESIDENTS_UpdateReadings (@) { } if ( ReadingsVal( $roommate, "wakeup", "0" ) > 0 ) { - $wakeup += ReadingsVal( $roommate, "wakeup", "0" ); + $wakeup++; $residentsDevs_wakeup .= "," . $roommate if ( $residentsDevs_wakeup ne "-" ); $residentsDevs_wakeup = $roommate @@ -921,7 +924,7 @@ sub RESIDENTS_UpdateReadings (@) { } if ( ReadingsVal( $roommate, "wayhome", "0" ) > 0 ) { - $wayhome += ReadingsVal( $roommate, "wayhome", "0" ); + $wayhome++; $residentsDevs_wayhome .= "," . $roommate if ( $residentsDevs_wayhome ne "-" ); $residentsDevs_wayhome = $roommate @@ -930,6 +933,21 @@ sub RESIDENTS_UpdateReadings (@) { if ( $roommateName ne "" && $residents_wayhome ne "-" ); $residents_wayhome = $roommateName if ( $roommateName ne "" && $residents_wayhome eq "-" ); + + if ( ReadingsVal( $roommate, "wayhome", "0" ) == 2 ) { + $wayhomeDelayed++; + + $residentsDevs_wayhomeDelayed .= "," . $roommate + if ( $residentsDevs_wayhomeDelayed ne "-" ); + $residentsDevs_wayhomeDelayed = $roommate + if ( $residentsDevs_wayhomeDelayed eq "-" ); + $residents_wayhomeDelayed .= ", " . $roommateName + if ( $roommateName ne "" + && $residents_wayhomeDelayed ne "-" ); + $residents_wayhomeDelayed = $roommateName + if ( $roommateName ne "" + && $residents_wayhomeDelayed eq "-" ); + } } } @@ -1093,7 +1111,7 @@ sub RESIDENTS_UpdateReadings (@) { } if ( ReadingsVal( $guest, "wakeup", "0" ) > 0 ) { - $wakeup += ReadingsVal( $guest, "wakeup", "0" ); + $wakeup++; $residentsDevs_wakeup .= "," . $guest if ( $residentsDevs_wakeup ne "-" ); $residentsDevs_wakeup = $guest @@ -1105,7 +1123,7 @@ sub RESIDENTS_UpdateReadings (@) { } if ( ReadingsVal( $guest, "wayhome", "0" ) > 0 ) { - $wayhome += ReadingsVal( $guest, "wakeup", "0" ); + $wayhome++; $residents_wayhome .= "," . $guest if ( $residents_wayhome ne "-" ); $residents_wayhome = $guest if ( $residents_wayhome eq "-" ); @@ -1114,16 +1132,20 @@ sub RESIDENTS_UpdateReadings (@) { $residents_wayhome = $guestName if ( $guestName ne "" && $residents_wayhome eq "-" ); - $residentsDevs_totalAbsent .= "," . $guest - if ( $residentsDevs_totalAbsent ne "-" ); - $residentsDevs_totalAbsent = $guest - if ( $residentsDevs_totalAbsent eq "-" ); - $residents_totalAbsent .= ", " . $guestName - if ( $guestName ne "" - && $residents_totalAbsent ne "-" ); - $residents_totalAbsent = $guestName - if ( $guestName ne "" - && $residents_totalAbsent eq "-" ); + if ( ReadingsVal( $guest, "wayhome", "0" ) == 2 ) { + $wayhomeDelayed++; + + $residentsDevs_wayhomeDelayed .= "," . $guest + if ( $residentsDevs_wayhomeDelayed ne "-" ); + $residentsDevs_wayhomeDelayed = $guest + if ( $residentsDevs_wayhomeDelayed eq "-" ); + $residents_wayhomeDelayed .= ", " . $guestName + if ( $guestName ne "" + && $residents_wayhomeDelayed ne "-" ); + $residents_wayhomeDelayed = $guestName + if ( $guestName ne "" + && $residents_wayhomeDelayed eq "-" ); + } } } @@ -1338,6 +1360,20 @@ sub RESIDENTS_UpdateReadings (@) { if ( ReadingsVal( $name, "residentsTotalWayhomeNames", "" ) ne $residents_wayhome ); + readingsBulkUpdate( $hash, "residentsTotalWayhomeDelayed", $wayhomeDelayed ) + if ( ReadingsVal( $name, "residentsTotalWayhomeDelayed", "" ) ne + $wayhomeDelayed ); + + readingsBulkUpdate( $hash, "residentsTotalWayhomeDelayedDevs", + $residentsDevs_wayhomeDelayed ) + if ( ReadingsVal( $name, "residentsTotalWayhomeDelayedDevs", "" ) ne + $residentsDevs_wayhomeDelayed ); + + readingsBulkUpdate( $hash, "residentsTotalWayhomeDelayedNames", + $residents_wayhomeDelayed ) + if ( ReadingsVal( $name, "residentsTotalWayhomeDelayedNames", "" ) ne + $residents_wayhomeDelayed ); + # # state calculation # @@ -1840,6 +1876,15 @@ sub RESIDENTS_UpdateReadings (@) {
  • residentsTotalWayhomeNames - device alias of all active residents who are currently on their way back home
  • +
  • + residentsTotalWayhomeDelayed - number of all residents who are delayed on their way back home +
  • +
  • + residentsTotalWayhomeDelayedDevs - device name of all delayed residents who are currently on their way back home +
  • +
  • + residentsTotalWayhomeDelayedNames - device alias of all delayed residents who are currently on their way back home +
  • state - reflects the current state
  • @@ -2199,6 +2244,15 @@ sub RESIDENTS_UpdateReadings (@) {
  • residentsTotalWayhomeNames - Gerätealias aller aktiven Bewohner, die momentan auf dem Weg zurück nach Hause sind
  • +
  • + residentsTotalWayhomeDelayed - Summe aller Bewohner, die momentan mit Verspätung auf dem Weg zurück nach Hause sind +
  • +
  • + residentsTotalWayhomeDelayedDevs - Gerätename aller Bewohner, die momentan verspätet auf dem Weg zurück nach Hause sind +
  • +
  • + residentsTotalWayhomeDelayedNames - Gerätealias aller Bewohner, die momentan verspätet auf dem Weg zurück nach Hause sind +
  • state - gibt den aktuellen Status wieder