From 87c8104e2b36f0d3c437f1d6c73c443a5167a15b Mon Sep 17 00:00:00 2001 From: jpawlowski Date: Sat, 20 Oct 2018 13:26:55 +0000 Subject: [PATCH] 98_GEOFANCY: add missing reading PosHomeDist git-svn-id: https://svn.fhem.de/fhem/trunk@17573 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 4 ++-- fhem/FHEM/98_GEOFANCY.pm | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 5c0b92883..3817d9f98 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -3,8 +3,8 @@ - feature: 98_GEOFANCY: add new reading LocTravDist; add support for Geofency.app webhook attributes currentLatitude, currentLongitude, motion, wifiSSID and wifiBSSID. - New readings: PosBSSID, PosLat, PosLocDist, PosLong, PosMotion, - PosSSID, PosTravDist + New readings: PosBSSID, PosLat, PosHomeDist, PosLocDist, + PosLong, PosMotion, PosSSID, PosTravDist - bugfix: 98_GEOFANCY: fixed last* readings - feature: 89_FULLY: New commands for sound playback and photo. - bugfix: 74_XiaomiBTLESens: fix disableForTimer Problem after reboot diff --git a/fhem/FHEM/98_GEOFANCY.pm b/fhem/FHEM/98_GEOFANCY.pm index c21fe0f88..b0df2d537 100755 --- a/fhem/FHEM/98_GEOFANCY.pm +++ b/fhem/FHEM/98_GEOFANCY.pm @@ -117,6 +117,7 @@ sub GEOFANCY_CGI() { my $time = ""; my $locName = ""; my $posLocDist = ""; + my $posHomeDist = ""; my $locTravDist = ""; my $motion = ""; my $wifiSSID = ""; @@ -486,6 +487,21 @@ m/(19|20)\d\d-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([0-1][0-9]|2[0-3]):([0-5 "GEOFANCY $name: Unknown device UUID $device: Set attribute devAlias for $name or assign $device to any ROOMMATE or GUEST device using attribute r*_geofenceUUIDs" if ( $deviceAlias eq "-" ); + # distance between home and position + my $homeLat = AttrVal( "global", "latitude", undef ); + my $homeLong = AttrVal( "global", "longitude", undef ); + if ( $homeLat && $homeLong ) { + Debug "$homeLat $homeLong"; + if ( $posLat ne "" && $posLong ne "" ) { + $posHomeDist = + UConv::distance( $posLat, $posLong, $homeLat, $homeLong, 2 ); + } + elsif ( $lat ne "" && $long ne "" ) { + $posHomeDist = + UConv::distance( $lat, $long, $homeLat, $homeLong, 2 ); + } + } + # distance between location and position if ( $lat ne "" && $long ne "" && $posLat ne "" && $posLong ne "" ) { $posLocDist = UConv::distance( $posLat, $posLong, $lat, $long, 2 ); @@ -563,8 +579,9 @@ m/(19|20)\d\d-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([0-1][0-9]|2[0-3]):([0-5 # backup last known position foreach ( - 'PosSSID', 'PosBSSID', 'PosMotion', 'PosLat', - 'PosLong', 'PosLocDist', 'PosTravDist', 'LocTravDist' + 'PosSSID', 'PosBSSID', 'PosMotion', + 'PosLat', 'PosLong', 'PosHomeDist', + 'PosLocDist', 'PosTravDist', 'LocTravDist' ) { $currReading = "curr" . $_ . "_" . $deviceAlias; @@ -578,6 +595,8 @@ m/(19|20)\d\d-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([0-1][0-9]|2[0-3]):([0-5 readingsBulkUpdate( $hash, "currPosMotion_" . $deviceAlias, $motion ); readingsBulkUpdate( $hash, "currPosLat_" . $deviceAlias, $posLat ); readingsBulkUpdate( $hash, "currPosLong_" . $deviceAlias, $posLong ); + readingsBulkUpdate( $hash, "currPosHomeDist_" . $deviceAlias, + $posHomeDist ); readingsBulkUpdate( $hash, "currPosLocDist_" . $deviceAlias, $posLocDist ); readingsBulkUpdate( $hash, "currLocTravDist_" . $deviceAlias,