Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. HttpGet liefert 403

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    HttpGet liefert 403

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @Ro75 last edited by

      @ro75 sagte in HttpGet liefert 403:

      Rate-Limit von 2500 pro Tag

      das wäre aber schon heftig, wenn das überschritten würde!
      Das sind 1.7 Anfragen pro Minute rund um die Uhr

      Ro75 1 Reply Last reply Reply Quote 0
      • David G.
        David G. @Ro75 last edited by David G.

        @ro75

        Das hört sich ja gut an.
        Die 2500 habe ich nicht. Bei 2 Adressen alle 5min komme ich auf 576.

        Dann wird es der Useragend sein.
        Ich warte mal, ob @haus-automatisierung einen Vorschlag für eine Lösung mittels Blockly hat.

        Sonst wird es wohl eine JS Funktion werden müssen an die ich die Koordinaten übergebe.

        Edit
        Ich sehe grad, ich aktualisiere doch jede Minute den Standort. Trigger aber nur auf Veränderung.
        Mal sehen, ob ich das minimiert bekomme. Zb Nur wenn die Änderung größer als x Meter ist.

        haus-automatisierung 1 Reply Last reply Reply Quote 0
        • Ro75
          Ro75 @Homoran last edited by

          @homoran ja so ist es. Und wenn man weiter googelt kommt der User-Agent ins spiel.

          Hier mal mein Code:

          function GeoState(lat, lon, sDP='') {
              httpGet('https://nominatim.openstreetmap.org/reverse?format=geojson&lat='+lat+'&lon='+lon, { timeout: 15000,"headers":{"User-Agent":"'" + RUA() + "'"}}, (error, response) => {
                  if (!error  && response.statusCode == 200) {
                      var info = JSON.parse(response.data);
                      var dummy = JSON.stringify(info);
                      dummy = JSON.parse(dummy).features[0].properties.address;
                      setState(sDP, JSON.stringify(dummy), true);
                      info = '';
                      dummy = '';
                  } else {
                      console.error('Nominatim: '+response.statusCode);
                  }    
              })
          }
          
          //Aufruf:
          GeoState (getState('owntracks.0.users.XXXXX.latitude').val, getState('owntracks.0.users.XXXXX.longitude').val, XXXXXZIEL_JSONDPXXXXX);
          
          
          function UAChrome() {
              const Plattform = Math.floor(Math.random() * 2)
              const chromeVersion = Math.floor(Math.random() * 20) + 60;
              const webkitVersion = Math.floor(Math.random() * 700) + 500;
              const osPlatform = Plattform == 1 ? 'Win64; x64' : 'Macintosh; Intel Mac OS X 10_15_0';
              const userAgent = `Mozilla/5.0 (${osPlatform}) AppleWebKit/${webkitVersion}.36 (KHTML, like Gecko) Chrome/${chromeVersion}.0.3163.100 Safari/${webkitVersion}.36`;
              return userAgent;
          }
          
          function UAFirefox() {
              const Plattform = Math.floor(Math.random() * 2)
              const firefoxVersion = Math.floor(Math.random() * 5) + 55;
              const geckoVersion = Math.floor(Math.random() * 30) + 20100101;
              const osPlatform = Plattform == 1 ? 'Win64; x64' : 'Macintosh; Intel Mac OS X 10_15_0';
              const userAgent = `Mozilla/5.0 (${osPlatform}; rv: ${firefoxVersion}.0) Gecko/${geckoVersion} Firefox/${firefoxVersion}.0`;
              return userAgent;
          }
          
          function UASafari() {
              const Plattform = Math.floor(Math.random() * 2)
              const safariVersion = Math.floor(Math.random() * 5) + 10;
              const osPlatform = Plattform == 1 ? 'Win64; x64' : 'Macintosh; Intel Mac OS X 10_15_0';
              const userAgent = `Mozilla/5.0 (${osPlatform}) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/${safariVersion}.1.15 Safari/605.1.15`;
              return userAgent;
            }
          
          function UAAndroid() {
              const androidVersion = Math.floor(Math.random() * 5) + 5;
              const chromeVersion = Math.floor(Math.random() * 20) + 60;
              const webkitVersion = Math.floor(Math.random() * 700) + 500;
              const osPlatform = `Linux; Android ${androidVersion}.${Math.floor(Math.random() * 10)}; en-us; Nexus 6 Build/LYZ28M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion}.0.3163.98 Mobile Safari/${webkitVersion}.36`;
              const userAgent = `Mozilla/5.0 (${osPlatform}`;
              return userAgent;
          }
          
          function UAIos() {
              const iosVersion = Math.floor(Math.random() * 5) + 9;
              const safariVersion = Math.floor(Math.random() * 5) + 600;
              const webkitVersion = Math.floor(Math.random() * 700) + 500;
              const osPlatform = `CPU iPhone OS ${iosVersion}_${Math.floor(Math.random() * 10)} like Mac OS X) AppleWebKit/${webkitVersion}.60 (KHTML, like Gecko) Version/${safariVersion}.0 Mobile/15E148 Safari/${webkitVersion}.60`;
              const userAgent = `Mozilla/5.0 (${osPlatform}`;
              return userAgent;
          }
          
          function RUA() {
              const UA = Math.floor(Math.random() * 4)
              var UserAgent = '';
          
              if (UA == 0) {
                  UserAgent = UAChrome();
              } else if (UA == 1) {
                  UserAgent = UAFirefox();
              } else if (UA == 2) {
                  UserAgent = UASafari();
              } else if (UA == 3) {
                  UserAgent = UAAndroid();
              } else if (UA == 4) {
                  UserAgent = UAIos();
              }
              return UserAgent;
          }
          

          In diesem Beispiel kommt immer ein neuer User-Agent ins spiel. Ich habe das bei mir noch geändert, dass aller 6 Stunden nur ein neuer Agent zum tragen kommt.

          Ro75.

          1 Reply Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @David G. last edited by

            @david-g sagte in HttpGet liefert 403:

            Ich warte mal, ob @haus-automatisierung einen Vorschlag für eine Lösung mittels Blockly hat.

            Ich habe lange überlegt, ob ich eigene HTTP-Header auch im Blockly-Baustein erlaube. Aber nach den letzten Wochen hier, sind die meisten schon mit den einfachsten Bautein-Kombinationen überfordert. Selbst der neue http POST-Baustein überfordert schon die meisten...

            Also ich möchte den erstmal nicht noch komplexer machen.

            1 Reply Last reply Reply Quote 2
            • Ro75
              Ro75 @David G. last edited by

              @david-g sagte in HttpGet liefert 403:

              Der Test hat im selben Netz stattgefunden, glaube also nicht, dass meine IP geblockt wurde.

              Die Beobachtung ist korrekt. Nominatim blockt nicht eine spezielle IP, sondern einen IP-Adressbereich in Verbindung mit dem User-Agent.

              Daher läuft der Aufruf vom PC ohne Probleme und der Linux-Server mit ioBroker (httpget mit vermutlich immer dem gleichen User-Agent - sofern nichts übergeben) wird geblockt.

              Ro75.

              David G. 1 Reply Last reply Reply Quote 0
              • David G.
                David G. @Ro75 last edited by

                @ro75

                Weist du, ob man von selber freigegeben wird nach einer gewissen Zeit oder man es beantragen muss?

                Ro75 1 Reply Last reply Reply Quote 0
                • Ro75
                  Ro75 @David G. last edited by

                  @david-g brauchst gar nichts machen. Einfach mal ne Stunde pausieren und zukünftig aber mit dem User-Agent in httpget arbeiten!

                  Ro75.

                  David G. 1 Reply Last reply Reply Quote 0
                  • David G.
                    David G. @Ro75 last edited by

                    @ro75

                    Bist du auch ein wenig fit in Blockly?

                    Kannst du mir sagen, wie deine beiden Scripte aussehen müssten, um die beiden Funktionen zu befüllen?

                    Screenshot_20240619_130027_Chrome.jpg

                    Ro75 haus-automatisierung 2 Replies Last reply Reply Quote 0
                    • Ro75
                      Ro75 @David G. last edited by

                      @david-g Blockly nicht mein Ding. Nur JS.

                      Ro75.

                      1 Reply Last reply Reply Quote 0
                      • haus-automatisierung
                        haus-automatisierung Developer Most Active @David G. last edited by

                        @david-g sagte in HttpGet liefert 403:

                        um die beiden Funktionen zu befüllen

                        Warum zwei Funktionen? Eine reicht doch?!

                        David G. 1 Reply Last reply Reply Quote 0
                        • David G.
                          David G. @haus-automatisierung last edited by

                          @haus-automatisierung

                          Darf auch gerne eine sein wo ich nur Koordinaten übergebe, hatte es nur so aufgeteilt da es von @Ro75 2 Teile waren.

                          Ro75 haus-automatisierung 2 Replies Last reply Reply Quote 0
                          • Ro75
                            Ro75 @David G. last edited by

                            @david-g der erste Teil war die eigentliche Abfrage von Nominatim. Der zweite Teil ist der zufällige User-Agent, der von der ersten mit aufgerufen wird. Nur bessere Übersicht.

                            Ro75.

                            1 Reply Last reply Reply Quote 0
                            • haus-automatisierung
                              haus-automatisierung Developer Most Active @David G. last edited by haus-automatisierung

                              @david-g

                              <xml xmlns="https://developers.google.com/blockly/xml">
                                <variables>
                                  <variable id="r,(xv@.d$c;=YdJMPX80">lon</variable>
                                  <variable id="g{2,u1PfjN1:=CyqH3*m">lat</variable>
                                  <variable id="-@Osx@[T`D-%M3P0(~3!">sDP</variable>
                                </variables>
                                <block type="procedures_defcustomnoreturn" id="^(d~V_hm.^xis(f6DkUY" x="88" y="188">
                                  <mutation statements="false">
                                    <arg name="lon" varid="r,(xv@.d$c;=YdJMPX80"></arg>
                                    <arg name="lat" varid="g{2,u1PfjN1:=CyqH3*m"></arg>
                                    <arg name="sDP" varid="-@Osx@[T`D-%M3P0(~3!"></arg>
                                  </mutation>
                                  <field name="NAME">osmResolve</field>
                                  <field name="SCRIPT">ZnVuY3Rpb24gVUFDaHJvbWUoKSB7CiAgICBjb25zdCBQbGF0dGZvcm0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyKQogICAgY29uc3QgY2hyb21lVmVyc2lvbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIwKSArIDYwOwogICAgY29uc3Qgd2Via2l0VmVyc2lvbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDcwMCkgKyA1MDA7CiAgICBjb25zdCBvc1BsYXRmb3JtID0gUGxhdHRmb3JtID09IDEgPyAnV2luNjQ7IHg2NCcgOiAnTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV8wJzsKICAgIGNvbnN0IHVzZXJBZ2VudCA9IGBNb3ppbGxhLzUuMCAoJHtvc1BsYXRmb3JtfSkgQXBwbGVXZWJLaXQvJHt3ZWJraXRWZXJzaW9ufS4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8ke2Nocm9tZVZlcnNpb259LjAuMzE2My4xMDAgU2FmYXJpLyR7d2Via2l0VmVyc2lvbn0uMzZgOwogICAgcmV0dXJuIHVzZXJBZ2VudDsKfQogCmZ1bmN0aW9uIFVBRmlyZWZveCgpIHsKICAgIGNvbnN0IFBsYXR0Zm9ybSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIpCiAgICBjb25zdCBmaXJlZm94VmVyc2lvbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpICsgNTU7CiAgICBjb25zdCBnZWNrb1ZlcnNpb24gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAzMCkgKyAyMDEwMDEwMTsKICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBQbGF0dGZvcm0gPT0gMSA/ICdXaW42NDsgeDY0JyA6ICdNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzAnOwogICAgY29uc3QgdXNlckFnZW50ID0gYE1vemlsbGEvNS4wICgke29zUGxhdGZvcm19OyBydjogJHtmaXJlZm94VmVyc2lvbn0uMCkgR2Vja28vJHtnZWNrb1ZlcnNpb259IEZpcmVmb3gvJHtmaXJlZm94VmVyc2lvbn0uMGA7CiAgICByZXR1cm4gdXNlckFnZW50Owp9CiAKZnVuY3Rpb24gVUFTYWZhcmkoKSB7CiAgICBjb25zdCBQbGF0dGZvcm0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyKQogICAgY29uc3Qgc2FmYXJpVmVyc2lvbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpICsgMTA7CiAgICBjb25zdCBvc1BsYXRmb3JtID0gUGxhdHRmb3JtID09IDEgPyAnV2luNjQ7IHg2NCcgOiAnTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV8wJzsKICAgIGNvbnN0IHVzZXJBZ2VudCA9IGBNb3ppbGxhLzUuMCAoJHtvc1BsYXRmb3JtfSkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLyR7c2FmYXJpVmVyc2lvbn0uMS4xNSBTYWZhcmkvNjA1LjEuMTVgOwogICAgcmV0dXJuIHVzZXJBZ2VudDsKICB9CiAKZnVuY3Rpb24gVUFBbmRyb2lkKCkgewogICAgY29uc3QgYW5kcm9pZFZlcnNpb24gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA1KSArIDU7CiAgICBjb25zdCBjaHJvbWVWZXJzaW9uID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjApICsgNjA7CiAgICBjb25zdCB3ZWJraXRWZXJzaW9uID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNzAwKSArIDUwMDsKICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBgTGludXg7IEFuZHJvaWQgJHthbmRyb2lkVmVyc2lvbn0uJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCl9OyBlbi11czsgTmV4dXMgNiBCdWlsZC9MWVoyOE0pIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8ke2Nocm9tZVZlcnNpb259LjAuMzE2My45OCBNb2JpbGUgU2FmYXJpLyR7d2Via2l0VmVyc2lvbn0uMzZgOwogICAgY29uc3QgdXNlckFnZW50ID0gYE1vemlsbGEvNS4wICgke29zUGxhdGZvcm19YDsKICAgIHJldHVybiB1c2VyQWdlbnQ7Cn0KIApmdW5jdGlvbiBVQUlvcygpIHsKICAgIGNvbnN0IGlvc1ZlcnNpb24gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA1KSArIDk7CiAgICBjb25zdCBzYWZhcmlWZXJzaW9uID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNSkgKyA2MDA7CiAgICBjb25zdCB3ZWJraXRWZXJzaW9uID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNzAwKSArIDUwMDsKICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBgQ1BVIGlQaG9uZSBPUyAke2lvc1ZlcnNpb259XyR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApfSBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC8ke3dlYmtpdFZlcnNpb259LjYwIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8ke3NhZmFyaVZlcnNpb259LjAgTW9iaWxlLzE1RTE0OCBTYWZhcmkvJHt3ZWJraXRWZXJzaW9ufS42MGA7CiAgICBjb25zdCB1c2VyQWdlbnQgPSBgTW96aWxsYS81LjAgKCR7b3NQbGF0Zm9ybX1gOwogICAgcmV0dXJuIHVzZXJBZ2VudDsKfQogCmZ1bmN0aW9uIFJVQSgpIHsKICAgIGNvbnN0IFVBID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNCk7CiAKICAgIGlmIChVQSA9PSAwKSB7CiAgICAgICAgcmV0dXJuIFVBQ2hyb21lKCk7CiAgICB9IGVsc2UgaWYgKFVBID09IDEpIHsKICAgICAgICByZXR1cm4gVUFGaXJlZm94KCk7CiAgICB9IGVsc2UgaWYgKFVBID09IDIpIHsKICAgICAgICByZXR1cm4gVUFTYWZhcmkoKTsKICAgIH0gZWxzZSBpZiAoVUEgPT0gMykgewogICAgICAgIHJldHVybiBVQUFuZHJvaWQoKTsKICAgIH0gZWxzZSBpZiAoVUEgPT0gNCkgewogICAgICAgIHJldHVybiBVQUlvcygpOwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKaHR0cEdldCgKICAgIGBodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9yZXZlcnNlP2Zvcm1hdD1nZW9qc29uJmxhdD0ke2xhdH0mbG9uPSR7bG9ufWAsCiAgICB7CiAgICAgICAgdGltZW91dDogMTUwMDAsCiAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAnVXNlci1BZ2VudCc6IFJVQSgpLAogICAgICAgIH0sCiAgICB9LAogICAgKGVyciwgcmVzcG9uc2UpID0+IHsKICAgICAgICBpZiAoIWVyciAgJiYgcmVzcG9uc2Uuc3RhdHVzQ29kZSA9PSAyMDApIHsKICAgICAgICAgICAgY29uc3QgaW5mbyA9IEpTT04ucGFyc2UocmVzcG9uc2UuZGF0YSk7CiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBpbmZvLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMuYWRkcmVzczsKCiAgICAgICAgICAgIHNldFN0YXRlKHNEUCwgSlNPTi5zdHJpbmdpZnkoYWRkcmVzcyksIHRydWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYE5vbWluYXRpbTogJHtyZXNwb25zZS5zdGF0dXNDb2RlfWApOwogICAgICAgIH0KICAgIH0KKTsK</field>
                                  <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                </block>
                              </xml>
                              

                              Screenshot 2024-06-19 at 13.35.30.png

                              David G. 1 Reply Last reply Reply Quote 1
                              • David G.
                                David G. @haus-automatisierung last edited by

                                @haus-automatisierung

                                Vielen Dank.
                                sDP ist ein DP wo die json reingeschrieben wird?

                                haus-automatisierung 1 Reply Last reply Reply Quote 0
                                • haus-automatisierung
                                  haus-automatisierung Developer Most Active @David G. last edited by haus-automatisierung

                                  @david-g Ja, ist doch der Code von oben den Du selbst geteilt hast 🙂 EDIT: Sorry, war von @Ro75 und nicht von Dir

                                  David G. 1 Reply Last reply Reply Quote 0
                                  • David G.
                                    David G. @haus-automatisierung last edited by

                                    @haus-automatisierung

                                    Danke für deine Umsetzung.
                                    Wie kann ich die Zeile

                                                setState(sDP, JSON.stringify(address), true);
                                    

                                    abändern, damit das Ergebnis in eine Variable geschrieben wird mit der ich in Blockly weiterarbeiten kann?

                                    sDP würde ich dann aus der Funktion entfernen.

                                    haus-automatisierung 1 Reply Last reply Reply Quote 0
                                    • haus-automatisierung
                                      haus-automatisierung Developer Most Active @David G. last edited by

                                      @david-g sagte in HttpGet liefert 403:

                                      abändern, damit das Ergebnis in eine Variable geschrieben wird mit der ich in Blockly weiterarbeiten kann?

                                      Du musst ein Promise zurückliefern. Oder mit httpGetAsync arbeiten...

                                      David G. 1 Reply Last reply Reply Quote 0
                                      • David G.
                                        David G. @haus-automatisierung last edited by

                                        @haus-automatisierung

                                        Also nicht einfach

                                        e2cacc71-70b8-4028-a041-92620d22678b-image.png

                                        und anstatt in die Variable in das Result von der Funktion schreiben (habe es bisher nicht geschafft^^)?

                                        Falls das nicht so leicht ist, gehe ich einfach über den DP als Zwischenschritt.

                                        haus-automatisierung 1 Reply Last reply Reply Quote 0
                                        • haus-automatisierung
                                          haus-automatisierung Developer Most Active @David G. last edited by haus-automatisierung

                                          @david-g Nein, weil httpGet ja asynchron ausgeführt wird und nicht auf den Callback gewartet wird.

                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                            <variables>
                                              <variable id="r,(xv@.d$c;=YdJMPX80">lon</variable>
                                              <variable id="g{2,u1PfjN1:=CyqH3*m">lat</variable>
                                            </variables>
                                            <block type="procedures_defcustomreturn" id="Yf![9|Fz[uw]ZE3)hfFf" x="138" y="288">
                                              <mutation statements="false">
                                                <arg name="lon" varid="r,(xv@.d$c;=YdJMPX80"></arg>
                                                <arg name="lat" varid="g{2,u1PfjN1:=CyqH3*m"></arg>
                                              </mutation>
                                              <field name="NAME">osmResolve</field>
                                              <field name="SCRIPT">ZnVuY3Rpb24gVUFDaHJvbWUoKSB7CiAgICBjb25zdCBQbGF0dGZvcm0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyKQogICAgY29uc3QgY2hyb21lVmVyc2lvbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIwKSArIDYwOwogICAgY29uc3Qgd2Via2l0VmVyc2lvbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDcwMCkgKyA1MDA7CiAgICBjb25zdCBvc1BsYXRmb3JtID0gUGxhdHRmb3JtID09IDEgPyAnV2luNjQ7IHg2NCcgOiAnTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV8wJzsKICAgIGNvbnN0IHVzZXJBZ2VudCA9IGBNb3ppbGxhLzUuMCAoJHtvc1BsYXRmb3JtfSkgQXBwbGVXZWJLaXQvJHt3ZWJraXRWZXJzaW9ufS4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8ke2Nocm9tZVZlcnNpb259LjAuMzE2My4xMDAgU2FmYXJpLyR7d2Via2l0VmVyc2lvbn0uMzZgOwogICAgcmV0dXJuIHVzZXJBZ2VudDsKfQogCmZ1bmN0aW9uIFVBRmlyZWZveCgpIHsKICAgIGNvbnN0IFBsYXR0Zm9ybSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDIpCiAgICBjb25zdCBmaXJlZm94VmVyc2lvbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpICsgNTU7CiAgICBjb25zdCBnZWNrb1ZlcnNpb24gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAzMCkgKyAyMDEwMDEwMTsKICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBQbGF0dGZvcm0gPT0gMSA/ICdXaW42NDsgeDY0JyA6ICdNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzAnOwogICAgY29uc3QgdXNlckFnZW50ID0gYE1vemlsbGEvNS4wICgke29zUGxhdGZvcm19OyBydjogJHtmaXJlZm94VmVyc2lvbn0uMCkgR2Vja28vJHtnZWNrb1ZlcnNpb259IEZpcmVmb3gvJHtmaXJlZm94VmVyc2lvbn0uMGA7CiAgICByZXR1cm4gdXNlckFnZW50Owp9CiAKZnVuY3Rpb24gVUFTYWZhcmkoKSB7CiAgICBjb25zdCBQbGF0dGZvcm0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyKQogICAgY29uc3Qgc2FmYXJpVmVyc2lvbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpICsgMTA7CiAgICBjb25zdCBvc1BsYXRmb3JtID0gUGxhdHRmb3JtID09IDEgPyAnV2luNjQ7IHg2NCcgOiAnTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV8wJzsKICAgIGNvbnN0IHVzZXJBZ2VudCA9IGBNb3ppbGxhLzUuMCAoJHtvc1BsYXRmb3JtfSkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLyR7c2FmYXJpVmVyc2lvbn0uMS4xNSBTYWZhcmkvNjA1LjEuMTVgOwogICAgcmV0dXJuIHVzZXJBZ2VudDsKICB9CiAKZnVuY3Rpb24gVUFBbmRyb2lkKCkgewogICAgY29uc3QgYW5kcm9pZFZlcnNpb24gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA1KSArIDU7CiAgICBjb25zdCBjaHJvbWVWZXJzaW9uID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjApICsgNjA7CiAgICBjb25zdCB3ZWJraXRWZXJzaW9uID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNzAwKSArIDUwMDsKICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBgTGludXg7IEFuZHJvaWQgJHthbmRyb2lkVmVyc2lvbn0uJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCl9OyBlbi11czsgTmV4dXMgNiBCdWlsZC9MWVoyOE0pIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8ke2Nocm9tZVZlcnNpb259LjAuMzE2My45OCBNb2JpbGUgU2FmYXJpLyR7d2Via2l0VmVyc2lvbn0uMzZgOwogICAgY29uc3QgdXNlckFnZW50ID0gYE1vemlsbGEvNS4wICgke29zUGxhdGZvcm19YDsKICAgIHJldHVybiB1c2VyQWdlbnQ7Cn0KIApmdW5jdGlvbiBVQUlvcygpIHsKICAgIGNvbnN0IGlvc1ZlcnNpb24gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA1KSArIDk7CiAgICBjb25zdCBzYWZhcmlWZXJzaW9uID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNSkgKyA2MDA7CiAgICBjb25zdCB3ZWJraXRWZXJzaW9uID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNzAwKSArIDUwMDsKICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBgQ1BVIGlQaG9uZSBPUyAke2lvc1ZlcnNpb259XyR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApfSBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC8ke3dlYmtpdFZlcnNpb259LjYwIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8ke3NhZmFyaVZlcnNpb259LjAgTW9iaWxlLzE1RTE0OCBTYWZhcmkvJHt3ZWJraXRWZXJzaW9ufS42MGA7CiAgICBjb25zdCB1c2VyQWdlbnQgPSBgTW96aWxsYS81LjAgKCR7b3NQbGF0Zm9ybX1gOwogICAgcmV0dXJuIHVzZXJBZ2VudDsKfQogCmZ1bmN0aW9uIFJVQSgpIHsKICAgIGNvbnN0IFVBID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNCk7CiAKICAgIGlmIChVQSA9PSAwKSB7CiAgICAgICAgcmV0dXJuIFVBQ2hyb21lKCk7CiAgICB9IGVsc2UgaWYgKFVBID09IDEpIHsKICAgICAgICByZXR1cm4gVUFGaXJlZm94KCk7CiAgICB9IGVsc2UgaWYgKFVBID09IDIpIHsKICAgICAgICByZXR1cm4gVUFTYWZhcmkoKTsKICAgIH0gZWxzZSBpZiAoVUEgPT0gMykgewogICAgICAgIHJldHVybiBVQUFuZHJvaWQoKTsKICAgIH0gZWxzZSBpZiAoVUEgPT0gNCkgewogICAgICAgIHJldHVybiBVQUlvcygpOwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKdHJ5IHsKICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaHR0cEdldEFzeW5jKAogICAgICAgIGBodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9yZXZlcnNlP2Zvcm1hdD1nZW9qc29uJmxhdD0ke2xhdH0mbG9uPSR7bG9ufWAsCiAgICAgICAgewogICAgICAgICAgICB0aW1lb3V0OiAxNTAwMCwKICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBSVUEoKSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PSAyMDApIHsKICAgICAgICBjb25zdCBpbmZvID0gSlNPTi5wYXJzZShyZXNwb25zZS5kYXRhKTsKCiAgICAgICAgcmV0dXJuIGluZm8uZmVhdHVyZXM/LlswXT8ucHJvcGVydGllcz8uYWRkcmVzcyA/PyB7fTsKICAgIH0KCiAgICByZXR1cm4ge307Cn0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIHsgZXJyIH07Cn0=</field>
                                              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                            </block>
                                            <block type="debug" id="oiKGA}Q9)CzpggWzL@D," x="138" y="338">
                                              <field name="Severity">info</field>
                                              <value name="TEXT">
                                                <shadow type="text" id="6vmy!f|F/3]XC|V|^Q+!">
                                                  <field name="TEXT">test</field>
                                                </shadow>
                                                <block type="procedures_callcustomreturn" id="Kbg~m223+L?EN/wyNdQ]">
                                                  <mutation name="osmResolve">
                                                    <arg name="lon"></arg>
                                                    <arg name="lat"></arg>
                                                  </mutation>
                                                  <value name="ARG0">
                                                    <block type="math_number" id="#C5g9?loG*SF1`Go-.B0">
                                                      <field name="NUM">8.5</field>
                                                    </block>
                                                  </value>
                                                  <value name="ARG1">
                                                    <block type="math_number" id="+y%uX{IEB}6~T9CJCZ|s">
                                                      <field name="NUM">51.7</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                            </block>
                                          </xml>
                                          
                                          David G. 1 Reply Last reply Reply Quote 0
                                          • David G.
                                            David G. @haus-automatisierung last edited by

                                            @haus-automatisierung

                                            Danke, teste ich nachher.

                                            Werde bei Gelegenheit mal einen Feature Request beim Places Adapter erstellen, ob man da OSM einbauen kann. Einen Ordner address wo alles aus der json in einem eigenem DP steht.
                                            Im Moment hat der glaube nur Google, was sehr umständlich ist.

                                            Ich mag den Adapter sehr, da man dort alle verschiedenen Adapter die GPS Daten liefern zusammenführen kann. Auch, dass man für ein Gerät Daten von verschiedenen Quellen kombinieren kann.

                                            Homoran 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            759
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            35
                                            1515
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo