FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: bicmac am 30 Dezember 2020, 20:22:53

Titel: wie prüfen ob Geokoordinaten im Umkreis von einem Standort sind.
Beitrag von: bicmac am 30 Dezember 2020, 20:22:53
Hi,
weiss jemand wie ich im fhem oder prüfen kann ob sich Geokoordinate A im Unkreis X von Geokoordinate B befindet?
ich habe die geokoordinaten von meinem Auto, würde aber gern einen dummy schalten sobald die Koordinaten vom auto sich innerhalb eines bestimmten umkreises um einen bestimmten anderem Punkt befinden.
Hintergrund ist das ich 2 Parkplätze daheim habe. wenn das Auto auf Parkplatz 1 steht soll der dummy Parkplatz auf 1 gesetzt sein. Wenn das Auto auf Parkplatz 2 steht dann auf 2.
Die Parkplätze sind weit genug von einander entfernt das das gehen müsste wenn ich schauen kann ob die koordinate die das Auto liefert sich im umkreis von 20m der Parkplatzmittelpunkt koordinate befindet.
Nur stehe ich auf dem Schlauch wie ich das in  FHEM machen kann.
Titel: Antw:wie prüfen ob Geokoordinaten im Umkreis von einem Standort sind.
Beitrag von: Jamo am 31 Dezember 2020, 00:12:44
Das hier vielleicht?
##########################################################
# Calculate distance between two geocoordinates
##########################################################
sub calcDistkm ($$$$) {
  my($latNew,$lonNew,$latOld,$lonOld) = @_;
  #Entfernung zur Home-Koordinate (Luftlinie)
  #Berechnung nach: https://www.kompf.de gps distcalc.html
  # Verbesserte Methode
  #my $lat = ($latNew + $latOld) / 2 * 0.01745;
  #my $dx  = 111.3 * cos($lat) * abs($lonNew - $lonOld);
  #my $dy  = 111.3 * abs($latNew - $latOld);

  #Einfache Variante
  my $dx =  71.5 * abs($lonNew - $lonOld);
  my $dy = 111.3 * abs($latNew - $latOld);

  my $distance = sprintf("%.2f",sqrt($dx * $dx + $dy * $dy));
  return $distance;
}
Titel: Antw:wie prüfen ob Geokoordinaten im Umkreis von einem Standort sind.
Beitrag von: bicmac am 01 Januar 2021, 19:44:33
Danke das sieht gut aus. Werd ich mal testen.