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. JavaScript
  5. Script schaltet aber shelly nicht

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Script schaltet aber shelly nicht

Scheduled Pinned Locked Moved JavaScript
9 Posts 4 Posters 638 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.
  • P Offline
    P Offline
    Peguschwein
    wrote on last edited by Homoran
    #1

    Hallo zusammen habe da ein script das grundsätzlich läuft. Unter Objekten kann man den Wert des Schalters sehen wie er von true auf false geht. Der Shelly selbst schaltet aber nicht. Wenn ich den Schalter mit der Maus rüberlege
    dann schaltet der Shelly auch. An was kann das liegen ?

     // Konfiguration
    const channel1 = 'shelly.1.shellypro2#***********#1.Relay0.Switch'; // Ersetze mit dem richtigen Kanal für den ersten Schalter
    const channel2 = 'shelly.1.shellypro2#***********#1.Relay1.Switch'; // Ersetze mit dem richtigen Kanal für den zweiten Schalter
    const manualSwitch = '0_userdata.0.Datenpunkte.Licht-Abwesenheit-on-off'; // Ersetze mit dem richtigen manuellen Schalter (Ein/Aus)
    
    // Dunkelheitsprüfungs-Adapter (sun Adapter)
    //const sunState = 'sun.0.sunset'; // sunset State liefert 'true' für Dunkelheit
    const sunState = '0_userdata.0.Datenpunkte.jemand_zuhause'; // sunset State liefert 'true' für Dunkelheit
    
    // Konfigurierbare Zeiten
    const maxOnDuration = 10 * 60 * 1000;  // Maximale Einschaltzeit in Millisekunden (z.B. bis 10 Minuten)
    const minOnDuration = 2 * 60 * 1000;   // Minimale Einschaltzeit in Millisekunden (z.B. 2 Minuten)
    const offDuration = 5 * 60 * 1000;     // Ausschaltzeit in Millisekunden (z.B. 5 Minuten)
    
    // Funktion zur Erzeugung einer zufälligen Einschaltzeit zwischen minOnDuration und maxOnDuration
    function getRandomOnDuration() {
        return Math.floor(Math.random() * (maxOnDuration - minOnDuration + 1)) + minOnDuration;
    }
    
    // Funktion zum Schalten eines Kanals
    function switchChannel(channel, state) {
        setState(channel, state, true); // Schaltet den Kanal auf den angegebenen Zustand (true = ein, false = aus)
    }
    
    // Prüfen, ob es dunkel ist und das Skript aktiviert wurde
    function isDarkAndActive() {
        // Abrufen des Sonnenstatus (true = Dunkelheit, false = Tag)
        const isDark = getState(sunState).val;
        // Abrufen des manuellen Schalters (true = Aktiv, false = Inaktiv)
        const isActive = getState(manualSwitch).val;
    
        return isDark && isActive;
    }
    
    // Zyklus für Kanal 1
    function cycleChannel1() {
        if (isDarkAndActive()) {
            const onTime = getRandomOnDuration(); // Zufällige Einschaltzeit für Kanal 1
    
            // Einschalten von Kanal 1
            switchChannel(channel1, true);
            console.log(`Kanal 1 eingeschaltet für ${onTime / 1000} Sekunden.`);
    
            // Nach der zufälligen Einschaltzeit ausschalten
            setTimeout(() => {
                switchChannel(channel1, false);
                console.log(`Kanal 1 ausgeschaltet.`);
    
                // Nach der Ausschaltzeit erneut einschalten
                setTimeout(() => {
                    cycleChannel1();
                }, offDuration);
            }, onTime);
        } else {
            console.log("Es ist nicht dunkel oder der manuelle Schalter ist aus. Skript nicht aktiv.");
            // Warte 5 Minuten und prüfe erneut
            setTimeout(cycleChannel1, 5 * 60 * 1000);
        }
    }
    
    // Zyklus für Kanal 2
    function cycleChannel2() {
        if (isDarkAndActive()) {
            const onTime = getRandomOnDuration(); // Zufällige Einschaltzeit für Kanal 2
    
            // Einschalten von Kanal 2
            switchChannel(channel2, true);
            console.log(`Kanal 2 eingeschaltet für ${onTime / 1000} Sekunden.`);
    
            // Nach der zufälligen Einschaltzeit ausschalten
            setTimeout(() => {
                switchChannel(channel2, false);
                console.log(`Kanal 2 ausgeschaltet.`);
    
                // Nach der Ausschaltzeit erneut einschalten
                setTimeout(() => {
                    cycleChannel2();
                }, offDuration);
            }, onTime);
        } else {
            console.log("Es ist nicht dunkel oder der manuelle Schalter ist aus. Skript nicht aktiv.");
            // Warte 5 Minuten und prüfe erneut
            setTimeout(cycleChannel2, 5 * 60 * 1000);
        }
    }
    
    // Starten der Zyklen
    cycleChannel1();
    cycleChannel2();
    

    MOD-EDIT: Code in code-tags gesetzt!

    HomoranH 1 Reply Last reply
    0
    • P Peguschwein

      Hallo zusammen habe da ein script das grundsätzlich läuft. Unter Objekten kann man den Wert des Schalters sehen wie er von true auf false geht. Der Shelly selbst schaltet aber nicht. Wenn ich den Schalter mit der Maus rüberlege
      dann schaltet der Shelly auch. An was kann das liegen ?

       // Konfiguration
      const channel1 = 'shelly.1.shellypro2#***********#1.Relay0.Switch'; // Ersetze mit dem richtigen Kanal für den ersten Schalter
      const channel2 = 'shelly.1.shellypro2#***********#1.Relay1.Switch'; // Ersetze mit dem richtigen Kanal für den zweiten Schalter
      const manualSwitch = '0_userdata.0.Datenpunkte.Licht-Abwesenheit-on-off'; // Ersetze mit dem richtigen manuellen Schalter (Ein/Aus)
      
      // Dunkelheitsprüfungs-Adapter (sun Adapter)
      //const sunState = 'sun.0.sunset'; // sunset State liefert 'true' für Dunkelheit
      const sunState = '0_userdata.0.Datenpunkte.jemand_zuhause'; // sunset State liefert 'true' für Dunkelheit
      
      // Konfigurierbare Zeiten
      const maxOnDuration = 10 * 60 * 1000;  // Maximale Einschaltzeit in Millisekunden (z.B. bis 10 Minuten)
      const minOnDuration = 2 * 60 * 1000;   // Minimale Einschaltzeit in Millisekunden (z.B. 2 Minuten)
      const offDuration = 5 * 60 * 1000;     // Ausschaltzeit in Millisekunden (z.B. 5 Minuten)
      
      // Funktion zur Erzeugung einer zufälligen Einschaltzeit zwischen minOnDuration und maxOnDuration
      function getRandomOnDuration() {
          return Math.floor(Math.random() * (maxOnDuration - minOnDuration + 1)) + minOnDuration;
      }
      
      // Funktion zum Schalten eines Kanals
      function switchChannel(channel, state) {
          setState(channel, state, true); // Schaltet den Kanal auf den angegebenen Zustand (true = ein, false = aus)
      }
      
      // Prüfen, ob es dunkel ist und das Skript aktiviert wurde
      function isDarkAndActive() {
          // Abrufen des Sonnenstatus (true = Dunkelheit, false = Tag)
          const isDark = getState(sunState).val;
          // Abrufen des manuellen Schalters (true = Aktiv, false = Inaktiv)
          const isActive = getState(manualSwitch).val;
      
          return isDark && isActive;
      }
      
      // Zyklus für Kanal 1
      function cycleChannel1() {
          if (isDarkAndActive()) {
              const onTime = getRandomOnDuration(); // Zufällige Einschaltzeit für Kanal 1
      
              // Einschalten von Kanal 1
              switchChannel(channel1, true);
              console.log(`Kanal 1 eingeschaltet für ${onTime / 1000} Sekunden.`);
      
              // Nach der zufälligen Einschaltzeit ausschalten
              setTimeout(() => {
                  switchChannel(channel1, false);
                  console.log(`Kanal 1 ausgeschaltet.`);
      
                  // Nach der Ausschaltzeit erneut einschalten
                  setTimeout(() => {
                      cycleChannel1();
                  }, offDuration);
              }, onTime);
          } else {
              console.log("Es ist nicht dunkel oder der manuelle Schalter ist aus. Skript nicht aktiv.");
              // Warte 5 Minuten und prüfe erneut
              setTimeout(cycleChannel1, 5 * 60 * 1000);
          }
      }
      
      // Zyklus für Kanal 2
      function cycleChannel2() {
          if (isDarkAndActive()) {
              const onTime = getRandomOnDuration(); // Zufällige Einschaltzeit für Kanal 2
      
              // Einschalten von Kanal 2
              switchChannel(channel2, true);
              console.log(`Kanal 2 eingeschaltet für ${onTime / 1000} Sekunden.`);
      
              // Nach der zufälligen Einschaltzeit ausschalten
              setTimeout(() => {
                  switchChannel(channel2, false);
                  console.log(`Kanal 2 ausgeschaltet.`);
      
                  // Nach der Ausschaltzeit erneut einschalten
                  setTimeout(() => {
                      cycleChannel2();
                  }, offDuration);
              }, onTime);
          } else {
              console.log("Es ist nicht dunkel oder der manuelle Schalter ist aus. Skript nicht aktiv.");
              // Warte 5 Minuten und prüfe erneut
              setTimeout(cycleChannel2, 5 * 60 * 1000);
          }
      }
      
      // Starten der Zyklen
      cycleChannel1();
      cycleChannel2();
      

      MOD-EDIT: Code in code-tags gesetzt!

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #2

      @peguschwein sagte in Script schaltet aber shelly nicht:

      An was kann das liegen ?

      du musst unbestätigt senden

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      P 1 Reply Last reply
      0
      • HomoranH Homoran

        @peguschwein sagte in Script schaltet aber shelly nicht:

        An was kann das liegen ?

        du musst unbestätigt senden

        P Offline
        P Offline
        Peguschwein
        wrote on last edited by
        #3

        @homoran Das sagst du jetzt s einfach. Ich bin totales greenhorn mit Scripten. Kannst du mir auf die Sprünge helfen ?

        mcm1957M 1 Reply Last reply
        0
        • P Peguschwein

          @homoran Das sagst du jetzt s einfach. Ich bin totales greenhorn mit Scripten. Kannst du mir auf die Sprünge helfen ?

          mcm1957M Online
          mcm1957M Online
          mcm1957
          wrote on last edited by
          #4

          @peguschwein said in Script schaltet aber shelly nicht:

          @homoran Das sagst du jetzt s einfach. Ich bin totales greenhorn mit Scripten. Kannst du mir auf die Sprünge helfen ?

          ack flag auf FALSE setzen

          setState(channel, state, false)
          

          Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
          Support Repositoryverwaltung.

          Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

          LESEN - gute Forenbeitrage

          P 1 Reply Last reply
          0
          • mcm1957M mcm1957

            @peguschwein said in Script schaltet aber shelly nicht:

            @homoran Das sagst du jetzt s einfach. Ich bin totales greenhorn mit Scripten. Kannst du mir auf die Sprünge helfen ?

            ack flag auf FALSE setzen

            setState(channel, state, false)
            
            P Offline
            P Offline
            Peguschwein
            wrote on last edited by
            #5

            @mcm1957 aber in Zeile 22 schalte ich doch genau so, einfach true

            paul53P 1 Reply Last reply
            0
            • P Peguschwein

              @mcm1957 aber in Zeile 22 schalte ich doch genau so, einfach true

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by paul53
              #6

              @peguschwein sagte: in Zeile 22 schalte ich doch genau so, einfach true

              true (als 3. Parameter) steht für "bestätigt". Siehe Doku

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              P 1 Reply Last reply
              0
              • paul53P paul53

                @peguschwein sagte: in Zeile 22 schalte ich doch genau so, einfach true

                true (als 3. Parameter) steht für "bestätigt". Siehe Doku

                P Offline
                P Offline
                Peguschwein
                wrote on last edited by
                #7

                @paul53 verstehe nur Bahnhof. Ich glaube ist einfacher für mich eine Astro Uhr zu kaufen, als zu scripten

                paul53P 1 Reply Last reply
                0
                • P Peguschwein

                  @paul53 verstehe nur Bahnhof. Ich glaube ist einfacher für mich eine Astro Uhr zu kaufen, als zu scripten

                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #8

                  @peguschwein sagte: verstehe nur Bahnhof.

                  Ändere Zeile 22 in

                      setState(channel, state); // Schaltet den Kanal auf den angegebenen Zustand (true = ein, false = aus)
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  P 1 Reply Last reply
                  0
                  • paul53P paul53

                    @peguschwein sagte: verstehe nur Bahnhof.

                    Ändere Zeile 22 in

                        setState(channel, state); // Schaltet den Kanal auf den angegebenen Zustand (true = ein, false = aus)
                    
                    P Offline
                    P Offline
                    Peguschwein
                    wrote on last edited by
                    #9

                    @paul53 hat funktioniert danke dir vielmals

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    645

                    Online

                    32.7k

                    Users

                    82.4k

                    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