Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. *gelöst* "Urlaub" aus Kalender auslesen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    *gelöst* "Urlaub" aus Kalender auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @surfer09 last edited by

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

      Du kannst aber auch den trashschedule-Adapter zweckentfremden

      surfer09 1 Reply Last reply Reply Quote 0
      • surfer09
        surfer09 @Homoran last edited by

        @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>
        
        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @surfer09 last edited by 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

          surfer09 1 Reply Last reply Reply Quote 0
          • surfer09
            surfer09 @paul53 last edited by

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

            1 Reply Last reply Reply Quote 0
            • D
              DjNetwork last edited by

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

              surfer09 1 Reply Last reply Reply Quote 0
              • surfer09
                surfer09 @DjNetwork last edited by

                @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?

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @surfer09 last edited by

                  @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) ?

                  surfer09 1 Reply Last reply Reply Quote 0
                  • surfer09
                    surfer09 @paul53 last edited by

                    @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

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @surfer09 last edited by 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.

                      surfer09 1 Reply Last reply Reply Quote 0
                      • surfer09
                        surfer09 @paul53 last edited by

                        @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?

                        Homoran paul53 2 Replies Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @surfer09 last edited by

                          @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

                          surfer09 1 Reply Last reply Reply Quote 0
                          • surfer09
                            surfer09 @Homoran last edited by

                            @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.

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @surfer09 last edited by

                              @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

                              surfer09 1 Reply Last reply Reply Quote 0
                              • surfer09
                                surfer09 @Homoran last edited by

                                @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

                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @surfer09 last edited by 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 ?

                                  surfer09 1 Reply Last reply Reply Quote 0
                                  • surfer09
                                    surfer09 @paul53 last edited by

                                    @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!

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      michi050 last edited by

                                      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 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      419
                                      Online

                                      31.9k
                                      Users

                                      80.1k
                                      Topics

                                      1.3m
                                      Posts

                                      blockly
                                      5
                                      18
                                      1560
                                      Loading More Posts
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                      The ioBroker Community 2014-2023
                                      logo