Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Termine mit Vorlauf über Alexa ansagen

    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

    Termine mit Vorlauf über Alexa ansagen

    This topic has been deleted. Only users with topic management privileges can see it.
    • amg_666
      amg_666 last edited by

      Hallo, ich möchte bestimmte Termine (aus google Kalender) mit einem bestimmtem Vorlauf in Alexa ansagen.
      Also z.B. "In 30 Minuten <Kalendereintrag>".
      Vorlauf deshalb, weil ja z.B. bei einem Arzttermin ich da erstmal hinkommen muss.

      Hat jemand sowas oder etwas ähnliches bei sich am Laufen? Dann wär ich dankbar wenn ich das Script/Blockly haben könnte. Ich hab hier im Forum nach "Alexa Kalendereinträge" etc gesucht, aber nichts passendes gefunden.

      Ich krieg das zwar auch selber sicher hin aber Faulheit siegt 🙂

      liv-in-sky 2 Replies Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @amg_666 last edited by

        @amg_666

        kannst das mal testen - wenn das die faulheit zuläßt 🙂

        //gibt ical termine - 30 min - vorher auf Alexa aus
        //@liv-insky 4.9.2021
        
               
        
        
        
        const dpTSJsonIcal1="ical.0.data.table"
        const dpAlexa='alexa2.0.Echo-Devices.G0XXXXXXXX02R7.Commands.speak'
        const anfangsZeitAnsage='09:00'
        const endZeitAnsage='23:00'
        const zeitMinutenAlarm=1800000;            //in msek
        
        let replayArr=[]      
        let marker;
        
        schedule(' * * * * *',  function () {       
        let myData=getState(dpTSJsonIcal1).val;
        let nowTime=new Date().getTime()
          
        for (let i=0;i<myData.length;i++) {             // hier eigene schleife definieren
        let  dateTime=new Date(myData[i]._date).getTime() 
        marker=999;
        if(Number(dateTime)-Number(nowTime)<zeitMinutenAlarm && Number(dateTime)-Number(nowTime) >= 0) { // log(myData[i].event+"-- "+Math.floor((Number(dateTime)-Number(nowTime))/1000/60 %60))
                                       for (let werto=0;werto<replayArr.length;werto++) { if(replayArr[werto].event == myData[i].event) {marker=werto} }
                                      
                                              if (marker==999){ rede(myData[i].event,i) //setState(dpAlexa,myData[i].event)
                                                                replayArr.push({ "event":myData[i].event, "remind":true })
                                              }   
        
         
        } else{let marker2=999
              for (let wertoo=0;wertoo<replayArr.length;wertoo++) { if(replayArr[wertoo].event == myData[i].event) {marker2=wertoo; /*log(" löschen Arr "+marker2)*/}
                                                                      if (marker2<999){ replayArr.splice(marker2,1);  marker2=999  } }
        
        
        }}    
        
        //log(JSON.stringify(replayArr))
        });          
         
        
        async function rede(vari,faktor){ if (compareTime(anfangsZeitAnsage, null, ">", null) && compareTime(endZeitAnsage, null, "<", null)) {
                                           let helper=Math.floor((zeitMinutenAlarm)/1000/60 %60).toString()
                                        await wait(faktor*6000);setState(dpAlexa,"Der Termin "+vari+" startet in "+helper+" Minuten")}}
        
        
        
        
        
        

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

          @amg_666

          neue version - hatte bug - wenn 2 termine mit dem selben namen hintereinander vorkommen, gab es jede minute eine ansage

          //gibt ical termine - 30 min - vorher auf Alexa aus
          //@liv-insky 4.9.2021
          // Forum: https://forum.iobroker.net/post/673081
          
                 
          
          
          
          const dpTSJsonIcal1="ical.0.data.table"
          const dpAlexa='alexa2.0.Echo-Devices.G0  XXXXXXX2R7.Commands.speak'
          const anfangsZeitAnsage='09:00'
          const endZeitAnsage='23:00'
          const zeitMinutenAlarm=1800000;            //30 min in msek    für 45 min=2700000
          let replayArr=[]      
          let marker;      
          
          schedule(' * * * * *',  function () {       
          let myData=getState(dpTSJsonIcal1).val;
          let nowTime=new Date().getTime()  
            
          for (let i=0;i<myData.length;i++) {             // hier eigene schleife definieren
          let  dateTime=new Date(myData[i]._date).getTime() 
          marker=999;
          if(Number(dateTime)-Number(nowTime)<zeitMinutenAlarm && Number(dateTime)-Number(nowTime) >= 0) {  //log(myData[i].event+"-- "+Math.floor((Number(dateTime)-Number(nowTime))/1000/60 %60))
                                         for (let werto=0;werto<replayArr.length;werto++) { if(replayArr[werto].event == myData[i].event) {marker=werto} }
                                        
                                                if (marker==999){ rede(myData[i].event,i) //setState(dpAlexa,myData[i].event)
                                                                  replayArr.push({ "event":myData[i].event, "remind":myData[i]._date })
                                                }   
          
           
          } else{let marker2=999
                for (let wertoo=0;wertoo<replayArr.length;wertoo++) { if(replayArr[wertoo].event == myData[i].event &&  replayArr[wertoo].remind ==myData[i]._date) {marker2=wertoo; /*log(" löschen Arr "+marker2)*/}
                                                                        if (marker2<999){ replayArr.splice(marker2,1);  marker2=999  } }
          
          
          }}    
          //log(JSON.stringify(replayArr))
          });          
           
          
          async function rede(vari,faktor){ if (compareTime(anfangsZeitAnsage, null, ">", null) && compareTime(endZeitAnsage, null, "<", null)) {
                                             let helper=Math.floor((zeitMinutenAlarm)/1000/60 %60).toString()
                                          await wait(faktor*6000);setState(dpAlexa,"Der Termin "+vari+" startet in "+helper+" Minuten")}}
          
          
          
          
          
          

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

            @liv-in-sky Hey, vielen Dank für das Skript, bin erst heute dazu gekommen damit etwas rumzuspielen. Ich muss da natürlich noch diverse Anpassungen machen aber vom Grundsatz her passt das.
            Danke auch im Namen meiner Faulheit 🙂

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

            Support us

            ioBroker
            Community Adapters
            Donate

            405
            Online

            31.9k
            Users

            80.2k
            Topics

            1.3m
            Posts

            2
            4
            259
            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