Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Günstigste Architektur Simple API (hochfrequente Requests)

    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

    Günstigste Architektur Simple API (hochfrequente Requests)

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

      Servus zusammen,

      Ich habe mir ein Webfrontent gebaut, mit dem ich den Status verschiedener Gewerke aufbereite. Aktuell frage ich asynchron (je nach Gewerk zwischen 1 - 5 Sekunden) verschiedene Datenpunkt-Gruppen (ganze Datenpunkte via pattern) ab. Das Frontent selber läuft auf meinem Webserver und ist mit PHP umgesetzt. Der Webserver schickt Requests an meinen Pi im Heimnetz. Das lässt meinen Pi manchmal recht heiß laufen, wenn ich gerade entsprechend große Gewerke anzeige die jede Sekunde aktualisiert werden.

      Ich würde das gern ein wenig optimieren, und habe aktuell zwei Ideen:

      Alternative 1: Ich überwache per Blockly-Script jede relevante Datenpunkt-Gruppe und schreibe bei einer Änderung ein Flag. Nun würde ich in meiner Frequenz nur das Flag lesen, und ggf. bei Änderung die Datenpunkte wie gehabt.

      Alternative 2: Ich frage nicht mehr ganze Datenpunkte ab, sondern nur noch Plain-Values mit expliziten Datenpunkt-Bezeichnern. Damit müsste ich die Konfiguration und Logik auf dem Webserver etwas aufblähen, aber dieser ist potenter als der Pi.

      Welche Ansätze habt Ihr für die Simple API umgesetzt, bzw. welche Ansätze fallen Euch ein? Kann jemand von Euch meine beiden Alternativen bewerten, welche sinniger bzw. performanter und Pi-schonender ist?

      Besten Dank im Voraus.

      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @binaryaddict last edited by AlCalzone

        @binaryaddict Sinnvoller wäre eine dauerhafte Verbindung basierend auf socket.io, wo nicht (unnötig) gepollt wird. Da kannst du auf mehrere Patterns subscriben, eingangs einmal die Werte lesen, und dir bei Änderungen die neuen Werte schicken lassen (so wie in ioBroker Skripten auch).

        binaryaddict 1 Reply Last reply Reply Quote 0
        • binaryaddict
          binaryaddict @AlCalzone last edited by

          @alcalzone said in Günstigste Architektur Simple API (hochfrequente Requests):

          @binaryaddict Sinnvoller wäre eine dauerhafte Verbindung basierend auf socket.io, wo nicht (unnötig) gepollt wird. Da kannst du auf mehrere Patterns subscriben, eingangs einmal die Werte lesen, und dir bei Änderungen die neuen Werte schicken lassen (so wie in ioBroker Skripten auch).

          Danke für den Tipp. Hast Du hierzu ein paar weiterführende Links auf etwaige Referenzimplementierungen zur Hand? Was muss ich ioBroker-seitig tun, um eine eingehende Verbindung bereitzustellen? socket.io scheint kein eigenständiger Adapter zu sein. Steht der Serverteil ioBroker-seitig von Haus aus zur Verfügung?

          AlCalzone 1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer @binaryaddict last edited by

            @binaryaddict sagte in Günstigste Architektur Simple API (hochfrequente Requests):

            socket.io scheint kein eigenständiger Adapter zu sein

            Doch, klick mal auf den Link in meinem vorherigen Post 🙂
            Alternativ hat der web-Adapter auch socket.io an Bord.

            Zur Referenzimplementierung könnte folgender Thread etwas helfen:
            https://forum.iobroker.net/topic/52798/solved-benutze-socket-io-adapter-in-react-app

            Mit PHP ist das allerdings etwas komplizierter, da wirst du nicht umhin kommen, https://github.com/ioBroker/socket-client/ mehr oder weniger zu portieren. Der interessante Teil steckt in Connection.ts, wo die Methoden zum Datenzugriff implementiert sind.

            binaryaddict 1 Reply Last reply Reply Quote 1
            • binaryaddict
              binaryaddict @AlCalzone last edited by

              @alcalzone said in Günstigste Architektur Simple API (hochfrequente Requests):

              @binaryaddict sagte in Günstigste Architektur Simple API (hochfrequente Requests):

              socket.io scheint kein eigenständiger Adapter zu sein

              Doch, klick mal auf den Link in meinem vorherigen Post 🙂
              Alternativ hat der web-Adapter auch socket.io an Bord.

              Zur Referenzimplementierung könnte folgender Thread etwas helfen:
              https://forum.iobroker.net/topic/52798/solved-benutze-socket-io-adapter-in-react-app

              Mit PHP ist das allerdings etwas komplizierter, da wirst du nicht umhin kommen, https://github.com/ioBroker/socket-client/ mehr oder weniger zu portieren. Der interessante Teil steckt in Connection.ts, wo die Methoden zum Datenzugriff implementiert sind.

              Den hab ich mir schon angeschaut. Ich war verwirrt, weil ich socket.io bei den Adaptern zwar mit der Suche finde, jedoch nicht installieren kann. Installiert scheint er aber auch nicht zu sein, zumindest seh ich ihn nicht bei meinen Instanzen.

              Mit einer Beispieldatei konnte ich schon eine Verbindung herstellen (die läuft scheinbar über den web-Adapter). Da gibt es aber noch vieeeeele Feinheiten zu erforschen 😄 Beispielsweise ist mir aktuell noch rätselhaft, wie man das vernünftig absichert. Weil ich letztenendes JS mit der Config und Authentifizierung ausliefern muss, die ja im Klartext lesbar ist. Aber ich wühl mich mal durch.

              Besten Dank für die weiteren Links!

              AlCalzone 1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer @binaryaddict last edited by

                @binaryaddict sagte in Günstigste Architektur Simple API (hochfrequente Requests):

                jedoch nicht installieren kann. Installiert scheint er aber auch nicht zu sein, zumindest seh ich ihn nicht bei meinen Instanzen.

                Ggf. musst du einfach nur eine Instanz hinzufügen? https://www.iobroker.net/#en/documentation/tutorial/adapter.md?creationofaninstanceofanadapter

                binaryaddict 1 Reply Last reply Reply Quote 0
                • binaryaddict
                  binaryaddict @AlCalzone last edited by

                  @alcalzone said in Günstigste Architektur Simple API (hochfrequente Requests):

                  @binaryaddict sagte in Günstigste Architektur Simple API (hochfrequente Requests):

                  jedoch nicht installieren kann. Installiert scheint er aber auch nicht zu sein, zumindest seh ich ihn nicht bei meinen Instanzen.

                  Ggf. musst du einfach nur eine Instanz hinzufügen? https://www.iobroker.net/#en/documentation/tutorial/adapter.md?creationofaninstanceofanadapter

                  Oh mann, da scheint mein Hirn noch nicht mitaufgestanden zu sein. Oder es hat sich noch nicht an die neue Oberfläche gewöhnt 🤦
                  Danke für Deine Geduld - nu hab ich eine Instanz. Wobei wahrscheinlich die größere Herausforderung sein wird die Schnittstelle entsprechend zu implementieren.

                  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

                  827
                  Online

                  31.9k
                  Users

                  80.1k
                  Topics

                  1.3m
                  Posts

                  simple-api
                  2
                  7
                  270
                  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