Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Latenzzeit beim Schreiben eines Zustandes

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    828

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Latenzzeit beim Schreiben eines Zustandes

Geplant Angeheftet Gesperrt Verschoben JavaScript
14 Beiträge 4 Kommentatoren 1.0k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #2

    Auf meinem RasPi2 ist die Latenzzeit von setState() + getState() ca. 12 +/- 6 ms. Allerdings ist die CPU-Auslastung sehr gering.

    JS_Laufzeit_setState_getState.JPG

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #3

      Das hängt von sehr vielen Faktoren ab. JavaScript arbeitet Asynchron und nodejs ist Single-Threaded! Es wird also quasi die Arbeit intern "gequeued" (die sog. Event-Loop) und nacheinander abgearbeitet.

      Bedeutet: ein "getState" direkt nach einem "setState" wird NIEMALS den neuen Wert haben.

      Wie lange es dauert hängt davon ab:

      • Was die sendende Instanz (in dem Fall Javascript) so alles parallel zu tun hat.
      • Was der js.controller (empfangene Instanz) es so zu tun hat weil die es dann als Subscriped Wert wieder an JavaScript Instanz raussendet
      • Und damit nochmal: Was die empfangene Javascript-Instanz so zu tun (die bekommt ja im Standard ALLE State changes gesendet) hat bis der Wert aktualisiert wurde in den internen Datenstrukturen.

      Weil erst danach bekommst Du mit getState den Wert (unter der Annahme du nimmst die Standardeinstellung).

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        andre1000
        schrieb am zuletzt editiert von
        #4

        Hallo apollon,

        danke für die Ausführug. Du meinst, ... unter Annahme der Standardeinstellungen...
        Existiert ggf die Möglichkeiten durch Einstellungen hier etwas zu optimieren?

        1 Antwort Letzte Antwort
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          schrieb am zuletzt editiert von
          #5

          Gib uns doch mal ein paar mehr Infos zu Deinem System unter berücksichtung der Themen die ich angesprochen habe

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            andre1000
            schrieb am zuletzt editiert von
            #6

            Hallo,

            mein Projekt ist noch ziemlich übersichtlich. Ich nutze nodered als Interface zu den Steuerungen, die per CAN angesprochen werden.
            Beim Ausführen des Testscripts wurde kein weiteres Script getriggert.
            Allgemein hat js.controller som um die 40 Triggerbedinungen, die jeweils mit getState und setState arbeiten. Jedoch werden von diesen Triggerbedingungen maximal 4 parallel ausgeführt.
            ioBroker läuft auf einem BananaPi M1.
            Ich hoffe hiermit konnte ich das System ausreichend zu beschreiben.

            1 Antwort Letzte Antwort
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              schrieb am zuletzt editiert von apollon77
              #7

              naja die Triggerbedingungen hat nicht der controller, sondern dein node.red, korrekt? Das beispiel von oben war aber eher aus dem JavaScript Adapter.

              Aber jetzt mal die Frage: Sind dir 50ms wirklich zu lang? Was hast Du als Anwendung vor wo es schneller sein muss?

              in solchen Fällen würde ich sagen: Stell mal auf redis um und schaue nochmal.

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                andre1000
                schrieb am zuletzt editiert von
                #8

                Hallo,
                ja, es stimmt, der erste Trigger kommt von NodeRed. Nur danach habe ich mehrere js gesteuerte Zustandstrigger.
                Hier mals kurz der Ablauf bei mir:

                • Taster wird von Steuerung erfasst und per CAN gesendet
                  Daten kommen
                • von CAN über NodeRed in ioBroker
                • Anaylse welcher Taster betätigt wurde
                • Änderung des Zustandes in ioBroker
                • Erstellen des CAN-Objektes für das Schalten
                • Übertragen des Zustandes an NodeRed

                All dies mach ich über Zustände. Aus diesem Grunde habe ich mit dem Zeitversatz ein paar Probleme.

                1 Antwort Letzte Antwort
                0
                • apollon77A Offline
                  apollon77A Offline
                  apollon77
                  schrieb am zuletzt editiert von
                  #9

                  Ok, hast du mal Redis versucht ob es was ändert?
                  BananaPi ... SD Karte oder gescheiter Storage dahinter? wie geht es dem System so auslastungstechnisch ... RAM und CPU und so. WIeviel CPU braucht der js.controller im Schnitt?

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  1 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    andre1000
                    schrieb am zuletzt editiert von
                    #10

                    Redis habe ich noch nicht ausprobiert. Hier wage ich mich aktuell noch nicht ran.
                    Am BananaPI habe ich eine SSD Platte auf der das gesamte System läüft. Gesamtprozessorlast ('system.host.BPI-M1-ioBroker.load') liegt im Schnitt bei 85% und RAM ('system.host.BPI-M1-ioBroker.mem') bei 35% bei den Instanzen wird für den js-.controller 80MB angezeigt..
                    Existiert eine gute Anleitung, wie ich Redis einfach in ioBroker implementiert bekomme und im js.controller anspreche?

                    HomoranH apollon77A 2 Antworten Letzte Antwort
                    0
                    • A andre1000

                      Redis habe ich noch nicht ausprobiert. Hier wage ich mich aktuell noch nicht ran.
                      Am BananaPI habe ich eine SSD Platte auf der das gesamte System läüft. Gesamtprozessorlast ('system.host.BPI-M1-ioBroker.load') liegt im Schnitt bei 85% und RAM ('system.host.BPI-M1-ioBroker.mem') bei 35% bei den Instanzen wird für den js-.controller 80MB angezeigt..
                      Existiert eine gute Anleitung, wie ich Redis einfach in ioBroker implementiert bekomme und im js.controller anspreche?

                      HomoranH Nicht stören
                      HomoranH Nicht stören
                      Homoran
                      Global Moderator Administrators
                      schrieb am zuletzt editiert von
                      #11

                      @andre1000 sagte in Latenzzeit beim Schreiben eines Zustandes:

                      Redis habe ich noch nicht ausprobiert. Hier wage ich mich aktuell noch nicht ran.

                      Solltest du.
                      Das hilft sehr bei dem dual core.

                      @andre1000 sagte in Latenzzeit beim Schreiben eines Zustandes:

                      Am BananaPI habe ich eine SSD Platte auf der das gesamte System läüft. Gesamtprozessorlast ('system.host.BPI-M1-ioBroker.load') liegt im Schnitt bei 85%

                      Hängt die direkt am SATA oder an usb?
                      Letzterer würde das erklären

                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      1 Antwort Letzte Antwort
                      0
                      • A andre1000

                        Redis habe ich noch nicht ausprobiert. Hier wage ich mich aktuell noch nicht ran.
                        Am BananaPI habe ich eine SSD Platte auf der das gesamte System läüft. Gesamtprozessorlast ('system.host.BPI-M1-ioBroker.load') liegt im Schnitt bei 85% und RAM ('system.host.BPI-M1-ioBroker.mem') bei 35% bei den Instanzen wird für den js-.controller 80MB angezeigt..
                        Existiert eine gute Anleitung, wie ich Redis einfach in ioBroker implementiert bekomme und im js.controller anspreche?

                        apollon77A Offline
                        apollon77A Offline
                        apollon77
                        schrieb am zuletzt editiert von apollon77
                        #12

                        @andre1000 Was sagt denn "top" so beim prozess js-controller ... auch 85%? Dann auf jeden Fall Redis bitte! Und dann ist das auch der grund für die Latenz. Denke es ist I/O ...

                        Redis: vllt hat @Homoran no e bessere Anleritung, ich hätte https://github.com/ioBroker/ioBroker.js-controller#using-redis-as-states-db

                        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                        HomoranH 1 Antwort Letzte Antwort
                        0
                        • apollon77A apollon77

                          @andre1000 Was sagt denn "top" so beim prozess js-controller ... auch 85%? Dann auf jeden Fall Redis bitte! Und dann ist das auch der grund für die Latenz. Denke es ist I/O ...

                          Redis: vllt hat @Homoran no e bessere Anleritung, ich hätte https://github.com/ioBroker/ioBroker.js-controller#using-redis-as-states-db

                          HomoranH Nicht stören
                          HomoranH Nicht stören
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von
                          #13

                          @apollon77
                          Ich muss da mal was neu machen

                          Das letzte habe ich in den readme zu den neuen images geschrieben., entspricht aber dem vin dir verlinkten.

                          Ich bekomme hier nichts reinkopiert
                          Was ist das denn?

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          1 Antwort Letzte Antwort
                          0
                          • A Offline
                            A Offline
                            andre1000
                            schrieb am zuletzt editiert von
                            #14

                            Ich habe redis installiert. Nach dem ersten Test sah es wirklich super aus. Antwortzeit nach ca. 10ms. Jetzt zwei Stunden später ist die Zeit auf ca. 35ms angestiegen. Werde morgen mal das geasmte System neu starten und dann berichten.

                            @Homoran die SSD ist direkt am SATA Anschluss dran.

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            712

                            Online

                            32.6k

                            Benutzer

                            82.1k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe