Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Brauche Hilfe um ein json abzurufen und auszuwerten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Brauche Hilfe um ein json abzurufen und auszuwerten

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

      sooo, aktueller Stand:
      gestern Abend bekam ich keinerlei Meldungen.
      Vom Bett aus habe ich es dann mit dem Tablet noch geschafft einen debug einzubauen und stellte fest, dass die Geokoordinaten aus der javascript Instanz anscheinend vom Typ String waren.
      Diese noch "schnell" in Zahl konvertiert und es lief.

      Die Daten werden im Moment zur Kontrolle in einen Datenpunkt geschrieben und historisiert:
      Airtracker_log.png

      Dann hatte ich noch versucht den Erfassungsbereich weniger hardcoded zu machen und mit einer Variable schnell zu ändern, Im Moment bekam ich auch Maschinen, die aus einer anderen Richtung im Landeanflug waren (zum Testen ganz gut, auf Dauer aber nicht)
      Hatte aber die Rechnung nicht mit Herrn Mercator gemacht, der Ausschnitt war nicht quadratisch 😉
      piAware_Range.png

      Also empirisch noch einen Faktor eingebaut und es sah besser aus:
      piAware_Range_Faktor.png
      Ich werde wahrscheinlich diesen Faktor noch erhöhen, da die mich interessierende Flugroute fast genau von Ost nach West geht.

      Jetzt kam der quälende Teil.
      Ich wollte den Abstand des Fliegers zu meinem Haus berechnen.
      Habe im Netz eine brauchbare Rechnung gefunden:

      distance = sqrt(dx * dx + dy * dy)
      
      mit distance: Entfernung in km 
      dx = 111.3 * cos(lat) * (lon1 - lon2)
      lat = (lat1 + lat2) / 2 * 0.01745
      dy = 111.3 * (lat1 - lat2)
      lat1, lat2, lon1, lon2: Breite, Länge in Grad
      

      Quelle: https://www.kompf.de/gps/distcalc.html

      Das wollte ich aus Platzgründen in einer Funktion verstecken, woran ich mal wieder gescheitert bin.
      Das Blockly sieht inzwischen gigantisch aus:
      Airtracker_007.png

      und das ist nur der obere Teil für mehrere Flieger, für einen Flieger kommt das selbe nochmal 😞

      weitere geplante Dinge

      • Der Abstand im Raum (zusätzlich noch ein Pythagoras zur Höhe)
      • Arrays für jeweils einen Flug aufbauen, dort den dichtesten Abstand rausfinden
      • diesen einen Datensatz in ein weiteres Array für alle Flüge übernehmen
      • danach das temporäre Array wieder löschen

      mal sehen wie weit ich komme, habe noch keine Möglichkeit gefunden eine Liste mit Namen des Fluges variabel zu erstellen

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators last edited by Homoran

        kaum getippt, kommt eine Ryanair rein:
        Airtracker_Landeanflug.png

        die Einträge mit Abstand in km dazu:
        Airtracker_distance.png

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          So, nach einiger Zeit und Problemen nach einem piaware Update würde ich das Ganze noch etwas optimieren

          ich bekomme während des Durchfluges durch das Beobachungsfensters mehrere Meldungen
          Screenshot_20220710-163129_Firefox.jpg

          ich bräuchte aber nur den Datensatz vom nahesten Ergebnis.

          ich habe schon versucht jeden Satz als JSON zu bilden und dann in einer Liste das Minimum für Entfernung am Boden zu finden.

          Das war nix 😞

          gibt es da eine sinnvolle Vorgehensweise, so dass ich optimalerweise ein json pro Flug erhalte, das ich später in einem jsonlist widget oder Eventlis Widget als Liste darstellen kann?

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Homoran last edited by

            @homoran sagte: jsonlist widget

            Welche Daten soll die Liste enthalten?

            Homoran 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @paul53 last edited by

              @paul53 Danke schon mal!

              im Prinzip, die die ich jetzt als String in den Datenpunkt schreibe.

              Screenshot_20220712-172352_Firefox.jpg

              sorry für den Screenshot, bin nur am Tablet

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Homoran last edited by paul53

                @homoran
                Ansatz, der noch nicht das Löschen von nicht mehr vorhandenen Flugzeugen aus der Tabelle enthält:

                Bild_2022-07-12_181914975.png

                Inhalt der Funktion flugObjekt(kennung,_hoehe,abstand,entfernung,pos):

                return {
                    Kennung: kennung,
                    Hoehe: _hoehe,
                    Bodenabstand: abstand,
                    Entfernung: entfernung,
                    Position: pos
                };
                
                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @paul53 last edited by

                  @paul53 DANKE!

                  Das muss ich jetzt erst mal ventilieren 🙂

                  @paul53 sagte in Brauche Hilfe um ein json abzurufen und auszuwerten:

                  der noch nicht das Löschen von nicht mehr vorhandenen Flugzeugen aus der Tabelle enthält:

                  Hab gerade mit Schrecken sogar zwei Flugzeuge zeitgleich im Sektor gehabt.. Ich dachte das wird schon nicht passieren.
                  Jetzt kreiste zusätzlich noch ein Polizeihubschrauber auf +/- 300m rum.

                  Aber solche Spezialfälle sind erst einmal unwichtig.

                  Werde deinen Ansatz mal testen

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Homoran last edited by

                    @homoran
                    Habe gerade noch eine Korrektur eingefügt: setze obj.

                    Homoran 1 Reply Last reply Reply Quote 1
                    • Homoran
                      Homoran Global Moderator Administrators @paul53 last edited by Homoran

                      @paul53 ich hab es eben abgetippert und mir schon gedacht wo kommt die Liste her?

                      Jetzt kommt prompt:

                      18:43:00.020	error	javascript.0 (728) script.js.Fliegenklatsche_v3: TypeError: Cannot read property 'length' of undefined
                      18:43:00.020	error	javascript.0 (728) at script.js.Fliegenklatsche_v3:66:23
                      

                      66:23 ist

                      vorhanden = false;
                          var j_end = Liste.length;
                          var j_inc = 1;
                          if (1 > j_end) {
                            j_inc = -j_inc;
                          }
                      

                      (hier die 2. Zeile)

                      EDIT:
                      oder meinst du diese Liste ("Rest")
                      Flugzeugliste.jpg

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Homoran last edited by paul53

                        @homoran sagte: wo kommt die Liste her?

                        Erzeuge erst einmal eine leere Liste, damit der Datenpunkt mit einer JSON-Liste befüllt wird. Danach lese oben den Datenpunkt ein:

                        Bild_2022-07-12_185505360.png

                        @homoran sagte in Brauche Hilfe um ein json abzurufen und auszuwerten:

                        oder meinst du diese Liste ("Rest")

                        Nein.

                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @paul53 last edited by

                          @paul53 sagte in Brauche Hilfe um ein json abzurufen und auszuwerten:

                          Danach lese oben den Datenpunkt ein

                          Jetzt stehe ich ganz auf dem Schlauch!

                          ich habe keinen DP mit einem JSON. Das war ja mein Problem.

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @Homoran last edited by

                            @homoran sagte: ich habe keinen DP mit einem JSON.

                            Erstelle den Datenpunkt vom Typ "string" unter "0_userdata.0". Keinen Wert reinschreiben!
                            Das Erzeugen der leeren Liste kann besser so erfolgen:

                            Bild_2022-07-12_190238234.png

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @paul53 last edited by

                              @paul53 sagte in Brauche Hilfe um ein json abzurufen und auszuwerten:

                              Erstelle den Datenpunkt vom Typ "string" unter "0_userdata.0". Keinen Wert reinschreiben!

                              Hab ich bereits gemacht.
                              Allerdings für den DP in den nachher das Ergebnis soll.

                              Ich brauche jetzt einen weiteren DP?
                              Jetzt hab ich mir endlich angewöhnt mit Variablen statt DPs zu arbeiten, jetzt kommst du so 🙂

                              Oder ab ich dich ganz falsch verstanden?

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @Homoran last edited by paul53

                                @homoran sagte: Allerdings für den DP in den nachher das Ergebnis soll.

                                Das ist genau der DP. Das Ergebnis ist die JSON-Liste, die durch das Skript nur modifiziert wird. Um Vergleiche anzustellen, muss der DP auch wieder eingelesen werden.

                                Homoran 1 Reply Last reply Reply Quote 1
                                • Homoran
                                  Homoran Global Moderator Administrators @paul53 last edited by Homoran

                                  @paul53 Danke!

                                  Kam kurz eine Meldung mit Kennung of undefined.
                                  Ist klar, da war der DP noch leer.

                                  Jetzt steht was drin 😳

                                  Mal sehn

                                  EDIT:
                                  Das JSON wächst!

                                  jetzt merke ich was passiert.
                                  Wie groß darf das werden?

                                  bisher hatte ich für jede 10 Sekunden im Sektor etwas im DP, dies über history geloggt ergab die Tabelle.
                                  Dort konnte ich über den Zeitfilter die gesuchten Flugzeuge finden, leider zu viele unnütze Einträge.

                                  Wenn das JSON auch über zwei Jahre weiter wachsen darf, bräuchte ich noch den Timestamp von dem Eintrag.

                                  Wenn nicht, brauche ich immer nur einen Eintrag (der alte müsste gelöscht werden), den ich über das Eventlist Widget zur Liste umbaue

                                  Ich lass mir das mal durch den Kopf gehen.

                                  EDIT2:
                                  da stimmt was nicht 😞

                                  [
                                    {
                                      "Kennung": "XGO3KB  ",
                                      "Hoehe": 2377,
                                      "Bodenabstand": 10633,
                                      "Entfernung": 10895,
                                      "Position": "50.12345,6.12345"
                                    },
                                    {
                                      "Kennung": "GWI3XU  ",
                                      "Hoehe": 3520,
                                      "Bodenabstand": 45431,
                                      "Entfernung": 45567,
                                      "Position": "51.12345,7.12345"
                                    },
                                    {
                                      "Kennung": "CHX3    ",
                                      "Hoehe": 122,
                                      "Bodenabstand": 4400,
                                      "Entfernung": 4402,
                                      "Position": "50.12345,6.12345"
                                    },
                                    {
                                      "Kennung": "EWG754  ",
                                      "Hoehe": 3231,
                                      "Bodenabstand": 43243,
                                      "Entfernung": 43364,
                                      "Position": "51.12345,7.12345"
                                    },
                                    {
                                      "Kennung": "CXI7CD  ",
                                      "Hoehe": 4062,
                                      "Bodenabstand": 27839,
                                      "Entfernung": 28134,
                                      "Position": "50.12345,6.12345"
                                    },
                                    {
                                      "Kennung": "EWG686  ",
                                      "Hoehe": 472,
                                      "Bodenabstand": 13704,
                                      "Entfernung": 13712,
                                      "Position": "50.12345,7.12345"
                                    }
                                  ]
                                  

                                  EDIT3:

                                  Ich glaube ich hatte den neuen Teil an der falschen Stelle im Blockly eingefügt.
                                  Ein Eurowings mit 340m Höhe über meinem Haus hätte ich gemerkt 🙂

                                  Ich hoffe ich hab es jetzt richtig

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @Homoran last edited by paul53

                                    @homoran sagte: Wenn das JSON auch über zwei Jahre weiter wachsen darf

                                    Wie willst Du eine so lange Liste in Vis anzeigen? Man kann die Liste auf eine bestimmte Anzahl Einträge begrenzen (ältesten Eintrag löschen).

                                    Bild_2022-07-12_212147644.png

                                    1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators last edited by

                                      @paul53 sagte in Brauche Hilfe um ein json abzurufen und auszuwerten:

                                      Wie willst Du eine so lange Liste in Vis anzeigen?

                                      das ist nicht der Punkt.
                                      im Moment möchte ich big Data.

                                      Wir wohnen hier schon länger, aber der Flugverkehr nimmt zu.
                                      Für Schallschutzmaßnahmen gab es keine Förderung, weil es hier eine Mindestflughöhe gab, bei der kein störender Lärm existieren sollte.
                                      (Die Karte mit diesen Flughöhen kann ich seit einiger Zeit nicht mehr finden, die Flughöhen haben IMHO abgenommen)

                                      Köln hat kein Nachtflug verbot und etwa von 3-4:00 kommen hier gefühlt im Minutetakt etwa 20 Maschinen. in einer Höhe von 1200-1800m. gestern hat es tatsächlich einer geschafft unter 1000m zu bleiben.

                                      Jetzt möchte ich einen Überblick bekommen, deswegen nur noch 1 Datensatz von annähernd der gleichen Position.
                                      FedEx, UPS ind ABX bringen ihre Frachtbomber kaum hoch, Ryanair weniger als Germanwings.

                                      Da ich nicht weiß ob ich oder irgendjemand mit den Daten nochvwas anfangen kann, wollte ich sie erst mal konservieren (Datenmessie halt 🙂 )

                                      zum Darstellen würden mir die Flüge der letzten 24h reichen (ungefähr).

                                      1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators last edited by

                                        @paul53 es scheint jetzt nach der richtigen Einordnung des neuen Teils zu laufen.

                                        im Verlauf sieht man gut was passiert

                                        Screenshot_20220712-213312_Firefox.jpg

                                        erst kommt der ADAC Hubschrauber näher, dann der Polizeihubschrauber.

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        915
                                        Online

                                        31.9k
                                        Users

                                        80.1k
                                        Topics

                                        1.3m
                                        Posts

                                        3
                                        53
                                        2363
                                        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