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. Rolladen Script für Javascript Adapter

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Rolladen Script für Javascript Adapter

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
17 Beiträge 5 Kommentatoren 3.2k Aufrufe
  • Ä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.
  • smartboartS Offline
    smartboartS Offline
    smartboart
    schrieb am zuletzt editiert von
    #1

    Hallo, habe hierzu nur Blockly Scripte im Forum gefunden und habe gerade angefangen ein Script für meine Rolladensteuerung zusammen zu schustern…

    Die Anfänge stelle ich hier mal rein. Aktuell laufen meine Rolläden noch über Homematic...

    Möchte aber demnächst auf IOBroker umziehen um das auch in Vis einzubinden..

    Also auf und ab sollen die Dinger je nach Helligkeit fahren.

    Jeder Rolladen bekommt ne Automatik Funktion mit welcher man den Rolladen aus der Autmoatischen Steuerung herausnehmen kann. Ebenso können alle Gesamt aus der Automatik rausgenommen werden...

    Bei Sturm sollen alle Rolläden runter fahren... Hierfür habe ich eine Scene im Szenenadapter angelegt...

    Geht bestimmt schöner über die enum Funktionen..Wenn der Rest soweit funktioniert werde ich das noch angehen..

    Wenn da mal ein Profi drüber schauen könnte bevor ich das verproben anfange??? Wäre cool...

    Vlt. besteht ja Bedarf ...Mit eurer Hilfe wird es bestimmt passabel...

    Und bitte habt Verständnis, ich fange gerade erst an...

    //Rolladen Script
    
    //States für Manuell und Automatik Vorwahl in Vis
    createState('javascript.0.Rolladen.Gesamt.Automatik', '');
    createState('javascript.0.Rolladen.GaesteWC.Automatik', '');
    createState('javascript.0.Rolladen.Kueche.Automatik', '');
    createState('javascript.0.Rolladen.Speisekammer.Automatik', '');
    createState('javascript.0.Rolladen.Esstisch.Automatik', '');
    createState('javascript.0.Rolladen.CouchLinks.Automatik', '');
    createState('javascript.0.Rolladen.CouchMitte.Automatik', '');
    createState('javascript.0.Rolladen.CouchRechts.Automatik', '');
    createState('javascript.0.Rolladen.Terassentuer.Automatik', '');
    createState('javascript.0.Rolladen.Schlafzimmer.Automatik', '');
    createState('javascript.0.Rolladen.Bad.Automatik', '');
    createState('javascript.0.Rolladen.Buero.Automatik', '');
    createState('javascript.0.Rolladen.Ankleidezimmer.Automatik', '');
    
    //Automatik Block für Rolladen Gaeste WC runter
    on({id: 'jhm-rpc.0.PEQXXXX.1.BRIGHTNESS'} , function(obj){
           var ZeitfensterAbend = obj.state.val;
    	var Helligkeit = getState ('hm-rpc.0.PEQXXXX.1.BRIGHTNESS').val;
    	var BehanghoeheGaesteWC = getState('hm-rpc.0.OEQXXXX.1.LEVEL').val;
    	var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
    	var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
    	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
    	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
    		if (ZeitfensterAbend === true && Helligkeit <=40 && BehanghoeheGaesteWC >= 1 && AutomatikGesamt === true && AutomatikGaesteWC === true && Brand === 0 && Alarm === false) {
                setStateDelayed('hm-rpc.0.OEQXXXX.1.LEVEL', 0, 1000);
                if('hm-rpc.0.OEQXXXX.1.LEVEL', 0);
                console.log('Rolladen Gaeste WC geschlossen'); 
    	}
    });
    
    //Automatik Block für Rolladen Gaeste WC hoch	
    on({id: 'hm-rpc.0.PEQXXXX.1.BRIGHTNESS' }, function(obj){
    	var ZeitfensterMorgen = obj.state.val;
            var Helligkeit = getState ('hm-rpc.0.PEQXXXX.1.BRIGHTNESS').val;
    	var BehanghoeheGaesteWC = getState('hm-rpc.0.OEQXXXX.1.LEVEL').val;
    	var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
    	var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
    		if (ZeitfensterMorgen === true && Helligkeit >60 && BehanghoeheGaesteWC <= 95 && AutomatikGesamt === true && AutomatikGaesteWC === true )) {
    	setStateDelayed('hm-rpc.0.OEQXXXX.1.LEVEL', 100, 1000);
                if('hm-rpc.0.OEQXXXX.1.LEVEL', 100);
                console.log('Rolladen Gaeste WC geöffnet');
        }	
    });
    
    //Automatik Block für Rolladen Gaeste WC runter bei hohen Temperaturen
    on({id: 'Temp aussen eintragen' }, function(obj){
    	var ZeitfensterMittag = obj.state.val;
    	var Helligkeit = getState ('hm-rpc.0.PEQXXXX.1.BRIGHTNESS').val;
    	var RaumTemp = getState ('ID Raum Tempsensor eintragen').val; 
    	var TempAussen = getState ('ID  Tempsensor Aussen eintragen').val; 
    	var BehanghoeheGaesteWC = getState('hm-rpc.0.OEQXXXX.1.LEVEL').val;
    	var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
    	var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
    	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
    	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
    		if (ZeitfensterAMittag === true && RaumTemp >= 25 && TempAussen >= 28 && Helligkeit >=100 && BehanghoeheGaesteWC >= 40 && AutomatikGesamt === true && AutomatikGaesteWC === true && Brand === 0 && Alarm === false) {
                setStateDelayed('hm-rpc.0.OEXXXX.1.LEVEL', 35, 1000);
                if('hm-rpc.0.OEQXXXX.1.LEVEL', 35);
                console.log('Rolladen Gaeste WC wegen hohen Temperaturen geschlossen'); 
        }	
    });
    
    // Alle Rollos bei Sturm runter
    on({id: 'Sturm ID eintragen', change: "ne"}, function (obj) {
    	var Sturm = obj.state.val;
    	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
    	var RollosOffen = getState ('javascript.0.Status.Rolladen.Anzahl_offen')
    	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
    		if (Sturm >=100 && Alarm === false && RollosOffen >=1 && Brand === 0 ) {
                setState('scene.Alarm_alle_Rollos_hoch',0);
                if('scene.Alarm_alle_Rollos_hoch',0);
                console.log('Rolläden geschlossen wegen Sturm');
    		}
    });    
    
    // Alle Rollos bei Feuer hoch
    on({id: 'javascript.0.Status.Brandmelder.Anzahl_melden_Brand' }, function (obj) {
    	var Brand = obj.state.val;
    		if (Brand >= 1) {
                setState('scene.Alarm_alle_Rollos_hoch',100);
                if('scene.Alarm_alle_Rollos_hoch',100);
                console.log('Rollaeden geöffnet wegen Brand');
        }
    });  
    // Rolladen Kellertreppe bei Feuer hoch
    on({id: 'javascript.0.Status.Brandmelder.Anzahl_melden_Brand' }, function (obj) {
    	var Brand = obj.state.val;
    	var BehanghoeheKellertreppe = getState('hm-rpc.0.OEQXXXX.1.LEVEL').val;
    		if (Brand >= 1 && BehanghoeheKellertreppe <= 99 ) {
                setState('hm-rpc.0.OEQXXXX.1.LEVEL',100);
                if('hm-rpc.0.OEQXXXX.1.LEVEL',100);
                console.log('Rollaeden Kellertreppe geöffnet wegen Brand');
        }
    });  
    
    
    1 Antwort Letzte Antwort
    0
    • arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      warum das Rad 2 mal erfinden .. es gibt unzählige Scripte in die Richtung

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      1 Antwort Letzte Antwort
      0
      • smartboartS Offline
        smartboartS Offline
        smartboart
        schrieb am zuletzt editiert von
        #3

        @arteck:

        warum das Rad 2 mal erfinden .. es gibt unzählige Scripte in die Richtung `

        Hallo,

        auch für den javascript Adapter?

        Dann habe ich wohl den Wald vor lauter Bäumen nicht gesehen….

        Habe nur was für Blockly gesehen....

        Wenn dem so ist, dann hast du natürlich recht...Werde nochmal die Suche bemühen...

        1 Antwort Letzte Antwort
        0
        • L Offline
          L Offline
          Linedancer
          schrieb am zuletzt editiert von
          #4

          @smartboart:

          Bei Sturm sollen alle Rolläden runter fahren… `

          Das würde ich mal mit dem Rolladen Hersteller abklären. Nach meiner Kenntnis sollen Rolladen ab einer bestimmten Gebäudehöhe, einer bestimmten Rolladenfläche und Bauart ab einer bestimmten Windgeschwindigkeit eher hoch gefahren werden.

          Gehört zwar nicht direkt zum Thema hier, ist aber nach meiner Meinung wichtig.

          –

          Ciao, Gerhard

          1 Antwort Letzte Antwort
          0
          • smartboartS Offline
            smartboartS Offline
            smartboart
            schrieb am zuletzt editiert von
            #5

            @Linedancer:

            @smartboart:

            Bei Sturm sollen alle Rolläden runter fahren… `

            Das würde ich mal mit dem Rolladen Hersteller abklären. Nach meiner Kenntnis sollen Rolladen ab einer bestimmten Gebäudehöhe, einer bestimmten Rolladenfläche und Bauart ab einer bestimmten Windgeschwindigkeit eher hoch gefahren werden.

            Gehört zwar nicht direkt zum Thema hier, ist aber nach meiner Meinung wichtig. `

            Ja das kann man im Prinzip dann handhaben wie man möchte. Ist dann ein leichtes diesen Scriptteil entsprechend seiner Bedürfnisse anzupassen..Ich besitze nur ein Einfamilienhaus. Für ein Hochhaus reicht es noch nicht…:-)

            Für meine persönlichen Anforderungen ist das so schon ok...Ein Rolladen kostet mich weniger wie ein Fenster...

            Natürlich sollten Markisen bei Sturm eingefahren werden. Aber meine Alu Rolläden dürfen da gerne runter fahren...

            Fahre ja bei Sturm auch nicht mein Garagentor auf, welches ebenfalls ein Alu Rolladenpanzer ist..

            Aber danke für den Beitrag...Bin für alle Ideen und Anmerkungen dankbar..

            1 Antwort Letzte Antwort
            0
            • htreckslerH Offline
              htreckslerH Offline
              htrecksler
              Forum Testing
              schrieb am zuletzt editiert von
              #6

              ich habe es ähnlich umgesetzt. Unter anderem prüfe ich auch den Helligkeitswert. Allerdings prüfe ich diesen nur morgens und Abends in einem variablen Zeitfenster aufgrund von Astrozeiten (Morgens von SA-Beginn bis SA-Ende und Abends von SU-Beginn bis SU-Ende). Und das Ganze auch nur an Arbeitstagen und auch nur dann wenn eine bestimmte Zeit morgens erreicht ist (Sonst gehen im Sommer ja mitten in der Nacht die Rolladen hoch)

              Zusätzlich habe ich dann noch eine Steuerung in Abhängigkeit der tatsächlichen und der erwarteten Temperatur innerhalb eines Zeitfensters.

              Beispiel: In der Zeit von 08:00 bis 16:00 prüfe ob die aktuelle Temperatur >22 und die erwartete Höchsttemperatur >28 Grad ist. Wenn ja, fahr die Rolladen auf das Sonnenstandslevel.

              Gruss Hermann

              ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

              1 Antwort Letzte Antwort
              0
              • smartboartS Offline
                smartboartS Offline
                smartboart
                schrieb am zuletzt editiert von
                #7

                Wow klasse…das ist auf jedenfall ne professionelle Geschichte...auch haben will...

                Die zusätzlichen ideen werde ich natürlich versuchen umzusetzen.... Danke für die tollen Tips.

                Hast du das als javascript realisiert?

                Hier im forum gibt es scriptbeispiele für time in range ,date in ranche und sonnenstand.. lässt sich bestimmt prima integrieren...

                Triggerst du dann auf Astro Zeitbereich? Wie stellst du sicher das das variable zeitfenster nach astro läuft? Sunset sunrise +- x minuten?

                on({id: 'hm-rpc.0.PEQ039xxxxxx.1.BRIGHTNESS', change: "ne"}, function (obj) {
                    var value = obj.state.val;
                    var Behanghoehe = getState('hm-rpc.0.OEQ13xxxx.1.LEVEL').val;
                    var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
                    var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
                    var sunriseEnd = getAstroDate("sunriseEnd");
                    var sunset = getAstroDate("sunset");
                    if (value <=30 && Behanghoehe >= 1 && AutomatikGesamt === true && AutomatikGaesteWC === true) {
                        if(isTimeInRange('18:30:00', '23:00:00'))
                            setStateDelayed('hm-rpc.0.OEQ13xxxxx.1.LEVEL', 0, 1000);
                            if('hm-rpc.0.OEQ13xxxxx.1.LEVEL', 0);
                            console.log('Rolladen GaesteWC zu');
                

                Gesendet von meinem SM-G800F mit Tapatalk

                1 Antwort Letzte Antwort
                0
                • L Offline
                  L Offline
                  Linedancer
                  schrieb am zuletzt editiert von
                  #8

                  Bei mir sieht die Rolladengeschichte folgendermassen aus:

                  1. Hilfsscript:

                  rechnet alle 2 Miunten die Sonnenposition

                  2. Hilfsscript:

                  rechnet über den Sonnenwinkel von Hilfsscript 1 ob beim jeweiligen Rolladen Beschattet werden muss oder nicht

                  3. Hilfsscript:

                  rechnet alle 2 Minuten die Zeit vor Sonneuntergang und Sonnenaufgang

                  Für jeden Rolladen gibt es folgende Scripte

                  1. Rolladen Ab, wenn Beschattung true und kein Feueralarm und Raumtemp über soll

                  2. Rolladen Auf, wenn Beschattung false (nur wenn bei Regen Fenster zu ist)

                  3. Rolladen Auf, wenn Fenster auf gemacht wird

                  4. Rolladen au, wenn Feueralarm ausgelöst ist

                  5. Rolladen ab, wenn Regen und Fenster ist offen

                  6. Rolladen ab, wenn gewünschte Minuten vor Sonnenuntergang erreicht

                  7. Rolladen auf, wenn gewünschte Minuten vor Sonnenaufgang erreicht

                  8. Rolladen ab, wenn niemand Zuhause ist und Fenster offen ist (kann eigentlich nicht vorkommen)

                  9. Rolladen ab bei Morgendämmerung (wenn m Schlafzimmer das Fenster auf ist)

                  Das wäre es glaub ich

                  –

                  Ciao, Gerhard

                  1 Antwort Letzte Antwort
                  0
                  • htreckslerH Offline
                    htreckslerH Offline
                    htrecksler
                    Forum Testing
                    schrieb am zuletzt editiert von
                    #9
                            var lZeitfensterMorgen = false;
                            var lZeitfensterAbend = false;
                            if (nowIsBetween(gMorgenDaemmBegin.val, gMorgenDaemmEnde.val)) {
                                var lZeitfensterMorgen = true;
                            }
                            if (nowIsBetween(gAbendDaemmBeginn.val, gAbendDaemmEnde.val)) {
                                var lZeitfensterAbend = true;
                            }
                    
                    

                    die Sonnenzeiten werden aus Datenpunkten geholt die einmal täglich ermittelt werden. Für solche DInge läuft bei mir ein eigener Adapter "MyGenerals".

                        gMorgenDaemmBegin        = getState("mygenerals.0.1_SonnenaufgangStart");
                        gMorgenDaemmEnde         = getState("mygenerals.0.3_SonnenaufgangEnde");
                        gAbendDaemmBeginn        = getState("mygenerals.0.4_SonnenuntergangStart");
                        gAbendDaemmEnde          = getState("mygenerals.0.6_SonnenuntergangEnde");
                    
                    

                    Ich muss jetzt leider für 2 Tage auf Geschäftsreise, aber gerne mehr wenn ich zurück bin.

                    Gruss Hermann

                    ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

                    1 Antwort Letzte Antwort
                    0
                    • smartboartS Offline
                      smartboartS Offline
                      smartboart
                      schrieb am zuletzt editiert von
                      #10

                      Ja Prima,

                      ich stricke mal fleißig weiter…

                      Mich würde noch interessieren mit was ihr die Routine einleitet, bzw. was ihr alsTriggersignal verwendet um die ganzen if Bedingungen einzusammeln und den Rolladen zu steuern..... ( on({id: )

                      Aktuell ist der stand siehe unten... damit triggere ich auf die Helligkeit, was das Script natürlich bei jeder Aktualisierung loslaufen lässt..Und das passiert alle 4x6min(Setup vom Sensor)

                      Besser wäre natürlich, wenn das nur während isTimeInRange stattfinden würde, wie von euch bereits angemerkt.... Dazu fehllt mir gerade die Fantasie...

                      //Automatik Block für Rolladen Gaeste WC runter
                      on({id: 'hm-rpc.0.PEQ0XXXX.1.BRIGHTNESS', change: "ne"}, function (obj) {
                         	var Helligkeit = obj.state.val;
                      	var BehanghoeheGaesteWC = getState('hm-rpc.0.OEQXXXXXX.1.LEVEL').val;
                      	var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
                      	var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
                      	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
                      	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
                      		if (Helligkeit <=40 && BehanghoeheGaesteWC >= 1 && AutomatikGesamt === true && AutomatikGaesteWC === true && Brand === 0 && Alarm === false && isTimeInRange('18:30:00', '23:00:00')) {
                                  setStateDelayed('hm-rpc.0.OEQ13xxxxx.1.LEVEL', 0, 1000);
                                  if('hm-rpc.0.OEQ1xxxxx.1.LEVEL', 0);
                                  console.log('Rolladen Gaeste WC geschlossen'); 
                      	}
                      });
                      
                      1 Antwort Letzte Antwort
                      0
                      • smartboartS Offline
                        smartboartS Offline
                        smartboart
                        schrieb am zuletzt editiert von
                        #11

                        Wenn ich nur morgens und abends ein shedule laufen lassen möchte, z.B für dieses Rolladen Programm kann man das dann so machen? siehe Script unten…

                        Liber würde ich anstatt TimeInRange ein Zeitfenster anhand von astro definieren, wie oben von htrecksler geschrieben...Z.B

                        1h vor sunrise - 1h nach sunriseEnd

                        1h vor sunsetStart - 1h nach sunset

                        Habe hier im Forum unter

                        viewtopic.php?f=21&t=4053&p=161095#p161095

                        dieses Script von Paul53 gefunden und entsprechend abgeändert.

                        Frage ist nun ob es denn so Lauffähig wäre? oder besser wie man

                        1h vor sunrise - 1h nach sunriseEnd

                        1h vor sunsetStart - 1h nach sunset

                        integriert...

                        var timer = null;
                        
                        function myFunction() {
                                  // Mein eigentliches Programm
                        }
                        
                        schedule({isTimeInRange('18:30:00', '23:00:00'))}, function () {
                          if(timer) clearSchedule(timer);
                          timer = schedule("*/1 * * * *", myFunction);
                        });
                        
                        schedule({isTimeInRange('06:30:00', '10:00:00'))}, function () {
                          if(timer) clearSchedule(timer);
                          timer = schedule("*/1 * * * *", myFunction);
                        });
                        
                        // Script start
                        if(isTimeInRange('10:00:00', '18:30:00')) timer = null
                        else timer = schedule("*/1 * * * *", myFunction);
                        
                        1 Antwort Letzte Antwort
                        0
                        • smartboartS Offline
                          smartboartS Offline
                          smartboart
                          schrieb am zuletzt editiert von
                          #12

                          So teile mal mein Script wie ich es nun mit einem Rolladen im Gäste WV verproben werde.

                          1 Block für Automatik auf Gäste WC

                          1Block für Automatik zu Gaeste WC

                          1 Block für zu bei hohen Temperaturen Gaeste WC

                          1 Block für alle Rolläden zu bei Sturm

                          1 Block für alle Rolläden hoch bei Feuer

                          1 Block für Rolladen Kellertreppe hoch bei Feuer

                          Alle Rolläden hoch bei Alarm habe ich in der Alarmanlage integriert…

                          Das geht bestimmt alles schöner und Resourcenschonender, aber fürs erste Selbstgebaute .... Vorhanden Scripte umstricken ist kein Problem. Habe aber nix gefunden , deshalb hier meine Gehversuche....

                          //Rolladen Script
                          
                          //States für Manuell und Automatik Vorwahl in Vis
                          createState('javascript.0.Rolladen.Gesamt.Automatik', '');
                          createState('javascript.0.Rolladen.GaesteWC.Automatik', '');
                          createState('javascript.0.Rolladen.Kueche.Automatik', '');
                          createState('javascript.0.Rolladen.Speisekammer.Automatik', '');
                          createState('javascript.0.Rolladen.Esstisch.Automatik', '');
                          createState('javascript.0.Rolladen.CouchLinks.Automatik', '');
                          createState('javascript.0.Rolladen.CouchMitte.Automatik', '');
                          createState('javascript.0.Rolladen.CouchRechts.Automatik', '');
                          createState('javascript.0.Rolladen.Terassentuer.Automatik', '');
                          createState('javascript.0.Rolladen.Schlafzimmer.Automatik', '');
                          createState('javascript.0.Rolladen.Bad.Automatik', '');
                          createState('javascript.0.Rolladen.Buero.Automatik', '');
                          createState('javascript.0.Rolladen.Ankleidezimmer.Automatik', '');
                          
                          //Automatik Block für Rolladen Gaeste WC runter
                          on({id: 'jhm-rpc.0.PEQXXXX.1.BRIGHTNESS'} , function(obj){
                                 var ZeitfensterAbend = obj.state.val;
                          	var Helligkeit = getState ('hm-rpc.0.PEQXXXX.1.BRIGHTNESS').val;
                          	var BehanghoeheGaesteWC = getState('hm-rpc.0.OEQXXXX.1.LEVEL').val;
                          	var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
                          	var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
                          	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
                          	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
                          		if (ZeitfensterAbend === true && Helligkeit <=40 && BehanghoeheGaesteWC >= 1 && AutomatikGesamt === true && AutomatikGaesteWC === true && Brand === 0 && Alarm === false) {
                                      setStateDelayed('hm-rpc.0.OEQXXXX.1.LEVEL', 0, 1000);
                                      if('hm-rpc.0.OEQXXXX.1.LEVEL', 0);
                                      console.log('Rolladen Gaeste WC geschlossen'); 
                          	}
                          });
                          
                          //Automatik Block für Rolladen Gaeste WC hoch	
                          on({id: 'hm-rpc.0.PEQXXXX.1.BRIGHTNESS' }, function(obj){
                          	var ZeitfensterMorgen = obj.state.val;
                                  var Helligkeit = getState ('hm-rpc.0.PEQXXXX.1.BRIGHTNESS').val;
                          	var BehanghoeheGaesteWC = getState('hm-rpc.0.OEQXXXX.1.LEVEL').val;
                          	var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
                          	var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
                          		if (ZeitfensterMorgen === true && Helligkeit >60 && BehanghoeheGaesteWC <= 95 && AutomatikGesamt === true && AutomatikGaesteWC === true )) {
                          	setStateDelayed('hm-rpc.0.OEQXXXX.1.LEVEL', 100, 1000);
                                      if('hm-rpc.0.OEQXXXX.1.LEVEL', 100);
                                      console.log('Rolladen Gaeste WC geöffnet');
                              }	
                          });
                          
                          //Automatik Block für Rolladen Gaeste WC runter bei hohen Temperaturen
                          on({id: 'Temp aussen eintragen' }, function(obj){
                          	var ZeitfensterMittag = obj.state.val;
                          	var Helligkeit = getState ('hm-rpc.0.PEQXXXX.1.BRIGHTNESS').val;
                          	var RaumTemp = getState ('ID Raum Tempsensor eintragen').val; 
                          	var TempAussen = getState ('ID  Tempsensor Aussen eintragen').val; 
                          	var BehanghoeheGaesteWC = getState('hm-rpc.0.OEQXXXX.1.LEVEL').val;
                          	var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
                          	var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
                          	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
                          	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
                          		if (ZeitfensterAMittag === true && RaumTemp >= 25 && TempAussen >= 28 && Helligkeit >=100 && BehanghoeheGaesteWC >= 40 && AutomatikGesamt === true && AutomatikGaesteWC === true && Brand === 0 && Alarm === false) {
                                      setStateDelayed('hm-rpc.0.OEXXXX.1.LEVEL', 35, 1000);
                                      if('hm-rpc.0.OEQXXXX.1.LEVEL', 35);
                                      console.log('Rolladen Gaeste WC wegen hohen Temperaturen geschlossen'); 
                              }	
                          });
                          
                          // Alle Rollos bei Sturm runter
                          on({id: 'Sturm ID eintragen', change: "ne"}, function (obj) {
                          	var Sturm = obj.state.val;
                          	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
                          	var RollosOffen = getState ('javascript.0.Status.Rolladen.Anzahl_offen')
                          	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
                          		if (Sturm >=100 && Alarm === false && RollosOffen >=1 && Brand === 0 ) {
                                      setState('scene.Alarm_alle_Rollos_hoch',0);
                                      if('scene.Alarm_alle_Rollos_hoch',0);
                                      console.log('Rolläden geschlossen wegen Sturm');
                          		}
                          });    
                          
                          // Alle Rollos bei Feuer hoch
                          on({id: 'javascript.0.Status.Brandmelder.Anzahl_melden_Brand' }, function (obj) {
                          	var Brand = obj.state.val;
                          		if (Brand >= 1) {
                                      setState('scene.Alarm_alle_Rollos_hoch',100);
                                      if('scene.Alarm_alle_Rollos_hoch',100);
                                      console.log('Rollaeden geöffnet wegen Brand');
                              }
                          });  
                          // Rolladen Kellertreppe bei Feuer hoch
                          on({id: 'javascript.0.Status.Brandmelder.Anzahl_melden_Brand' }, function (obj) {
                          	var Brand = obj.state.val;
                          	var BehanghoeheKellertreppe = getState('hm-rpc.0.OEQXXXX.1.LEVEL').val;
                          		if (Brand >= 1 && BehanghoeheKellertreppe <= 99 ) {
                                      setState('hm-rpc.0.OEQXXXX.1.LEVEL',100);
                                      if('hm-rpc.0.OEQXXXX.1.LEVEL',100);
                                      console.log('Rollaeden Kellertreppe geöffnet wegen Brand');
                              }
                          });  
                          
                          
                          1 Antwort Letzte Antwort
                          0
                          • smartboartS Offline
                            smartboartS Offline
                            smartboart
                            schrieb am zuletzt editiert von
                            #13

                            Hallo Leute, also nach ein paar Tagen im Betrieb, kann ich sagen, dass das Script macht was es soll…

                            Mir ist nur aufgefallen, dass wenn ich mein System / Tinkerboard reboote, meine Rolläden nach unten fahren...

                            Kann man das irgendwie umgehen? Objekt IDs mit nem true oder false vorbelegen, bis der State durch erneutes senden überschrieben wird oder ander Lösungsansaätze?

                            1 Antwort Letzte Antwort
                            0
                            • F Offline
                              F Offline
                              fraeggle
                              schrieb am zuletzt editiert von
                              #14

                              @smartboart:

                              Hallo Leute, also nach ein paar Tagen im Betrieb, kann ich sagen, dass das Script macht was es soll…

                              Mir ist nur aufgefallen, dass wenn ich mein System / Tinkerboard reboote, meine Rolläden nach unten fahren...

                              Kann man das irgendwie umgehen? Objekt IDs mit nem true oder false vorbelegen, bis der State durch erneutes senden überschrieben wird oder ander Lösungsansaätze? `

                              De hast ja auch log in der Console drin.. Steht da warum die Runterfahren? Weil Normalerweise werden durch den Neustart nicht unbedingt der Status von variablen geändert. Wenn ich mein System neu starte sind die Werte die gleichen wie vor dem Neustart.

                              Ansonsten Scripte deaktivieren und der Reihe nach aktivieren um rauszufinden woher das kommt. (dürfte hier auch nicht so viel sein, weil die Rolladen ja "nur" bei bestimmten Aktionen runterfahren)

                              Gruß Peter

                              1 Antwort Letzte Antwort
                              0
                              • smartboartS Offline
                                smartboartS Offline
                                smartboart
                                schrieb am zuletzt editiert von
                                #15

                                Danke für die Idee, das habe ich ausprobiert, ein neu Starten der Scripte verursacht das nicht. Auch ein neu Starten des HM Adapters oder javascript adapter nicht….IAls letztes habe ich die Homematic PivCCU...über die webUI neu gestartet, auch nicht...

                                Passiert wirklich nur bei einem kompletten reboot oder neu Starten des Systems... Hm sollte ja nicht so oft vorkommen...Aber würde mich doch interessieren wie das sein kann...

                                Die Logs schaue ich mir beim nächsten reboot mal an, keine ahnung wieviel uhr das war...Finden den Zeitpunkt nicht...Hoffe das gibt mehr aufschluss..

                                1 Antwort Letzte Antwort
                                0
                                • smartboartS Offline
                                  smartboartS Offline
                                  smartboart
                                  schrieb am zuletzt editiert von
                                  #16

                                  Also das log sagt mir, dass das Script für das Herunterfahren der Rolläden nach einem Reboot des Tinkerboard verantwortlich ist.

                                  Verstehe das nicht.

                                  Einige Bedingungen sind im besagten Fall immer gegeben, ich könnte das reduzieren auf den Trigger Helligkeit selbst, welcher ja immer wieder seinen Status sendet.

                                  Der Wert ist allerdings so niedrig, dass er nicht zum tragen kommen dürfte…immmerhin waren die Werte ja so hoch das der Rolladen noch oben war.

                                  Ich vermute, dass der HM Bewegungsmelder seine Helligkeitswerte nach dem Reboot falsch liefert.

                                  Jemand eine Idee wie ich das verhindern kann?

                                  Ansonsten werde ich den Trigger auf die Wetterstation / Weatherman legen und damit ausprobieren.

                                  //Automatik Block für Rolladen Gaeste WC runter
                                  on({id: 'hm-rpc.0.PEQxxxxxx.1.BRIGHTNESS'}, function(obj){
                                      var ZeitfensterAbend = getState('javascript.0.Rolladen.ZeitfensterAbend').val;
                                  	var Helligkeit = getState ('hm-rpc.0.PEQ0xxxxxx.1.BRIGHTNESS').val;
                                  	var BehanghoeheGaesteWC = getState('hm-rpc.0.OEQ1xxxxxx.1.LEVEL').val;
                                  	var AutomatikGesamt = getState('javascript.0.Rolladen.Gesamt.Automatik').val;
                                  	var AutomatikGaesteWC = getState('javascript.0.Rolladen.GaesteWC.Automatik').val;
                                  	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
                                  	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
                                  		if (ZeitfensterAbend === true && Helligkeit <=55 && BehanghoeheGaesteWC >= 1 && AutomatikGesamt === true && AutomatikGaesteWC === true && Brand === 0 && Alarm === false) {
                                              setStateDelayed('hm-rpc.0.OEQ13xxxxxx.1.LEVEL', 0, 1000);
                                              if('hm-rpc.0.OEQ1xxxxxx.1.LEVEL', 0);
                                              console.log('Rolladen Gaeste WC geschlossen'); 
                                  	}
                                  });
                                  
                                  1 Antwort Letzte Antwort
                                  0
                                  • smartboartS Offline
                                    smartboartS Offline
                                    smartboart
                                    schrieb am zuletzt editiert von
                                    #17

                                    so hier nun das fertige Script mit allen Schnick Schnack und den verschiedensten Fahrprogrammen und Bedingungen..

                                    Etwas aufgeräumt und optimiert..

                                    //Rolladen Script
                                    
                                    //States für Manuell und Automatik Vorwahl in Vis
                                    createState('javascript.0.Rolladen.Gesamt.EGAutomatik', {def: 'false', type: 'boolean', name: 'Rolladen Gesamt EG Automatik aktivieren'});
                                    createState('javascript.0.Rolladen.Couch.Automatik', {def: 'false', type: 'boolean', name: 'Rolladen Couch Automatik aktivieren'});
                                    
                                    const id1 = 'wiffi-wz.0.root.192_168_xx_XX.w_windstaerke'; //Sturm
                                    const id2 = 'hm-rpc.0.PEQ03xxxxxx.1.BRIGHTNESS'; //Helligkeit
                                    const id3 = 'wiffi-wz.0.root.192_168_xx_xx.w_sonne_scheint'; //Sonne
                                    const id4 = 'javascript.0.Status.Brandmelder.Anzahl_melden_Brand'; //Brand
                                    const id5 = 'javascript.0.alarm.out.alarm_intern'; //Alarmanlage
                                    const id6 = 'wiffi-wz.0.root.192_168_xx_xx.w_rain_status'; //Regen
                                    const id7 = 'javascript.0.Anwesenheitssteuerung.BewohnerAnwesend'; //Anwesend
                                    
                                    const idRolloCouch = 'hm-rpc.0.OEQ12xxxxxx.1.LEVEL'; //Rolladen Couch
                                    
                                    function Rolladen() { 
                                        console.log('Rolladen Couch trigger aktiv '); 
                                    	var Sturm = getState ('wiffi-wz.0.root.192_168_xx_xxx.w_windstaerke').val;
                                     	var Alarm = getState('javascript.0.alarm.out.alarm_intern').val;
                                    	var Brand = getState ('javascript.0.Status.Brandmelder.Anzahl_melden_Brand').val;
                                    	var ZeitfensterMorgen = getState ('javascript.0.Rolladen.ZeitfensterMorgen').val;
                                    	var ZeitfensterAbend = getState ('javascript.0.Rolladen.ZeitfensterAbend').val;
                                    	var Helligkeit = getState ('hm-rpc.0.PEQ039xxxxx.1.BRIGHTNESS').val;
                                    	var AussenTemp = getState ('wiffi-wz.0.root.192_168_xx_xx.w_temperature').val;
                                    	var Regen = getState ('wiffi-wz.0.root.192_168_xx_xx.w_rain_status').val;
                                    	var BehanghoeheCouch = getState('hm-rpc.0.OEQ129xxxxx.1.LEVEL').val;
                                    	var AutomatikEG = getState('javascript.0.Rolladen.Gesamt.EGAutomatik').val;
                                    	var AutomatikCouch = getState('javascript.0.Rolladen.Couch.Automatik').val;
                                    	var Sonne = getState('wiffi-wz.0.root.192_168_xxx_xx.w_sonne_scheint').val;
                                    	var FensterCouchRechts = getState('hm-rpc.0.OEQ1434xxxx.1.STATE').val;
                                        var FensterCouchMitte = getState('hm-rpc.0.OEQ143xxxx.1.STATE').val;
                                        var FensterCouchLinks = getState('hm-rpc.0.OEQ1197xxxx.1.STATE').val;
                                        var Anwesend = getState('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend').val;
                                         // Rollos hoch
                                            if (( Brand >= 1 || Alarm === true) || (ZeitfensterMorgen === true && Helligkeit >= 40 && BehanghoeheCouch <= 95 && AutomatikEG === true && AutomatikCouch === true)) {
                                    			setStateDelayed(idRolloCouch, 100, 1800);//zeitverzögerung Addition pro Rolladen um 600ms
                                                if(idRolloCouch, 100);
                                                console.log('Rolladen Couch offen');
                                            }else{ 
                                        //Rollo runter        
                                                if ((ZeitfensterAbend === true && FensterCouchRechts === false && FensterCouchMitte === false && FensterCouchLinks === false && Helligkeit <= 10 && BehanghoeheCouch >= 20 && AutomatikEG === true && AutomatikCouch === true && Brand === 0 && Alarm === false) || ( Sturm >= 6 && BehanghoeheCouch >=0 && Brand === 0 && Alarm === false) || ((Regen === true || Anwesend ===false ) && (FensterCouchRechts === true || FensterCouchLinks === true || FensterCouchMitte === true ) && BehanghoeheCouch >= 0 && Brand === 0 && Alarm === false ))  {
                                    			setStateDelayed(idRolloCouch, 0, 1800);
                                                if(idRolloCouch, 0);
                                                console.log('Rolladen Couch geschlossen');
                                                 }else{ 
                                        // Rollor runter auf 50 % Sicht wegen Sonne und Temp            
                                                    if (isTimeInRange('13:00:00', '19:30:00') && Sonne === true && BehanghoeheCouch >= 55 && AutomatikEG === true && AutomatikCouch === true && Brand === 0 && Alarm === false && Aussentemp >= 26)  {
                                                      setStateDelayed(idRolloCouch, 50, 1800);
                                                      if(idRolloCouch, 50);
                                                      console.log('Rolladen Couch wegen Sonne und hoher Temp. auf 50% Sicht gefahren ');  
                                                            }
                                                        }
                                                    } 
                                                }
                                    Rolladen(); // Skriptstart
                                    
                                    on(id1, function(dp) {
                                       Sturm = dp.state.val;
                                       Rolladen();
                                    });      
                                    on(id2, function(dp) {
                                       Helligkeit = dp.state.val;
                                       Rolladen();
                                    });  
                                    on(id3, function(dp) {
                                       Sonne = dp.state.val;
                                       Rolladen();
                                    });  
                                    on(id4, function(dp) {
                                       Brand = dp.state.val;
                                       Rolladen();
                                    });  
                                    on(id5, function(dp) {
                                       Alarm = dp.state.val;
                                       Rolladen();
                                    });  
                                    on(id6, function(dp) {
                                       Regen = dp.state.val;
                                       Rolladen();
                                    }); 
                                    on(id7, function(dp) {
                                       Anwesend = dp.state.val;
                                       Rolladen();
                                    });
                                    
                                    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

                                    436

                                    Online

                                    32.5k

                                    Benutzer

                                    81.7k

                                    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