Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [Gelöst] Script rechnet nicht (mehr) wie es soll

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Script rechnet nicht (mehr) wie es soll

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

      Edit: Fehler lag daran, dass ein zweites Script den DP nochmal hatte. Also nach copy-paste des Scripts habe ich vergessen es zu ändern oder die Änderung wurde nicht übernommen.

      Ein Script zählt immer weiter, obwohl es das nicht sollte.
      "Eigentlich" kann an dem Script nichts falsch sein, denn ich habe so ein "Badewannen-Script" insgesamt 20x laufen für verschiedene Bewegungsmelder und das seit langer Zeit (Jahre!?) An dem einen Script, das verrückt spielt, wurde auch nichts geändert. Ich kann mir das nicht erklären. Aber wahrscheinlich bin ich grad blind...
      Vielleicht erkennt jemand den Grund?

      Das Script sollte nur bis "30" zählen, zählt aber immer weiter. Unten zeige und erkläre ich das Script ausführlicher.

      Bisher getestet:

      • Wert händisch paar mal auf 0 gesetzt (Waschraum-Counter = 0)
      • javascript-Adapter neugestartet
      • ioBroker neugestartet
      • javascript-Adapter Versionen getestet: 4.10.15 -> 4.10.11, zurück auf 4.10.15
      • js-controller: 3.2.12 -> 3.2.13

      Werte werden immer um 12 erhöht... das sollte nur passieren wenn der Startwert 0 ist. Und Erhöhung soll nur stattfinden solange der Wert kleiner 30 ist:

      78a6e2d2-2350-42a7-9ec3-b168fe153a99-image.png

      Blockly:
      02c8f78b-91a3-46e5-bee8-20a4afc156b5-image.png

      6ff05a5d-d1a6-4122-afe6-fb0629e0cec2-image.png

      A 1 Reply Last reply Reply Quote 0
      • A
        Ahnungsbefreit @lobomau last edited by

        @lobomau Ich würde empfehlen, Dir in den beiden Scripts immer am Anfang den Wert des Zählers in einer Variablen zu speichern und dann alle Vergleiche, hoch/runter zu zählen etc. mit der Variablen zu machen und erst am Ende wieder den DP zu steuern. Das sollte eine potentielle Fehlerquelle ausschließen.

        lobomau 1 Reply Last reply Reply Quote 0
        • lobomau
          lobomau @Ahnungsbefreit last edited by

          @ahnungsbefreit Danke für die Anregung.
          Mit Variable meinst du eine, die nur im Script ist und DP ist ja das was ich bereits habe, also "Waschraum-Counter". OK, verstanden. Probiere ich mal aus.

          A 1 Reply Last reply Reply Quote 0
          • A
            Ahnungsbefreit @lobomau last edited by

            @lobomau Genau!

            lobomau 1 Reply Last reply Reply Quote 0
            • lobomau
              lobomau @Ahnungsbefreit last edited by lobomau

              Edit: ich habe die 300ms rausgenommen. Läuft im Augenblick. Mal beobachten. Dann setze ich auf [gelöst].

              @ahnungsbefreit ich habe mal die Variable eingebaut. Hat sich nichts geändert. Oder habe ich etwas falsch gemacht? Ich habe da eine Verzögerung von 300ms drin. Vielleicht die mal auf 0 setzen? Aber das kann es doch auch nicht sein.

              Es werden wieder 12 dazu addiert. Sollte nur 1 dazu kommen.

              Ich habe noch debug eingebaut, um den Wert der Variable zu überprüfen. Wert der Variable passt. Aber DP nicht bzw. der DP wird alle 15min resettet läuft aber zwischendurch nach oben. Warum läuft der DP nach oben. Ich kann es mir nicht erklären. Ein Phantomscript im Hintergrund?

              javascript.0	2021-02-03 11:30:02.150	warn	(13084) script.js.BM.KG.BM_KG_Waschraum_Badewanne: 0
              
              javascript.0	2021-02-03 11:45:02.109	warn	(13084) script.js.BM.KG.BM_KG_Waschraum_Badewanne: 0
              

              DP:
              978832b1-3cb3-4380-a279-6e0fce47a1fe-image.png

              9a4e515c-daf5-46e5-9eae-7d41d9f8c4a0-image.png

              c23a4727-dde4-4fdd-8c14-18f096facb04-image.png

              A 1 Reply Last reply Reply Quote 0
              • A
                Ahnungsbefreit @lobomau last edited by

                @lobomau Sind die beiden Blocklys in einem Script? Wenn ja, kannst Du dir den DP jetzt ganz sparen. Wenn nein, kann es so nicht funktionieren, da Du immer am Anfang erst wieder die Variable auf den Wert des DP setzen musst.

                lobomau 1 Reply Last reply Reply Quote 0
                • lobomau
                  lobomau @Ahnungsbefreit last edited by

                  @ahnungsbefreit ja, ist alles in einem Script. Den DP brauche ich um es in einem Diagramm darzustellen. Oder geht das auch anders?

                  So sieht es aus, wenn es funktioniert:
                  f66593ab-5321-410d-b83c-c5b5a1154139-image.png

                  A 1 Reply Last reply Reply Quote 0
                  • A
                    Ahnungsbefreit @lobomau last edited by

                    @lobomau ich würde noch ein paar Optimierungen sehen aber eigentlich sollte das funktionieren...

                    lobomau 1 Reply Last reply Reply Quote 0
                    • lobomau
                      lobomau @Ahnungsbefreit last edited by

                      @ahnungsbefreit das war es alles nicht. Ich komme zurück auf meine Phantomscript-These oder verrückter DP 😹
                      Ich habe einen zweiten DP2 erstellt "Waschraum-Counter2" und das Script entsprechend angepasst. dieser DP2 verhält sich jetzt richtig (wie meine anderen 20 Script die genauso aufgebaut sind).
                      Und jetzt wird es spooky: der erste DP1 "Waschraum-Counter" macht fröhlich weiter, obwohl es kein Script mehr gibt! Für mich ist das Thema erstmal gelöst auch wenn ich es nicht verstehe und das Gefühl habe, dass da im Hintergrund etwas parallel weiterläuft 😞

                      DP1:
                      b87968a5-542d-43f4-a92f-d5127842b137-image.png

                      DP2:
                      0b3aa740-39fb-4afa-ac8e-5b31cfdd0aa5-image.png

                      Das Script werde ich nur dahingehend modifizieren, dass nicht mehr auf "wahr" sondern auf Änderung von "wahr" getriggert wird. Der BWM meldet nämlich 2x "wahr" kurz hintereinander.

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        Ahnungsbefreit @lobomau last edited by

                        @lobomau sehr komisch, eigentlich sollte man diese Scripte finden können. Aber immerhin geht es jetzt.

                        lobomau 1 Reply Last reply Reply Quote 0
                        • lobomau
                          lobomau @Ahnungsbefreit last edited by

                          @ahnungsbefreit ich habe es gefunden! Alles mein Fehler!
                          Beim copy-paste von diesem Script habe ich irgendwie vergessen den DP anzupassen. Also ein anderes Script hatte auch diesen DP drin.
                          Der javascript-Adapter hat ja eine tolle Suchfunktion. Ich habe "Waschraum" eingetippt und da kam das andere Script mit dem selben DP 😔

                          Suchfunktion: (nachdem das andere Script angepasst worden ist)
                          b0632dfc-76b2-4026-bfb0-a02514b3aae1-image.png

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            Ahnungsbefreit @lobomau last edited by Ahnungsbefreit

                            @lobomau Sehr gut, also doch keine Gespenster in Deinem ioBroker 🙂
                            Aber habe ich das richtig verstanden, dass Du exakt das gleiche Script zig-fach laufen hast? Das ruft nach Optimierung, redundanter Code ist immer eine Fehlerquelle...

                            lobomau 1 Reply Last reply Reply Quote 0
                            • lobomau
                              lobomau @Ahnungsbefreit last edited by lobomau

                              @ahnungsbefreit ja, bei >99% der Fälle sitzt das Problem vor dem Monitor. 🤦‍♂️
                              Aber Optimierung sehe ich nicht als nötig an. Die Scripte sind ja nicht identisch, haben unterschiedliche Trigger und DP. Oder übersehe ich etwas?

                              A 1 Reply Last reply Reply Quote 0
                              • A
                                Ahnungsbefreit @lobomau last edited by

                                @lobomau Wenn nur Trigger und DP unterschiedlich sind, kann man das bestimmt zusammenfassen in einem Script, das auf alle Trigger reagiert und dann den richtigen DP schaltet. Das ist einmal etwas Arbeit aber erspart später Aufwand bei Änderungen im Gerätepark und Script-Änderungen...

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                859
                                Online

                                32.0k
                                Users

                                80.4k
                                Topics

                                1.3m
                                Posts

                                2
                                14
                                574
                                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