Robonect GPS Kartenanzeige

Begonnen von Reinhart, 16 Mai 2023, 11:55:28

Vorheriges Thema - Nächstes Thema

Reinhart

Ich habe ja ständig das Problem, dass sich mein 330X irgendwo unter einer Staude verhedert und ihn dann mühselig suchen muss. Daher lasse ich mir seinen Standort auf Google Maps via iframe in Fhem anzeigen. Ich benutze in meinem Husqvarna 330x das Robonect Modul das mir die GPS Koordinaten in Longitude und Latitude per MQTT übermittelt.

define Robocard weblink htmlCode {\
 my $lat=ReadingsVal('gpsdata','latitude','0,0');;\
 my $lng=ReadingsVal('gpsdata','longitude','0,0');;\
 $lat =~ s/\s//;; \
 $lng =~ s/\s//;;\
\
 my @minlat= split '°',$lat;;\
 my $latgrad=$minlat[0];;\
 my $latmin=$minlat[1];;\
 $lat=$latmin/60+$latgrad;;\
\
 my @minlng= split '°',$lng;;\
 my $lnggrad=$minlng[0];;\
 my $lngmin=$minlng[1];;\
 $lng=$lngmin/60+$lnggrad;;\
\
 my $gpsread="$lat $lng";;\
 fhem("setreading gpsdata state $gpsread");;\
 my $url="https://maps.google.com/maps?hl=en&q=$lat,$lng&ie=UTF8&t=&t=k&z=20&iwloc=B&output=embed";;\
 return "<iframe src=$url width=700 height=440></iframe>"\
 }
attr Robocard room _Garten

Hier die Umrechnung in Dezimalgrad und die Zusammenstellung des URL Aufrufs für GoogleMaps.
Die Koordinaten landen bei mir im Reading "gpsdata" als longitude und latitude. Beim Gradsymbol splite ich in Grad in und Minuten, anschl. werden die Minuten durch 60 dividiert und die Grad wieder dazu gezählt (vorne angehängt). Die GPS Koordinaten laß ich alle 2 Minuten aktualisieren, dass ist für diese Zwecke völlig ausreichend.

Eine nette Spielerei, die mir jetzt den Rasenmäher schneller finden läßt. Die Koordinaten sind relativ genau auf etwa 50-70 cm. Den Zoomfaktor (z=xx) und die Größe der Karte (width und height) könnt ihr in der url Definition  einstellen.

Hier im Bild steht er in der Garage.
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa