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.
    • J
      jr28 @Nordischerjung last edited by

      @nordischerjung

      das "Entschachteln" funktioniert nur zum Teil.

      • Liste_object lässt sich noch erstellen, Liste_ID nicht mehr, ergibt []

      • die ID ändert sich mit jedem Termin, ist also nicht konstant

      Der Ansatz war aber gut, vielleicht fehlt nur noch ein kleiner Trick

      Danke

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • 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

                          843
                          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