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. *gelöst* "Urlaub" aus Kalender auslesen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

*gelöst* "Urlaub" aus Kalender auslesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
blockly
18 Beiträge 5 Kommentatoren 1.9k Aufrufe 1 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.
  • surfer09S Offline
    surfer09S Offline
    surfer09
    schrieb am zuletzt editiert von surfer09
    #1

    Hallo zusammen,

    ich würde gerne meine Skripte noch etwas verbessern, in dem diese Rücksicht auf meinen Kalender nehmen. Steht in meinem Kalender "Urlaub", sollen die Jalousien zum Beispiel nicht direkt bei Sonnenaufgang öffnen, sondern erst später.
    Meine Frage wäre nun, wie ich es hinbekomme, meinen Kalender auszulesen und entsprechend die Termine abzufragen.
    Ich habe den ICAL-Adapter bereits installiert, weiß aber nicht, wie ich nun die Termine abfrage und dann entsprechend in das Blockly-Skript integriere.

    Danke!

    Gruß surfer ;-)

    IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

    HomoranH 1 Antwort Letzte Antwort
    0
    • surfer09S surfer09

      Hallo zusammen,

      ich würde gerne meine Skripte noch etwas verbessern, in dem diese Rücksicht auf meinen Kalender nehmen. Steht in meinem Kalender "Urlaub", sollen die Jalousien zum Beispiel nicht direkt bei Sonnenaufgang öffnen, sondern erst später.
      Meine Frage wäre nun, wie ich es hinbekomme, meinen Kalender auszulesen und entsprechend die Termine abzufragen.
      Ich habe den ICAL-Adapter bereits installiert, weiß aber nicht, wie ich nun die Termine abfrage und dann entsprechend in das Blockly-Skript integriere.

      Danke!

      Gruß surfer ;-)

      HomoranH Offline
      HomoranH Offline
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @surfer09
      zum einen könntest du es über Events im ical Adapter machen.

      Du kannst aber auch den trashschedule-Adapter zweckentfremden

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      surfer09S 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @surfer09
        zum einen könntest du es über Events im ical Adapter machen.

        Du kannst aber auch den trashschedule-Adapter zweckentfremden

        surfer09S Offline
        surfer09S Offline
        surfer09
        schrieb am zuletzt editiert von
        #3

        @Homoran : Danke Homoran für deine schnelle Rückmeldung! :-)
        Habe gerade schon die Möglichkeit mit den Events im ICAL-Adapter gefunden. Das scheint auch funktioniert zu haben. Ich habe nun einige Datenpunkte mit "Urlaub" - true.
        Aber wie frage ich das jetzt mit Blockly ab? So weit bin ich in meiner Programmiererfahrung noch nicht.
        Ich habe mein jetziges Skript einmal mit angehangen:
        Die Erweiterung hierfür sollte lauten "Wenn Urlaub im Kalender, dann Jalousien später hoch, wenn nicht, dann bei Sonnenaufgang"

        <xml xmlns="http://www.w3.org/1999/xhtml">
          <block type="comment" id="1p?:}6/{(V5f]e9cmV~=" x="62" y="213">
            <field name="COMMENT">Jalousie herunterfahren</field>
            <next>
              <block type="controls_if" id=".H0*qOTtLx1?Ic9(9=xs">
                <value name="IF0">
                  <block type="logic_compare" id=".h~NK]WR@6LKQKI7=^7z">
                    <field name="OP">GTE</field>
                    <value name="A">
                      <block type="time_get" id="5Z,S_)0SA6b$]A[lOzT=">
                        <mutation format="false" language="false"></mutation>
                        <field name="OPTION">wd</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="math_number" id="CC~;}te[*5@hT20-F.gf">
                        <field name="NUM">6</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="astro" id="lqEb)F7T:E,]CrmG.zD1">
                    <field name="TYPE">sunset</field>
                    <field name="OFFSET">17</field>
                    <statement name="STATEMENT">
                      <block type="control" id="R6*6GptG!oPBI^h3f9w#">
                        <mutation delay_input="false"></mutation>
                        <field name="OID">hm-rpc.1.00111A499A14B7.4.LEVEL</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="c+t}oHOry+qa8u46#IUL">
                            <field name="NUM">45</field>
                          </block>
                        </value>
                        <next>
                          <block type="debug" id="`#_BLC;DhcDmx549)r^C">
                            <field name="Severity">error</field>
                            <value name="TEXT">
                              <shadow type="text" id="q.Fc6L}c-t~73W@;V(Ph">
                                <field name="TEXT">Jalousie Büro (oben) heruntergefahren</field>
                              </shadow>
                            </value>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </statement>
                <next>
                  <block type="comment" id="|JH-}P5P^`Ai.??0cu~z">
                    <field name="COMMENT">Jalusie hochfahren (wochentags)</field>
                    <next>
                      <block type="controls_if" id="o|~*M:ys!9+I8LBj[#Kh">
                        <value name="IF0">
                          <block type="logic_compare" id="PXK|oo?L2X03%HC`_l*b">
                            <field name="OP">LTE</field>
                            <value name="A">
                              <block type="time_get" id="On;)JhtGWV|`o^%44GzP">
                                <mutation format="false" language="false"></mutation>
                                <field name="OPTION">wd</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_number" id="qo~%qUfanH[*(U5{*2$Y">
                                <field name="NUM">5</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="astro" id="Mbw|Y9wF_Gdg6=)nvvqw">
                            <field name="TYPE">sunrise</field>
                            <field name="OFFSET">0</field>
                            <statement name="STATEMENT">
                              <block type="control" id="G,(mWTXK=P[mJ#S!eUko">
                                <mutation delay_input="false"></mutation>
                                <field name="OID">hm-rpc.1.00111A499A14B7.4.LEVEL</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="math_number" id="m-ln{SJFiwg!vSr)PMPQ">
                                    <field name="NUM">100</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="debug" id="m|2af8%L)Xq].x~u}D7O">
                                    <field name="Severity">error</field>
                                    <value name="TEXT">
                                      <shadow type="text" id="oexEwsQ%tJwg}ZZ}ts;]">
                                        <field name="TEXT">Jalousie Büro (oben) hochgefahren (wochentags)</field>
                                      </shadow>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                        <next>
                          <block type="comment" id="XR`J}(C`xFUjSQ8s{72v">
                            <field name="COMMENT">Jalusie hochfahren (Wochenende)</field>
                            <next>
                              <block type="controls_if" id="UR}|}DKEzgeDr9Ep0c3i">
                                <value name="IF0">
                                  <block type="logic_compare" id="D1)Lc{Y#`n-Uw3;L_P(=">
                                    <field name="OP">GTE</field>
                                    <value name="A">
                                      <block type="time_get" id="xSwwEwJ|au3V$vY*B`k3">
                                        <mutation format="false" language="false"></mutation>
                                        <field name="OPTION">wd</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <block type="math_number" id="9fS0B30~fHWjL+|IDgTj">
                                        <field name="NUM">6</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="astro" id="jI$d(^Hi^/Ki[A#`kEy=">
                                    <field name="TYPE">sunrise</field>
                                    <field name="OFFSET">30</field>
                                    <statement name="STATEMENT">
                                      <block type="control" id="2/XO|,h[@MxDpskJNde%">
                                        <mutation delay_input="false"></mutation>
                                        <field name="OID">hm-rpc.1.00111A499A14B7.4.LEVEL</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="math_number" id="B,7m9bi$}APjf9ETFCc1">
                                            <field name="NUM">100</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="debug" id="(h@Q!#SEqAsk,9z=;H+w">
                                            <field name="Severity">error</field>
                                            <value name="TEXT">
                                              <shadow type="text" id="FTBZ20ty%26[M1y0my,E">
                                                <field name="TEXT">Jalousie Büro (oben) hochgefahren (Wochenende)</field>
                                              </shadow>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </statement>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </xml>
        

        IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

        paul53P 1 Antwort Letzte Antwort
        0
        • surfer09S surfer09

          @Homoran : Danke Homoran für deine schnelle Rückmeldung! :-)
          Habe gerade schon die Möglichkeit mit den Events im ICAL-Adapter gefunden. Das scheint auch funktioniert zu haben. Ich habe nun einige Datenpunkte mit "Urlaub" - true.
          Aber wie frage ich das jetzt mit Blockly ab? So weit bin ich in meiner Programmiererfahrung noch nicht.
          Ich habe mein jetziges Skript einmal mit angehangen:
          Die Erweiterung hierfür sollte lauten "Wenn Urlaub im Kalender, dann Jalousien später hoch, wenn nicht, dann bei Sonnenaufgang"

          <xml xmlns="http://www.w3.org/1999/xhtml">
            <block type="comment" id="1p?:}6/{(V5f]e9cmV~=" x="62" y="213">
              <field name="COMMENT">Jalousie herunterfahren</field>
              <next>
                <block type="controls_if" id=".H0*qOTtLx1?Ic9(9=xs">
                  <value name="IF0">
                    <block type="logic_compare" id=".h~NK]WR@6LKQKI7=^7z">
                      <field name="OP">GTE</field>
                      <value name="A">
                        <block type="time_get" id="5Z,S_)0SA6b$]A[lOzT=">
                          <mutation format="false" language="false"></mutation>
                          <field name="OPTION">wd</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="math_number" id="CC~;}te[*5@hT20-F.gf">
                          <field name="NUM">6</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="astro" id="lqEb)F7T:E,]CrmG.zD1">
                      <field name="TYPE">sunset</field>
                      <field name="OFFSET">17</field>
                      <statement name="STATEMENT">
                        <block type="control" id="R6*6GptG!oPBI^h3f9w#">
                          <mutation delay_input="false"></mutation>
                          <field name="OID">hm-rpc.1.00111A499A14B7.4.LEVEL</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE">
                            <block type="math_number" id="c+t}oHOry+qa8u46#IUL">
                              <field name="NUM">45</field>
                            </block>
                          </value>
                          <next>
                            <block type="debug" id="`#_BLC;DhcDmx549)r^C">
                              <field name="Severity">error</field>
                              <value name="TEXT">
                                <shadow type="text" id="q.Fc6L}c-t~73W@;V(Ph">
                                  <field name="TEXT">Jalousie Büro (oben) heruntergefahren</field>
                                </shadow>
                              </value>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </statement>
                  <next>
                    <block type="comment" id="|JH-}P5P^`Ai.??0cu~z">
                      <field name="COMMENT">Jalusie hochfahren (wochentags)</field>
                      <next>
                        <block type="controls_if" id="o|~*M:ys!9+I8LBj[#Kh">
                          <value name="IF0">
                            <block type="logic_compare" id="PXK|oo?L2X03%HC`_l*b">
                              <field name="OP">LTE</field>
                              <value name="A">
                                <block type="time_get" id="On;)JhtGWV|`o^%44GzP">
                                  <mutation format="false" language="false"></mutation>
                                  <field name="OPTION">wd</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_number" id="qo~%qUfanH[*(U5{*2$Y">
                                  <field name="NUM">5</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="astro" id="Mbw|Y9wF_Gdg6=)nvvqw">
                              <field name="TYPE">sunrise</field>
                              <field name="OFFSET">0</field>
                              <statement name="STATEMENT">
                                <block type="control" id="G,(mWTXK=P[mJ#S!eUko">
                                  <mutation delay_input="false"></mutation>
                                  <field name="OID">hm-rpc.1.00111A499A14B7.4.LEVEL</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="math_number" id="m-ln{SJFiwg!vSr)PMPQ">
                                      <field name="NUM">100</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="debug" id="m|2af8%L)Xq].x~u}D7O">
                                      <field name="Severity">error</field>
                                      <value name="TEXT">
                                        <shadow type="text" id="oexEwsQ%tJwg}ZZ}ts;]">
                                          <field name="TEXT">Jalousie Büro (oben) hochgefahren (wochentags)</field>
                                        </shadow>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </statement>
                          <next>
                            <block type="comment" id="XR`J}(C`xFUjSQ8s{72v">
                              <field name="COMMENT">Jalusie hochfahren (Wochenende)</field>
                              <next>
                                <block type="controls_if" id="UR}|}DKEzgeDr9Ep0c3i">
                                  <value name="IF0">
                                    <block type="logic_compare" id="D1)Lc{Y#`n-Uw3;L_P(=">
                                      <field name="OP">GTE</field>
                                      <value name="A">
                                        <block type="time_get" id="xSwwEwJ|au3V$vY*B`k3">
                                          <mutation format="false" language="false"></mutation>
                                          <field name="OPTION">wd</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="9fS0B30~fHWjL+|IDgTj">
                                          <field name="NUM">6</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <statement name="DO0">
                                    <block type="astro" id="jI$d(^Hi^/Ki[A#`kEy=">
                                      <field name="TYPE">sunrise</field>
                                      <field name="OFFSET">30</field>
                                      <statement name="STATEMENT">
                                        <block type="control" id="2/XO|,h[@MxDpskJNde%">
                                          <mutation delay_input="false"></mutation>
                                          <field name="OID">hm-rpc.1.00111A499A14B7.4.LEVEL</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                            <block type="math_number" id="B,7m9bi$}APjf9ETFCc1">
                                              <field name="NUM">100</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="debug" id="(h@Q!#SEqAsk,9z=;H+w">
                                              <field name="Severity">error</field>
                                              <value name="TEXT">
                                                <shadow type="text" id="FTBZ20ty%26[M1y0my,E">
                                                  <field name="TEXT">Jalousie Büro (oben) hochgefahren (Wochenende)</field>
                                                </shadow>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </statement>
                                    </block>
                                  </statement>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </xml>
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @surfer09 sagte:

          Ich habe mein jetziges Skript einmal mit angehangen:

          Die Abfragen auf Wochentag und Urlaub muss innerhalb der Trigger-Blöcke erfolgen. Mit iCal kenne ich mich nicht aus, weiß also nicht, wie man die Variable urlaub aus iCal setzen kann.

          Blockly_temp.JPG

          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

          surfer09S 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @surfer09 sagte:

            Ich habe mein jetziges Skript einmal mit angehangen:

            Die Abfragen auf Wochentag und Urlaub muss innerhalb der Trigger-Blöcke erfolgen. Mit iCal kenne ich mich nicht aus, weiß also nicht, wie man die Variable urlaub aus iCal setzen kann.

            Blockly_temp.JPG

            surfer09S Offline
            surfer09S Offline
            surfer09
            schrieb am zuletzt editiert von
            #5

            @paul53 Danke! Vielleicht kann hier ja noch jemand anderes helfen?!

            IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              DjNetwork
              schrieb am zuletzt editiert von
              #6

              Hallo,

              ich nutze folgendes Script um den Ical auszulesen ... es setzt automatisch alle stati. Blockly brauche ich dabei nicht mehr ...

              /* Kalenderevent in der Zukunft suchen
              
              sucht im iCal Adapter nach events, die noch kommen
              http://forum.iobroker.net/viewtopic.php?f=21&t=3761&sid=4319378b32a0ce096bbbbfc0ebd859ce#p34975
              
              20.09.2016 erstellt von pix
              */
              
              // User Anpassungen
              var suchstring =   'Urlaub';              // Suchbegriff
              var stichtag =     0;                   // 0 heute;  1 morgen; 2 übermorgen; 3 In 3 Tagen
              var idTabelle =    'ical.3.data.table'; // Instanz eintragen
              var logging =      false;                // debug Log ein/ausschalten
              // Ende User Anpassungen
              
              
              var tage = ['Heute','Morgen','Übermorgen','In 3 Tagen']; // dafür relative Datumsangabe in iCal-Adapter einschalten und ggf. übersetzen
              
              function datum(x) {
                  var jetzt = new Date();
                  if (logging) log('Jetztzeit: ' + jetzt);
                  //var zeit = new Date(jetzt.getTime() + x * 24 * 60 * 60 * 1000); // es werden genau x Tage, als x * 24 Stunden zugezählt --> nicht gut
                  var zeit = new Date (jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate() + x); // in drei Tagen um Mitternacht
                  if (logging) log('Zielzeit: ' + zeit);
                  var jahr       = zeit.getFullYear();
                  var monat      = (zeit.getMonth()+1 < 10) ? '0' + (zeit.getMonth()+1) : zeit.getMonth()+1;
                  var tag        = (zeit.getDate() < 10) ? '0' + zeit.getDate() : zeit.getDate();
                  return (tag + '.' + monat + '.' + jahr);
              }
              
              function pruefeKalender() {
                  var kalender = getState(idTabelle).val;
                  var tag = datum(parseInt(stichtag,10));
                  if (logging) log(tag);
                  try{
                      var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String
                      if (logging) log(ereignisse);
                      for(var i = 0; i <kalender.length; i++) { // alle Events durchgehen
                          if ( (kalender[i].date.indexOf(tag) != -1) || (kalender[i].date.indexOf(tage[stichtag]) != -1) ) { // String Datum oder relatives Datum (nicht nicht) gefunden, also gefunden
                              var termin = kalender[i].event;
                              if (termin.indexOf(suchstring) != -1) {
                                  log('Treffer: ' + tage[stichtag] + ' ' + suchstring);
                                  
                setState("hm-rega.0.3582"/*Wochenende Karsten*/, false);
                setState("hm-rega.0.14542"/*Spätschicht Karsten*/, false);
                setState("hm-rega.0.14543"/*Nachtschicht Karsten*/, false);
                setState("hm-rega.0.14541"/*Frühschicht Karsten*/, false);
                setState("hm-rega.0.14544"/*Urlaub / Gleitzeit Karsten*/, true);
                 
                                  // weitere Aktionen, setState oder so
                              }
                          } 
                      }
                  } catch (fehler_try) {
                      log('Fehler beim Kalenderevents einlesen ' + fehler_try, 'error');
                  }
              }
              
              // bei Aktualisierung
              //on ({id: idTabelle, change: 'any'}, function(data) {
              //    pruefeKalender();
              //});
              
              // 5Min nach Mitternacht
              schedule("8 0 * * *", pruefeKalender);
              
              //bei Skriptstart
              pruefeKalender();
              

              Hoffe das hilft Dir ...

              surfer09S 1 Antwort Letzte Antwort
              0
              • D DjNetwork

                Hallo,

                ich nutze folgendes Script um den Ical auszulesen ... es setzt automatisch alle stati. Blockly brauche ich dabei nicht mehr ...

                /* Kalenderevent in der Zukunft suchen
                
                sucht im iCal Adapter nach events, die noch kommen
                http://forum.iobroker.net/viewtopic.php?f=21&t=3761&sid=4319378b32a0ce096bbbbfc0ebd859ce#p34975
                
                20.09.2016 erstellt von pix
                */
                
                // User Anpassungen
                var suchstring =   'Urlaub';              // Suchbegriff
                var stichtag =     0;                   // 0 heute;  1 morgen; 2 übermorgen; 3 In 3 Tagen
                var idTabelle =    'ical.3.data.table'; // Instanz eintragen
                var logging =      false;                // debug Log ein/ausschalten
                // Ende User Anpassungen
                
                
                var tage = ['Heute','Morgen','Übermorgen','In 3 Tagen']; // dafür relative Datumsangabe in iCal-Adapter einschalten und ggf. übersetzen
                
                function datum(x) {
                    var jetzt = new Date();
                    if (logging) log('Jetztzeit: ' + jetzt);
                    //var zeit = new Date(jetzt.getTime() + x * 24 * 60 * 60 * 1000); // es werden genau x Tage, als x * 24 Stunden zugezählt --> nicht gut
                    var zeit = new Date (jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate() + x); // in drei Tagen um Mitternacht
                    if (logging) log('Zielzeit: ' + zeit);
                    var jahr       = zeit.getFullYear();
                    var monat      = (zeit.getMonth()+1 < 10) ? '0' + (zeit.getMonth()+1) : zeit.getMonth()+1;
                    var tag        = (zeit.getDate() < 10) ? '0' + zeit.getDate() : zeit.getDate();
                    return (tag + '.' + monat + '.' + jahr);
                }
                
                function pruefeKalender() {
                    var kalender = getState(idTabelle).val;
                    var tag = datum(parseInt(stichtag,10));
                    if (logging) log(tag);
                    try{
                        var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String
                        if (logging) log(ereignisse);
                        for(var i = 0; i <kalender.length; i++) { // alle Events durchgehen
                            if ( (kalender[i].date.indexOf(tag) != -1) || (kalender[i].date.indexOf(tage[stichtag]) != -1) ) { // String Datum oder relatives Datum (nicht nicht) gefunden, also gefunden
                                var termin = kalender[i].event;
                                if (termin.indexOf(suchstring) != -1) {
                                    log('Treffer: ' + tage[stichtag] + ' ' + suchstring);
                                    
                  setState("hm-rega.0.3582"/*Wochenende Karsten*/, false);
                  setState("hm-rega.0.14542"/*Spätschicht Karsten*/, false);
                  setState("hm-rega.0.14543"/*Nachtschicht Karsten*/, false);
                  setState("hm-rega.0.14541"/*Frühschicht Karsten*/, false);
                  setState("hm-rega.0.14544"/*Urlaub / Gleitzeit Karsten*/, true);
                   
                                    // weitere Aktionen, setState oder so
                                }
                            } 
                        }
                    } catch (fehler_try) {
                        log('Fehler beim Kalenderevents einlesen ' + fehler_try, 'error');
                    }
                }
                
                // bei Aktualisierung
                //on ({id: idTabelle, change: 'any'}, function(data) {
                //    pruefeKalender();
                //});
                
                // 5Min nach Mitternacht
                schedule("8 0 * * *", pruefeKalender);
                
                //bei Skriptstart
                pruefeKalender();
                

                Hoffe das hilft Dir ...

                surfer09S Offline
                surfer09S Offline
                surfer09
                schrieb am zuletzt editiert von
                #7

                @DjNetwork: Danke für deinen Beitrag! Ich bin nicht so unbedingt der Java-Skript Programmierer, daher kenne ich mich damit eher weniger aus.
                Ich müsste eigenlicht „nur“ eine Variable beschreiben, je nachdem was im Kalender steht.
                Also „Wenn heute Termin Urlaub im Kalender steht, setze Variable Urlaub auf wahr“
                Und diese Variable muss dann bei den Jalousie-Skripten abgefragt werden. aber wie baut man das ein? Geht das auch mit Blockly-Mitteln?

                IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

                paul53P 1 Antwort Letzte Antwort
                0
                • surfer09S surfer09

                  @DjNetwork: Danke für deinen Beitrag! Ich bin nicht so unbedingt der Java-Skript Programmierer, daher kenne ich mich damit eher weniger aus.
                  Ich müsste eigenlicht „nur“ eine Variable beschreiben, je nachdem was im Kalender steht.
                  Also „Wenn heute Termin Urlaub im Kalender steht, setze Variable Urlaub auf wahr“
                  Und diese Variable muss dann bei den Jalousie-Skripten abgefragt werden. aber wie baut man das ein? Geht das auch mit Blockly-Mitteln?

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

                  @surfer09 sagte:

                  „Wenn heute Termin Urlaub im Kalender steht, setze Variable Urlaub auf wahr“

                  Wie sieht der Datenpunkt aus (ID), der "Urlaub" für heute enthält (Wert) ?

                  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

                  surfer09S 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @surfer09 sagte:

                    „Wenn heute Termin Urlaub im Kalender steht, setze Variable Urlaub auf wahr“

                    Wie sieht der Datenpunkt aus (ID), der "Urlaub" für heute enthält (Wert) ?

                    surfer09S Offline
                    surfer09S Offline
                    surfer09
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 sagte in "Urlaub" aus Kalender auslesen:

                    @surfer09 sagte:

                    „Wenn heute Termin Urlaub im Kalender steht, setze Variable Urlaub auf wahr“

                    Wie sieht der Datenpunkt aus (ID), der "Urlaub" für heute enthält (Wert) ?

                    So würde das Objekt aussehen. Steht Urlaub drin, dann "true", sonst "false"

                    ICAL_Urlaub.jpg

                    IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • surfer09S surfer09

                      @paul53 sagte in "Urlaub" aus Kalender auslesen:

                      @surfer09 sagte:

                      „Wenn heute Termin Urlaub im Kalender steht, setze Variable Urlaub auf wahr“

                      Wie sieht der Datenpunkt aus (ID), der "Urlaub" für heute enthält (Wert) ?

                      So würde das Objekt aussehen. Steht Urlaub drin, dann "true", sonst "false"

                      ICAL_Urlaub.jpg

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

                      @surfer09
                      Das Blockly-Script, in dem die Variable urlaub abgefragt wird, ergänzen um:

                      Blockly_temp.JPG

                      Damit wird die Variable urlaub täglich um 00:03 Uhr und bei Script-Start richtig gesetzt.

                      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

                      surfer09S 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @surfer09
                        Das Blockly-Script, in dem die Variable urlaub abgefragt wird, ergänzen um:

                        Blockly_temp.JPG

                        Damit wird die Variable urlaub täglich um 00:03 Uhr und bei Script-Start richtig gesetzt.

                        surfer09S Offline
                        surfer09S Offline
                        surfer09
                        schrieb am zuletzt editiert von
                        #11

                        @paul53 Super Paul! Danke! Ich habe jetzt aber noch ein Verständnisproblem. Wo in den Objekten kann ich die Variable "Urlaub" jetzt sehen? Ich hätte gedacht, dass diese im Javascript.0 Ordner angezeigt wird, das wird sie aber nicht. Muss ich woanders suchen?

                        IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

                        HomoranH paul53P 2 Antworten Letzte Antwort
                        0
                        • surfer09S surfer09

                          @paul53 Super Paul! Danke! Ich habe jetzt aber noch ein Verständnisproblem. Wo in den Objekten kann ich die Variable "Urlaub" jetzt sehen? Ich hätte gedacht, dass diese im Javascript.0 Ordner angezeigt wird, das wird sie aber nicht. Muss ich woanders suchen?

                          HomoranH Offline
                          HomoranH Offline
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von
                          #12

                          @surfer09 sagte in "Urlaub" aus Kalender auslesen:

                          Wo in den Objekten kann ich die Variable "Urlaub" jetzt sehen?

                          gar nicht.
                          Dann hättest du einen Datenpunkt anlegen müssen.

                          Diese Variable ist eine reine Scriptvariable und nur in dem Script verfügbar

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          surfer09S 1 Antwort Letzte Antwort
                          0
                          • HomoranH Homoran

                            @surfer09 sagte in "Urlaub" aus Kalender auslesen:

                            Wo in den Objekten kann ich die Variable "Urlaub" jetzt sehen?

                            gar nicht.
                            Dann hättest du einen Datenpunkt anlegen müssen.

                            Diese Variable ist eine reine Scriptvariable und nur in dem Script verfügbar

                            surfer09S Offline
                            surfer09S Offline
                            surfer09
                            schrieb am zuletzt editiert von
                            #13

                            @Homoran Okay, verstehe! Dann wäre mir persönlich ja der Datenpunkt lieber. Ich sehe gerne, wenn auch etwas passiert, bzw. nicht passiert. Das mit der Variable ist ja dann eher unsichtbar, wenn das nur intern für das Skript gilt.

                            IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

                            HomoranH 1 Antwort Letzte Antwort
                            0
                            • surfer09S surfer09

                              @Homoran Okay, verstehe! Dann wäre mir persönlich ja der Datenpunkt lieber. Ich sehe gerne, wenn auch etwas passiert, bzw. nicht passiert. Das mit der Variable ist ja dann eher unsichtbar, wenn das nur intern für das Skript gilt.

                              HomoranH Offline
                              HomoranH Offline
                              Homoran
                              Global Moderator Administrators
                              schrieb am zuletzt editiert von
                              #14

                              @surfer09 sagte in "Urlaub" aus Kalender auslesen:

                              Dann wäre mir persönlich ja der Datenpunkt lieber.

                              Dafür hast du ja den Datenpunkt Urlaub im event vom ical

                              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                              surfer09S 1 Antwort Letzte Antwort
                              0
                              • HomoranH Homoran

                                @surfer09 sagte in "Urlaub" aus Kalender auslesen:

                                Dann wäre mir persönlich ja der Datenpunkt lieber.

                                Dafür hast du ja den Datenpunkt Urlaub im event vom ical

                                surfer09S Offline
                                surfer09S Offline
                                surfer09
                                schrieb am zuletzt editiert von
                                #15

                                @Homoran Du hast Recht, das wäre dann eigentlich doppelt.
                                Aber wenn ich einen Datenpunkt nehmen würde, müsste das dann so aussehen?

                                Variable.jpg

                                IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

                                1 Antwort Letzte Antwort
                                0
                                • surfer09S surfer09

                                  @paul53 Super Paul! Danke! Ich habe jetzt aber noch ein Verständnisproblem. Wo in den Objekten kann ich die Variable "Urlaub" jetzt sehen? Ich hätte gedacht, dass diese im Javascript.0 Ordner angezeigt wird, das wird sie aber nicht. Muss ich woanders suchen?

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

                                  @surfer09 sagte:

                                  Muss ich woanders suchen?

                                  Ja, unter ical.0. Habe im Bild oben jetzt die komplette ID angegeben.

                                  @surfer09 sagte in "Urlaub" aus Kalender auslesen:

                                  Aber wenn ich einen Datenpunkt nehmen würde, müsste das dann so aussehen?

                                  Wozu noch ein Datenpunkt ?

                                  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

                                  surfer09S 1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @surfer09 sagte:

                                    Muss ich woanders suchen?

                                    Ja, unter ical.0. Habe im Bild oben jetzt die komplette ID angegeben.

                                    @surfer09 sagte in "Urlaub" aus Kalender auslesen:

                                    Aber wenn ich einen Datenpunkt nehmen würde, müsste das dann so aussehen?

                                    Wozu noch ein Datenpunkt ?

                                    surfer09S Offline
                                    surfer09S Offline
                                    surfer09
                                    schrieb am zuletzt editiert von
                                    #17

                                    @paul53: ja, stimmt. Ist doppelt.
                                    Für mich jedoch etwas einfacher nachzuvollziehen, aber das ist mein persönliches Empfinden :-)

                                    Danke auf jeden Fall für eure Hilfe!

                                    IO-Broker Master/Slave auf Windows 11 64bit, NPM 10.9.4, Node 22.21.1 js-controller 7.0.7

                                    1 Antwort Letzte Antwort
                                    0
                                    • M Offline
                                      M Offline
                                      michi050
                                      schrieb am zuletzt editiert von
                                      #18

                                      Hallo Freunde,

                                      was mach ich bei 2 Kalendern (2Personen) in einer Ical Instanz vereint. Kann ich mit dem Werkzeug "Ereignissen" auch die beiden Kalender unterscheiden? z.B. Person 1 hat Urlaub und die Person 2 hat keinen Urlaub.

                                      Gruß Michi

                                      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

                                      402

                                      Online

                                      32.6k

                                      Benutzer

                                      82.0k

                                      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