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
    996

  • 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 Online
    M Online
    michihorn
    schrieb am zuletzt editiert von michihorn
    #1

    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

    arteckA paul53P 2 Antworten 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

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @michihorn sagte in Markisen Steuerung:

      leider klappt das mit dieser Version nur Suboptimal

      soll heissen.. was geht den nicht ??

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

      M 1 Antwort Letzte Antwort
      0
      • arteckA arteck

        @michihorn sagte in Markisen Steuerung:

        leider klappt das mit dieser Version nur Suboptimal

        soll heissen.. was geht den nicht ??

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

        @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 2 Antworten 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
          #4

          @michihorn
          Was die Warnungen betrifft: Im Tab "Protokolle" finden sich weitere Informationen zu den Warnungen um 12:19 Uhr und 12:23 Uhr.
          Sind die Statusdatenpunkte vom Typ "string"?

          @michihorn sagte in Markisen Steuerung:
          Ganz unten:

          setState(idEinf, ""); 
          setState(idAusf, "");
          

          Man sollte keinen String in Datenpunkte vom Typ "boolean" schreiben!
          Würde dafür nicht ein Datenpunkt "Ausfahren" genügen (false bedeutet "einfahren")?

          @michihorn sagte in Markisen Steuerung:

          46% angezeigt wird. Endzustand sollte 0% sein

          Eine Minute nach Start der Bewegung kann der Endzustand noch nicht erreicht sein.

          Die Uhrzeit für das Einfahren kann während des laufenden Skripts nicht verändert werden.

          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 2 Antworten Letzte Antwort
          0
          • paul53P paul53

            @michihorn
            Was die Warnungen betrifft: Im Tab "Protokolle" finden sich weitere Informationen zu den Warnungen um 12:19 Uhr und 12:23 Uhr.
            Sind die Statusdatenpunkte vom Typ "string"?

            @michihorn sagte in Markisen Steuerung:
            Ganz unten:

            setState(idEinf, ""); 
            setState(idAusf, "");
            

            Man sollte keinen String in Datenpunkte vom Typ "boolean" schreiben!
            Würde dafür nicht ein Datenpunkt "Ausfahren" genügen (false bedeutet "einfahren")?

            @michihorn sagte in Markisen Steuerung:

            46% angezeigt wird. Endzustand sollte 0% sein

            Eine Minute nach Start der Bewegung kann der Endzustand noch nicht erreicht sein.

            Die Uhrzeit für das Einfahren kann während des laufenden Skripts nicht verändert werden.

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

            @paul53 Den Fehler bzgl. der Warnmeldungen habe ich gefunden, danke für den Tip.
            Zum Thema Endstand der Markise habe ich 52 Sekunden ermittelt

            paul53P 1 Antwort Letzte Antwort
            0
            • M michihorn

              @paul53 Den Fehler bzgl. der Warnmeldungen habe ich gefunden, danke für den Tip.
              Zum Thema Endstand der Markise habe ich 52 Sekunden ermittelt

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

              @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);
                  }
              });
              

              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
                Was die Warnungen betrifft: Im Tab "Protokolle" finden sich weitere Informationen zu den Warnungen um 12:19 Uhr und 12:23 Uhr.
                Sind die Statusdatenpunkte vom Typ "string"?

                @michihorn sagte in Markisen Steuerung:
                Ganz unten:

                setState(idEinf, ""); 
                setState(idAusf, "");
                

                Man sollte keinen String in Datenpunkte vom Typ "boolean" schreiben!
                Würde dafür nicht ein Datenpunkt "Ausfahren" genügen (false bedeutet "einfahren")?

                @michihorn sagte in Markisen Steuerung:

                46% angezeigt wird. Endzustand sollte 0% sein

                Eine Minute nach Start der Bewegung kann der Endzustand noch nicht erreicht sein.

                Die Uhrzeit für das Einfahren kann während des laufenden Skripts nicht verändert werden.

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

                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 1 Antwort Letzte Antwort
                0
                • 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

                                      690

                                      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