Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. ical - Erinnerungszeit auslesen [gelöst]

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    ical - Erinnerungszeit auslesen [gelöst]

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @jr28 last edited by liv-in-sky

      @jr28

      glaube nicht, dass da nur etwas kleines fehlt - wenn die langen id's wirklich unterschiedlich sein können, müßte man zuerst alle unterpunkte auslesen - danach müssen wiederum alle diese gefundenen unterpunkte durchsucht werden, ob sie bestimmte unterpunkte habe (z.b. "method": "PUBLISH" ) damit man weiß, das es sich um das richtige handelt - dann erst könnte man das auslesen

      natürlich ist es nicht ganz so einfach, denn wenn man 2 reminder hat (mail,benachrichtigung) hat man das ganze 2 mal

      Image 225.png

      das ganze kann man eher mit javascript lösen d.h. du musst einen functionblock machen, der das ganze macht

      benötigte befehle:

      • Object.keys(jsondata);
      • hasOwnProperty()
      J 1 Reply Last reply Reply Quote 0
      • J
        jr28 @liv-in-sky last edited by

        @liv-in-sky

        kann ich denn nicht die ganze Zeichenfolge des Array in einen Text umwandeln und dann konventionel mit String-Befehlen ran gehen?

        9:24:31.759 info javascript.0 (1640) script.js.Tesla.Skript_1: [{'date':'09.11.2022 10:00-11:00','event':'Test','_class':'ical_Jochen Ruth ical_tomorrow','_date':'2022-11-09T09:00:00.000Z','_end':'2022-11-09T10:00:00.000Z','_IDID':'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com','_allDay':false,'_private':false,'_rule':' ','location':'','_calName':'Jochen Ruth','_calColor':'#44ff00','_object':{'type':'VEVENT','params':[],'start':'2022-11-09T09:00:00.000Z','datetype':'date-time','end':'2022-11-09T10:00:00.000Z','dtstamp':'2022-11-08T18:24:06.000Z','uid':'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com','created':'2022-11-08T17:05:18.000Z','lastmodified':'2022-11-08T17:05:18.000Z','location':'','sequence':'0','status':'CONFIRMED','summary':'Test','transparency':'OPAQUE','e7d276d9-6f79-4cc3-af0d-3a37126344b7':{'type':'VALARM','params':[],'action':'DISPLAY','description':'This is an event reminder','trigger':'-P0DT0H10M0S','end':'2022-11-09T18:24:07.531Z'},'method':'PUBLISH'}}]

        und danach sowas

        Screenshot 2022-11-08 193132.jpg

        dann könnte man doch alles mit String-Befehlen lösen.

        liv-in-sky 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @jr28 last edited by

          @jr28 sagte in ical - Erinnerungszeit auslesen:

          [{'date':'09.11.2022 10:00-11:00','event':'Test','_class':'ical_Jochen Ruth ical_tomorrow','_date':'2022-11-09T09:00:00.000Z','_end':'2022-11-09T10:00:00.000Z','_IDID':'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com','_allDay':false,'_private':false,'_rule':' ','location':'','_calName':'Jochen Ruth','_calColor':'#44ff00','_object':{'type':'VEVENT','params':[],'start':'2022-11-09T09:00:00.000Z','datetype':'date-time','end':'2022-11-09T10:00:00.000Z','dtstamp':'2022-11-08T18:24:06.000Z','uid':'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com','created':'2022-11-08T17:05:18.000Z','lastmodified':'2022-11-08T17:05:18.000Z','location':'','sequence':'0','status':'CONFIRMED','summary':'Test','transparency':'OPAQUE','e7d276d9-6f79-4cc3-af0d-3a37126344b7':{'type':'VALARM','params':[],'action':'DISPLAY','description':'This is an event reminder','trigger':'-P0DT0H10M0S','end':'2022-11-09T18:24:07.531Z'},'method':'PUBLISH'}}]

          müßte evtl auch funktionieren - was genau willst du auslesen - diesen wert? 'end': '2022-11-09T18:24:07.531Z'

          dann müßtest du unter _object das 2te aufkommen von end finden - dann könntest du es evtl. finden

          J 1 Reply Last reply Reply Quote 0
          • J
            jr28 @liv-in-sky last edited by

            @liv-in-sky

            ich brauche den Startwert und die Erinnerung

            '_date':'2022-11-09T09:00:00.000Z'
            'trigger':'-P0DT0H10M0S'

            leider bringt der Versuch den reinen Text einer Variable zuzuweisen eine leere Variable

            a9ea0fd0-fe5c-47d2-ac06-a89de8e548ed-image.png

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @jr28 last edited by liv-in-sky

              @jr28

              sorry - aber das mit dem string durchsuchen gefällt mir nicht

              Image 226.png

              hier ein beispiel - die funktion gibt immer den ersten trigger zurück (oder no triggers",wenn keiner da ist) - davon ausgehend, das deine einträge nur eine erinnerung haben ! kommt bei mir selten vor - habe meist 2 trigger (mail, benachrichtigung)

              zum import und testen:

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="a.G7osg.kvL(VCz^OdE0">jsonDataIcal</variable>
                 <variable id="wQ%GoKR`W:jJ[Ssj],zb">objectPart</variable>
                 <variable id="/MDJ}-6.g#rgo]W2=YNv">i</variable>
               </variables>
               <block type="procedures_defcustomreturn" id="UO|akQR~,kY_1U}#xsra" x="588" y="112">
                 <mutation statements="false">
                   <arg name="objectPart" varid="wQ%GoKR`W:jJ[Ssj],zb"></arg>
                 </mutation>
                 <field name="NAME">getTrigger</field>
                 <field name="SCRIPT">DQpsZXQgdGhlVHJpZ2dlcnM9W107DQpsZXQgdGhlS2V5cz1PYmplY3Qua2V5cyhvYmplY3RQYXJ0KTsNCi8vbG9nKHRoZUtleXMpOw0KZm9yIChsZXQgaWk9MDsgaWk8dGhlS2V5cy5sZW5ndGg7IGlpKyspeyANCiAgICBpZiAob2JqZWN0UGFydFt0aGVLZXlzW2lpXV0uaGFzT3duUHJvcGVydHkoInRyaWdnZXIiKSkgeyANCiAgICAgICAgdGhlVHJpZ2dlcnMucHVzaChvYmplY3RQYXJ0W3RoZUtleXNbaWldXS50cmlnZ2VyKQ0KICAgIH0NCn0NCg0KDQppZiAodGhlVHJpZ2dlcnMubGVuZ3RoID4gMCkgeyByZXR1cm4gdGhlVHJpZ2dlcnNbMF0gfSBlbHNlIHsgcmV0dXJuIm5vIFRyaWdnZXJzIjt9</field>
                 <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
               </block>
               <block type="variables_set" id="z+Ux^%G{hb$Imf%qHjAB" x="87" y="162">
                 <field name="VAR" id="a.G7osg.kvL(VCz^OdE0">jsonDataIcal</field>
                 <value name="VALUE">
                   <block type="get_value" id="(,n%sm|Bx6Ga%P)$Tdse">
                     <field name="ATTR">val</field>
                     <field name="OID">ical.0.data.table</field>
                   </block>
                 </value>
                 <next>
                   <block type="controls_forEach" id="4fp4S(Irt-SzIYNMO7$k">
                     <field name="VAR" id="/MDJ}-6.g#rgo]W2=YNv">i</field>
                     <value name="LIST">
                       <block type="variables_get" id="ULAmi(XJc}w1[ysky@DT">
                         <field name="VAR" id="a.G7osg.kvL(VCz^OdE0">jsonDataIcal</field>
                       </block>
                     </value>
                     <statement name="DO">
                       <block type="debug" id="Xxjfy4WkCAA3`#JdjK9M">
                         <field name="Severity">log</field>
                         <value name="TEXT">
                           <shadow type="text" id="1epe)PhgD!u#pn;y9dVO">
                             <field name="TEXT">test</field>
                           </shadow>
                           <block type="text_join" id="@pPq,o4uNHD1dZiLWgwe">
                             <mutation items="3"></mutation>
                             <value name="ADD0">
                               <block type="get_attr" id=".aek@[Cs79oCDyh.!@(L">
                                 <value name="PATH">
                                   <shadow type="text" id="8hI}:M+Q{M6`JNJ6sZW:">
                                     <field name="TEXT">_date</field>
                                   </shadow>
                                 </value>
                                 <value name="OBJECT">
                                   <block type="variables_get" id="uP7]Km{6~JMb)0):zl1s">
                                     <field name="VAR" id="/MDJ}-6.g#rgo]W2=YNv">i</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <value name="ADD1">
                               <block type="text" id="IlHN.R~emu;ryH}S.j2%">
                                 <field name="TEXT"> mit Trigger: </field>
                               </block>
                             </value>
                             <value name="ADD2">
                               <block type="procedures_callcustomreturn" id="wCyOnHi3orsav$AcqN/)">
                                 <mutation name="getTrigger">
                                   <arg name="objectPart"></arg>
                                 </mutation>
                                 <value name="ARG0">
                                   <block type="get_attr" id="fj[~bn2b$X|DJ*~)w-i*">
                                     <value name="PATH">
                                       <shadow type="text" id="R|KA^P3p}!7JeN46pkZi">
                                         <field name="TEXT">_object</field>
                                       </shadow>
                                     </value>
                                     <value name="OBJECT">
                                       <block type="variables_get" id="d#8iPYO#/2OOemC_wwx6">
                                         <field name="VAR" id="/MDJ}-6.g#rgo]W2=YNv">i</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
              </xml>
              

              1 Reply Last reply Reply Quote 0
              • J
                jr28 last edited by

                @liv-in-sky
                vielen herzlichen Dank für die Mühe.
                Ich versuche noch genau zu verstehen wie es gemacht wurde, aber es tut was es soll und ich kann es als Baustein verwenden.

                liv-in-sky 1 Reply Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @jr28 last edited by liv-in-sky

                  @jr28

                  zuerst wird das _object gelesen

                  in der function:

                  let theTriggers=[];
                  let theKeys=Object.keys(objectPart);  //liest alle unterkeys unter _object und erstellt ein array
                  //log(theKeys);
                  for (let ii=0; ii<theKeys.length; ii++){   // es wird durch alle unterkeys durchgegangen
                      if (objectPart[theKeys[ii]].hasOwnProperty("trigger")) {  //wenn in einem unterkey noch ein unter-unterkey "trigger" existiert
                          theTriggers.push(objectPart[theKeys[ii]].trigger)  // wird dieser trigger in ein array gespeichert (könnten ja mehrere sein
                      }
                  }
                  
                  if (theTriggers.length > 0) { return theTriggers[0] } else { return"no Triggers";} // gibt den ersten "trigger-wert" aus dem array zurück oder "no Trigger"
                  

                  wichtig dabei - ein tool. um die struktur des jsons richtig zu sehen

                  [
                    {
                      'date': '09.11.2022 10:00-11:00',
                      'event': 'Test',
                      '_class': 'ical_Jochen Ruth ical_tomorrow',
                      '_date': '2022-11-09T09:00:00.000Z',
                      '_end': '2022-11-09T10:00:00.000Z',
                      '_IDID': 'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com',
                      '_allDay': false,
                      '_private': false,
                      '_rule': ' ',
                      'location': '',
                      '_calName': 'Jochen Ruth',
                      '_calColor': '#44ff00',
                      '_object': {
                        'type': 'VEVENT',
                        'params': [
                          
                        ],
                        'start': '2022-11-09T09:00:00.000Z',
                        'datetype': 'date-time',
                        'end': '2022-11-09T10:00:00.000Z',
                        'dtstamp': '2022-11-08T18:24:06.000Z',
                        'uid': 'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com',
                        'created': '2022-11-08T17:05:18.000Z',
                        'lastmodified': '2022-11-08T17:05:18.000Z',
                        'location': '',
                        'sequence': '0',
                        'status': 'CONFIRMED',
                        'summary': 'Test',
                        'transparency': 'OPAQUE',
                        'e7d276d9-6f79-4cc3-af0d-3a37126344b7': {
                          'type': 'VALARM',
                          'params': [
                            
                          ],
                          'action': 'DISPLAY',
                          'description': 'This is an event reminder',
                          'trigger': '-P0DT0H10M0S',
                          'end': '2022-11-09T18:24:07.531Z'
                        },
                        'method': 'PUBLISH'
                      }
                    }
                  ]
                  
                  1 Reply Last reply Reply Quote 0
                  • J
                    jr28 last edited by

                    @liv-in-sky

                    Vielen Dank nochmal, werde ich mir in Ruhe anschauen. Ich beschäftige mich erst seit etwa 10 Tagen mit JavaScript bzw. Blockly, da ich durch einen Bekannten auf IO Broker gestoßen wurde und festgestellt habe, was damit alles geht.

                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @jr28 last edited by

                      @jr28

                      ja - das ist nicht unbedingt ein anfäger script - aber json-verarbeiten kann man bei iobroker immer gut gebrauchen - leider ist blockly da nicht wirklich gut dafür

                      nur so nebenbei - bei diesem script ist etwas besonderes

                      normalerweise spricht man einen key im json so an - also mit punkten getrennt:

                      objectPart.theKeys[ii].trigger  -> objectPart.e7d276d9-6f79-4cc3-af0d-3a37126344b7.trigger
                      

                      da aber der key "e7d276d9-6f79-4cc3-af0d-3a37126344b7" bindestriche beinhaltet und javascript das als minus interpretiert, muss man anstatt des punktes die eckige klammer nehmen

                      objectPart[theKeys[ii]].trigger -> objectPart["e7d276d9-6f79-4cc3-af0d-3a37126344b7"].trigger 
                      
                      J 1 Reply Last reply Reply Quote 1
                      • J
                        jr28 @liv-in-sky last edited by

                        noch eine Nachfrage:

                        weiß jemand, warum bei manchen Kalendern im ical-Format die Abteilung VALARM fehlt.

                        Ich habe sie nur in meinem eigenen Kalender, in allen anderen (eigenen und freigegebenen) Kalendern fehlt die Alarmzeit

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        649
                        Online

                        32.0k
                        Users

                        80.5k
                        Topics

                        1.3m
                        Posts

                        3
                        13
                        649
                        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