NEWS
#Stauerkennung #DieAutobahn
-
Dann ergänzen, welche Infos da rein sollen weiß ich nicht.
Grundsätzlich zum Triggern per Datenpunkt:
Das ist eine gute Idee! Ich habe das mal versucht umzusetzen und noch Schalter eingebaut falls einer einen teil des Scripts nicht benötigt:
Da ich keine Alexa habe kann ich es nicht testen! Somit muss das von jemand anderem verfeinert werden ;-)
Damit die Alexa direkt vorlesen kann ist es ein einfacher Text.
Hier ein Beispieltext Mit zwei Meldungen in einem Bereich:
-
Ich habe noch nie ein if() vor ein on() gesetzt. Immer erst das on() und dann if(), wenn nötig. Den Datenpunkt legt man immer an, bzw. wird der einmalig angelegt, wenn es ihn noch nicht gibt. Ich sehe da noch mehr Optimierungsmöglichkeiten.
-
Ich habe noch nie ein if() vor ein on() gesetzt. Immer erst das on() und dann if(), wenn nötig. Den Datenpunkt legt man immer an, bzw. wird der einmalig angelegt, wenn es ihn noch nicht gibt. Ich sehe da noch mehr Optimierungsmöglichkeiten.
Wenn es dir nichts aus macht dann poste den verbesserten Code einfach!
Für mich reicht ja die Warnung! Ich finde toll dass du dir das so genau anschaust!Falls das Script, oder ein Teil davon, nur einem hilft haben wir alles richtig gemacht also:
Immer her mit den "Optimierungsmöglichkeiten"! -
Ich habe mal ChatGPT und Gemini gebeten, den Code zu optimieren. Die haben zwar hier und da was verbessert, die beiden if() an der falschen Stelle jedoch auch nicht korrigiert.
Somit warten, bis ich am größeren Rechner sitze, jemand anderes mir zuvorkommt, oder selbst noch mal kritisch drüberschauen und korrigieren.
-
Ich habe mal ChatGPT und Gemini gebeten, den Code zu optimieren. Die haben zwar hier und da was verbessert, die beiden if() an der falschen Stelle jedoch auch nicht korrigiert.
Somit warten, bis ich am größeren Rechner sitze, jemand anderes mir zuvorkommt, oder selbst noch mal kritisch drüberschauen und korrigieren.
Der Gedanke ist:
Der Listener "on()" wird nur angelegt, wenn die Bedingung erfüllt ist.
Das heißt: wenn alexaEnabled oder verkehrsstoerungDP auf 0 stehen, existiert der Trigger gar nicht.
Also keine unnötigen Listener im System.
Falls jemand später die Schalter im laufenden Betrieb ändert, wird der Trigger nicht automatisch neu angelegt, weil das if nur beim Start des Skripts ausgewertet wird. Das macht doch kaum einer, oder?Andere Variante:
on({id: idDatenpunkt, change:'any'}, function (dp) { if (alexaEnabled === 1 && verkehrsstoerungDP === 1) { console.log("Alexa Verkehrsroutine aufgerufen"); checkTraffic(); } });Hier wird der Listener immer angelegt, aber er macht nur etwas, wenn die Schalter aktiv sind.
flexibler, weil man die Schalter auch zur Laufzeit ändern kann.
Aber es hängt immer ein Listener am Datenpunkt, auch wenn du ihn eigentlich gar nicht brauchst.Meintest du das?
-
Wenn der Datenpunkt nicht benötigt wird (const verkehrsstoerungDP = 0), wird er nicht angelegt. Ansonsten läge ein toter Datenpunkt herum.
Mir war nicht bewusst was es für Regeln gibt! Bisher war ich der Auffassung: Wer trifft hat recht!
Aber wie gesagt: einfach ändern und posten, dann kann jeder das für sich passende raus suchen und man hat eine Versionierung nach Datum.
Frei nach dem Motto: "Teste mal das script aus Antwort #8!" -
Vielen Dank für die Ergänzugen.
Das mit Alexa war nur ein Besispiel. Der Datenpunkt und die Kommentare im Script sollen keinen Alexa Bezug haben. Ein selbst wählbarer DP der als Wert die Staumeldungen für meinen definierten Bereich enthält reich völlig. Damit kann ich dann umgehen und würde auch die Telegram Integration im JS Adapter erledigen.Ich weiß nicht welche infos in den DP sollen. Seit Testbeginn hatte ich wohl noch keine Störung auf der gewählten AB im gewählten Bereich.
Logmeldungen erscheinen schonmal:javascript.0 2025-12-18 21:00:00.174 info script.js.aaa_Staumelder: Keine Warnungen im definierten Bereich auf A4 javascript.0 2025-12-18 21:00:00.174 info script.js.aaa_Staumelder: Warnung: A4 | Görlitz - Görlitz | Koordinate: 51.19872170096459, 14.960901000619456 | HitsArea: false javascript.0 2025-12-18 21:00:00.174 info script.js.aaa_Staumelder: Warnung: A4 | Kodersdorf - Ludwigsdorf | Koordinate: 51.19872170096459, 14.960901000619456 | HitsArea: false javascript.0 2025-12-18 21:00:00.173 info script.js.aaa_Staumelder: Warnung: A4 | Königshainer Berge - Königshainer Berge | Koordinate: 51.203233847771706, 14.759957057504197 | HitsArea: false javascript.0 2025-12-18 21:00:00.173 info script.js.aaa_Staumelder: Warnung: A4 | Nieder Seifersdorf - Königshainer Berge | Koordinate: 51.2032281716645, 14.760124784338583 | HitsArea: false javascript.0 2025-12-18 21:00:00.172 info script.js.aaa_Staumelder: Warnung: A4 | Willrodaer Forst - Erfurt-Vieselbach | Koordinate: 50.925375315043865, 11.136412592086435 | HitsArea: false javascript.0 2025-12-18 21:00:00.170 info script.js.aaa_Staumelder: Warnung: A4 | Bad Hersfeld - Friedewald | Koordinate: 50.85349478866353, 9.722682387354707 | HitsArea: false javascript.0 2025-12-18 21:00:00.028 info script.js.aaa_Staumelder: Hole Daten von:Sieht plausiebel aus.
Sind die Logdaten alle die verfügbar sind? Interessant wäre die Verzögerung durch das jeweilige Ereignis und evtl. dass man die Richtung differenzieren kann. Hierfür wäre ein Zweiter DP oder generell die Ausgbe als JSON vorstellbar.
-
Bin ich gemeint?
-
Hallo Zusammen,
als ich heute morgen im Stau stand habe ich mich natürlich wieder geärgert!
Ich habe einige Adapter mit verschiedenen API-Keys getestet und manche laufen dann aus und geht wieder nichts mehr.
Dann habe ich mich selber daran gemacht ein Script zu entwickeln. Einen Adapter schreiben kann ich nicht, Respekt an alle die das können.
Aber ich kann mein Script zur Verfügung stellen!
Dabei nehme ich die von uns allen bezahlten und bereitgestellten Daten und vergleiche die Koordinaten der Verkehrsmeldungen mit einem angegeben Bereich.Wenn Jemand daraus einen Adapter machen kann wäre das natürlich super!
Auch eine Erweiterung auf mehrere Bereiche ist leicht umzusetzenHier die Anleitung der Autobahn App API
In meinem Script müsst Ihr unter der Konfiguration:
-
Eure Autobahn angeben (Im Beispiel A45)
-
Eure Telegram instanz angeben (Im Beispiel telegram.0)
-
Eure ChatID angeben (Platzhalter im Script 123456789)
-
Ein Koordinatenrechteck als zu überwachten Bereich erstellen:
** minLat: 50.6181514, // unten
** maxLat: 51.3742993, // oben (bis Lüdenscheid)
** minLon: 7.2582769, // links (bis Hagen/Dortmund)
** maxLon: 8.3822071 // rechts -
Im Aktuellen noch die Zeitfenster definieren
Wenn es geht nutzt bitte die aktuelle Version!
Ein erster Test ging gut, nun zerreißt mein Script in der Luft oder Verbessert es!
Viel Spaß und danke an alle die das Projekt "IOBroker" am Leben halten!
Tante Edit:
Code eingefügt
Beispiellink eingefügt:
https://verkehr.autobahn.de/o/autobahn/A45/services/warning@Hotze sagte in #Stauerkennung #DieAutobahn:
In meinem Script
Wo ist das Script ?
Oder sehe ich es nur nicht. ;-)
-
-
@Hotze sagte in #Stauerkennung #DieAutobahn:
In meinem Script
Wo ist das Script ?
Oder sehe ich es nur nicht. ;-)
-
Vielen Dank für die Ergänzugen.
Das mit Alexa war nur ein Besispiel. Der Datenpunkt und die Kommentare im Script sollen keinen Alexa Bezug haben. Ein selbst wählbarer DP der als Wert die Staumeldungen für meinen definierten Bereich enthält reich völlig. Damit kann ich dann umgehen und würde auch die Telegram Integration im JS Adapter erledigen.Ich weiß nicht welche infos in den DP sollen. Seit Testbeginn hatte ich wohl noch keine Störung auf der gewählten AB im gewählten Bereich.
Logmeldungen erscheinen schonmal:javascript.0 2025-12-18 21:00:00.174 info script.js.aaa_Staumelder: Keine Warnungen im definierten Bereich auf A4 javascript.0 2025-12-18 21:00:00.174 info script.js.aaa_Staumelder: Warnung: A4 | Görlitz - Görlitz | Koordinate: 51.19872170096459, 14.960901000619456 | HitsArea: false javascript.0 2025-12-18 21:00:00.174 info script.js.aaa_Staumelder: Warnung: A4 | Kodersdorf - Ludwigsdorf | Koordinate: 51.19872170096459, 14.960901000619456 | HitsArea: false javascript.0 2025-12-18 21:00:00.173 info script.js.aaa_Staumelder: Warnung: A4 | Königshainer Berge - Königshainer Berge | Koordinate: 51.203233847771706, 14.759957057504197 | HitsArea: false javascript.0 2025-12-18 21:00:00.173 info script.js.aaa_Staumelder: Warnung: A4 | Nieder Seifersdorf - Königshainer Berge | Koordinate: 51.2032281716645, 14.760124784338583 | HitsArea: false javascript.0 2025-12-18 21:00:00.172 info script.js.aaa_Staumelder: Warnung: A4 | Willrodaer Forst - Erfurt-Vieselbach | Koordinate: 50.925375315043865, 11.136412592086435 | HitsArea: false javascript.0 2025-12-18 21:00:00.170 info script.js.aaa_Staumelder: Warnung: A4 | Bad Hersfeld - Friedewald | Koordinate: 50.85349478866353, 9.722682387354707 | HitsArea: false javascript.0 2025-12-18 21:00:00.028 info script.js.aaa_Staumelder: Hole Daten von:Sieht plausiebel aus.
Sind die Logdaten alle die verfügbar sind? Interessant wäre die Verzögerung durch das jeweilige Ereignis und evtl. dass man die Richtung differenzieren kann. Hierfür wäre ein Zweiter DP oder generell die Ausgbe als JSON vorstellbar.
@Rushmed sagte in #Stauerkennung #DieAutobahn:
Interessant wäre die Verzögerung durch das jeweilige Ereignis
Die wird nicht immer geliefert.
Wenn angegeben steht das im JSON unter dem Punkt "delayTimeValue".
Klick mal hier! Das ist ein JSON der A1
@bahnuhr sagte in #Stauerkennung #DieAutobahn:
Oder sehe ich es nur nicht. ;-)
Habe ich im Spoiler, die Version mit Alexa und Datenpunkt ist in Post #8 "versteckt".
Unten an diesem Post ist noch eine Version im Spoiler.
@Rushmed sagte in #Stauerkennung #DieAutobahn:
Der Datenpunkt und die Kommentare im Script sollen keinen Alexa Bezug haben.
Wenn jemand Alexa nutzt muss sie etwas zum vorlesen haben (plainText), da kam der Datenpunkt her.
Das ist aber gleich dem Text den man als Nachricht bekommen würde.
Ein Beispieltext ist in Post #8.Ich habe noch einen Version unten der neue Datenpunkt sollte etwa so aussehen:
Hier noch eine Version, mit einem weiterem Datenpunkt als JSON und kleiner einleitenden Erklärung:
Ich kann versuchen das als Link in die Nachricht einzubauen. Dann kann man auf einen Link drücken und landet in der GoogleMaps-App an der richtigen stelle.
Was meint Ihr? -
@bahnuhr sagte in #Stauerkennung #DieAutobahn:
Wo ist das Script ?
Oder sehe ich es nur nicht. ;-)
Erster Post, hinter dem
SpoilerButton@Asgothian sagte in #Stauerkennung #DieAutobahn:
Erster Post, hinter dem Spoiler Button
Ja, jetzt seh ichs auch.(doch blind gewesen)
Danke. -
Ach! ich mach einfach!
Nur Testen kann ich im Moment nicht!Also hoffe ich einfach mal das Beste:
Ich glaube hier liest Alexa den Link mit, was ich nicht hören wollen würde, wenn ich eine hätte!
Ich lasse das dennnoch stehen, für den fall das es jemandem gefällt!
Hier sollte das nicht mehr passieren:
Falls ich die Version mit dem Vorgelesenen Link raus nehmen soll einfach bescheid geben!
-
Ich habe mir mal ein paar Gedanken gemacht. Das Skript an sich ist so für einen speziellen Fall nützlich.
Für flexible Nutzung könnte man das Skript per Telegram fernsteuern.
Z.B. man übergibt per Telegram die Startposition, die Zielposition, welche Autobahn es sein soll. Wie man an die location lat und lon kommt, weiß ich nicht. Evtl. weiß @haus-automatisierung da mehr.Dann sind die Autobahnen keine genau senkrechte oder waagerechte Linie, so müssten dann wohl die die Koordinaten bei z.B. der A2 nord- und südseitig vom Skript festgelegt werden, bei der A7 dann entsprechend ost- und westseitig.
Dann sendet man per Telegram, wo man eigentlich den Standort sendet, zb. einmal Berlin und einmal Hannover. Das Skript nimmt, sobald man die Autobahn 2 sendet, die Ost- und Westkoordinate aus den Telegram-Nachrichten, Nord- und Südkoordinate aus internen Werten.
Dann würde ich den Refresh nicht rund um die Uhr laufen lassen. Vielleicht vom Absenden der Autobahn für so- und soviel Stunden; oder bis man per Telegram ein Stopp sendet.
Für die Morgenroutine kann man fixe Werte hinterlegen, oder, falls man eine Tour geplant hat, alles vorbereiten. Damit dürfte die Zielgruppe wachsen.
@haus-automatisierung
Die Location soll laut Google einfach abfragbar sein, die Datenpunkte gibt es bei mir aber nicht:

