[Closed] Neues FTUI Widget Kartendarstellung mit Google Maps API

Begonnen von eki, 23 Oktober 2017, 17:10:33

Vorheriges Thema - Nächstes Thema

klausw

Zitat von: eki am 18 Dezember 2017, 09:41:36
Für die Zentrierung und den Zoomfaktor gibt es mehrere Möglichkeiten:
- Entweder das FHEM Device hat ein Reading/Attribut/Internal welches GoogleMapsCenter bzw. GoogleMapsZoom heißt (das ist typischerweise für TRAFFIC Devices so. Wenn es das global Device ist, dann werden diese Parameter typischerweise nicht vorhanden sein.
- Oder Du setzt per data-center bzw. data-zoom den Wert entsprechend bei der Widget Definition.

Am Anfang des Threads ist ein Beispiel und die Beschreibung der Formate.

Den ersten Post hatte ich schon gelesen.
Ich hatte nur vermutet, das beim global device auch die long und lat Daten extrahiert werden.
Wenn nicht dann verstehe ich das Beispiel nicht.

Ich habe jetzt das myRoommate Beispiel als Basis verwendet. Das war sowieso mein Anwendungsfall.
Dort klappt es super.
Dummerweise gibt es dort kein GoogleMapsCenter. Daher wird die Position immer am Rand dargestellt.
Lässt es sich realisieren, das die Roommate Position automatisch das Zentrum ist?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

eki

Die long lat Daten werden beim global Device schon extrahiert und dann als Punkt auf der Karte dargestellt. Nur das Zentrum wird nicht da hin gelegt. Ich könnte natürlich, wenn sonst nichts angegeben ist, das Zentrum immer auf den Punkt legen, der dargestellt ist und wenn es mehrere sind dann eben auf den geographischen Mittelwert aller dargestellten Punkte (mach ich, wenn ich dazu komme).

Es geht aber auch mit Bordmitteln von FHEM. Wenn Du folgendes machst:


attr userReadings myRoommate GoogleMapsCenter {ReadingsVal("myRoommate","locationLat",0) . ", " . ReadingsVal("myRoommate","locationLong",0);;}


Dann sollte eigentlich bei dem Device myRoommate ein zusätzliches Reading GoogleMapsCenter entstehen, welches dann die richtigen Daten enthält (eventuell musst Du warten bis der Ort das nächste mal aktualisiert wird oder für eine Aktualisierung sorgen bis das zutätzliche Reading zum ersten mal angelegt wird).

klausw

Zitat von: eki am 20 Dezember 2017, 08:14:17
Die long lat Daten werden beim global Device schon extrahiert und dann als Punkt auf der Karte dargestellt. Nur das Zentrum wird nicht da hin gelegt. Ich könnte natürlich, wenn sonst nichts angegeben ist, das Zentrum immer auf den Punkt legen, der dargestellt ist und wenn es mehrere sind dann eben auf den geographischen Mittelwert aller dargestellten Punkte (mach ich, wenn ich dazu komme).
Das wäre super. Insbesondere letzteres  8)

Zitat von: eki am 20 Dezember 2017, 08:14:17
Es geht aber auch mit Bordmitteln von FHEM. Wenn Du folgendes machst:

attr userReadings myRoommate GoogleMapsCenter {ReadingsVal("myRoommate","locationLat",0) . ", " . ReadingsVal("myRoommate","locationLong",0);;}

Danke für den Tip, habs eingabaut

RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

TWART016

Mit der aktuellen Version wird bei mir überhaupt nichts mehr angezeigt.

Andy89

Zitat von: TWART016 am 26 Dezember 2017, 00:43:58
Mit der aktuellen Version wird bei mir überhaupt nichts mehr angezeigt.
ich hab die *.js Datei erst heute geladen und bei mir funktionierts. Hab anfangs den Meta-Tag vergessen, aber da hat sich die Karte von selbst beschwert. Nach dem einbauen des Meta-Tags läufts bei mir mit einem Traffic-Device von Fhem.

Beste Grüße
Andy

P.s.: Danke fürs Modul  ;)
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

TWART016

Gibt es mittlerweile schon eine Lösung zu dem Problem mit einem Popup?

Sobald das Widget in einem Popup ist, wird die Karte nicht angezeigt.

eki

Hatte ich überlesen  :-[, ich schau's mir mal an und melde mich.

OdfFhem

Bei der Verwendung von Wegepunkten kommt folgender Fehler: Cannot set property '0' of undefined

Ein wenig Nachforschung ermittelte in Zeile 692 folgende Ursache:
vorher
elem.data('direction_request').wayPoints = [];
nachher
elem.data('direction_request').waypoints = [];

Mit der Änderung ist der Fehler dann verschwunden und die Route wird auch mit allen Wegepunkten dargestellt.


Allerdings startet die Ansicht immer im "Weltmodus", so dass man erst mal in die Karte reinzoomen muss.

eki

Zitat von: TWART016 am 15 Januar 2018, 17:59:44
Gibt es mittlerweile schon eine Lösung zu dem Problem mit einem Popup?

Sobald das Widget in einem Popup ist, wird die Karte nicht angezeigt.


Ich habe eine neue Version, die auch mit Popups funktionieren müsste. Bitte mal testen und hier Feedback geben.

Zitat von: OdfFhem am 21 Januar 2018, 08:02:45
Bei der Verwendung von Wegepunkten kommt folgender Fehler: Cannot set property '0' of undefined

Ein wenig Nachforschung ermittelte in Zeile 692 folgende Ursache:
vorher
elem.data('direction_request').wayPoints = [];
nachher
elem.data('direction_request').waypoints = [];

Mit der Änderung ist der Fehler dann verschwunden und die Route wird auch mit allen Wegepunkten dargestellt.


Allerdings startet die Ansicht immer im "Weltmodus", so dass man erst mal in die Karte reinzoomen muss.

Danke für den Hinweis, ist in der hier angehängten Version jetzt auch korrigiert. Das mit dem falschen Zoom bzw. Gebiet kann ich nicht nachvollziehen. Bitte poste mal Deine Definition des Charts und des TRAFFIC Devices (kannst ja die sensiblen Daten weglassen).

OdfFhem

@eki

1) Ich habe die neue js-Datei aktiviert und bislang keine Ungereimtheiten festgestellt; Darstellung im popup scheint wie gewünscht zu funktionieren.

