RenaultZE

Begonnen von plin, 29 November 2020, 09:50:17

Vorheriges Thema - Nächstes Thema

plin

#465
Zitat von: Prof. Dr. Peter Henning am 23 Oktober 2026, 10:39:16Hm. Der Entfernungsberechung im Modul traue ich nicht so ganz.

Die im Modul gesetzen Attribute für "home" sind
Zitatze_latitude 48.x72047
ze_longitude 8.y10513
Die vom Fahrzeug gemeldete Position ist
ZitatgpsLatitude 48.x7204869
gpsLongitude 8.y105132
Kann mir bitte jemand erklären, warum die vom Modul berechnete Entfernung 5522.737 km beträgt ?

Claude kanns: die Formel ist nicht korrekt: Breite und Länge sind vertauscht.

Ich hatte damals die in einem Post vorgeschlagene Formel zur Distanzberechnung übernommen, die oftmals (aber leider nicht immer) halbwegs passende Distanzen lieferte.

Claude hat mir einen "korrigierten" Code vorgeschlagen.

Nachdem mein Auto nach einer Fahrt jetzt 5.600 km entfernt geparkt wurde, werde ich die von Claude vorgeschlagene Lösung erst mal auf Herz und Nieren prüfen. Irgendwie ist immer noch der Wurm drin.

Da Ergebnis nun als Anlage.
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

Prof. Dr. Peter Henning

Da bin ich etwas pingelig: Ein Sprachmodell ist kein jemand und kann auch nichts erklären.

Die genaue Entfernungsberechnung aus Geokoordinaten ist nicht ganz trivial, siehe mein Modul Astro. Man kann aber eine brauchbare Näherung bauen - die Luftlinienentfernung ist sowieso bei Fahrzeugen nicht arg relevant. Werde ich nachher posten, bin derzeit unterwegs.

LG

pah

plin

Gemini hat mir die folgende Berechnung vorgeschlagen:

sub RenaultZE_haversine_distance {
    my ($lat1, $lon1, $lat2, $lon2) = @_;

    # Mittlerer Erdradius in Kilometern
    my $R = 6371.0;

    # Umrechnung der Gradzahlen in Radiant
    my $phi1         = deg2rad($lat1);
    my $phi2         = deg2rad($lat2);
    my $delta_phi    = deg2rad($lat2 - $lat1);
    my $delta_lambda = deg2rad($lon2 - $lon1);

    # Haversine-Formel
    my $a = sin($delta_phi / 2)**2 +
            cos($phi1) * cos($phi2) *
            sin($delta_lambda / 2)**2;

    # Distanz berechnen
    my $distance = 2 * $R * asin(sqrt($a));

    return $distance;
}

Die habe ich implementiert und erhalte nun dieselben Distanzen die ich in Google Earth bei der Messung mittels Lineal ehalte. Laut Gemini liefert diese Formel eine sehr gute Annäherung mit einer maximalen Abweichung von etwa 0,5 %.
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB