Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly Geräte Check

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Blockly Geräte Check

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

      Hallo community,

      hoffentlich könnt ihr mir mit meinem Blockly-Skript weiter helfen.

      Ich habe eine Szene gebaut, die nach dem Kommando (Bedtijd) alle Geräte im Wohnzimmer ausschaltet. Das funktioniert super, manchmal aber werden bestimmte Geräte wieder eingeschaltet (eine Lampe zum Beispiel). Ich weiß noch nicht genau, woran das liegt.

      Was ich jetzt mit meinem Skript erreichen möchte, ist, dass nachdem die Szene 'Bedtijd' aktiviert worden ist, in der Nacht regelmäßig geprüft wird, ob die Geräte noch immer ausgeschaltetet sind.

      Jetzt habe ich dieses Skript gebaut und wollte es euch mal vorlegen. Ist dies die beste Weise, das Skript zu bauen? Wird es mit den 'Falls-Mache' nicht zu kompliziert?

      Schon mal vielen Dank im Voraus fürs Mitdenken!

      Grüße

      Johan

      Blockly check.png

      Asgothian Homoran 2 Replies Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @Johan2009 last edited by

        @johan2009

        Was du brauchst ist folgendes :

        • einen "state" "bedtime_aktiv".
        • einen Trigger auf diesen State, der Änderungen des State in eine Variable ("var_bedtime") Schreibt. warum das erklär ich weiter unten
        • für jedes Gerät einen Trigger auf "ist grösser als vorher". Darin:
          -- die Variable "var_bedtime" abfragen. Wenn die wahr ist: Gerät wieder ausschalten.
        • In deinem Zeitplan setzt du den State "bedtime_aktiv" auf wahr
        • Du brauchst einen 2. Zeitplan um morgens den "bedtime_aktiv" auf falsch zu setzen.

        Warum dieses "Gehampel" mit variable "var_bedtime" und dem State "bedtime_aktiv":

        • Wenn du in jedem Trigger der Lampen, sprich jedes mal wenn du die Lampe ein/aus schaltest diesen state überprüfst dann erzeugt das eine gewisse Last. Da sich dieser State aber nur 2 mal in 24 stunden ändern sollte ist es besser den Statisch in eine Variable zu holen.
        • Wenn du den Status nur in einer Variable hast dann geht der verloren wenn das Skript aus versehen neu gestartet wird.

        Da du in dem Beispiel oben nicht das komplette Skript zeigst kann ich nicht sicher sagen ob dein State "BedTijd" schon dem von mir gewünschten "bedtime_aktiv" entspricht. Ich gehe aber im Moment davon aus das das NICHT der Fall ist. Wenn doch (das hängt davon ab wie dein Zeitplan definiert ist), dann wäre das ganze Skript ein Ressourcenfresser.

        Warum - wenn alleine das umsetzen von BedTijd innerhalb des angegebenen Zeitraums dazu führt das die Lampen aus gehen dann muss der Zeitplan alle x sekunden laufen. Das muss er aber nicht, statt dessen kannst du einfacher einen Trigger direkt auf den Status BedTijd setzen, und dann darin als erstes die Uhrzeit Prüfen. Ist sie ausserhalb des Zeitplans dann keine Anpassung, ist sie innerhalb, dann Licht aus.

        Ansonsten machst Du da ein Paar unnötige Klimmzüge:

        • die ganzen "falls wert von x = wahr" können weg, du kannst einfach direkt die Werte mit "falsch" ansteuern. Wenn die schon "falsch" sind passiert im Zweifelsfall nichts.

        Wenn Du Lust / Zeit hast kannst du ja heute nachmittag / frühen Abend (gegen 16/17:00 Uhr) in den ioBroker discord kommen - da können wir uns das gesamte Skript mal gemeinsam anschauen, incl. einiger Hinweise auf mögliche Verbesserungen / Alternativen.

        A.

        A 1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @Johan2009 last edited by

          @johan2009 sagte in Blockly Geräte Check:

          Ich habe eine Szene gebaut

          mit iobroker.scenes?
          dann kannst du doch den Datenpunkt is true o.ä. (der den Zustand der Szene anzeigt) überprüfen und wenn der nicht true ist die Szene wieder auf true setzen

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

            @Johan2009 Wie bereits in Discord erklärt (hier noch mal für die "Nachwelt"), so würde das Script nach dem Vorschlag von @Asgothian aussehen:
            b4a6f61c-47d4-4bdf-ab55-334ba30a6daf-image.png
            Bei "Object ID" dann Deine Werte wie im Kommentar daneben gezeigt einsetzen (die habe ich ja nicht) und den mittleren Teil für jede Lampe wiederholen, das war's.

            @Asgothian Korrigier mich, wenn ich Dich falsch verstanden haben sollte aber so macht's für mich Sinn.

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

              @ahnungsbefreit @Asgothian

              Ich habe den Vorschlag in ein Skript umgesetzt. Wenn ich das so sehe, dann ist es genau das, was @Homoran gemeint hat. Heute oder morgen werde ich testen ob alles funktioniert.

              Vielen Dank an alle für die Hilfe!

              Johan

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

              Support us

              ioBroker
              Community Adapters
              Donate

              562
              Online

              32.0k
              Users

              80.5k
              Topics

              1.3m
              Posts

              4
              5
              458
              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