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

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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Wert erhöhen und Vergleichen beim Schaltzustand True

Geplant Angeheftet Gesperrt Verschoben Blockly
3 Beiträge 2 Kommentatoren 188 Aufrufe 2 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.
  • S Online
    S Online
    Stefan8485
    Developer
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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 Online
        S Online
        Stefan8485
        Developer
        schrieb am zuletzt editiert von
        #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 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

        406

        Online

        32.7k

        Benutzer

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