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. Markisen Steuerung

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Markisen Steuerung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
18 Beiträge 3 Kommentatoren 499 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.
  • M michihorn

    Die Uhrzeit für das Einfahren kann während des laufenden Skripts nicht verändert werden.
    Ok das habe ich jetzt mal so gelöst:

    //Uhrzeit
    const OffTime = { hour: getState(idStd).val, minute: getState(idMin).val };
    schedule(OffTime, RunDailyEinf);
    function RunDailyEinf() {
        if (getState(idHand).val == false) {
            setState(id_Auslöser, "Uhrzeit");
            setState(idEinf, true);
            setState(idAusf, false);
        }
    };
    
    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #8

    @michihorn sagte: das habe ich jetzt mal so gelöst:

    Damit bleibt es dabei, dass die Uhrzeit konstant bleibt. So funktioniert es mit Änderung der Uhrzeit:

    function RunDailyEinf() {
        if (!getState(idHand).val) {
            setState(id_Auslöser, "Uhrzeit");
            setState(idEinf, true);
            setState(idAusf, false);
        }
    }
    //Uhrzeit
    var OffTime = schedule(getState(idMin).val + ' ' + getState(idStd).val + ' * * *', RunDailyEinf);
    on([idMin, idStd], function() {
        clearSchedule(OffTime);
        OffTime = schedule(getState(idMin).val + ' ' + getState(idStd).val + ' * * *', RunDailyEinf);
    });
    

    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

    M 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @michihorn sagte: das habe ich jetzt mal so gelöst:

      Damit bleibt es dabei, dass die Uhrzeit konstant bleibt. So funktioniert es mit Änderung der Uhrzeit:

      function RunDailyEinf() {
          if (!getState(idHand).val) {
              setState(id_Auslöser, "Uhrzeit");
              setState(idEinf, true);
              setState(idAusf, false);
          }
      }
      //Uhrzeit
      var OffTime = schedule(getState(idMin).val + ' ' + getState(idStd).val + ' * * *', RunDailyEinf);
      on([idMin, idStd], function() {
          clearSchedule(OffTime);
          OffTime = schedule(getState(idMin).val + ' ' + getState(idStd).val + ' * * *', RunDailyEinf);
      });
      
      M Online
      M Online
      michihorn
      schrieb am zuletzt editiert von
      #9

      @paul53 Wie kann ich das ändern?

      paul53P 1 Antwort Letzte Antwort
      0
      • M michihorn

        @paul53 Wie kann ich das ändern?

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #10

        @michihorn sagte: Wie kann ich das ändern?

        Was ändern?

        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

        M 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @michihorn sagte: Wie kann ich das ändern?

          Was ändern?

          M Online
          M Online
          michihorn
          schrieb am zuletzt editiert von
          #11

          @paul53 das die Uhrzeit auch im laufenden Programm geändert werden kann

          paul53P 1 Antwort Letzte Antwort
          0
          • M michihorn

            @paul53 das die Uhrzeit auch im laufenden Programm geändert werden kann

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #12

            @michihorn sagte: die Uhrzeit auch im laufenden Programm geändert werden kann

            Das habe ich hier gezeigt.

            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

            1 Antwort Letzte Antwort
            0
            • M michihorn

              Hallo habe meine Tahoma Markisen über Iobroker gesteuert, leider klappt das mit dieser Version nur Suboptimal.

              /*****Steuerung Markisen Wintergarten *****************************************
              **    März 2022
              **    TAHOMA
              **    (0 = OBEN), (100 = UNTEN)
              **    erstellt: 23.03.22
              **    geändert: 21.04.22
              ********************************************************************************/
              
              var logging = true;
              const idAdapt = "tahoma.0.info.connection"
              const idRolloL = 'tahoma.0.devices.Markisse_Links.states.core:DeploymentState'
              const idRolloR = 'tahoma.0.devices.Markisse_Rechts.states.core:DeploymentState'
              const idTemp = 'hm-rpc.0.OEQ0128317.1.TEMPERATURE' //Sensor Wintergarten
              const idLichtsensor = 'hm-rpc.2.00185BE98B3FCA.1.ILLUMINATION' //Wetterstation
              const idStd = "javascript.0.Garten.Markisse.R_stunde"
              const idMin = "javascript.0.Garten.Markisse.R_minute"
              const idSW_Temp = 'javascript.0.Garten.Markisse.SW_Temp'; // Auslösewert Temp
              const idLux = 'javascript.0.Garten.Markisse.SW_Lux'; // Auslösewert Lux
              const idLuxEinf = "javascript.0.Garten.Markisse.SW_LuxEinF"
              const id_Auslöser = "0_userdata.0.Garten.Tahoma.Markise.Auslöser"
              
              const idRegen = 'hm-rpc.2.00185BE98B3FCA.1.RAINING'  //Wetterstation
              const id_Anw = "0_userdata.0.Haus.AW.AW"
              const idWind = 'hm-rpc.2.00185BE98B3FCA.1.WIND_SPEED';  //Wetterstation
              const idHand = 'javascript.0.Garten.Markisse.Hand'
              
              const idMLStatus = "0_userdata.0.Garten.Tahoma.Markise.StatusL";
              const idMRStatus = "0_userdata.0.Garten.Tahoma.Markise.StatusR";
              
              const id_MarkisseEXEEinf = "tahoma.0.actionGroups.Markisse_Einfahren.commands.execute"
              const id_MarkisseEXEAusf = "tahoma.0.actionGroups.Markisse_Ausfahren.commands.execute"
              const idEinf = "0_userdata.0.Garten.Tahoma.Markise.Einf"
              const idAusf = "0_userdata.0.Garten.Tahoma.Markise.Ausf"
              
              const js = 'system.adapter.javascript.3'
              var Std = getState(idStd).val
              var Min = getState(idMin).val
              var SW_Lux = getState(idLux).val;
              var SW_LuxEinf = getState(idLuxEinf).val;
              var grund;
              var text;
              
              
              //******EINFAHREN***************************************************************************
              //Uhrzeit
              schedule({ hour: Std, minute: Min }, RunDailyEinf);
              function RunDailyEinf() {
                  if (getState(idHand).val == false) {
                      setState(id_Auslöser, "Uhrzeit");
                      setState(idEinf, true);
                      setState(idAusf, false);
                  }
              };
              //Regen
              on({ id: idRegen, val: true }, function (dp) {
                  if (getState(id_Auslöser).val != "Regen") {
                      setState(id_Auslöser, "Regen");
                      setState(idEinf, true);
                      setState(idAusf, false);
                  }
              });
              //LUX
              on({ id: idLichtsensor, valLe: SW_LuxEinf, oldValGt: SW_LuxEinf }, function (dp) {
                  log("1.Trigger gesetzt");
                  if (getState(id_Auslöser).val != "Bewölkung/Helligkeit") {
                      log("2.Kommando Einfahren gesendet");
                      setState(id_Auslöser, "Bewölkung/Helligkeit");
                      setState(idEinf, true); //-->Zeile 109
                      setState(idAusf, false); //-->Zeile 113
                  }
              
              });
              
              //******AUSFAHREN**************************************************************************** 
              on({ id: idLichtsensor, valGt: SW_Lux, oldValLe: SW_Lux }, function (dp) {
                  log("1.Trigger gesetzt");
                  if ((getState(id_Anw).val == true) && (getState(idTemp).val >= (getState(idSW_Temp).val))) {
                      log("2.Bedingung Licht/Temp erfüllt");
                      //if (compareTime('08:45', '16:00', 'between') && (getState(idRegen).val == false) && (getState(idHand).val == false)) {
                      if (compareTime('08:45', '16:00', 'between') && (getState(idRegen).val == false)) {
                          log("3.Ausfahrbedingungen OK");
                          if (getState(id_Auslöser).val != "Sonnenschutz") {
                              log("4.Kommando Ausfahren gesendet");
                              setState(id_Auslöser, "Sonnenschutz");
                              setState(idEinf, false) //-->Zeile 109
                              setState(idAusf, true) //-->Zeile 113
                          }
                      }
                  }
              });
              //******************************************************************************************
              //Änderung feststellen
              
              schedule("* * * * *", function () {
                  if (getState(idRolloL).val > 0) {
                      setState(idMLStatus, "Ausgef.")
                  } else {
                      if (getState(idRolloL).val == 0) {
                          setState(idMLStatus, "Eingef.")
                      }
                  }
                  if (getState(idRolloR).val > 0) {
                      setState(idMRStatus, "Ausgef.")
                  } else {
                      if (getState(idRolloR).val == 0) {
                          setState(idMRStatus, "Eingef.")
                      }
                  }
              });
              
              on({ id: idEinf, val: true }, function (dp) {  //<--Zeile 68
                  setState(id_MarkisseEXEEinf, true);
                  setStateDelayed(id_MarkisseEXEEinf, false, 52000);
              });
              on({ id: idAusf, val: true }, function (dp) {  //<--Zeile 84
                  setState(id_MarkisseEXEAusf, true);
                  setStateDelayed(id_MarkisseEXEAusf, false, 52000);
              });
              var timer = null;
              var triggermarkB = [id_MarkisseEXEEinf, id_MarkisseEXEAusf];
              on({ id: triggermarkB, change: 'ne' }, function (dp) {
                  if ((getState(id_MarkisseEXEEinf).val == true) || (getState(id_MarkisseEXEAusf).val == true)) {
                      if (logging && !timer) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938149' });
                      timer = setTimeout(function () {
                          timer = null;
                          text = '\ud83c\udf1e *Markisse Status:*\n  Links: ' + getState(idRolloL).val + '\n' + "  Rechts: " + getState(idRolloR).val + '\n' + getState(id_Auslöser).val
                          createEventlog("Markisse Bewegung", text)
                          log(text);
                      }, 60000);
                  }
              });
              
              on({ time: { hour: 23, minute: 59 } }, function () {
                  setState(id_Auslöser, "");
                  setState(idHand, false);
                  setState(idEinf, "");
                  setState(idAusf, "");
              });
              

              Würde mich über Verbesserungsvorschläge freuen.
              Michael

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #13

              @michihorn sagte: Würde mich über Verbesserungsvorschläge freuen.

              /*****Steuerung Markisen Wintergarten *****************************************/
              
               
              const logging = true;
              const idAdapt = "tahoma.0.info.connection"
              const idRolloL = 'tahoma.0.devices.Markisse_Links.states.core:DeploymentState'
              const idRolloR = 'tahoma.0.devices.Markisse_Rechts.states.core:DeploymentState'
              const idTemp = 'hm-rpc.0.OEQ0128317.1.TEMPERATURE' //Sensor Wintergarten
              const idLichtsensor = 'hm-rpc.2.00185BE98B3FCA.1.ILLUMINATION' //Wetterstation
              const idStd = "javascript.0.Garten.Markisse.R_stunde"
              const idMin = "javascript.0.Garten.Markisse.R_minute"
              const idSW_Temp = 'javascript.0.Garten.Markisse.SW_Temp'; // Auslösewert Temp
              const idLux = 'javascript.0.Garten.Markisse.SW_Lux'; // Auslösewert Lux
              const idLuxEinf = "javascript.0.Garten.Markisse.SW_LuxEinF"
              const id_Auslöser = "0_userdata.0.Garten.Tahoma.Markise.Auslöser"
               
              const idRegen = 'hm-rpc.2.00185BE98B3FCA.1.RAINING'  //Wetterstation
              const id_Anw = "0_userdata.0.Haus.AW.AW"
              const idWind = 'hm-rpc.2.00185BE98B3FCA.1.WIND_SPEED';  //Wetterstation
              const idHand = 'javascript.0.Garten.Markisse.Hand'
               
              const idMLStatus = "0_userdata.0.Garten.Tahoma.Markise.StatusL";
              const idMRStatus = "0_userdata.0.Garten.Tahoma.Markise.StatusR";
               
              const id_MarkisseEXEEinf = "tahoma.0.actionGroups.Markisse_Einfahren.commands.execute"
              const id_MarkisseEXEAusf = "tahoma.0.actionGroups.Markisse_Ausfahren.commands.execute"
              // const idEinf = "0_userdata.0.Garten.Tahoma.Markise.Einf"
              const idAusf = "0_userdata.0.Garten.Tahoma.Markise.Ausf"
               
              // const js = 'system.adapter.javascript.3'
              var SW_Lux = getState(idLux).val;
              var SW_LuxEinf = getState(idLuxEinf).val;
              // var grund;
               
              //******EINFAHREN***************************************************************************
              
              function RunDailyEinf() {
                  if (!getState(idHand).val) {
                      setState(id_Auslöser, "Uhrzeit", true);
                      setState(idAusf, false, true);
                  }
              }
              //Uhrzeit
              var OffTime = schedule(getState(idMin).val + ' ' + getState(idStd).val + ' * * *', RunDailyEinf);
              on([idMin, idStd], function() {
                  clearSchedule(OffTime);
                  OffTime = schedule(getState(idMin).val + ' ' + getState(idStd).val + ' * * *', RunDailyEinf);
              });
              
              //Regen
              on({id: idRegen, val: true}, function() {
                  if (getState(id_Auslöser).val != "Regen") {
                      setState(id_Auslöser, "Regen", true);
                      setState(idAusf, false, true);
                  }
              });
              //LUX
              on({ id: idLichtsensor, valLe: SW_LuxEinf, oldValGt: SW_LuxEinf }, function() {
                  log("1.Trigger gesetzt");
                  if (getState(id_Auslöser).val != "Bewölkung/Helligkeit") {
                      log("2.Kommando Einfahren gesendet");
                      setState(id_Auslöser, "Bewölkung/Helligkeit", true);
                      setState(idAusf, false, true); //-->Zeile 90
                  }
              });
               
              //******AUSFAHREN**************************************************************************** 
              on({id: idLichtsensor, valGt: SW_Lux, oldValLe: SW_Lux}, function() {
                  log("1.Trigger gesetzt");
                  if (getState(id_Anw).val && getState(idTemp).val >= getState(idSW_Temp).val) {
                      log("2.Bedingung Licht/Temp erfüllt");
                      //if (compareTime('08:45', '16:00', 'between') && (getState(idRegen).val == false) && (getState(idHand).val == false)) {
                      if (compareTime('08:45', '16:00', 'between') && !getState(idRegen).val) {
                          log("3.Ausfahrbedingungen OK");
                          if (getState(id_Auslöser).val != "Sonnenschutz") {
                              log("4.Kommando Ausfahren gesendet");
                              setState(id_Auslöser, "Sonnenschutz", true);
                              setState(idAusf, true, true) //-->Zeile 90
                          }
                      }
                  }
              });
              
              //Änderung feststellen
              schedule("* * * * *", function () {
                  setState(idMLStatus, getState(idRolloL).val > 0 ? 'Ausgef.' : 'Eingef.', true);
                  setState(idMRStatus, getState(idRolloR).val > 0 ? 'Ausgef.' : 'Eingef.', true);
              });
               
              on(idAusf, function (dp) {
                  if(dp.state.val) {
                      setState(id_MarkisseEXEAusf, true);
                      setStateDelayed(id_MarkisseEXEAusf, false, 52000);
                  } else {
                      setState(id_MarkisseEXEEinf, true);
                      setStateDelayed(id_MarkisseEXEEinf, false, 52000);
                  }
              });
              
              const triggermarkB = [id_MarkisseEXEEinf, id_MarkisseEXEAusf];
              on({id: triggermarkB, change: 'ne', val: false}, function() {
                  setTimeout(function() {
                      let text = '\ud83c\udf1e *Markise Status:*\n  Links: ' + getState(idRolloL).val + '\n' + "  Rechts: " + getState(idRolloR).val + '\n' + getState(id_Auslöser).val;
                      if(logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938149' });
                      createEventlog("Markise Status", text);
                      log(text);
                  }, 20000); // 20 s Abfrageintervall
              });
               
              schedule('0 0 * * *', function() {
                  setState(id_Auslöser, "", true);
                  setState(idHand, false, true);
              });
              

              createEventlog() ist eine globale Funktion?

              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

              M 1 Antwort Letzte Antwort
              0
              • M michihorn

                @arteck Ab Zeile 119 ist ein Fehler, dass Script sendet mir die Zustände der Markisen per Whatsapp, beim Einfahren werden offenbar die Zustände zu früh abgegriffen so das 46% angezeigt wird. Endzustand sollte 0% sein
                einfahren.png
                Beim Ausfahren sollte die Whatsapp 100% melden
                ausfahren.png

                Irgendwie komme ich gerade nicht weiter
                Michael

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #14

                @michihorn sagte: die Zustände zu früh abgegriffen so das 46% angezeigt wird.

                Der Adapter arbeitet mit Polling: Wenn als Abfrageintervall 20000 ms eingestellt sind, kann sich die Rückmeldung um bis zu 20 s verzögern.

                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

                1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @michihorn sagte: Würde mich über Verbesserungsvorschläge freuen.

                  /*****Steuerung Markisen Wintergarten *****************************************/
                  
                   
                  const logging = true;
                  const idAdapt = "tahoma.0.info.connection"
                  const idRolloL = 'tahoma.0.devices.Markisse_Links.states.core:DeploymentState'
                  const idRolloR = 'tahoma.0.devices.Markisse_Rechts.states.core:DeploymentState'
                  const idTemp = 'hm-rpc.0.OEQ0128317.1.TEMPERATURE' //Sensor Wintergarten
                  const idLichtsensor = 'hm-rpc.2.00185BE98B3FCA.1.ILLUMINATION' //Wetterstation
                  const idStd = "javascript.0.Garten.Markisse.R_stunde"
                  const idMin = "javascript.0.Garten.Markisse.R_minute"
                  const idSW_Temp = 'javascript.0.Garten.Markisse.SW_Temp'; // Auslösewert Temp
                  const idLux = 'javascript.0.Garten.Markisse.SW_Lux'; // Auslösewert Lux
                  const idLuxEinf = "javascript.0.Garten.Markisse.SW_LuxEinF"
                  const id_Auslöser = "0_userdata.0.Garten.Tahoma.Markise.Auslöser"
                   
                  const idRegen = 'hm-rpc.2.00185BE98B3FCA.1.RAINING'  //Wetterstation
                  const id_Anw = "0_userdata.0.Haus.AW.AW"
                  const idWind = 'hm-rpc.2.00185BE98B3FCA.1.WIND_SPEED';  //Wetterstation
                  const idHand = 'javascript.0.Garten.Markisse.Hand'
                   
                  const idMLStatus = "0_userdata.0.Garten.Tahoma.Markise.StatusL";
                  const idMRStatus = "0_userdata.0.Garten.Tahoma.Markise.StatusR";
                   
                  const id_MarkisseEXEEinf = "tahoma.0.actionGroups.Markisse_Einfahren.commands.execute"
                  const id_MarkisseEXEAusf = "tahoma.0.actionGroups.Markisse_Ausfahren.commands.execute"
                  // const idEinf = "0_userdata.0.Garten.Tahoma.Markise.Einf"
                  const idAusf = "0_userdata.0.Garten.Tahoma.Markise.Ausf"
                   
                  // const js = 'system.adapter.javascript.3'
                  var SW_Lux = getState(idLux).val;
                  var SW_LuxEinf = getState(idLuxEinf).val;
                  // var grund;
                   
                  //******EINFAHREN***************************************************************************
                  
                  function RunDailyEinf() {
                      if (!getState(idHand).val) {
                          setState(id_Auslöser, "Uhrzeit", true);
                          setState(idAusf, false, true);
                      }
                  }
                  //Uhrzeit
                  var OffTime = schedule(getState(idMin).val + ' ' + getState(idStd).val + ' * * *', RunDailyEinf);
                  on([idMin, idStd], function() {
                      clearSchedule(OffTime);
                      OffTime = schedule(getState(idMin).val + ' ' + getState(idStd).val + ' * * *', RunDailyEinf);
                  });
                  
                  //Regen
                  on({id: idRegen, val: true}, function() {
                      if (getState(id_Auslöser).val != "Regen") {
                          setState(id_Auslöser, "Regen", true);
                          setState(idAusf, false, true);
                      }
                  });
                  //LUX
                  on({ id: idLichtsensor, valLe: SW_LuxEinf, oldValGt: SW_LuxEinf }, function() {
                      log("1.Trigger gesetzt");
                      if (getState(id_Auslöser).val != "Bewölkung/Helligkeit") {
                          log("2.Kommando Einfahren gesendet");
                          setState(id_Auslöser, "Bewölkung/Helligkeit", true);
                          setState(idAusf, false, true); //-->Zeile 90
                      }
                  });
                   
                  //******AUSFAHREN**************************************************************************** 
                  on({id: idLichtsensor, valGt: SW_Lux, oldValLe: SW_Lux}, function() {
                      log("1.Trigger gesetzt");
                      if (getState(id_Anw).val && getState(idTemp).val >= getState(idSW_Temp).val) {
                          log("2.Bedingung Licht/Temp erfüllt");
                          //if (compareTime('08:45', '16:00', 'between') && (getState(idRegen).val == false) && (getState(idHand).val == false)) {
                          if (compareTime('08:45', '16:00', 'between') && !getState(idRegen).val) {
                              log("3.Ausfahrbedingungen OK");
                              if (getState(id_Auslöser).val != "Sonnenschutz") {
                                  log("4.Kommando Ausfahren gesendet");
                                  setState(id_Auslöser, "Sonnenschutz", true);
                                  setState(idAusf, true, true) //-->Zeile 90
                              }
                          }
                      }
                  });
                  
                  //Änderung feststellen
                  schedule("* * * * *", function () {
                      setState(idMLStatus, getState(idRolloL).val > 0 ? 'Ausgef.' : 'Eingef.', true);
                      setState(idMRStatus, getState(idRolloR).val > 0 ? 'Ausgef.' : 'Eingef.', true);
                  });
                   
                  on(idAusf, function (dp) {
                      if(dp.state.val) {
                          setState(id_MarkisseEXEAusf, true);
                          setStateDelayed(id_MarkisseEXEAusf, false, 52000);
                      } else {
                          setState(id_MarkisseEXEEinf, true);
                          setStateDelayed(id_MarkisseEXEEinf, false, 52000);
                      }
                  });
                  
                  const triggermarkB = [id_MarkisseEXEEinf, id_MarkisseEXEAusf];
                  on({id: triggermarkB, change: 'ne', val: false}, function() {
                      setTimeout(function() {
                          let text = '\ud83c\udf1e *Markise Status:*\n  Links: ' + getState(idRolloL).val + '\n' + "  Rechts: " + getState(idRolloR).val + '\n' + getState(id_Auslöser).val;
                          if(logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938149' });
                          createEventlog("Markise Status", text);
                          log(text);
                      }, 20000); // 20 s Abfrageintervall
                  });
                   
                  schedule('0 0 * * *', function() {
                      setState(id_Auslöser, "", true);
                      setState(idHand, false, true);
                  });
                  

                  createEventlog() ist eine globale Funktion?

                  M Online
                  M Online
                  michihorn
                  schrieb am zuletzt editiert von
                  #15

                  @paul53 JA

                  1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @michihorn sagte: Zum Thema Endstand der Markise habe ich 52 Sekunden ermittelt

                    Dann solltest Du Zeile 129 entsprechend ändern oder besser in Zeile 122 auf false prüfen, wobei dann die Verzögerung überflüssig ist.

                    EDIT:

                    const triggermarkB = [id_MarkisseEXEEinf, id_MarkisseEXEAusf];
                    on({id: triggermarkB, change: 'ne', val: false}, function() {
                        if(logging) {
                            let text = '\ud83c\udf1e *Markisse Status:*\n  Links: ' + getState(idRolloL).val + '\n' + "  Rechts: " + getState(idRolloR).val + '\n' + getState(id_Auslöser).val;
                            sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938149' });
                            createEventlog("Markisse Bewegung", text);
                            log(text);
                        }
                    });
                    
                    M Online
                    M Online
                    michihorn
                    schrieb am zuletzt editiert von
                    #16

                    @paul53 sagte in Markisen Steuerung:

                    @michihorn sagte: Zum Thema Endstand der Markise habe ich 52 Sekunden ermittelt

                    Dann solltest Du Zeile 129 entsprechend ändern oder besser in Zeile 122 auf false prüfen, wobei dann die Verzögerung überflüssig ist.

                    EDIT:

                    const triggermarkB = [id_MarkisseEXEEinf, id_MarkisseEXEAusf];
                    on({id: triggermarkB, change: 'ne', val: false}, function() {
                        if(logging) {
                            let text = '\ud83c\udf1e *Markisse Status:*\n  Links: ' + getState(idRolloL).val + '\n' + "  Rechts: " + getState(idRolloR).val + '\n' + getState(id_Auslöser).val;
                            sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938149' });
                            createEventlog("Markisse Bewegung", text);
                            log(text);
                        }
                    });
                    

                    Bei dieser Änderung wird sofort ohne Wartezeit der Status aus Tahoma abgegriffen. Gerade ist die Markise eingefahren sollte dann 0% anzeigen, Anzeige war aber 100%

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • M michihorn

                      @paul53 sagte in Markisen Steuerung:

                      @michihorn sagte: Zum Thema Endstand der Markise habe ich 52 Sekunden ermittelt

                      Dann solltest Du Zeile 129 entsprechend ändern oder besser in Zeile 122 auf false prüfen, wobei dann die Verzögerung überflüssig ist.

                      EDIT:

                      const triggermarkB = [id_MarkisseEXEEinf, id_MarkisseEXEAusf];
                      on({id: triggermarkB, change: 'ne', val: false}, function() {
                          if(logging) {
                              let text = '\ud83c\udf1e *Markisse Status:*\n  Links: ' + getState(idRolloL).val + '\n' + "  Rechts: " + getState(idRolloR).val + '\n' + getState(id_Auslöser).val;
                              sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938149' });
                              createEventlog("Markisse Bewegung", text);
                              log(text);
                          }
                      });
                      

                      Bei dieser Änderung wird sofort ohne Wartezeit der Status aus Tahoma abgegriffen. Gerade ist die Markise eingefahren sollte dann 0% anzeigen, Anzeige war aber 100%

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von paul53
                      #17

                      @michihorn sagte: Bei dieser Änderung wird sofort ohne Wartezeit der Status aus Tahoma abgegriffen.

                      Ich habe im Skript oben noch eine Verzögerung von 20 s ergänzt, um das Polling zu berücksichtigen. Außerdem wird jetzt auf false, also erst 52 s später als ursprünglich getriggert.

                      const triggermarkB = [id_MarkisseEXEEinf, id_MarkisseEXEAusf];
                      on({id: triggermarkB, change: 'ne', val: false}, function() {
                          setTimeout(function() {
                              let text = '\ud83c\udf1e *Markise Status:*\n  Links: ' + getState(idRolloL).val + '\n' + "  Rechts: " + getState(idRolloR).val + '\n' + getState(id_Auslöser).val;
                              if(logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938149' });
                              createEventlog("Markise Status", text);
                              log(text);
                          }, 20000); // 20 s Abfrageintervall
                      });
                      

                      Übrigens: Markise schreibt man mit einem "s".

                      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

                      M 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @michihorn sagte: Bei dieser Änderung wird sofort ohne Wartezeit der Status aus Tahoma abgegriffen.

                        Ich habe im Skript oben noch eine Verzögerung von 20 s ergänzt, um das Polling zu berücksichtigen. Außerdem wird jetzt auf false, also erst 52 s später als ursprünglich getriggert.

                        const triggermarkB = [id_MarkisseEXEEinf, id_MarkisseEXEAusf];
                        on({id: triggermarkB, change: 'ne', val: false}, function() {
                            setTimeout(function() {
                                let text = '\ud83c\udf1e *Markise Status:*\n  Links: ' + getState(idRolloL).val + '\n' + "  Rechts: " + getState(idRolloR).val + '\n' + getState(id_Auslöser).val;
                                if(logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938149' });
                                createEventlog("Markise Status", text);
                                log(text);
                            }, 20000); // 20 s Abfrageintervall
                        });
                        

                        Übrigens: Markise schreibt man mit einem "s".

                        M Online
                        M Online
                        michihorn
                        schrieb am zuletzt editiert von
                        #18

                        Übrigens: Markise schreibt man mit einem "s".
                        Danke du hast natürlich Recht. :+1:

                        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

                        368

                        Online

                        32.6k

                        Benutzer

                        82.3k

                        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