Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script wird mehrfach ausgeführt Bedingung nicht geändert

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Script wird mehrfach ausgeführt Bedingung nicht geändert

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

      Hallo in die Runde,

      ich habe folgendes Problem und bin etwas ratlos wie ich das am besten löse.
      Trigger ist ein GPIO - Port, der True bzw. false liefert. Bei True wird mit folgendem Blockly der Gaszähler hochgezählt:
      52036463-db18-4ec8-a503-0afd30a36859-image.png
      Hin und wieder (vermute ich) bleibt der Gaszähler am Magneten stehen und damit bleibt der GPIO länger auf True. Wird dann wieder Gas verbraucht, liefert der GPIO wieder ein True. Zwischen diesen beiden True werden dann vom Blockly weitere Werte Gezählt.
      Beispiel für den auslösenden GPIO-Port von letzter Nacht:
      88dd3acf-431d-410e-8ab8-7bca276d91da-image.png
      Zwischen 02:21:39 = true und dem nächsten aufgezeichneten Wert um 02:33:32 wieder = true
      und
      zwischen 02:38:57 und 02:47:06 ebenfalls = true wurde vom Script hochgezählt obwohl eigentlich keine Werte geliefert wurden:
      3d0a790d-c3a8-4991-8f16-3713836171fa-image.png

      Wie kann ich das unterbinden?

      Die Einstsellung der rpi2.0 Instanz zu den GPIO´s:
      9e74a140-a4e0-4960-b72d-0e49eb2bc58d-image.png

      Die History - Einstellungen zum Daten-Objekt:
      5a074957-db9f-458e-8264-6b7eb6d807c6-image.png

      Vielen Dank im Voraus

      Franz

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

        @datzerf ändere den Trigger von "ist wahr" auf "ist größer als letztes", dann wird der Trigger nur ausgelöst, wenn der Wert true ist und der vorherige false war

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

          @ahnungsbefreit, danke für den Tipp.
          Der hat das Problem zumindest teilweise gelöst. Das hochzählen zwischen zwei true - Zuständen ist damit erledigt.
          Allerdings wird jetzt zu wenig gezählt.
          Immer dann, wenn das Zähler-Rad mit dem Magneten der den Reed-Kontakt auslöst unter dem Reed-Kontakt stehen bleibt wird ein true am GPIO-Port gezählt wird. Läuft der Zähler wieder an, kommt kein false sondern das nächste true.
          Dadurch wird dann nicht hochgezählt 😞
          History GPIO wobei um 00:57:36 der Zählwerk mit dem Magneten unter dem Reed Kontakt stehen geblieben ist:

          c7944872-8305-493d-95eb-4bad8c7b16fb-image.png

          Irgendwann zwischen 00:57:36 und 01:08:24 ist die Heizung wieder angelaufen und um 01:08:24 das Zählwerk wieder mit dem Magneten am Reed-Kontkat vorbei gekommen. Ein false wurde zwischen diesen zwei Zeitpunkten nicht geschrieben, deshalb auch nicht hochgezählt.
          History GPIO als Excel-Tabelle:
          04d851fb-836d-410e-9c5c-d5320d0e8bc9-image.png

          Vergleich History des GPIO und History des Gaszählers:
          2e3dbd06-cd1c-4d7a-ad67-e5bb4e1a504f-image.png

          Kann ich das Problem eventuell mit einem Blockly lösen, das nach einem true am GPIO ca. 20-25 Sekunden wartet und prüf ob ein false geschrieben wurde? Falls keine vorhanden ist einfach eines schreibt?

          Viele Grüße

          Franz

          crunchip 1 Reply Last reply Reply Quote 0
          • crunchip
            crunchip Forum Testing Most Active @DatzerF last edited by crunchip

            @datzerf sagte in Script wird mehrfach ausgeführt Bedingung nicht geändert:

            Läuft der Zähler wieder an, kommt kein false

            Dann ist aber was anderes faul
            Den triggern entweder auf, ist größer, wie schon geschrieben, oder du stellst auf ,wurde geändert,
            Aber wie gesagt, prüfe doch erstmal dein Signal

            D 1 Reply Last reply Reply Quote 0
            • D
              DatzerF @crunchip last edited by

              @crunchip ,
              das Script lief nach dem Änderungsvorschlag @Ahnungsbefreit bis zu meinem letzte Post so:
              c6df57a4-a020-4b84-a994-70b0b7d764a2-image.png
              Vorher war die Bedienung = wahr.
              Ändere ich die Bedingung auf "wurde geändert" muss ich zusätzlich noch prüfen ob der Wert auch = wahr, denn nur dann will ich zählen.
              Das Signal kann ich leider nur mit einem Magneten und nicht elektrisch prüfen. Mit Magnet an den Reed-Kontakt und wieder weg wird bei gesetzter Bedingung = wahr richtig gezählt. Ich muss allerdings zugeben, dass ich den Magneten nie länger als ca. 30 Sekunden an den Reed-Kontakt gehalten habe.

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

                @datzerf Versuch doch mal den Tipp von @crunchip , das ist ja nur ein "falls wert" mehr. Bitte unbedingt "wert" aus dem Menü "Trigger" verwenden und nicht noch einmal mit "wert von ..." abfragen.

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

                  @ahnungsbefreit ,
                  jetzt bin ich etwas "verwirrt"....
                  Hier der Trigger, den ich abfrage:
                  c714f544-2db6-4555-b8cd-4c9c60aa2b34-image.png
                  Falls dieses Objekt sich ändert (Prüfung versucht mit "ist wahr" und "ist größer als letztes")
                  b2f3c632-caa1-4506-b257-2164b4868396-image.png
                  dann soll der im usderdata - Bereich angelegt Datenpunk:
                  8abc65be-f57c-4eb4-bc0c-56b2f8199910-image.png
                  um 0,1 hochgezählt werden.
                  Den Wert aus dem Menü Trigger verwende ich an der Stelle doch und frage nicht noch mal separat mit wert von ab??
                  Die Aktualisierung, also die eigentliche Aktion sollte so doch auch passen?

                  Wie schon geschrieben, so Lange der Status-Wechsel von true auf false im Wechsel erfolgt ist alles gut. Bleibt das Zählwerk mit dem Magneten aber über dem Reed-Kontakt (ist ein Schließer) stehen, weil der Brenner eben ausschaltet, dann scheint der Reed-Kontakt sobald der Zähler sich weiterdreht keinen false (für mich der Reed-Kontakt ist wieder offen) am GPIO - Port zu melden.
                  Statt dessen meldet er beim nächsten Durchlauf des Magneten an der Zählerwalze wieder ein true, Kontakt ist geschlossen.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @DatzerF last edited by

                    @datzerf sagte: Reed-Kontakt sobald der Zähler sich weiterdreht keinen false (für mich der Reed-Kontakt ist wieder offen) am GPIO - Port zu melden.

                    Dann tausche den Reed-Kontakt aus, denn er scheint zu verkleben, wenn er längere Zeit geschlossen ist.

                    D 1 Reply Last reply Reply Quote 0
                    • D
                      DatzerF @paul53 last edited by

                      @paul53
                      hab sowas schon fast befürchtet... 😞 Na dann versuch ich es mal mit einem anderen.
                      Danke für die Hilfe und Tipps.

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

                        @datzerf Der Vollständigkeit halber: Was ich meinte, war folgender Ansatz:
                        4378d133-9f17-47fd-939f-b9a541b8ba2f-image.png

                        Damit löst das Script immer aus, auch wenn der Wert schon vorher "true" war, sobald der DP aktualisiert wird. Aber vermutlich liegt das Problem hier wirklich bei Reed-Kontakt.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        560
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        4
                        10
                        411
                        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