Edit: Als JSON wäre die Lokation Vorteilhafter, so braucht man nur einen Datenpunkt zu belauschen.
-
Wenn ich Meinem Bot einen Standort sende wird das im Adapter nicht ausgewertet!
Dafür war das Script aber auch nicht gedacht.
Ich Starte es Morgends ab 4:30 Uhr dann mache ich es um 6:30 Uhr aus. Nachmittags ist es zwischen 14:00 und 16:00 aktiv. Damit sind meine Fahrtzeiten abgedeckt.
für weitere Strecken als zur Arbeit nehme ich dann auch wieder das Navi (Smartphone).So ein Script würde ich aber dann auch anders angehen:
Wenn man die eigene Position an IOBroker senden kann, errechnet man zwischen den letzten zehn Positionen die ungefähre richtung. Dann würde ich in einem Dreieck, in Fahrtrichtung, mit einem Grad (°) vorraus suchen lassen ob irgendwo eine Störung ist.Dazu müsste man dann aber alle (!) Autobahnen abfragen, damit man alle meldungen hat.
Falls das dann gut funktioniert und sich rumspricht, wird die API ganz schnell zu gemacht weil zu viele anfragen gestellt werden!
Über etwas ähnliches denke ich aber tatsächlich gerade nach!
Wir haben auf weiten strecken immer mal das problem zu wissen wie weit das nächste Klo entfernt ist!Als trigger könnte man jede Nachricht an den Bot auswerten die mit "A" beginnt gefolgt von einer Zahl ohne leerzeichen.
https://verkehr.autobahn.de/o/autobahn/A1/services/parking_lorryGibt dann mal eben 143 Parkplätze und unter "lorryParkingFeatureIcons" steht dann ob Toiletten vorhanden sind!
Das ist aber ein anderes Projekt das ich erst ernsthafter angehe wenn ich öfter als drei mal pro Jahr brauche ;-)