Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Rolladensteuerung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Rolladensteuerung

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

      Hallo zusammen,

      ich habe ein script geschrieben um meine Rolladen zu steuern. Aktuell hat es nur ein paar Funktionen für unterschiedliche Zeiten. Ich finde aber die Möglichkeiten um schnell verschiedene Rollos per Schedule oder Event recht gut. Durch die Filterfunktion lassen sich schnell nur die benötigten Rollos selektieren.

      Vielleicht kann das ja auch noch wer anders gebrauchen.

      let rollos = [];
      
      rollos.push({
          name: "Schlafzimmer",
          id: "javascript.0.virtualDevice.Rollaeden.Schlafzimmer.LevelRollo",
          delayedOpen: true,
          closingLevel: 20,
      });
      rollos.push({
          name: "Ankleide",
          id: "javascript.0.virtualDevice.Rollaeden.Ankleide.LevelRollo",
          delayedOpen: true,
          closingLevel: 0,
      });
      rollos.push({
          name: "Ole Schlafzimmer",
          id: "javascript.0.virtualDevice.Rollaeden.Ole Schlafzimmer.LevelRollo",
          delayedOpen: true,
          closingLevel: 20,
      });
      rollos.push({
          name: "Ole Spielzimmer",
          id: "javascript.0.virtualDevice.Rollaeden.Ole Spielzimmer.LevelRollo",
          delayedOpen: true,
          closingLevel: 0,
      });
      rollos.push({
          name: "Esszimmer",
          id: "javascript.0.virtualDevice.Rollaeden.Esszimmer.LevelRollo",
          test: true,
          closingLevel: 0,
      });
      rollos.push({
          name: "Terasse",
          id: "javascript.0.virtualDevice.Rollaeden.Terasse.LevelRollo",
          closingLevel: 0,
      });
      rollos.push({
          name: "Arbeitszimmer",
          id: "javascript.0.virtualDevice.Rollaeden.Arbeitszimmer.LevelRollo",
          test: true,
          closingLevel: 0,
      });
      rollos.push({
          name: "Gästebad",
          id: "javascript.0.virtualDevice.Rollaeden.Gästebad.LevelRollo",
          closingLevel: 0,
      });
      rollos.push({
          name: "Garderobe",
          id: "javascript.0.virtualDevice.Rollaeden.Garderobe.LevelRollo",
          closingLevel: 0,
      });
      rollos.push({
          name: "Küche Garten",
          id: "javascript.0.virtualDevice.Rollaeden.Küche Garten.LevelRollo",
          closingLevel: 0,
          earlyOpen: 65,
      });
      rollos.push({
          name: "Küche Strasse",
          id: "javascript.0.virtualDevice.Rollaeden.Küche Strasse.LevelRollo",
          closingLevel: 0,
          earlyOpen: 100,
      });
      rollos.push({
          name: "Wohnzimmer Strasse",
          id: "javascript.0.virtualDevice.Rollaeden.Wohnzimmer Strasse.LevelRollo",
          closingLevel: 0,
      });
      rollos.push({
          name: "Wohnzimmer Hinten",
          id: "javascript.0.virtualDevice.Rollaeden.Wohnzimmer hinten.LevelRollo",
          closingLevel: 0,
      });
      
      function filter(array, test) {
          let passed = [];
          for (let element of array) {
              if (test(element)) {
                  passed.push(element);
              }
          }
          return passed;
      }
      
      // Sonnenuntergang
      schedule({astro: "sunset", shift: 15}, () => {
          for (let rollo of rollos) {
              setState(rollo.id, rollo.closingLevel);
          }
      });
      
      // Sonnenaufgang
      schedule({astro: "sunrise", shift: -15}, () => {
          for (let rollo of filter(rollos, r => !r.delayedOpen)) {
              setState(rollo.id, 100);
          }
      });
      
      // Spätes öffnen
      schedule({hour: 8, minute: 0}, () => {
          for (let rollo of filter(rollos, r => r.delayedOpen)) {
              setState(rollo.id, 100);
          }
      });
      
      // frühes öffnen
      schedule({hour: 5, minute:0}, () =>{
          for (let rollo of filter(rollos, r => r.earlyOpen)) {
              setState(rollo.id, rollo.earlyOpen);
          }
      });
      
      
      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo,

        gefällt mir gut. Werde mal sehen, ob ich es verbauen kann. Meine Rollladen-Steuerung wird mit der Zeit immer komplizierter

        • Beschattung mit Sonnensensor und Aussentemperaturabhängig,

        • Nicht bewegen oder nur begrenzt bei geöffneten Fenstern,

        • Bewegung, wenn zu und Fenster wird geöffnet oder gekippt

        • erste Öffnung morgens per Zeit (nur Spalt)

        • zweite Öffnung morgens per Zeit (ganz)

        • Schließen abends per Astro

        • Automatiksperre (keine Automatikfahrten für eine Stunde), wenn von Hand (nicht per Skript) ein Rollladen bewegt wurde.

        • Kind schläft im Raum -> Automatiksperre

        • und schließlich noch Steuerung über Alexa und GoogleHome.
          Natürlich sind alle Parameter per VIS einstellbar (zB wie weit soll der Rollladen öffnen, wenn geschlossen und Fenster wird gekippt, etc…). Deshalb sind mir die Abstrahierungen im Code wichtig. Ich dupliziere ein Skript dann für jeden Raum.

        Gruß

        Pix

        A 1 Reply Last reply Reply Quote 0
        • M
          MartyBr last edited by

          @pix:

          Hallo,

          gefällt mir gut. Werde mal sehen, ob ich es verbauen kann. Meine Rollladen-Steuerung wird mit der Zeit immer komplizierter

          • Beschattung mit Sonnensensor und Aussentemperaturabhängig,

          • Nicht bewegen oder nur begrenzt bei geöffneten Fenstern,

          • Bewegung, wenn zu und Fenster wird geöffnet oder gekippt

          • erste Öffnung morgens per Zeit (nur Spalt)

          • zweite Öffnung morgens per Zeit (ganz)

          • Schließen abends per Astro

          • Automatiksperre (keine Automatikfahrten für eine Stunde), wenn von Hand (nicht per Skript) ein Rollladen bewegt wurde.

          • Kind schläft im Raum -> Automatiksperre

          • und schließlich noch Steuerung über Alexa und GoogleHome.
            Natürlich sind alle Parameter per VIS einstellbar (zB wie weit soll der Rollladen öffnen, wenn geschlossen und Fenster wird gekippt, etc…). Deshalb sind mir die Abstrahierungen im Code wichtig. Ich dupliziere ein Skript dann für jeden Raum.

          Gruß

          Pix `

          Hallo Pix,

          meine Rolladensteuerung ist noch komplett in der CCU. Ich suche gerade Beispiele, wie ich die Programme auf den ioBroker übertragen kann. Ich habe den Weatherman mit dem Temp.-Diff.Sensor für die Beschattung integriert. Weiterhin nutze ich die Innentemperaturen für eine "Energiegewinnung" in kälteren Jahreszeiten. Alles wie gesagt in der Homematic. Bei geöffneten Terrassentüren bleiben die Rollos oben (Aussperrschutz).

          Ich bin sehr an ein Beispiel deiner Lösung interessiert. Hast du auch den Sonnenstand integriert?

          Gruß

          Martin

          1 Reply Last reply Reply Quote 0
          • A
            ahfreezer @pix last edited by

            @pix
            Hi Pix: ich hol das Thema nochmal hoch. Wäre es dir möglich dein Skript und deine Visu dafür zu veröffentlich.

            Deine Umsetzung klingt sehr interessant und ist für mich bestimmt ein Skript zum dazulernen 😁👍🏻

            VG

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

            Support us

            ioBroker
            Community Adapters
            Donate

            912
            Online

            31.8k
            Users

            79.9k
            Topics

            1.3m
            Posts

            4
            4
            1075
            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