Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script holt falschen Wert vom Objekt

    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

    Script holt falschen Wert vom Objekt

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

      Ich habe Scripte laufen, die mich auf kritische Störungen aufmerksam machen. Dazu gehört selbstverständlich auch, dass der Homematic-Rega und der -RPC Adapter verbunden sind.

      Ich frage dazu den Wert "hm-rega.1.info.connection" bzw. "hm-rpc.n.info.connection" ab und reagiere entsprechend.

      Nach einen Neustart von ioBroker (Reboot nach nächtlichen Wartungsarbeiten) passiert es regelmäßig (häufig aber nicht immer), dass der Wert in den Objekten eindeutig auf "true" steht, das Script jedoch ein "false" verarbeitet.

      Gerade eben steht wieder so ein Fall an. Vorbereitend hatte ich im Laufe der Woche bereits je relevantem Datenpunkt ein einfaches Script und einen neuen Zieldatenpunkt angelegt:

      var schedule;
      
      schedule = schedule('* * * * *', function () {
        setState("javascript.0.Stoerung_Summe.REGA_Realwert"/*REGA_Realwert*/, getState("hm-rega.1.info.connection").val);
      });
      

      Das Script läuft definitiv jede Minute. Ich sehe auch in der Adminoberfläche am Objekt "javascript.0.Stoerung_Summe.REGA_Realwert", dass es beschieben wird. Es wird kurz grün und der Zeitstempel aktualisiert.

      Dennoch, der Wert im Adapter:
      Zwischenablage01.jpg

      ...und das Script schreibt:
      Zwischenablage02.jpg

      Das Problem ist (mindestens bis zum nächsten reboot) weg, sobald ich eine der beteiligten Instanzen (als Javascript oder HM-...) neu starte.

      Ich hatte dazu vor ca. 1,5 Jahren einen Issue auf GitHub dazu eröffnet. Ich war mit Unterstützung des Entwicklers nicht in der Lage, dem Problem auf die Spur zu kommen.

      Nach einer Neuinstallation wegen Umstieg auf eine VM (NUC mit Proxmox) war das Problem weg, ist aber inzwischen schleichend wieder aufgetaucht.

      Wie könnte ich der Ursache auf die Spur kommen?

      Versionen:
      JS-Controller 2.1.0
      Script Engine 4.3.3
      HM Rega 2.4.12
      HM RPC 1.11.0
      Node 10.16.0
      NPM 6.9.0

      BBTown haselchen 2 Replies Last reply Reply Quote 0
      • BBTown
        BBTown @hmanfred last edited by

        @hmanfred
        Darf ich fragen, weshalb Du jede Minute nachschaust und weshalb Du nicht als Trigger das Ändern des Datenpunktes "connection" nimmst?

        H 1 Reply Last reply Reply Quote 0
        • H
          hmanfred @BBTown last edited by

          @BBTown
          Das gepostete Script ist nur zum Testen eingerichtet.

          Im richtigen Leben werden von einem Script viele Datenpunkte abgefragt. Da es verschiedene Typen sind (Boolsch, Wertelisten, Zahl) kann man sie (zumindest in Blockly) nicht so einfach als Trigger verodern.
          Deshalb läuft dieses Script im 5-Minuten-Rhythmus und arbeitet alle Datenpunkte ab.

          Aber auch wenn ich nur diesen einen Datenpunkt als Trigger nehmen würde: wenn JS in meinem Beispiel den DP als false erkennt, obwohl er true ist - wie soll dann getriggert werden wenn er von (eigenlich nicht)false auf (wirklich(false) "wechselt"?

          Und zuletzt: das (nachgewiesene) Problem, dass JS einen falschen Wert verarbeitet bleibt und erschüttert ziemlich heftig mein Vertrauen in die Zuverlässigkeit solcher Abfragen.

          BBTown 1 Reply Last reply Reply Quote 0
          • BBTown
            BBTown @hmanfred last edited by BBTown

            @hmanfred sagte in Script holt falschen Wert vom Objekt:

            kann man sie (zumindest in Blockly) nicht so einfach als Trigger verodern.

            Hast Du dazu ein Beispiel?
            Ich hatte bisher keinen Datenpunkt der nicht als Trigger hätte herangezogen werden können.

            Wenn Du alle x-Minuten einfach ins blaue hinein Abfragen losschießt, und das ggf. auch noch zig mal, dann erzeugst Du einen Overhead, den Du durch gezieltes Triggern vermeidest.

            Die Frage ist nun, ob Du ersatzweise den Trigger "connection" anstelle eines minütlichen Pollings ausprobierst - und wenn es funktioniert, Du den Fehler anderweitig suchst, - oder ob Du den Tipp ignorierst und im "heftigen Misstrauen" verbleibst?!

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

              @BBTown sagte in Script holt falschen Wert vom Objekt:

              Ich hatte bisher keinen Datenpunkt der nicht als Trigger hätte herangezogen werden können.

              Aber bei 50 DPs wird es in Blockly schon zur Fingerakrobatik

              H 1 Reply Last reply Reply Quote 0
              • haselchen
                haselchen Most Active @hmanfred last edited by

                @hmanfred

                Letzte Änderung und Zeitstempel haben unterschiedliche Zeiten.
                Was ist um 1:34 und um 11:10 passiert?
                Mag vielleicht nichts miteinander zu tun haben, aber ist mir halt aufgefallen 🙂

                H 1 Reply Last reply Reply Quote 0
                • H
                  hmanfred @haselchen last edited by hmanfred

                  @haselchen
                  1:34 war die Wartung fertig und der Rechner wurde neu gestartet. Da das Test-Script ja ein Dauerläufer ist und der falsche Wert abgeholt wird, wechselte der Testdatenpunkt von true (so stand er ja vor dem Reboot) auf false.

                  11:10 war der letze Lauf des Scripts vor dem Screenshot.

                  1 Reply Last reply Reply Quote 0
                  • H
                    hmanfred @Homoran last edited by

                    @Homoran sagte in Script holt falschen Wert vom Objekt:

                    @BBTown sagte in Script holt falschen Wert vom Objekt:

                    Ich hatte bisher keinen Datenpunkt der nicht als Trigger hätte herangezogen werden können.

                    Aber bei 50 DPs wird es in Blockly schon zur Fingerakrobatik

                    Richtig. Ich könnte sie zwar alle auf Aktualisierung oder Änderung verodern - ich frage sie ja im "Dann" explizit nochmal ab. Mit Cron alle 5 Minuten ist's halt einfacher zusammenzuklicken.

                    Aber nochmal: das ist ja nicht das Problem. 😞

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

                      @hmanfred sagte in Script holt falschen Wert vom Objekt:

                      das ist ja nicht das Problem.

                      Ist das so?

                      Wenn der Raspi vollkommen überlastet ist, kommen schon mal seltsame Dinge dabei raus

                      H 1 Reply Last reply Reply Quote 0
                      • H
                        hmanfred @Homoran last edited by hmanfred

                        @Homoran sagte in Script holt falschen Wert vom Objekt:

                        @hmanfred sagte in Script holt falschen Wert vom Objekt:

                        das ist ja nicht das Problem.

                        Ist das so?

                        Wenn der Raspi vollkommen überlastet ist, kommen schon mal seltsame Dinge dabei raus

                        @hmanfred sagte in Script holt falschen Wert vom Objekt:

                        Nach einer Neuinstallation wegen Umstieg auf eine VM (NUC mit Proxmox) war das Problem weg, ist aber inzwischen schleichend wieder aufgetaucht.

                        Aber auch ein überlasteter Raspi darf mal verschnaufen - und spätestens dann sollte der richtige Wert abgeholt werden. Das passiert aber erst wieder, wenn einer der beteiligten Adapter neu gestartet wird.

                        1 Reply Last reply Reply Quote 0
                        • H
                          hmanfred last edited by

                          Ich muss diesen Thread noch mal hochziehen. Das Problem ist nicht gelöst.

                          Jetzt möchte ich mal meine Vermutung testen, dass es an der Startreihenfolge der Adapter liegt. Lässt sich die - und möglichst auch ein Delay zwischen den Starts - irgendwo einstellen?

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          383
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          javascript
                          4
                          11
                          372
                          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