Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. [Neuer Adapter] radar-trap

    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

    [Neuer Adapter] radar-trap

    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      Oli @Nashra last edited by

      @nashra
      klar, ich verwende momentan auch noch den Roadtraffic Adapter, dieser ist teilweise noch in den Widgets und im Script hinterleg, kannst du aber ersetzten. Voraussetzung für die VIS ist folgender Adapter:
      5b17ba8e-7cfe-4fb7-a756-e9725d5fcd8e-image.png
      VIS:


      Routenplanung_Route1_Karte.txt
      Routenplanung_Route1_Info.txt
      Routenplanung_Route1_Fahrzeit.txt
      Routenplanung_Route1.txt

      Das Script ist noch in der Testphase:

      /************************************************************************************************************************************************************************
      Version: 1.0.0
      created by Oliver Böhm 13.02.2023, 14:18
      Dieses Skript erzeugt Datenpunkte um Informationen im VIS mit den Material Design Widgets darzustellen 
      =========================================================================================================================================================================
      !!! Voraussetzungen !!!
      * Material Design Widgets               >= 0.3.6
      * Javascript Adapter                    >= 4.6.1
      * RoadTraffic Adapter                   >= 0.2.0
      * Radar-Trap Adapter                   >= 1.0.0
      =========================================================================================================================================================================
      --- Links ---
      * Support:          https://forum.iobroker.net/topic/29665/material-design-widgets-list-widget
      =========================================================================================================================================================================
      --- Changelog ---
      * 1.0.0:            Initial release
      ************************************************************************************************************************************************************************/
      
      // Skript Einstellungen *************************************************************************************************************************************************
      let idDatenpunktPrefix = '0_userdata.0';                                                                    // '0_userdata.0' or 'javascript.x'
      let idDatenPunktStrukturPrefix = 'Routenplanung.Route';                                                     // Struktur unter Prefix
      
      const checkInterval = 11;                                                                                   // Jede Stunde in der Minute ausführen
      
      let idRadarTrap = 'radar-trap.0';
      let idRoadTraffic = 'roadtraffic.0';
      
      let routeArbeit = 'von Zuhause zur Arbeit';
      
      let stauStufe1AbMinuten = 5;
      let stauStufe2AbMinuten = 10;
      let stauStufe3AbMinuten = 15; 
      // **********************************************************************************************************************************************************************
      
      // Selector für alle Routen
      let devices = $(`[id=${idRadarTrap}.*.direction-0.duration]`);
      
      // Beim skript start ausführen
      createInfo();
      
      // Ausführen bei manueller Abfrage
      on({id:`${idRadarTrap}.aWQ61Y--DOoZXui1oGuAX.cron-job.resume`, change: 'ne', val: true}, createInfo);
      
      // Funktion createInfo alle x Sekunden ausführen
      schedule(checkInterval  + ' * * * * ', createInfo);
      
      // auf Fahrzeitänderungen hören
      let durationSelector = `[id=${idRadarTrap}.*.direction-0.duration]`;
      let durationList = $(durationSelector);
      if (durationList.length === 0) {
         // Fehlermeldung ausgeben, wenn selector kein result liefert
         console.error(`no result for selector '${durationSelector}'`)
      } else {
         // listener nur für Änderung bei Fahrzeiten
         durationList.on(createInfo);
      }
      
      function createInfo() {
             let anzahl = 0;
         for (var i = 0; i <= devices.length - 1; i++) {        
             let staustufe = 0;
             let staustufeText = 'Frei';
             let stau = false;
             let via = '';
             let blitzer = '';
             let blitzerAnzahl = 0
             let verkehrsinfo = '';
             let verkehrsinfoAnzahl = 0;
             let wetterinfo = '';
             let wetterinfoAnzahl = 0;
             let meldung = '';
             let meldungAnzahl = 0;
      
             let id = devices[i].replace('.direction-0.duration', '');
             let name = getObject(id).common.name;        
             id = `${id}.direction-0`
                  
      
             if (existsState(`${idRoadTraffic}.${name}.route.duration`)) {            
                 anzahl = anzahl + 1;
                 let fahrzeit = Math.ceil(getState(`${id}.duration`).val / 60);
                 let fahrzeitschnitt = Math.ceil(getState(`${idRoadTraffic}.${name}.route.duration`).val / 60);
                 let delta = fahrzeit - fahrzeitschnitt;       
                 
                 let distanz = getState(`${id}.distance`).val;                                  
                 
                 if (getState(`${id}.fixedTraps`).val.length === 0 && getState(`${id}.mobileTraps`).val.length === 0){
                     blitzer = 'Keine Informationen zu Geschwindikeits-, oder Abstandsmessungen vorhanden!';
                     blitzerAnzahl = 0;
                 } else {
                     blitzer = 'Ja';
                     blitzerAnzahl = getState(`${id}.fixedTraps`).val.length + getState(`${id}.mobileTraps`).val.length;
                 }          
                 
                 if (getState(`${id}.accidents`).val.length === 0 && getState(`${id}.objects`).val.length === 0 && getState(`${id}.roadWorks`).val.length === 0 && getState(`${id}.trafficJams`).val.length === 0){
                     verkehrsinfo = 'Keine Informationen zu Staus, Baustellen, Unfällen, oder Gegenständen vorhanden!';
                     verkehrsinfoAnzahl = 0;
                 } else {
                     verkehrsinfo = 'Ja';
                     verkehrsinfoAnzahl = getState(`${id}.accidents`).val.length + getState(`${id}.objects`).val.length + getState(`${id}.roadWorks`).val.length + getState(`${id}.trafficJams`).val.length;
                 }
      
                 if (getState(`${id}.fog`).val.length === 0 && getState(`${id}.sleekness`).val.length === 0){
                     wetterinfo = 'Keine Informationen zu wetterbedingten Störungen vorhanden!';
                     wetterinfoAnzahl = 0;
                 } else {
                     wetterinfo = 'Ja';
                     wetterinfoAnzahl = getState(`${id}.fog`).val.length + getState(`${id}.sleekness`).val.length;
                 }                       
      
                 if (name == routeArbeit) {                
                     if (distanz >= 17500) {
                         via = `über A73`;                    
                     } else if (distanz >= 15000 && distanz < 16000) {
                         via = `über Münchner Str.`;
                     } else if (distanz >= 17000 && distanz < 17500) {
                         via = `über Kornburg`;                   
                     } else if (distanz >= 14000 && distanz < 15000) {
                         via = `über Langwasser`;                   
                     } else if (distanz >= 16000 && distanz < 17000) {
                         via = `über Trierer Str.`;                   
                     }
      
                     if (blitzer == 'Ja' || verkehrsinfo == 'Ja' || wetterinfo == 'Ja') {
                         meldungAnzahl = blitzerAnzahl + verkehrsinfoAnzahl + wetterinfoAnzahl
                         
                         if (meldungAnzahl == 1) {
                             meldung = meldungAnzahl  + ' Verkehsmeldung!';
                         } else {
                             meldung = meldungAnzahl  + ' Verkehrsmeldungen!';
                         }
      
                     } else {
                         meldung = 'Keine Verkehrsmeldungen!'
                     }
                     
                     mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Via`, via, 'string', `Fahrweg Über auf der Route ${name}`);
                     mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Info`, meldung, 'string', `Informationen auf der Route ${name}`);
                 }                                 
      
                 if (delta >= stauStufe1AbMinuten) {
                     stau = true; 
                     staustufe = 1;
                     staustufeText = 'Erhöhte Verkehrsdichte';
                 }
                 if (delta >= stauStufe2AbMinuten) {
                     staustufe = 2;
                     staustufeText = 'Hohe Verkehrsdichte';
                 }
                 if (delta >= stauStufe3AbMinuten) {
                     staustufe = 3;
                     staustufeText = 'Stau';
                 }            
      
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Stau`, stau, 'boolean', `Stau auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Staustufe`, staustufe, 'number', `Staustufe auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.StaustufeText`, staustufeText, 'string', `Staustufe in Worten auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Delta`, delta, 'number', `Fahrzeitdifferenz auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Fahrzeit`, fahrzeit, 'number', `Fahrzeit in Minuten auf der Route ${name}`);           
      
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Blitzerinfo`, blitzer, 'string', `Blitzer auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.BlitzerinfoAnzahl`, blitzerAnzahl, 'number', `Anzahl Blitzer auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Verkehrsinfo`, verkehrsinfo, 'string', `Verkehrsinformationen auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.VerkehrsinfoAnzahl`, verkehrsinfoAnzahl, 'number', `Anzahl Verkehrsinformationen auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.Wetterinfo`, wetterinfo, 'string', `Wetterinformationen auf der Route ${name}`);
                 mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}${anzahl}.WetterinfoAnzahl`, wetterinfoAnzahl, 'number', `Anzahl Wetterinformationen auf der Route ${name}`);
             }
         }        
      }
      
      function mySetState(id, val, type, name, write = true) {
         if (existsState(id)) {
             setState(id, val, true);
         } else {
             createState(id, {
                 'name': name,
                 'type': type,
                 'read': true,
                 'write': write
             }, function () {
                 setState(id, val, write);
             });
         }
      }
      
      
      

      1 Reply Last reply Reply Quote 1
      • carsten04
        carsten04 Developer @Oli last edited by carsten04

        @oli sagte in [Neuer Adapter] radar-trap2:

        @carsten04
        ich habe gerade ein kleines Verständnisproblem. Es wird eine Route abgefragt, diese wirft folgendes Ergebnis aus:
        1772d43d-c2ac-4433-b1f2-a5e1c162b8b2-image.png

        Wenn ich die gleiche Strecke über Google eingebe, zeigt er mir folgendes:
        3cb810af-7741-4ea5-819c-5c1833283c1b-image.png

        Wenn ich die angezeigte Verzögerung aus deinem Adapter, mit der Fahrzeit aus deinem Adapter addiere, komme ich ca. auf die gleiche Zeit wie Google. Kann es sein, dass hier etwas noch nicht passt?
        @
        Hier die Adaptereinstellung der Strecke:
        9cbd93a7-e661-421b-b6cd-597721001ef8-image.png

        Wenn ich eine Strecke über VIS manuell abfragen möchte, muss ich dann den Datenpunkt "run" oder "resume" triggern?

        @Oli

        1. Deine Vermutung ist richtig. Die tatsächliche aktuelle Dauer (inklusive aktueller Verkehrslage) errechnet sich so, wie von Dir beschrieben. Ich werde die Dauer im nächsten Update anpassen.
        2. stop: stoppt den cronjob; resume: nimmt den cronjob wieder auf; run: berechnet die Route sofort neu, danach läuft der cronjob weiter.
        O 2 Replies Last reply Reply Quote 1
        • O
          Oli @carsten04 last edited by

          @carsten04
          danke für deine Rückmeldung

          1 Reply Last reply Reply Quote 0
          • O
            Oli @carsten04 last edited by Oli

            @carsten04
            sorry, ich schon wieder, aber ich sollte ja testen 😉

            Mir ist noch aufgefallen, dass die Schalter im Objektbaum nicht so funktionieren, wie ich dachte.

            1. Wenn ich "run" einschalte, dachte ich, dass dieser sich nach einer gewissen Zeit wieder ändert und auf "false" zurück springt.
              Macht er aber nicht, er bleibt ständig auf "true". Es wird auch bei jeder Änderung neu abgefragt, egal ob "true" oder "false" eingeschaltet wird.
              02fbf155-ce09-49ae-8206-0292d4c527c2-image.png

            2. Wenn ich "resume" einschalte, sollte nach meinem Verständnis, "pause" auf "false" schalten, dass macht es aber auch nicht.
              a9bbf705-8037-48dc-832c-4de2db94aae8-image.png

            Soll dass so sein?

            carsten04 1 Reply Last reply Reply Quote 0
            • carsten04
              carsten04 Developer @Oli last edited by carsten04

              @oli Das soll so sein, da es sich um unabhängige Buttons ohne weitere Funktion handelt. Schau mal hier, da ist das ganze Thema mal etwas ausführlicher beschrieben. Ich könnte den Default-Wert auch schon auf true setzen, wenn das in der VIS hilft.

              O 1 Reply Last reply Reply Quote 0
              • O
                Oli @carsten04 last edited by

                @carsten04
                danke für die Info, ich war nur etwas irritiert, dass bei der Einstellung "resume = false" trotzdem einer erneute Abfrage stattfindet, obwohl auch "pause" auf "true" steht.

                Wenn diese zwei States ohne Funktion sind, wäre zu überlegen, ob man diese überhaupt beschreibbar macht.

                1 Reply Last reply Reply Quote 0
                • carsten04
                  carsten04 Developer last edited by carsten04

                  Es gibt eine neue Version auf GitHub, die es ermöglicht beliebige Gebiete mittels Polygon zu definieren. Dazu bitte die alte Version (falls installiert) vollständig entfernen und von GitHub mit folgendem Link neu installieren:

                  GitHub-Link: https://github.com/Steiger04/ioBroker.radar-trap/tree/dev-v2

                  Ich habe im GitHub-Wiki zur Veranschaulichung einige Bilder hochgeladen.

                  Wichtig: bei der Polygonerstellung gibt es noch keine Flächen- oder Hindernisbegrenzung. Das Gebiet sollte also mit bedacht und nicht zu groß gewählt werden.

                  Feedback, Verbesserungsvorschläge und weitere Feature-Wünsche gerne hier oder auf GitHub.

                  1 Reply Last reply Reply Quote 1
                  • carsten04
                    carsten04 Developer last edited by

                    Ich habe noch aktuelle Polizeimeldungen ergänzt.

                    f89503ad-aed1-4352-914e-3eae07deb5eb-image.png

                    1 Reply Last reply Reply Quote 1
                    • carsten04
                      carsten04 Developer last edited by

                      Neben mobilen und festen Blitzern gibt es jetzt die Möglichkeit auch teilstationäre Blitzer anzuzeigen.

                      3897d8ea-b9af-4494-ac7a-812ca6930a3e-image.png

                      1 Reply Last reply Reply Quote 1
                      • carsten04
                        carsten04 Developer last edited by carsten04

                        Für die vis-Widgets gibt es einen neuen Traffic Style in einer Tag- und Nachtversion zur Auswahl.

                        8329c118-2823-4357-9c42-c231678985c1-image.png

                        f4e501a3-ac66-4ec9-82ca-937d64144275-image.png

                        O 1 Reply Last reply Reply Quote 2
                        • O
                          Oli @carsten04 last edited by

                          @carsten04
                          sorry, bin leider jetzt erst zum Testen gekommen, bis jetzt funktioniert alles wie es soll

                          1 Reply Last reply Reply Quote 0
                          • carsten04
                            carsten04 Developer last edited by carsten04

                            Habe jetzt noch Sperr- und Staustrecken und deren Animation ergänzt. Damit ist jetzt so ziemlich alles dabei, was blitzer.de auch liefert. Ich würde alle Interessierten bitten noch einmal zu testen (via GitHub-Repo) und hier Feedback zu geben. Wenn alles fein ist, dann würde ich das Ganze für das Beta-Repository vorschlagen.

                            8835f2c4-3fa9-4a20-94da-cf11e1bc47cb-image.png

                            massenbach 1 Reply Last reply Reply Quote 1
                            • massenbach
                              massenbach @carsten04 last edited by

                              @carsten04 Moin, kann leider nicht installieren. Folgende Meldungen werden ausgegeben:


                              $ iobroker url https://github.com/Steiger04/ioBroker.radar-trap/tree/dev-v2 --host raspberrypi --debug

                              install Steiger04/ioBroker.radar-trap#dev-v2

                              NPM version: 8.19.3

                              Installing Steiger04/ioBroker.radar-trap#dev-v2... (System call)

                              npm ERR! code 128

                              npm ERR! An unknown git error occurrednpm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/Steiger04/ioBroker.radar-trap.gitnpm ERR! git@github.com: Permission denied (publickey).

                              npm ERR! fatal: Konnte nicht vom Remote-Repository lesen.npm ERR! npm ERR! Bitte stellen Sie sicher, dass die korrekten Zugriffsberechtigungen bestehennpm ERR! und das Repository existiert.

                              npm ERR! A complete log of this run can be found in:npm ERR! /home/iobroker/.npm/_logs/2023-06-21T07_19_10_696Z-debug-0.log

                              host.raspberrypi Cannot install Steiger04/ioBroker.radar-trap#dev-v2: 128

                              ERROR: Process exited with code 25

                              liegt da ein Fehler vor oder mache ich etwas verkehrt?
                              Gruß Burkhard

                              carsten04 1 Reply Last reply Reply Quote 0
                              • carsten04
                                carsten04 Developer @massenbach last edited by carsten04

                                @massenbach Du musst folgenden Link zur Installation nutzen:

                                https://github.com/Steiger04/ioBroker.radar-trap/tree/main

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

                                  @carsten04
                                  Habe den Adapter installiert und alles eingetragen was ich an Routen brauche usw.
                                  In der VIS dann die Widgets ausgewählt, aber sobad ich die Route auswähle
                                  zeigt es nichts mehr an. Vorher wird die normale Karte angezeigt.

                                  carsten04 1 Reply Last reply Reply Quote 0
                                  • carsten04
                                    carsten04 Developer @Nashra last edited by

                                    @nashra Gibt es irgendwelche Fehlermeldungen in der Dev-Konsole? Hast Du die Adapterinstanz noch einmal gestartet? Kannst Du die Routen im Adapter-Admin sehen?

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

                                      @carsten04 sagte in [Neuer Adapter] radar-trap2:

                                      @nashra Gibt es irgendwelche Fehlermeldungen in der Dev-Konsole? Hast Du die Adapterinstanz noch einmal gestartet? Kannst Du die Routen im Adapter-Admin sehen?

                                      Fehlermeldung wenn ich die Route auswähle in VIS

                                      Fehler beim Verarbeiten des Wertes für 'user-select'.  Deklaration ignoriert. 
                                      

                                      Adapter neu gestartet, selbes Problem
                                      Im Adapter-Admin kann ich die Routen sehen wenn ich sie auswähle

                                      radar-trap.PNG

                                      carsten04 1 Reply Last reply Reply Quote 0
                                      • carsten04
                                        carsten04 Developer @Nashra last edited by carsten04

                                        @nashra Aktualisiere die VIS bitte mal bei offener DEV-Konsole und poste mal alles als Quellcode, kein Screenshot.

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

                                          @carsten04 sagte in [Neuer Adapter] radar-trap2:

                                          @nashra Aktualisiere die VIS bitte mal bei offener DEV-Konsole und poste mal alles als Quellcode, kein Screenshot.

                                          radartrap.txt

                                          1 Reply Last reply Reply Quote 0
                                          • carsten04
                                            carsten04 Developer last edited by carsten04

                                            @nashra Hast Du das Thema socket.io wie hier beschrieben konfiguriert?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            423
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            26
                                            251
                                            26495
                                            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