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 last edited by jr28

      zuerst bitte ich drum mir nachzusehen, wenn ich jetzt was falsch mache beim posten.
      Ich habe mich gerade erst angemeldet im Forum, um eine Frage stellen zu können.

      Testweise habe ich bereits mal folgendes programmiert:

      blockly.jpg

      Das Auslesen der Startzeit (_date) funktioniert problemlos, aber das Auslesen der Erinnerungszeit (trigger) bringt mir das Ergebnis "undefined"

      Der Datensatz ist wie folgt:

      blockly1.jpg

      Ich hoffe, dass mir hier jemand helfen kann.

      Ich brauche die "Erinnerung", um zu dem Zeitpunkt an dem ich zum Termin starten soll mein Ereignis auszulösen.

      LG
      Jochen

      N 1 Reply Last reply Reply Quote 0
      • N
        Nordischerjung @jr28 last edited by Nordischerjung

        @jr28 Moin,

        ich glaube das Problem ist, das es iwie verschachtelt ist. Du müsstest dir in einer Variablen das "_object" Schreiben, dann brauchst du in der nächsten Variablen die ID "16f1f..."
        und dann kannst du den "trigger abfragen.

        Dein Date ist aber "_date"

        bd284240-9712-47ac-b823-37efe68e6086-grafik.png

        524f659b-78d5-4bab-b082-d33a6900694d-grafik.png

        geht bestimmt auch anders.

        J 1 Reply Last reply Reply Quote 0
        • 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

                              844
                              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