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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Script schaltet aber shelly nicht

Geplant Angeheftet Gesperrt Verschoben JavaScript
9 Beiträge 4 Kommentatoren 615 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.
  • P Offline
    P Offline
    Peguschwein
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    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 Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #3

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

        mcm1957M 1 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #5

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

            paul53P 1 Antwort Letzte Antwort
            0
            • P Peguschwein

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

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #7

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

                paul53P 1 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 hat funktioniert danke dir vielmals

                    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

                    767

                    Online

                    32.6k

                    Benutzer

                    82.1k

                    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