2a) Ich habe das "fehlerhafte" TRAFFIC-Device mal parallel unter anderem Namen neu angelegt; dann wird autom. der erwartete Kartenausschnitt dargestellt.
2b) Ein diff auf die list-Ergebnisse der beiden "identischen" Devices förderte in meinen Augen nichts Aufregendes zu Tage; ich hab's aber trotzdem mal unten eingefügt (< ist das neue; > ist das kaputte):

3d2
<    CFGFN     
6,7c5,6
<    NAME       Traffic999
<    NR         320
---
>    NAME       Traffic201
>    NR         208
9,10c8,9
<    TRIGGERTIME 1517128589.58288
<    TRIGGERTIME_FMT 2018-01-28 09:36:29
---
>    TRIGGERTIME 1517128590.98809
>    TRIGGERTIME_FMT 2018-01-28 09:36:30
19c18
<      2018-01-27 09:36:31   eta             10:11:53
---
>      2018-01-27 09:36:31   eta             10:11:51
49c48
<    alias      x2y
---
>    alias      a2b

daelch

Zitat von: eki am 19 Dezember 2017, 12:29:56
Das müsste ich einbauen. Das API scheint es her zu geben. Ich teste mal.

Hallo eki,

bist Du beim Thema "Standortfreigabe" schon weitergekommen?  :)

Viele Grüße
Christoph

mackshot

Hallo zusammen,

vielen Dank an eki für die Erstellung des Widgets. Ich habe dieses eingebunden und es gefällt mir sehr gut. Was bei mir nicht funktioniert, ist die Aktualisierung der Kartendarstellung.

Ich nutze das Widget mit Anbindung an ein TRAFFIC-device. Aktualisiert sich dieses, aktualisiert sich bei mir nicht die Kartendarstellung. Weder wenn ich die start oder end_address ändere noch (und das ist für mich der Fall den ich nutzen wollte) wenn sich die Verkehrslage geändert hat und somit auch die Fahrtzeit und entsprechend auch die Ankunftszeit.

Ich plane eine Anzeige der Fahrtzeit zur Arbeit jeden Morgen mit automatischer Aktualisierung der Karte in der Tablet-UI alle x-Minuten.

Ist das noch nicht unterstützt oder mache ich hier ggf. noch etwas falsch?

Dank und Gruß
Markus

eki

Zitat von: daelch am 11 Februar 2018, 06:23:41
Hallo eki,

bist Du beim Thema "Standortfreigabe" schon weitergekommen?  :)

Viele Grüße
Christoph
ng

Leider noch nicht, ich habe noch keine Lösung, die direkt über das Google Maps API funktioniert gefunden. Ich würde daher aktuell eher zur Nutzung des FHEM Moduls PRESENCE zusammen mit einer APP wie Geofency greifen. Falls ich noch was finde, melde ich mich.

eki

Zitat von: mackshot am 13 Februar 2018, 22:02:32
Hallo zusammen,

vielen Dank an eki für die Erstellung des Widgets. Ich habe dieses eingebunden und es gefällt mir sehr gut. Was bei mir nicht funktioniert, ist die Aktualisierung der Kartendarstellung.

Ich nutze das Widget mit Anbindung an ein TRAFFIC-device. Aktualisiert sich dieses, aktualisiert sich bei mir nicht die Kartendarstellung. Weder wenn ich die start oder end_address ändere noch (und das ist für mich der Fall den ich nutzen wollte) wenn sich die Verkehrslage geändert hat und somit auch die Fahrtzeit und entsprechend auch die Ankunftszeit.

Ich plane eine Anzeige der Fahrtzeit zur Arbeit jeden Morgen mit automatischer Aktualisierung der Karte in der Tablet-UI alle x-Minuten.

Ist das noch nicht unterstützt oder mache ich hier ggf. noch etwas falsch?

Dank und Gruß
Markus

Poste hier mal bitte Deine Definition des widgets in FTUI.

Kuzl

Hallo zusammen,

ich würde gerne im Alarmmonitor für die Feuerwehr alle Hydranten mit in der Karte anzeigen, sodass man dann gleich sieht, wo die nächsten Hydranten vom Einsatzort aus zu finden sind.
Gibt es eine Möglichkeit mehrere Marker anzuzeigen, oder muss ich wirklich 200 Instanzen machen und alle mappen?  ::)