Standort koordinaten als Text anzeigen

Begonnen von satprofi, 29 Oktober 2026, 14:14:33

Vorheriges Thema - Nächstes Thema

satprofi

Hallo.
gibts dafür modul oder andere Möglichkeit, aus readings die Koordinaten zu text umzuwandeln ?
gruss
-----------------------------------------------------------------------
beelink miniPC -Ubuntu - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,Zigbee2MQTT,Shelly,
Tasmota,LD382A,Telegram

heinzfo

#1
Hallo,

ich habe das in einem anderen Kontext (nicht fhempy BMW) so gelöst.

userReadings:
gl_link {"https://www.google.com/maps/search/?api=1&query=".ReadingsVal("Kfz_Standort","coordinates","")},
timestamp {ReadingsTimestamp("Kfz_Standort","gl_link","")},

Das eigentliche Reading sieht so aus:
coordinates 47.420831,10.984593

Zum testen:
Erzeugt auf dem Android Google-Maps ein Standortsymbol.
https://www.google.com/maps/search/?api=1&query=47.420831,10.984593

Wenn die Bluetooth-Verbindung vom Fahrzeug getrennt wird löse ich in Tasker einen httppost aus und sende die Koordinaten vom Smartphone an FHEM.
Den gl_link kann ich dann bei Bedarf per Telegram von FHEM abholen.

Grüße


Prof. Dr. Peter Henning

Das kann man mit einem kleinen HTTP-Aufruf auch machen, ohne dass Google reicher wird.

Zitathttps://nominatim.openstreetmap.org/reverse?lat=<hier geografische Breite>&lon=<hier geografische Länge>&format=json&addressdetails=1&accept-language=de

Das liefert mit den Koordinaten unten:
Zitatplace_id   70584594
licence   "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright"
osm_type   "way"
osm_id   1089539260
lat   "47.4207282"
lon   "10.9847058"
class   "building"
type   "yes"
place_rank   30
importance   5.080109864953105e-05JS:0.00005080109864953105
addresstype   "building"
name   "Schneefernerhaus"
display_name   "Schneefernerhaus, 4, Zugspitze, Garmisch-Partenkirchen, Landkreis Garmisch-Partenkirchen, Bayern, 82475, Deutschland"
address   
building   "Schneefernerhaus"
house_number   "4"
locality   "Zugspitze"
town   "Garmisch-Partenkirchen"
county   "Landkreis Garmisch-Partenkirchen"
state   "Bayern"
ISO3166-2-lvl4   "DE-BY"
postcode   "82475"
country   "Deutschland"
country_code   "de"
boundingbox   
0   "47.4206997"
1   "47.4207601"
2   "10.9846593"
3   "10.9847517"

Daraus kann man jetzt mit den üblichen JSON-Mitteln die Adresse isolieren.

LG

pah

satprofi

danke. hab mir jetzt ein device definiert, strasse, ort in den readings sind da. ginge das abfragen über userreadings oder muss ich script drüberlaufen lassen das immer neues device für abfrage definiert ? koordinaten lese ich aus readings von fhempybmw aus
gruss
-----------------------------------------------------------------------
beelink miniPC -Ubuntu - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,Zigbee2MQTT,Shelly,
Tasmota,LD382A,Telegram

satprofi

#4
Hallo.
habe jetzt script angelegt, das mir ein neues device mit notify anlegt, wenn das auto neuen standort meldet.
ein notify startet mir dann das 2. script
sub location{
  fhem("delete location");
  my $lat=ReadingsNum("BMW_i3","latitude",0);
  my $lon=ReadingsNum("BMW_i3","longitude",0);
  fhem("define location JsonMod https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lon}&format=json&addressdetails=1&accept-language=de");
  fhem("attr location readingList single(jsonPath('$.address.road'), 'Strasse', '');");
  fhem("attr -a location readingList single(jsonPath('$.address.village'), 'Ort', '');");
  fhem("attr -a location readingList single(jsonPath('$.address.postcode'), 'plz', '');");
  fhem("attr -a location readingList single(jsonPath('$.address.house_number'), 'place', '');");
  fhem("attr location update-on-start 1");
    
   }




sub setBMW{
   my $a=ReadingsNum("location","plz",0);
   my $b=ReadingsVal("location","Ort",0);
   my $c=ReadingsVal("location","Strasse",0);
   my $d=ReadingsNum("location","place",0);
   fhem("setreading BMW_i3 location $a $b $c $d");
   }
gruss
-----------------------------------------------------------------------
beelink miniPC -Ubuntu - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,Zigbee2MQTT,Shelly,
Tasmota,LD382A,Telegram

Prof. Dr. Peter Henning

#5
Erst einmal sollte das sleep(1) da raus - das friert FHEM nämlich für eine Sekunde komplett ein.

Zweitens ist es keine gute Praxis, jedesmal ein neues Device zu erzeugen. Es braucht eine kleine Perl-Sub, die mit httpUtils die Daten holt und auswertet - und diese sub wird dann in einem userReading aufgerufen, von mir aus auch in einem notify.

Für den Fall, dass Du nicht weißt, wie es geht: Hier gibt es die beiden Miniprogramme. https://forum.fhem.de/index.php?topic=145814.0


LG

pah