Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Wert erhöhen und Vergleichen beim Schaltzustand True

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    783

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

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

Wert erhöhen und Vergleichen beim Schaltzustand True

Scheduled Pinned Locked Moved Blockly
3 Posts 2 Posters 215 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    Stefan8485
    Developer
    wrote on last edited by Stefan8485
    #1

    Hallo Blocky Spezialistzen,

    ich habe ein kleines Problem.

    Mein Script läuft aber ich würde es gerne verstehen.

    Habe eine Steckdose die ich in zwei Zyklen steuern will.

    1. Wenn einmal gedrückt dann erster Bereich
    2. Wenn dann wieder aus und wieder angeschaltet wird der zweite Bereich.

    Soweit geht das auch aber ich versteh den Sinn mit den Zyklen zählen nicht.
    Nach meinem Verständnis nach habe ich es so aufgebaut er starte und erhört um 1 wenn es dann 1 ist startet er mit dem oberen Bereich und erhöht im Anschluss um wieder +1 . Dann schalte ich die Steckdose aus und wieder ein und der Zyklus wird auf +1 somit auf 3 erhöht.

    Ich bekomme es aber nur mit Zyklen 7 in den 2. Bereich da er mir nach 2 nochmals 3 und 4 anlegt und vor dem nächsten dann 5 und 6 erhöht und ich verstehe nicht woher er diese Erhöhung bekommt.

    Kann mir das jemand erklären oder den Fehler aufzeigen?

    Sorry für den vielen Text.

    Gruss Stefan

    f04b52c7-4243-4244-a26e-1c1ade08c1a7-image.png

    Log:
    javascript.0 14:19:43.759 info script.js.Eigene.0.Steckdosen.Druckluft: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
    javascript.0 14:19:53.854 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen1
    javascript.0 14:19:53.855 info script.js.Eigene.0.Steckdosen.Druckluft: Strom an: Zyklen: 1
    javascript.0 14:19:53.855 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen: 2
    javascript.0 14:19:53.959 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen3
    javascript.0 14:19:54.771 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen4
    javascript.0 14:20:04.992 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen5
    javascript.0 14:20:05.046 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen6
    javascript.0 14:20:05.807 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen7
    javascript.0 14:20:05.807 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen = 3 sind Zyklen: 7
    javascript.0 14:20:25.809 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen wurden wieder nach 20sek. resettet: Zyklen: 0
    javascript.0 14:20:34.454 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen1
    javascript.0 14:20:34.455 info script.js.Eigene.0.Steckdosen.Druckluft: Strom an: Zyklen: 1
    javascript.0 14:20:34.455 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen: 2
    javascript.0 14:20:34.524 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen3
    javascript.0 14:20:34.769 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen4
    javascript.0 14:20:46.616 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen5
    javascript.0 14:20:46.678 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen6
    javascript.0 14:20:46.800 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen7
    javascript.0 14:20:46.801 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen = 3 sind Zyklen: 7
    javascript.0 14:21:06.801 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen wurden wieder nach 20sek. resettet: Zyklen: 0
    javascript.0 14:21:42.018 info Stopping script script.js.Eigene.0.Steckdosen.Druckluft

    AsgothianA 1 Reply Last reply
    0
    • S Stefan8485

      Hallo Blocky Spezialistzen,

      ich habe ein kleines Problem.

      Mein Script läuft aber ich würde es gerne verstehen.

      Habe eine Steckdose die ich in zwei Zyklen steuern will.

      1. Wenn einmal gedrückt dann erster Bereich
      2. Wenn dann wieder aus und wieder angeschaltet wird der zweite Bereich.

      Soweit geht das auch aber ich versteh den Sinn mit den Zyklen zählen nicht.
      Nach meinem Verständnis nach habe ich es so aufgebaut er starte und erhört um 1 wenn es dann 1 ist startet er mit dem oberen Bereich und erhöht im Anschluss um wieder +1 . Dann schalte ich die Steckdose aus und wieder ein und der Zyklus wird auf +1 somit auf 3 erhöht.

      Ich bekomme es aber nur mit Zyklen 7 in den 2. Bereich da er mir nach 2 nochmals 3 und 4 anlegt und vor dem nächsten dann 5 und 6 erhöht und ich verstehe nicht woher er diese Erhöhung bekommt.

      Kann mir das jemand erklären oder den Fehler aufzeigen?

      Sorry für den vielen Text.

      Gruss Stefan

      f04b52c7-4243-4244-a26e-1c1ade08c1a7-image.png

      Log:
      javascript.0 14:19:43.759 info script.js.Eigene.0.Steckdosen.Druckluft: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      javascript.0 14:19:53.854 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen1
      javascript.0 14:19:53.855 info script.js.Eigene.0.Steckdosen.Druckluft: Strom an: Zyklen: 1
      javascript.0 14:19:53.855 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen: 2
      javascript.0 14:19:53.959 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen3
      javascript.0 14:19:54.771 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen4
      javascript.0 14:20:04.992 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen5
      javascript.0 14:20:05.046 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen6
      javascript.0 14:20:05.807 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen7
      javascript.0 14:20:05.807 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen = 3 sind Zyklen: 7
      javascript.0 14:20:25.809 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen wurden wieder nach 20sek. resettet: Zyklen: 0
      javascript.0 14:20:34.454 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen1
      javascript.0 14:20:34.455 info script.js.Eigene.0.Steckdosen.Druckluft: Strom an: Zyklen: 1
      javascript.0 14:20:34.455 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen: 2
      javascript.0 14:20:34.524 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen3
      javascript.0 14:20:34.769 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen4
      javascript.0 14:20:46.616 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen5
      javascript.0 14:20:46.678 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen6
      javascript.0 14:20:46.800 info script.js.Eigene.0.Steckdosen.Druckluft: Status Zyklen7
      javascript.0 14:20:46.801 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen = 3 sind Zyklen: 7
      javascript.0 14:21:06.801 info script.js.Eigene.0.Steckdosen.Druckluft: Zyklen wurden wieder nach 20sek. resettet: Zyklen: 0
      javascript.0 14:21:42.018 info Stopping script script.js.Eigene.0.Steckdosen.Druckluft

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      wrote on last edited by
      #2

      @stefan8485

      Fangen wir mal vorne an:

      • du triggerst auf "ist wahr", sprich jede Aktualisierung des Status der Steckdose (mit oder ohne Schalten) löst einen Impuls aus. Besser ist hier eine Triggerung auf "ist grösser als vorher", dann wird der Trigger nur aktiv wenn der Status von falsch auf wahr wechselt (beim einschalten)
      • Du hast 2 Sekunden Pause eingebaut. Das führt nicht dazu das dann für 2 Sekunden der Trigger nicht aktiv ist. Es wird nur die Ausführung des Codes des gerade aktivierten Triggers verzögert. Den Sinn verstehe ich nur bedingt - es kann sein das du damit das eigentliche Tastern (ein+ausschalten) erkennen willst.
      • dann erhöhst du bei jedem Trigger deinen Zykluszähler um 1, unabhängig wie die Steckdose da gerade geschaltet ist (sprich wenn sie an geblieben ist oder wenn sie wieder ausgeschaltet wurde)
      • Danach wird es seltsam:
        -- wenn die Steckdose noch an ist, und der Zykluszähler auf 1 steht erhöhst du den ein 2. mal und Meldest "Strom an", sprich danach bist du immer bei Zykluszähler 2.
        -- wenn die Steckdose noch an ist und der Zykluszähler auf 7 steht setzt du den Zykluszähler zurück. An der Stelle kommen die 7 Zyklen ins Spiel. Die "Einfache" Lösung wäre also die Zahl 7 im Vergleich von 7 auf 3 zu reduzieren und den rest so zu lassen. Das halte ich aber für Unsinnig. Ich würde das ganze daher so umbauen (dann macht es auch sinn)

      Screenshot 2024-05-25 at 10.49.41.png

      Zur Erklärung:

      • die 2 Sek. Pause sind meiner Meinung nach unnötig, da der Trigger ja nur in dem Moment aktiv wird wenn die Steckdose eingeschaltet wird. Wichtig: auch ein kurzes Einschalten der Steckdose geht jetzt in den Status 1. Wenn das verhindert werden soll wird das Skript deutlich komplexer - da sind die 2 Sek. Pause keine stabile Lösung.

      • Die Abfrage ob die Steckdose noch an ist kann aus dem gleichen Grund entfallen.

      • Der Dir wahrscheinlich unbekannte Block "Der Fall Ist", den ich benutzt hab ersetzt das Konstrukt "falls - sonst falls - sonst falls. Er kann immer dann gut eingesetzt werden wenn es darum geht auf unterschiedliche Werte der gleichen Variable zu reagieren.

      • Das ich im Status 1 den Zykluszähler nicht hoch setze liegt einfach daran das dieses ja automatisch bei JEDEM einschalten passiert - der sprung von 1 auf 2 im Status 1 ist also unnötig.

      Ich hoffe das hilft.

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      S 1 Reply Last reply
      0
      • AsgothianA Asgothian

        @stefan8485

        Fangen wir mal vorne an:

        • du triggerst auf "ist wahr", sprich jede Aktualisierung des Status der Steckdose (mit oder ohne Schalten) löst einen Impuls aus. Besser ist hier eine Triggerung auf "ist grösser als vorher", dann wird der Trigger nur aktiv wenn der Status von falsch auf wahr wechselt (beim einschalten)
        • Du hast 2 Sekunden Pause eingebaut. Das führt nicht dazu das dann für 2 Sekunden der Trigger nicht aktiv ist. Es wird nur die Ausführung des Codes des gerade aktivierten Triggers verzögert. Den Sinn verstehe ich nur bedingt - es kann sein das du damit das eigentliche Tastern (ein+ausschalten) erkennen willst.
        • dann erhöhst du bei jedem Trigger deinen Zykluszähler um 1, unabhängig wie die Steckdose da gerade geschaltet ist (sprich wenn sie an geblieben ist oder wenn sie wieder ausgeschaltet wurde)
        • Danach wird es seltsam:
          -- wenn die Steckdose noch an ist, und der Zykluszähler auf 1 steht erhöhst du den ein 2. mal und Meldest "Strom an", sprich danach bist du immer bei Zykluszähler 2.
          -- wenn die Steckdose noch an ist und der Zykluszähler auf 7 steht setzt du den Zykluszähler zurück. An der Stelle kommen die 7 Zyklen ins Spiel. Die "Einfache" Lösung wäre also die Zahl 7 im Vergleich von 7 auf 3 zu reduzieren und den rest so zu lassen. Das halte ich aber für Unsinnig. Ich würde das ganze daher so umbauen (dann macht es auch sinn)

        Screenshot 2024-05-25 at 10.49.41.png

        Zur Erklärung:

        • die 2 Sek. Pause sind meiner Meinung nach unnötig, da der Trigger ja nur in dem Moment aktiv wird wenn die Steckdose eingeschaltet wird. Wichtig: auch ein kurzes Einschalten der Steckdose geht jetzt in den Status 1. Wenn das verhindert werden soll wird das Skript deutlich komplexer - da sind die 2 Sek. Pause keine stabile Lösung.

        • Die Abfrage ob die Steckdose noch an ist kann aus dem gleichen Grund entfallen.

        • Der Dir wahrscheinlich unbekannte Block "Der Fall Ist", den ich benutzt hab ersetzt das Konstrukt "falls - sonst falls - sonst falls. Er kann immer dann gut eingesetzt werden wenn es darum geht auf unterschiedliche Werte der gleichen Variable zu reagieren.

        • Das ich im Status 1 den Zykluszähler nicht hoch setze liegt einfach daran das dieses ja automatisch bei JEDEM einschalten passiert - der sprung von 1 auf 2 im Status 1 ist also unnötig.

        Ich hoffe das hilft.

        A.

        S Offline
        S Offline
        Stefan8485
        Developer
        wrote on last edited by
        #3

        @asgothian

        Danke für deine Ausführliche Erklärung, ja der grosse Fehler lag an dem Trigger.
        Ich nutze bisher immer aktualisieren oder ändern, ich hatte es so interpretiert das ist wahr, quasi immer auf den Wahr zustand geht aber so habe ich wieder was gelernt, habe mein script nur mal damit umgebaut und den wert 7 wie geplant wieder auf 3 gesetzt und das script läuft gewünscht.

        deine anderen Bemerkungen und Anregungen sind sehr hilfreich und werde ich in mein grosses Script so einbauen. das kleine lief erstmals auch mit den ich nenn es mal "umwegen".

        Die Falls Objekte Version war mir wirklich unbekannt und hilft ungemein, diese kann ich für ein weitere script nutzen wenn ich das optimiere und umbaue werde ich das da auch einbringen.

        Danke dir vielmals für deine Gedanken anstösse und wünsche ein schönes Wochenende.

        Stefan

        1 Reply Last reply
        0

        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

        With your input, this post could be even better 💗

        Register Login
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        350

        Online

        32.8k

        Users

        82.7k

        Topics

        1.3m

        Posts
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Home
        • Recent
        • Tags
        • Unread 0
        • Categories
        • Unreplied
        • Popular
        • GitHub
        • Docu
        • Hilfe