NEWS
Adresse aus GPS Koordinaten ermitteln ?
-
@david-g Ok - ja das war wohl, weil ich erst google maps Koordinaten eingegeben habe. Nun liefert es auch das gleiche Ergebnis:
Also viel Luft um nichts - dafür haben wir ja nun viele Möglichkeiten ausprobiert.
-
@mickym
Was steht oben in der Funktion "OSM" ? -
Im vorletzten Post hast du einen einen Screenshot.
Kann ich nachher wenn ich am Rechner bin posten. -
@david-g
das wäre sehr nett von dir -
Das ist mein Blockly:
Mir war es wichtig, für meine Visualisierung einen schönen sauberen Adressblock zu bekommen. Deshalb frage ich sehr viel ab, damit keine doppelten Kommas entstehen wenn es eine Info nicht gibt.
Wenn es zB so aussehen soll:
Teststraße 1, 12345 Testdorf, Deutschland
Wenn es keine Straße gibt wollte ich da nicht
, 12345 Testdorf, Deutschland
stehen haben.
Hier der Inhalt vom JS-Baustein ohne den Rest:
-
@david-g
Funktioniert einwandfrei.
Vielen Dank -
Einen kleinen schönheitsfehler habe ich noch.
Den aktuellen Standort lasse ich mir im "Open Street Map" Widget anzeigen.
Ändert sich nun die Koordinaten, springt der Merker im Widget nicht an die richtige Stelle.
Aktualisiere ich dir VIS, dann bin ich an der richtgen Position.EDIT: Ich denke, dass ist einTiming Problem.
Die Datenpunkte für die Koordinaten (LAT / LNG) werden nacheinander geschrieben, mit einer Millisekunde versatz.
In dieser Millisekunde hat das Widget schon reagiert und springt zu den neuen Koordinaten, obwohl noch nicht beide
Datenpunkte aktuallisiert wurden. -
Funktioniert ja super soweit. Danke auf jeden fall.
Ein Problem ergibt sich aber nun doch. seit der Umstellung im JavaScript Adapter die Umstellung von httpGET bekomme ich nun folgende Fehlermeldungwarn: script.js.common.GPS: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
Wie kann ich das beheben?
-
@micha-3 said in Adresse aus GPS Koordinaten ermitteln ?:
Funktioniert ja super soweit. Danke auf jeden fall.
Ein Problem ergibt sich aber nun doch. seit der Umstellung im JavaScript Adapter die Umstellung von httpGET bekomme ich nun folgende Fehlermeldungwarn: script.js.common.GPS: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
Wie kann ich das beheben?
Ich würde mich ebenfalls über eine Lösung freuen - Danke!
-
@razer2412
Suche benutzen, da gibt es gefühlt 100er Beiträge.Stichwort wie im log: httpGet
-
@razer2412 sagte in Adresse aus GPS Koordinaten ermitteln ?:
Ich würde mich ebenfalls über eine Lösung freuen - Danke!
und die helfenden würden sich über dein Skript freuen.
Oder eine stärkere Glaskugel -
Da wurde hier schon X mal besprochen.
Falls die Forensuche zu viel Aufwand bedeutet: Ich habe da mal was vorbereitet ...
https://forum.iobroker.net/search?term=request httpget&in=titlesposts&matchWords=all&sortBy=timestamp&sortDirection=desc&showAs=posts -
Geht trotzdem nicht.
Beim ersten
2025-09-13 19:19:24.405 warn script.js.common.GPS: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
Wenn wir schon dabei sind, beim Warmwasser sogar die Meldung.
2025-09-13 19:16:21.923 error script.js.Zentrale.Warmwassersteuerung: httpGet(url=http://192.168.178.136/cm?cmnd=counter1%200, error=timeout of 1500ms exceeded)
das blockly-skript
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> <variable id="t{9+flX*7=dsZdJ6pUDs">Position</variable> <variable id="InM51wH+hhRZ1K}Uo6R:">result</variable> </variables> <block type="http_get" id="m-)iMJC?nyP-2Z{jK*{S" x="338" y="502"> <field name="TIMEOUT">2000</field> <field name="UNIT">ms</field> <field name="TYPE">arraybuffer</field> <value name="URL"> <shadow type="text" id="mtY5?0cuLz,.0t!EWqIB"> <field name="TEXT">http://</field> </shadow> <block type="text_join" id="%AIgcwHNe/@sw*U01y$j"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="w`-_6V`Q}otb@4S:2plf"> <field name="TEXT">https://dataservice.accuweather.com/locations/v1/cities/geoposition/search?apikey=xxxxxxxxxxxxx=</field> </block> </value> <value name="ADD1"> <block type="get_value" id="SKOaXNue28T!,3USSm[}"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.GPS.accuweather_GPS</field> </block> </value> </block> </value> <statement name="STATEMENT"> <block type="variables_set" id="B.8O%)EDl50Pxp@#{+%."> <field name="VAR" id="t{9+flX*7=dsZdJ6pUDs">Position</field> <value name="VALUE"> <block type="text_getSubstring" id="owiE8!SuQ*Q%@^B#G8=2"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="e4z]G)3d#LQfW2QN0ZM!"> <field name="VAR" id="InM51wH+hhRZ1K}Uo6R:">result</field> </block> </value> <value name="AT1"> <block type="math_number" id="/`f+By;MjuAQu~YW(O(4"> <field name="NUM">21</field> </block> </value> <value name="AT2"> <block type="math_number" id="6!?5#)73q+T{zE_B].7O"> <field name="NUM">27</field> </block> </value> </block> </value> <next> <block type="update" id="{b$:l~qpE|8N{)e*U6~I"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.GPS.accuweather_Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="QWY0%hWvBuBR#=3oK=L*"> <value name="VALUE"> <block type="variables_get" id="AMy:l(Q?52+HV;3@1K@N"> <field name="VAR" id="t{9+flX*7=dsZdJ6pUDs">Position</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> <block type="on" id="Oa.K#_8v*gk[2_8:{/hf" x="338" y="738"> <field name="OID">hm-rpc.2.00021BE99E2EFA.3.STATE</field> <field name="CONDITION">false</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="timeouts_settimeout" id="OVb_d2mk9).9s77}ZxLm"> <field name="NAME">timeout</field> <field name="DELAY">2000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="http_get" id="n$[MBQ:|r$H4L_Fm0-9u"> <field name="TIMEOUT">1500</field> <field name="UNIT">ms</field> <field name="TYPE">arraybuffer</field> <value name="URL"> <shadow type="text" id="jy.JTwBxm9C)KyeVI`--"> <field name="TEXT">http://192.168.178.136/cm?cmnd=counter1%200</field> </shadow> </value> </block> </statement> </block> </statement> </block> </xml>
-
@micha-3 bitte das Blockly zeigen!
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1@micha-3 sagte in Adresse aus GPS Koordinaten ermitteln ?:
<variable id="InM51wH+hhRZ1K}Uo6R:">result</variable>
und
@micha-3 sagte in Adresse aus GPS Koordinaten ermitteln ?:
TYPE">arraybuffer
sieht für mich nicht korrekt aus
-
Geht mit "text" aber auch nicht.
EDIT/ Jetzt hab ich den Fehler. Aber wie beheb ich das? ich kann kein JS, das ist alles nur zusammen kopiert.
var request =require('request'); let result; const options = { url: 'https://nominatim.openstreetmap.org/reverse.php?format=json&lat=' + lat + '&lon=' + lon + '&zoom=18', method: 'GET', headers: { 'Accept': 'application/json', 'Accept-Charset': 'utf-8', 'User-Agent': 'iobroker script' } } request(options, function(err,response,body){ result = JSON.parse(body); }) await wait(1000); return result;
-
Hab das ganze mal schnell mit "httpget" umgesetzt, anbei:
var lat = "51.4"; var lon = "9.5"; httpGet('https://nominatim.openstreetmap.org/reverse.php?format=json&lat=' + lat + '&lon=' + lon + '&zoom=18', { timeout: 1000 }, (error, response) => { if (!error) { //console.log(response.statusCode); //console.log(response.data); var result = JSON.parse(response.data); //log (result.display_name); log (result.address.road + " " + result.address.house_number); log (result.address.postcode + " " + result.address.municipality); } else { console.error(error); } });
-
Hallo zusammen,
vielen Dank für die schnellen Rückmeldungen.
@Homoran Ich habe das Script von @David-G verwendet.
@bahnuhr und @Codierknecht
natürlich habe ich versucht das ganze mithilfe der Suche und anderen Hilfsmitteln (ChatGPT) selbst zu lösen. Leider ohne Erfolg.Mein bisheriges Script:
var lat, lon, result, hausnummer, strasse, plz, ort, ort2, kreis, bundesland, land, stadt, stadtteil; // Beschreibe diese Funktion … async function OSM(lat, lon) { var request =require('request'); let result; const options = { url: 'https://nominatim.openstreetmap.org/reverse.php?format=json&lat=' + lat + '&lon=' + lon + '&zoom=18', method: 'GET', headers: { 'Accept': 'application/json', 'Accept-Charset': 'utf-8', 'User-Agent': 'iobroker script' } } request(options, function(err,response,body){ result = JSON.parse(body); }) await wait(1000); return result; } schedule("* * * * *", async () => { lat = getState('vw-connect.0.xyz.parkingposition.lat').val; lon = getState('vw-connect.0.xyz.parkingposition.lon').val; result = await OSM(lat, lon); hausnummer = ''; strasse = ''; plz = ''; ort = ''; ort2 = ''; kreis = ''; bundesland = ''; land = ''; hausnummer = getAttr(result, 'address.house_number'); strasse = getAttr(result, 'address.road'); plz = getAttr(result, 'address.postcode'); stadt = getAttr(result, 'address.town'); stadtteil = getAttr(result, 'address.village'); kreis = getAttr(result, 'address.county'); bundesland = getAttr(result, 'address.state'); land = getAttr(result, 'address.country'); setState('0_userdata.0.Helfer.Position_Auto' /* Position Auto */, ([strasse ? strasse : null,hausnummer ? [' ',hausnummer,''].join('') : null,strasse ? ', ' : null,plz ? String(plz) + ' ' : null,stadt ? String(stadt) + '' : null,stadtteil ? [' (',stadtteil,')'].join('') : null,kreis ? ', ' + String(kreis) : null,bundesland ? ', ' + String(bundesland) : null,land ? ', ' + String(land) : null,!land ? 'Keine Adressen verfügbar.' : null].join('')), true); });
Über weitere Tipps/Hilfe würde ich mich sehr freuen!
-
@razer2412
Warum nimmst du nicht das Script was ich 1 Beitrag vor deinem gesendet habe ?
Funktioniert einwandfrei.
Und benutzt httpget.Komisch.
Warum stell ich hier was ein ? -
Ich hätte da auch noch 'ne Variante.
Benötigt allerdings einen (kostenlosen) API-Key:async function getAddress(latitude, longitude) { const url = `https://geocode.maps.co/reverse?lat=${latitude}&lon=${longitude}&api_key=${key}`; httpGet(url, {timeout: 20000}, function(err, response) { if (err) { console.log(err); } else if (response.statusCode == 200) { return response.data.display_name; }; }); }
Im Übrigen finde ich das bisherige Script reichlich spooky.
Warum wird da jede Minute die Position bestimmt, wenn das Auto geparkt ist?
Die wird sich wohl kaum verändern. Es sei denn, jemand schraubt am Raum-Zeit-Kontinuum.
Das Auto wird doch mit ziemlicher Sicherheit den Status (fährt, steht, geparkt, lädt) übermitteln. Dann muss man die Position doch nur bei Statusänderungen ermitteln.@bahnuhr Ist doch viel einfacher, wenn einem jemand das mundgerecht zurechtlegt
Ne, im Ernst:
@Razer2412 Wir leisten hier "Hilfe zur Selbsthilfe". Da Eine oder Andere muss man sich dann schon noch selbst zurechfummeln. Das übt -
@bahnuhr sagte in Adresse aus GPS Koordinaten ermitteln ?:
var lat = "51.4"; var lon = "9.5"; httpGet('https://nominatim.openstreetmap.org/reverse.php?format=json&lat=' + lat + '&lon=' + lon + '&zoom=18', { timeout: 1000 }, (error, response) => { if (!error) { //console.log(response.statusCode); //console.log(response.data); var result = JSON.parse(response.data); //log (result.display_name); log (result.address.road + " " + result.address.house_number); log (result.address.postcode + " " + result.address.municipality); } else { console.error(error); } });
Dankeschön. aber nun kommt wieder was neues. Ich kann es nicht speichern.