NEWS
Adresse aus GPS Koordinaten ermitteln ?
-
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.
-
-
<block xmlns="https://developers.google.com/blockly/xml" type="procedures_defcustomreturn" id="?;wMWdJ!vB8:m#;$39f@" x="-537" y="213"> <mutation statements="false"> <arg name="lat" varid="QN!T6w6a-/l=eT]qb^[m"></arg> <arg name="lon" varid=";AX~{zgT$/kdtN6_QqtB"></arg> </mutation> <field name="NAME">OSM</field> <field name="SCRIPT">dmFyIHJlcXVlc3QgPXJlcXVpcmUoJ3JlcXVlc3QnKTsNCmxldCByZXN1bHQ7DQpjb25zdCBvcHRpb25zID0gew0KICAgIHVybDogJ2h0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3JldmVyc2UucGhwP2Zvcm1hdD1qc29uJmxhdD0nICsgbGF0ICsgJyZsb249JyArIGxvbiArICcmem9vbT0xOCcsDQogICAgbWV0aG9kOiAnR0VUJywNCiAgICBoZWFkZXJzOiB7DQogICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsDQogICAgICAgICdBY2NlcHQtQ2hhcnNldCc6ICd1dGYtOCcsDQogICAgICAgICdVc2VyLUFnZW50JzogJ2lvYnJva2VyIHNjcmlwdCcNCiAgICB9DQp9DQoNCnJlcXVlc3Qob3B0aW9ucywgZnVuY3Rpb24oZXJyLHJlc3BvbnNlLGJvZHkpew0KICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7DQp9KQ0KYXdhaXQgd2FpdCgxMDAwKTsNCnJldHVybiByZXN1bHQ7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block>
Ich bin echt zu doof. darin kommt das JS und das kann ich nicht speichern.
-
das JS was drin ist falls ich es nicht gepostet habe.
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;
-
Was machst du da ???
Versuchst du ein JS in ein blockly rein zu tun ?
Speichere das JS in ein JS; und nicht in ein blockly.
-
ich sag doch, ich kann das nicht. ich hab mir das von oben kopiert und es lief ja auch. nun hab ich die Fehlermeldung und festgestellt, es das JS in der Funktion. aber wie und was das alles macht weiß ich nicht.
-
@bahnuhr
Danke für dein Skript! Leider habe ich das gleiche Problem welches auch @Micha-3 versucht zu erklären: Das Skript lässt sich im Javaskript Editor nicht speichern und damit auch nicht nutzen.@Codierknecht vielen Dank auch für deine Hilfe!
Bitte beachte die Abfrage jede Minute nicht - die dient nur zu testzwecken.
Das fertige Skript funktioniert dann wie das ursprüngliche Skript bei jeder Statusänderung.Ich habe schon weit über 30 Skripte (Blockly) zur Hausautomatisierung gebastelt, welche teilweise auch wirklich umfangreich sind. Sehr vieles habe ich über try and error herausgefunden.
Auch hier habe ich Stunden selbst versucht ein lauffähiges Skript zu erhalten, bevor ich hier unnötig nachfrage!Ich möchte mich dafür entschuldigen, wenn meine Eigenleistung nicht den Erwartungen gerecht wird.
-
@razer2412 sagte in Adresse aus GPS Koordinaten ermitteln ?:
Das Skript lässt sich im Javaskript Editor nicht speichern und damit auch nicht nutzen.
Wo seid ihr.
Das Script läuft in JS einwandfrei.Seit ihr in VIS Editor ???
-
-
-
In der JS-Funktion
-
-
@bahnuhr sagte in Adresse aus GPS Koordinaten ermitteln ?:
Wie oft muss ichs das sagen !
Es ist kein blockly !!
Es ist ein stink normales JS.
-
und nochmal !
JS, kein Blockly !
-
kommisch nur es geht und trotz der Fehlermeldung.
nimm den Blockly code und teste selber und dasnn gehst du auf JS-Funktion ... da ist das JS drin.