Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Bahnalarm/Bahnmonitor - Mein erster eigener Adapter

    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

    Bahnalarm/Bahnmonitor - Mein erster eigener Adapter

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

      115_bahnalarm_vis.gif Nach langer "rumprobiererei" und vielen, teilweise verzweifelten "Try & error" Versuchen kann ich heute (nicht ganz ohne Stolz) meinen ersten eigenen Adapter vorstellen.

      Langzeittests hat er noch nicht durchlaufen, aber die ersten Ergebnisse stimmen mich positiv.

      Aber nun ein wenig zur Motivation und zu der Funktionalität des Adapters.

      Eines noch vorab, geplant war einen Adapter "myhouse" zu entwickeln, daher auch der Adaptername. Als eine von mehreren Funktionalitäten sollte darin auch der Bahnalarm/Bahnmonitor enthalten sein. Weiter waren/sind eine Heizungsteuerung, Rollladensteuerung, Lichtsteuerung und Anbindung Bose Soundtouch geplant. Mal sehen ob ich mich dazu noch aufraffen kann.

      <u>Motivation</u>

      Meine Frau und ich sind Bahnpendler. Wir Pendeln täglich mit der Deutschen Bahn zur Arbeit und nutzen dabei in aller Regel morgens immer die gleiche Verbindung.

      Da die Bahn zwar in der Regel pünktlich ist, es aber nichts blöderes gibt als morgens am Bahnsteig zu stehen und die Durchsage zu hören "Der Zug fährt heute vorraussichtlich 10 Minuten später",

      Wir nutzen seit einigen Jahren die App DB Navigator auf einem Androiden. Vor kurzen fühlte sich die Bahn aber befleissigt Ihre App zu modernisieren und hat bei der Gelegenheit gleich mal das schöne Widget "gekillt" (wer weiß, vielleicht kommt es ja noch mal wieder).

      Der erste Schritt war ein Javascript welches morgens die aktuelle Verspätung für eben diese eine Verbindung ermittelt und auch dem Tablet angezeigt hat. Da ich gerne "probiere" habe ich mir gedacht, ein guter Anlass einen eigenen Adapter zu beginnen.

      <u>Was soll der Bahnalarm können?</u>

      Der große Vorteil eines Adapters gegenüber eines Scripts sind die Möglichkeiten der Einstellung über die Adapterkonfiguration.

      Es sollen möglichst die kommenden 3 Verbindungen mit den jeweiligen Verspätungen ermittelt werden. Diese Werte sollen in eigenen Datenpunkten abgelegt und somit über VIS zu visualisieren sein.

      Es soll eine Standardverbindung "markierbar" sein.

      Die erforderlichen Parameter sollen einstellbar und jederzeit an zentraler Stelle änderbar sein.

      Der Aktualisierungsintervall soll einstellbar sein.

      Es soll über VIS zu starten und zu stoppen sein.

      kurzfristige Ermittlung soll jederzeit (auch bei nicht laufenden Adapter) möglich sein.

      <u>Welche Einstellungen/Konfiguration ist vorhanden?</u>

      Da die Ermittlung über das Parsen einer Webseite realisiert werden musste (eine API der deutschen Bahn gibt es meines Wissens nicht) müssen die Parameter zum "Zusammenbau" der URL einstellbar sein. Dafür gibt es in der Konfig 4 Parameterfelder.

      Weiter soll generell einstellbar sein ob der Adapter "aktiv" ist. (Wobei "aktiv" bedeutet, dass Werte ermittelt werden) der Adapter selber muss immer laufen.

      Der Startbahnhof und der Zielbahnhof ist zu hinterlegen und kann jederzeit in der Adapterkonfig geändert werden.

      Eine "Standardverbindung" (meine reguläre Verbindung um morgens zur Arbeit zu gelangen) ist zu hinterlegen.

      Der Updateinterval (wie oft werden die Werte geholt) ist einstellbar.

      <u>Welche Datenpunkte werden ermittelt?</u>

      Abfahrt 1-3 (also die nächsten 3 fahrplanmäßigen Abfahrtszeiten im Format [hh:mm]

      Ankunft 1-3 (ebenfalls im Format [hh:mm]

      Verspätung 1-3 (normale Verspätung < 5 Minuten als Text z. B. [+3] oder [+0]

      Verspätung viel 1-3 (alles was über 5 Minuten hinaus geht)

      Verspätung der "Standardverbindung" (wenn diese in den 3 Zeiten enthalten ist)

      und noch ein paar technische Datenpunkte die zur Aktualisierung bzw. Initialisierung benötigt werden.

      <u>Was ist noch offen/geplant?</u>

      Die Index.html muss noch "aufgehübscht" werden. Derzeit ist sie lieblos "zusammengezimmert" was auch meinen mangelnden HTML-Fähigkeiten geschuldet ist.

      Einbau der Möglichkeit den Adapter zu einer bestimmten Uhrzeit zu aktivieren (also das Daten sammeln beginnen - laufen muss der Adapter immer) und zu deaktivieren. (z. B. Starte morgens um 06:00 Uhr bis 07:00 Uhr, danach schalte dich wieder inaktiv)

      usw… mir wird schon noch was einfallen.

      Wie gesagt. es handelt sich um einen lokalen Adapter. Um die Veröffentlichung muss ich mich noch kümmern, da fehlt mir noch jegliche Kenntnis und da werde ich auch sicher noch Hilfe von dem ein oder anderen benötigen.

      Wie gesagt, eigentlich war das ganze als Spielerei angefangen, einfach mal probieren wie einfach das entwickeln eines Adapters ist.

      Fazit: Ja, es ist einfach wenn man (gerade als Anfänger) viel Zeit hat und sich nicht scheut zu probieren (und zu klauen).

      Edit: Das schwierigste an der ganzen Javascript-Entwicklerei sind die dusseligen asychronen Programmdurchläufe. Da hol ich mir mühseelig die Daten zusammen nur um dann festzustellen das der Code schon mal weitergelaufen ist und ihm irgendwann auffällt: Ups, ich hab ja meine Daten unterwegs vergessen - da lass ich den Adapter doch gleich mal mit Code 8 abstürzen und ich schweiß ein unmotiviertes "undefined" ins log. Das hat mich die meiste Zeit gekostet. Und dann versuch mal mit der dusseligen Forumssuche was passendes zu finden. Zum Glück hatte ruhr70 die gleichen Probleme 😄 😄

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Herzlichen Glückwunsch zum eigenen Adapter. Das motiviert mich, vielleicht doch selbst mal einen ganz einfachen zu basteln.

        Mit ist nur aufgefallen, dass deine ID zum Teil Leerzeichen enthalten. Das würde ich in unterstriche ändern.

        Gruß

        Pix

        Gesendet von meinem iPhone mit Tapatalk

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

          Wow!!!

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

            Super!

            1 Reply Last reply Reply Quote 0
            • htrecksler
              htrecksler Forum Testing last edited by

              > Mit ist nur aufgefallen, dass deine ID zum Teil Leerzeichen enthalten. Das würde ich in unterstriche ändern.

              Spricht da wirklich etwas dagegen? Dann ersetze ich natürlich, aber selbst in Windows dürfen Ordner und Dateinamen jetzt Blank enthalten.
              4746_x1.jpg

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

                @htrecksler:

                > Mit ist nur aufgefallen, dass deine ID zum Teil Leerzeichen enthalten. Das würde ich in unterstriche ändern.

                Spricht da wirklich etwas dagegen? Dann ersetze ich natürlich, aber selbst in Windows dürfen Ordner und Dateinamen jetzt Blank enthalten. `
                Ich würde auch empfehlen Lehrzeichen zu entfernen.

                Windows ist nämlich mehr als 20 Jahre alt. Nach 19 Jahre wird ioBroker auch Lehrzeichen unterstützen. :lol:
                1187_iobroker.2018-01-08.log
                1187_iobroker.2018-01-07.log

                1 Reply Last reply Reply Quote 0
                • P
                  pix last edited by

                  Ich dachte da an Url-Aufrufe. Man weiß ja nie, wan man das mal braucht.

                  Gesendet von meinem iPhone mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • htrecksler
                    htrecksler Forum Testing last edited by

                    Dann mache ich mich mal wieder an die Arbeit.

                    Eine generelle Frage hätte ich aber noch.

                    Eigentlich sollte das ja ein Adapter mit mehreren Funktionen werden (Heizungssteuerung, Licht, Bose etc.)

                    Macht es Sinn das in einem Adapter abzubilden oder lieber für jede Funktion einen.

                    Nachteil bei nur einem Adapter, wenn der mal steht, dann steht alles.

                    Ich weiß aber nicht wie belastend ein Adapter für den Rechner ist.

                    Vielleicht hat jemand einen Tipp?

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

                      Für jedes eigenständige Thema sollte meiner Meinung nach ein eigener Adapter geschrieben werden.

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

                        Die Idee von iobroker ist eben, dass für jeden Adapter ein eigener Prozess läuft. Vorteil ist, dass alle anderen weiterlaufen, wenn es mit einem Probleme gibt.

                        HQ hat irgendwo mal erwähnt, wie groß so ein footprint eines Adapters in etwa ist.

                        Der limitierende Faktor wird dann auch irgendwann das RAM.

                        Ich hatte bei der Bezeichnung myhome schon geahnt, dass da mehr geplant ist.

                        Aber was spricht dagegen mehrere Adapter zu bauen? Allein wegen der Übersicht für die Funktionen.

                        So benötige ich z.b. keine Bahn info, habe Fußbodenheizung und besitze kein Bose. Aber ein Licht-Adapter (wofür auch immer) wäre vielleicht etwas. Bei anderen kann das Ähnlichkeit aber mit anderen Prioritäten sein.

                        Gruß

                        Rainer

                        Gesendet von meinem LIFETAB_S785X mit Tapatalk

                        1 Reply Last reply Reply Quote 0
                        • htrecksler
                          htrecksler Forum Testing last edited by

                          meine Tendenz geht auch zu einzelnen Adaptern.

                          Ich glaube, ich mache diesen neu und benenne ihn dabei um. Dann kann ich mich auch gleich an die Änderung der ID's machen.

                          Dann kann ich ja mal schauen wie sich die Last auf dem System verändert wenn ich einzelne Adapter zuschalte.

                          Eine Frage hab ich allerdings doch noch:

                          Wenn ich mir die Konfigurationsseite des Beispieladapters ansehe, so sind da die Felder Test1 und Test2 mit Werten vorbelegt. Wo sind diese Daten gespeichert? Zunächst hatte ich die io.package.json im Verdacht. Die hab ich dann um meine Felder erweitert und Vorgabewerte eingetragen, aber das führte nicht zum Erfolg.

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

                            @htrecksler:

                            meine Tendenz geht auch zu einzelnen Adaptern.

                            Ich glaube, ich mache diesen neu und benenne ihn dabei um. Dann kann ich mich auch gleich an die Änderung der ID's machen.

                            Dann kann ich ja mal schauen wie sich die Last auf dem System verändert wenn ich einzelne Adapter zuschalte.

                            Eine Frage hab ich allerdings doch noch:

                            Wenn ich mir die Konfigurationsseite des Beispieladapters ansehe, so sind da die Felder Test1 und Test2 mit Werten vorbelegt. Wo sind diese Daten gespeichert? Zunächst hatte ich die io.package.json im Verdacht. Die hab ich dann um meine Felder erweitert und Vorgabewerte eingetragen, aber das führte nicht zum Erfolg. `
                            Ich wollte auch schreiben, dass 5 einzelne Adapter ist besser als ein globaler.

                            Aber die Leute haben das hier schon längst sich geäußert.

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

                              > Wenn ich mir die Konfigurationsseite des Beispieladapters ansehe, so sind da die Felder Test1 und Test2 mit Werten vorbelegt. Wo sind diese Daten gespeichert? Zunächst hatte ich die io.package.json im Verdacht. Die hab ich dann um meine Felder erweitert und Vorgabewerte eingetragen, aber das führte nicht zum Erfolg.
                              Die Felder sind in system.adapter.ADAPTERNAME.0 Objekt gespeichert.

                              Falls man die Adapterinstanz deinstalliert, dann sind die Datenpunkte immer noch in "system.adapter.ADAPTERNAME" (Achtung ohne 0) gespeichert.

                              Um die neue Datenpunkte hinzufügen mache ich eins von beides:

                              • "iobroker del ADAPTERNAME". Achtung Adapter wird aus node_modules/iobroker.ADAPTERNAME gelöscht. Die Änderungen können verloren gehen. Dann Adapter wieder reinkopieren und "iobroker add ADAPTERNAME" schreiben.

                              • Instanz löschen: "iobroker del ADAPTERNAME.0". Und Dann manuell das Objekt "system.adapter.ADAPTERNAME" löschen. Und "iobroker add ADAPTERNAME" schreiben.

                              1 Reply Last reply Reply Quote 0
                              • T
                                thiel last edited by

                                Hallo 🙂

                                gibt es den Adapter schon zum Installieren ?

                                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

                                924
                                Online

                                31.9k
                                Users

                                80.2k
                                Topics

                                1.3m
                                Posts

                                6
                                14
                                3294
                                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