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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Script wird mehrfach ausgeführt Bedingung nicht geändert

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Script wird mehrfach ausgeführt Bedingung nicht geändert

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
10 Beiträge 4 Kommentatoren 754 Aufrufe 3 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.
  • D Offline
    D Offline
    DatzerF
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • D DatzerF

      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 Offline
      A Offline
      Ahnungsbefreit
      schrieb am zuletzt editiert von
      #2

      @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

      Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

      D 1 Antwort Letzte Antwort
      0
      • A Ahnungsbefreit

        @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 Offline
        D Offline
        DatzerF
        schrieb am zuletzt editiert von
        #3

        @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

        crunchipC 1 Antwort Letzte Antwort
        0
        • D DatzerF

          @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

          crunchipC Abwesend
          crunchipC Abwesend
          crunchip
          Forum Testing Most Active
          schrieb am zuletzt editiert von crunchip
          #4

          @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

          umgestiegen von Proxmox auf Unraid

          D 1 Antwort Letzte Antwort
          0
          • crunchipC 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 Offline
            D Offline
            DatzerF
            schrieb am zuletzt editiert von
            #5

            @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 Antwort Letzte Antwort
            0
            • D DatzerF

              @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 Offline
              A Offline
              Ahnungsbefreit
              schrieb am zuletzt editiert von
              #6

              @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.

              Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

              D 1 Antwort Letzte Antwort
              0
              • A Ahnungsbefreit

                @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 Offline
                D Offline
                DatzerF
                schrieb am zuletzt editiert von
                #7

                @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.

                paul53P 1 Antwort Letzte Antwort
                0
                • D DatzerF

                  @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.

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @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.

                  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

                  D 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @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 Offline
                    D Offline
                    DatzerF
                    schrieb am zuletzt editiert von
                    #9

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

                    1 Antwort Letzte Antwort
                    0
                    • A Offline
                      A Offline
                      Ahnungsbefreit
                      schrieb am zuletzt editiert von
                      #10

                      @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.

                      Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

                      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

                      692

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      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