Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Denkfehler beim Ausführen von "Falls-mache"

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    328

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    9
    1
    297

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

Denkfehler beim Ausführen von "Falls-mache"

Geplant Angeheftet Gesperrt Verschoben Blockly
3 Beiträge 2 Kommentatoren 145 Aufrufe 2 Beobachtet
  • Ä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 Offline
    S Offline
    sometime
    schrieb am zuletzt editiert von
    #1

    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

    AsgothianA 1 Antwort Letzte Antwort
    0
    • S sometime

      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

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von Asgothian
      #2

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

      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

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

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

        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

        Registrieren Anmelden
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        407

        Online

        32.8k

        Benutzer

        82.8k

        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