Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Denkfehler beim Ausführen von "Falls-mache"

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Denkfehler beim Ausführen von "Falls-mache"

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

      Hey zusammen,

      ich benötige einmal Eure Hilfe. Ich bin mir ziemlich sicher, dass es sich nur um einen Denkfehler meinerseits handelt aufgrund von meiner Unerfahrenheit.

      Kurz zur Erklärung was ich erreichen möchte:
      Ich möchte beim Ändern von der DWD-Warnstufe zum einen eine Warnung auf meiner LaMetric Time ausgeben und zum anderen einen Lightstrip entsprechend der Warnstufe in bestimmten Farben leuchten lassen.
      Folgende Problematiken habe ich festgestellt, warum der einfache Weg nicht geklappt hat: Wenn ich z.B. bei Warnstufe 1 über einen Fake-Schalter die Farbe gelb ausgeben möchte, sich dann die Warnstufe auf 2 erhöht, sind dann zwei Schalter gleichzeitig eingeschaltet, und der Lightstrip kommt durcheinander. Deswegen habe ich versucht bei der nächsten Warnstufe (welche sich ja nach oben und nach unten bewegen kann) den ersten Schalter auszuschalten um dann den nächsten zutreffenden Schalter zu schalten.
      Ich habe mehrere Wege ausprobiert, komme aber nicht mehr weiter. Folgend meinen aktuellen (nicht funktionierenden) Code:

      on({id: "dwd.0.warning.severity"/*Warning severity*/, change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (true && getState("dwd.0.warning.severity").val == 1) {
          setState("ham.0.DWD-aus.DWD-aus.On"/*On*/, false);
          setState("ham.0.DWD-orange.DWD-orange.On"/*On*/, false);
          setState("ham.0.DWD-rot.DWD-rot.On"/*On*/, false);
          setState("ham.0.DWD-lila.DWD-lila.On"/*On*/, false);
          setState("ham.0.DWD-gelb.DWD-gelb.On"/*On*/, true);
          sendTo("lametric", "notification", {priority: "warning",iconType: "none",sound: "thunder",lifeTime: 10000,icon: 'i9537',text: 'DWD Warnung - Stufe 1',cycles: 5});}
      });
      on({id: "dwd.0.warning.severity"/*Warning severity*/, change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (true && getState("dwd.0.warning.severity").val == 2) {
          setStateDelayed("ham.0.DWD-aus.DWD-aus.On"/*On*/, false, 1000, false);
          setStateDelayed("ham.0.DWD-gelb.DWD-gelb.On"/*On*/, false, 1000, false);
          setStateDelayed("ham.0.DWD-rot.DWD-rot.On"/*On*/, false, 1000, false);
          setStateDelayed("ham.0.DWD-lila.DWD-lila.On"/*On*/, false, 1000, false);
          setState("ham.0.DWD-orange.DWD-orange.On"/*On*/, true);
          sendTo("lametric", "notification", {priority: "warning",iconType: "none",sound: "thunder",lifeTime: 10000,icon: 'i9538',text: 'DWD Warnung - Stufe 2',cycles: 5});}
      });
      on({id: "dwd.0.warning.severity"/*Warning severity*/, change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (true && getState("dwd.0.warning.severity").val == 3) {
          setState("ham.0.DWD-aus.DWD-aus.On"/*On*/, false);
          setState("ham.0.DWD-gelb.DWD-gelb.On"/*On*/, false);
          setState("ham.0.DWD-orange.DWD-orange.On"/*On*/, false);
          setState("ham.0.DWD-lila.DWD-lila.On"/*On*/, false);
          setState("ham.0.DWD-rot.DWD-rot.On"/*On*/, true);
          sendTo("lametric", "notification", {priority: "warning",iconType: "none",sound: "thunder",lifeTime: 10000,icon: 'i9539',text: 'DWD Warnung - Stufe 3',cycles: 5});}
      });
      on({id: "dwd.0.warning.severity"/*Warning severity*/, change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (true && getState("dwd.0.warning.severity").val == 4) {
          setState("ham.0.DWD-aus.DWD-aus.On"/*On*/, false);
          setState("ham.0.DWD-gelb.DWD-gelb.On"/*On*/, false);
          setState("ham.0.DWD-orange.DWD-orange.On"/*On*/, false);
          setState("ham.0.DWD-rot.DWD-rot.On"/*On*/, false);
          setState("ham.0.DWD-lila.DWD-lila.On"/*On*/, true);
          sendTo("lametric", "notification", {priority: "warning",iconType: "alert",sound: "alarm1",lifeTime: 10000,icon: 'i45966',text: 'DWD Warnung - Stufe 4',cycles: 10});}
      });
      on({id: "dwd.0.warning.severity"/*Warning severity*/, change: "ne"}, async function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("dwd.0.warning.severity").val == 0) {
          setState("ham.0.DWD-aus.DWD-aus.On"/*On*/, true);
        }
        setState("ham.0.DWD-gelb.DWD-gelb.On"/*On*/, false);
        setState("ham.0.DWD-orange.DWD-orange.On"/*On*/, false);
        setState("ham.0.DWD-rot.DWD-rot.On"/*On*/, false);
        setState("ham.0.DWD-lila.DWD-lila.On"/*On*/, false);
      });
      

      Vielen Dank für Euren Input!

      VG sometime

      Asgothian 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @sometime last edited by Asgothian

        @sometime
        Ich sehe einen "echten" Fehler in deinem Konstrukt:

        der letzte Trigger feuert immer mit, aber schaltet bis auf dvd-aus.On alle states aus - Unabhängig davon welchen Wert die Wetterwarnung hat.

        Trotzdem ist dein Konstrukt unnötig kompliziert. Es lässt sich auf das folgende herunter brechen:

        on({id: "dwd.0.warning.severity"/*Warning severity*/, change: "ne"}, async function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val
          setState("ham.0.DWD-aus.DWD-aus.On"/*On*/, value==0);
          setState("ham.0.DWD-gelb.DWD-gelb.On"/*On*/, value==1);
          setState("ham.0.DWD-orange.DWD-orange.On"/*On*/, value==2);
          setState("ham.0.DWD-rot.DWD-rot.On"/*On*/, value==3);
          setState("ham.0.DWD-lila.DWD-lila.On"/*On*/, value==4);
          let iconId = 9537+value;
          if (value == 4) {
                   sendTo("lametric", "notification", {priority: "warning",iconType: "alert",sound: "alarm1",lifeTime: 10000,icon: 'i45966',text: 'DWD Warnung - Stufe 4',cycles: 10});
          } 
          else if (value > 0) {
              sendTo("lametric", "notification", {priority: "warning",iconType: "alert",sound: "thunder",lifeTime: 10000,icon: 'i'+iconId,text: 'DWD Warnung - Stufe '+ value,cycles: 5});   
          }
        });
        

        A.

        Nachtrag: In blocky so:

        Screen Shot 2021-07-08 at 23.00.43 .png

        Natürlich musst du die Datenpunkte und Instanzen für sendTo anpassen - da hab ich vieles nicht.

        Der Baustein "Wert" stammt im übrigen aus dem "Trigger" Bereich, und ist da mit "ObjektID" vordefiniert.

        A.

        S 1 Reply Last reply Reply Quote 0
        • S
          sometime @Asgothian last edited by

          @asgothian said in Denkfehler beim Ausführen von "Falls-mache":

          @sometime
          Ich sehe einen "echten" Fehler in deinem Konstrukt:

          der letzte Trigger feuert immer mit, aber schaltet bis auf dvd-aus.On alle states aus - Unabhängig davon welchen Wert die Wetterwarnung hat.

          Trotzdem ist dein Konstrukt unnötig kompliziert. Es lässt sich auf das folgende herunter brechen:

          on({id: "dwd.0.warning.severity"/*Warning severity*/, change: "ne"}, async function (obj) {
            var value = obj.state.val;
            var oldValue = obj.oldState.val
            setState("ham.0.DWD-aus.DWD-aus.On"/*On*/, value==0);
            setState("ham.0.DWD-gelb.DWD-gelb.On"/*On*/, value==1);
            setState("ham.0.DWD-orange.DWD-orange.On"/*On*/, value==2);
            setState("ham.0.DWD-rot.DWD-rot.On"/*On*/, value==3);
            setState("ham.0.DWD-lila.DWD-lila.On"/*On*/, value==4);
            let iconId = 9537+value;
            if (value == 4) {
                     sendTo("lametric", "notification", {priority: "warning",iconType: "alert",sound: "alarm1",lifeTime: 10000,icon: 'i45966',text: 'DWD Warnung - Stufe 4',cycles: 10});
            } 
            else if (value > 0) {
                sendTo("lametric", "notification", {priority: "warning",iconType: "alert",sound: "thunder",lifeTime: 10000,icon: 'i'+iconId,text: 'DWD Warnung - Stufe '+ value,cycles: 5});   
            }
          });
          

          A.

          Nachtrag: In blocky so:

          Screen Shot 2021-07-08 at 23.00.43 .png

          Natürlich musst du die Datenpunkte und Instanzen für sendTo anpassen - da hab ich vieles nicht.

          Der Baustein "Wert" stammt im übrigen aus dem "Trigger" Bereich, und ist da mit "ObjektID" vordefiniert.

          A.

          Hi,
          in der Tat sieht deine Version deutlich aufgeräumter und schlanker aus als meine.
          Ich übe ja noch und versuche mich ins Thema reinzufinden.
          Vielen Dank für Deinen Input! Ich schaue es mir in Ruhe an und teste mal noch ein wenig. Sollte ich noch Rückfragen haben, würde ich mich nochmal bei Dir melden - sofern okay für Dich 🙂

          LG sometime

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

          Support us

          ioBroker
          Community Adapters
          Donate

          570
          Online

          32.0k
          Users

          80.5k
          Topics

          1.3m
          Posts

          2
          3
          129
          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