Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. IoBroker und Stau- / Verkehrsinformationen

    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

    IoBroker und Stau- / Verkehrsinformationen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Nashra
      Nashra Most Active Forum Testing last edited by

      So, Adapter installiert, API und Fahrziel eingetragen.....Daten werden geholt.
      Wie muß ich jetzt weiter vorgehen d.h im DP steht z.B. 7:30 was für mich aber nicht
      passt und wie das alles in VIS, einfach als HTML-Widget.
      Irgendwie stehe ich im Moment auf dem Schlauch wie man so sagt. 🙄

      H 1 Reply Last reply Reply Quote 0
      • H
        helfi9999 @Nashra last edited by

        @Nashra Wenn du dir den DP anschaust "route" zeigt er dir genau an wenn du jetzt losfährst ob es länger dauert oder nicht.

        Nashra 1 Reply Last reply Reply Quote 0
        • Nashra
          Nashra Most Active Forum Testing @helfi9999 last edited by

          @helfi9999 sagte in IoBroker und Stau- / Verkehrsinformationen:

          @Nashra Wenn du dir den DP anschaust "route" zeigt er dir genau an wenn du jetzt losfährst ob es länger dauert oder nicht.

          D.h. es wird nur die Zeit angegeben wenn ich dies in VIS einbaue.
          Schade das es mit Google nicht mehr funktioniert, hätte gerne noch die
          Anzeige der Route.

          H 1 Reply Last reply Reply Quote 0
          • H
            helfi9999 @Nashra last edited by

            @Nashra so verstehe ich das auch und ja finde es auch schade das man die Route nicht mehr hat mit Traffic Meldung

            1 Reply Last reply Reply Quote 0
            • BuZZy
              BuZZy last edited by

              Was genau meint ihr?
              Sowas wie z.B.: Stockender Verkehr auf der A7 Höhe Braunschweig.

              ??

              crunchip 1 Reply Last reply Reply Quote 0
              • crunchip
                crunchip Forum Testing Most Active @BuZZy last edited by crunchip

                @BuZZy so in etwa
                in dem Fall zwei Routen

                1. normale Strecke
                2. alternative Strecke

                aktuelle Fahrzeit(Verkehrsdichte mit einbezogen), heisst,
                Zeit wird automatisch angepasst, so wie auch in google maps
                dazu noch ein Feld
                grün=frei
                gelb=stockend
                rot=Stau
                bei anklicken des Feldes, öffnet sich ein Fenster mit der Aktuellen Verkehrslage/Wegstrecke

                c1a2e655-035e-42eb-937f-cbdc2610d7aa-image.png
                378002f9-58ec-4abf-afda-ed5461489f3d-image.png

                J 1 Reply Last reply Reply Quote 0
                • J
                  jmyxa @crunchip last edited by jmyxa

                  @BuZZy vielen Dank für den Adapter!
                  Aus praktischer Sicht fehlen mir die Via-Angaben in der Routenbildung. Aber gut, das kann man lösen, indem man mehrere Routen in Form "von A nach Via 1, von Via 1 nach Via 2, von Via 2 nach B" anlegt und dann die Infos addiert. Die Schwierigkeit besteht jedoch in der Adressangabe von Via-Punkten. Es macht wenig Sinn, dort eine Adresse anzugeben, vielmehr sind GPS-Koordinaten von Interesse, weil man dann den Punkt direkt auf der Strasse setzen kann. Aber genau das nimmt der Adapter nicht an. "(12945) geoCode() failed: TypeError: Cannot read property 'Result' of undefined".

                  1 Reply Last reply Reply Quote 0
                  • 0
                    0018 last edited by 0018

                    @BuZZy Habe auch das Problem mit der GoogleApi bekommen.
                    Jetzt versuche ich gerade den Adapter zum laufen zu bekommen. Leider bekomme ich nach Adresseingabe und Adapterstart den Fehler:

                    roadtraffic.0	2020-02-27 13:58:01.282	error	(5580) Error from Here: undefined undefined
                    roadtraffic.0	2020-02-27 13:58:01.001	debug	(5580) Selected Alexa for Alarm: undefined
                    roadtraffic.0	2020-02-27 13:58:00.964	debug	(5580) Checking API Key..
                    roadtraffic.0	2020-02-27 13:58:00.891	info	(5580) starting. Version 0.2.0 in /opt/iobroker/node_modules/iobroker.roadtraffic, node: v10.18.1
                    

                    Was bedeutet das? Wie genau muss die Eingabe von Origin und Destination aussehen? GPS oder Straße, Ort mit PLZ?

                    Ist es möglich den Adapter um die Zwischenzielfunktion in der Route zu erweitern?

                    Mit der Google API habe ich mir immer zwei Wege zur Arbeit anzeigen lassen und da konnte ich mich dann einfach entscheiden welchen Weg ich nehme 😊

                    1 Reply Last reply Reply Quote 0
                    • 0
                      0018 last edited by

                      Habe den Adapter mal runtergeschmissen und neu installiert. Jetzt ist der Fehler weg und die Abfrage passt wenn ich Straße mit Hausnummer, PLZ Ort eingebe.
                      Leider berechnet "here" mir den falschen Weg. Hierzu hätte ich gerne die Möglichkeit Zwischenpunkte einzugeben, am besten wäre es im Koordinatenformat wie zB. 48.21843, 11.62579.

                      Wäre das machbar?

                      N G 2 Replies Last reply Reply Quote 0
                      • J
                        jwerlsdf last edited by

                        Hallo,
                        vielen Dank für den Adapter. Die Daten scheinen richtig zu sein. Hat jemand schon ein widget, welches er als Import bereitstellen könnte?

                        1 Reply Last reply Reply Quote 0
                        • N
                          nousefor82 @0018 last edited by

                          @0018

                          Ich würde mich anschließen!

                          1 Reply Last reply Reply Quote 0
                          • G
                            gutgut30 @0018 last edited by

                            @0018
                            Wie hast du die Strecke einsehen können? Ich rätsel hier auch gerade welche Strecke here wohl genommen hat bei meiner Start / Ziel Eingabe. Es gibt diverse Möglichkeiten, aber ich weiß nicht für welche here sich entschieden hat.

                            nik82 1 Reply Last reply Reply Quote 0
                            • nik82
                              nik82 Most Active @gutgut30 last edited by nik82

                              Hallo,
                              habe auch den Roadtraffic Adapter installiert und funktioniert echt super,
                              ABER bei mir läuft jeden Tag der API Key von here.com aus.

                              Ich lege einen an, alles funktioniert und am nächsten Tag funktioniert der Adapter nicht mehr, weil der API Key bei Here.com auf "Expired" steht:

                              507bc914-bf70-4911-9154-19a90b8e14c9-image.png

                              Hat jemand eine Idee, warum der Api Key bei mir nur immer einen Tag gültig ist?

                              So kann ich immer nur 24 Stunden den Roadtraffic Adapter nutzen und danach holt er keine Routen mehr:

                              a3d20769-5d78-4e0c-8896-a65da03a1137-image.png

                              _--------------------------------------------------------------------------------------------------------

                              EDIT

                              Falls den Fehler noch wer hat, es war meine Schuld.
                              Ich habe vergessen meine Email zu verifizieren, dadurch läuft der API Key nach 60 Minuten ab.

                              1 Reply Last reply Reply Quote 0
                              • T
                                Tirador @BuZZy last edited by

                                @BuZZy said in IoBroker und Stau- / Verkehrsinformationen:

                                @nousefor82 die Sache mit Google und deren "Preismodell" hat mich auch genervt..

                                Habe daher den roadtraffic Adapter auf Here.com umgeschrieben.
                                https://github.com/BuZZy1337/ioBroker.roadtraffic
                                Arbeitet über here.com und fragt aktuellen Fahrzeiten ab.

                                👍 Wow. Vielen Dank für deine tolle Arbeit. Der Adapter funktioniert auf Anhieb! 🙂

                                K 1 Reply Last reply Reply Quote 0
                                • K
                                  Kuddel @Tirador last edited by

                                  Hallo zusammen,

                                  ich habe den Adapter auch gerade installiert.

                                  Kann man bei der Eingabe von Start und Ziel die Strecke irgendwie beeinflussen ?

                                  1 Reply Last reply Reply Quote 0
                                  • G
                                    gutgut30 last edited by

                                    Hat es eigentlich irgendwer geschafft sich einfach nur die Karte einzubinden wie auf Jeepers Screenshot? Ich bekomme es einfach nicht hin eine valide URL zu generieren für das iFrame Widget.

                                    Stephan Schleich 1 Reply Last reply Reply Quote 0
                                    • Stephan Schleich
                                      Stephan Schleich @gutgut30 last edited by

                                      Nutzt das Script oder den Adapter noch wer?
                                      Der Adapter funktioniert bei mir nämlich nicht, vllt kann kurz jemand Rückmeldung geben

                                      H 1 Reply Last reply Reply Quote 0
                                      • H
                                        hohmannc @Stephan Schleich last edited by

                                        @stephan-schleich also bei mir ist der adapter Gelb und läuft nicht.

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          marsmännchen last edited by

                                          Ja, schaut schlecht aus:

                                          Error from Here: undefined undefined
                                          

                                          Ich versuch es mal mit Git-Issue
                                          MfG

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            gutgut30 last edited by gutgut30

                                            Mir hat das Script hier sehr geholfen. Daher man den request inzwischen anders ausführen soll (Deprecrated Meldung) habe ich es auf Axios abgepasst.

                                            Zudem noch 2x VIA Wegepunkt und das Script zieht die Daten nur wenn ich anwesend bin. Das spart Aufrufe. Zudem erzeuge ich noch einen extra Datenpunkt mit dem aktuellen Zeitstempel um zu sehen wie alt der aktuelle Wert ist.

                                            Falls jemand auch auf Axios umstellen will, hier das Script:

                                            // Beschreibung der API: https://developers.google.com/maps/documentation/directions/intro?hl=de#traffic-model
                                            // API-Key: https://console.developers.google.com/apis/dashboard?project=iobroker-privat&duration=PT1H
                                            // Infos : http://forum.iobroker.net/viewtopic.php?f=8&t=4019&p=38235#p38226
                                            
                                            const axios = require('axios');
                                            
                                            var ldebug = true; // lokale Debugausgabe des Skripts true/false
                                            
                                            var pfad = "0_userdata.0.xxxxx."; // der Pfad zu den Datenpunkten. Letzten Punkt nicht löschen
                                            
                                            var stauStufe1AbMinuten = 5;
                                            var stauStufe2AbMinuten = 8;
                                            var stauStufe3AbMinuten = 12;
                                            
                                            // Standardzeit in Minuten je Route
                                            var standardMinuten0 = 33;
                                            
                                            var origin = "11.1111111,2.2222222"; // Start
                                            var via1 = "11.1111111,2.2222222"; // Zwischenpunt1
                                            var via2 = "11.1111111,2.2222222"; // Zwischenpunt2
                                            var destination = "11.1111111,2.2222222"; //  Ziel
                                            
                                            var apikey = "DEINAPIKEY";
                                            
                                            var myJson = {};
                                            
                                            var idUrl = pfad + "skript.url";
                                            var idJson = pfad + "skript.ergebnis_json";
                                            var idStatus = pfad + "skript.status";
                                            var idTimestamp = pfad + "skript.timestamp";
                                            var idMinuten_0 = pfad + "Minuten_0";
                                            var idMinuten_0_durchschnitt = pfad + "Minuten_0_Durchschnitt";
                                            var idMinuten_0_delta = pfad + "Minuten_0_Deltazeit";
                                            var idRoute_0 = pfad + "Route_0"; // Routenbezeichnung von Google Maps
                                            var idStau_0 = pfad + "Stau_0"; // boolean
                                            var idStaustufe_0 = pfad + "Staustufe_0"; // Wert von (0-3)
                                            var idAnzahlWaypoints = pfad + "Anzahl_Wegpunkte_0"; // Anzahl der Wegpunkte der aktuellen Route
                                            
                                            function createAllStates() {
                                            
                                                createState(idMinuten_0, 0, {
                                                    name: 'Route 0 Minuten aktuell zum Ziel',
                                                    desc: 'Route 0 Minuten aktuell zum Ziel',
                                                    type: 'number',
                                                    role: 'value',
                                                    unit: 'min'
                                                });
                                            
                                                createState(idMinuten_0_durchschnitt, 0, {
                                                    name: 'Route 0 Minuten im Durchschnitt zum Ziel',
                                                    desc: 'Route 0 Minuten im Durchschnitt zum Ziel',
                                                    type: 'number',
                                                    role: 'value',
                                                    unit: 'min'
                                                });
                                            
                                                createState(idMinuten_0_delta, 0, {
                                                    name: 'Route 0 Minuten Delta gegenüber dem Durchschnitt',
                                                    desc: 'Route 0 Minuten Delta gegenüber dem Durchschnitt',
                                                    type: 'number',
                                                    role: 'value',
                                                    unit: 'min'
                                                });
                                            
                                                createState(idRoute_0, "init", {
                                                    name: 'Bezeichnung der Route 0',
                                                    desc: 'Bezeichnung der Route 0 von Google Maps',
                                                    type: 'string',
                                                    role: 'value',
                                                    unit: ''
                                                });
                                            
                                                createState(idStau_0, false, {
                                                    name: 'Stau auf Route 0 (boolean)',
                                                    desc: 'Stau auf Route 0 (boolean)',
                                                    type: 'boolean',
                                                    role: 'value',
                                                    unit: ''
                                                });
                                            
                                                createState(idStaustufe_0, 0, {
                                                    name: 'Staustufe auf Route 0 (0-3)',
                                                    desc: 'Staustufe (0 kein Stau bis 3 starker Stau) auf Route 0',
                                                    type: 'number',
                                                    role: 'value',
                                                    unit: ''
                                                });
                                            
                                                createState(idAnzahlWaypoints, 0, {
                                                    name: 'Aktuelle Anzahl der Wegpunkte für die Route',
                                                    desc: 'Aktuelle Anzahl der Wegpunkte für die Route',
                                                    type: 'number',
                                                    role: 'value',
                                                    unit: ''
                                                });
                                            
                                                createState(idUrl, "", {
                                                    name: 'url der Abfrage zur Google',
                                                    desc: 'url der Abfrage zur Google',
                                                    type: 'string',
                                                    role: 'value',
                                                    unit: ''
                                                });
                                            
                                                createState(idJson, "", {
                                                    name: 'Ergebnis der Abfrage von Google',
                                                    desc: 'Ergebnis der Abfrage von Google (json)',
                                                    type: 'string',
                                                    role: 'value',
                                                    unit: ''
                                                });
                                            
                                                createState(idStatus, "", {
                                                    name: 'Status der Abfrage zur Google',
                                                    desc: 'Status der Abfrage zur Google',
                                                    type: 'string',
                                                    role: 'value',
                                                    unit: ''
                                                });
                                            
                                                createState(idTimestamp, "", {
                                                    name: 'Letze Aktualisierung',
                                                    desc: 'Letze Aktualisierung',
                                                    type: 'string',
                                                    role: 'value',
                                                    unit: ''
                                                });
                                            }
                                            
                                            function readJson(url, callback) {
                                                axios.get(url)
                                                    .then(response => {
                                                        if (response.status === 200) {
                                                            var json = response.data;
                                                            callback(null, json);
                                                        } else {
                                                            var error = "Fehler beim Auslesen des JSON. Statuscode: " + response.status;
                                                            callback(error, null);
                                                        }
                                                    })
                                                    .catch(error => {
                                                        var error = "Fehler bei der Abfrage von: " + url + ". Fehler: " + error.message;
                                                        callback(error, null);
                                                    });
                                            }
                                            
                                            var url = 'https://maps.googleapis.com/maps/api/directions/json'
                                                + '?origin=' + origin
                                                + '&waypoints=via:' + via1
                                                + '&waypoints=via:' + via2
                                                + '&destination=' + destination
                                                + '&departure_time=now'
                                                // + '&sensor=false'
                                                // + '&alternatives=true'
                                                + '&mode=driving' // driving = default
                                                + '&language=de-DE'
                                                + '&key=' + apikey;
                                            
                                            function main() {
                                                if (ldebug) log("url: " + url);
                                                setState(idUrl, url);
                                            
                                                readJson(url, function (err, json) {
                                                    if (!err) {
                                                        myJson = json;
                                                        if (ldebug) log("json:" + JSON.stringify(myJson));
                                                        setState(idJson, JSON.stringify(myJson));
                                            
                                                        if (myJson.status == "OK") {
                                                            log("Anzahl Wegepunkte: " + myJson.routes[0].legs[0].steps.length);
                                            
                                                            var minuten0 = Math.ceil(myJson.routes[0].legs[0].duration_in_traffic.value / 60);
                                                            var minuten0_durchschnitt = Math.ceil(myJson.routes[0].legs[0].duration.value / 60);
                                                            var stau0 = false;
                                                            var staustufe0 = 0;
                                                            var delta = minuten0 - minuten0_durchschnitt;
                                            
                                                            if (delta >= stauStufe1AbMinuten) { stau0 = true; staustufe0 = 1 }
                                                            if (delta >= stauStufe2AbMinuten) { staustufe0 = 2 }
                                                            if (delta >= stauStufe3AbMinuten) { staustufe0 = 3 }
                                            
                                                            setState(idMinuten_0, minuten0); // aktuelle Dauer der Route
                                                            setState(idMinuten_0_durchschnitt, minuten0_durchschnitt); // durchschnittliche Dauer der Route
                                                            setState(idMinuten_0_delta, delta); // Delta Aktuell im Vergleich zum Durchschnitt
                                                            setState(idRoute_0, myJson.routes[0].summary); // Bezeichnung Route als Text
                                                            setState(idStau_0, stau0); // Boolean
                                                            setState(idStaustufe_0, staustufe0);
                                                            setState(idAnzahlWaypoints, myJson.routes[0].legs[0].steps.length);
                                                        } else {
                                                            log("Kein gültiger Status Google Maps: " + myJson.status);
                                                            setState(idStatus, myJson.status);
                                                        }
                                                    } else {
                                                        log("Fehler beim Auslesen des JSON. Keine Daten erhalten.", "warn");
                                                        myJson = {};
                                                    }
                                                });
                                            
                                                var timestampnow =  Date.now()
                                                    // Setze den aktuellen Zeitstempel
                                                    setState(idTimestamp, timestampnow);
                                                
                                            }
                                            
                                            // ACHTUNG !!!! Individuelle Anpassung ruhr70
                                            // verkleinert den Abfrageintervall an einem Arbeitstag im Zeitraum vor dem Losfahren
                                            // globale Funktionen notwendig:
                                            // arbeitstag()
                                            // urlaubstag()
                                            // isTimeInRange()
                                            //if (isTimeInRange('05:00:00', '06:00:00')) {
                                            // if (arbeitstag() && !urlaubstag()) {
                                            // setTimeout(main,90*1000); // alle 90 Sekunden, 1.5 Minuten abfragen
                                            // }
                                            //}
                                            
                                            // Abfrage nur aktualisieren wenn jemand anwesend ist
                                            if (anwesend()) {
                                                schedule("*/10 * * * *", function () { // alle 10 Minuten die Werte abfragen
                                                    main();
                                                });
                                            }
                                            
                                            createAllStates();
                                            
                                            // Beim Skriptstart die Werte abfragen
                                            setTimeout(main, 1000);
                                            
                                            
                                            N 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            842
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            48
                                            119
                                            27074
                                            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