Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Alexa Wecker schaltet Beleuchtung an

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    356

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

Alexa Wecker schaltet Beleuchtung an

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptblockly
60 Beiträge 13 Kommentatoren 7.4k Aufrufe 13 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • X Offline
    X Offline
    xbow42
    schrieb am zuletzt editiert von xbow42
    #46

    Hallo,
    ich habe in der AlexaApp 2 Wecker konfiguriert die an Arbeitstagen also Mo-Fr. auslösen würden.
    iobroker-alarm0.png
    Nachts soll per cronTrigger ein/kein Wecker je nach Bedingungen(Wetter/iCal(Urlaub)/Feiertag/manuelle Fahrzeugwahl) gestellt werden.
    iobroker-alarm1.png
    die Gefahr besteht das man über die App beim Konfigurieren ggf. den/die Wecker löscht.
    Für den Fall will ich über den DP ..Alarm.AddNew einen neuen Wecker anlegen.

    • Gibt es im Blockly wowas wie IfExist(ObjektID) um zu prüfen ob der DP existiert?
    • Wie ermittel ich am besten nach dem neuen Wecker anlegen die ID .Alarm.xxxxxxxxxxxxxxxxx und baue sie dann so in das Script ein das zur AlarmNr dann der passende Wecker gestellt wird?
    • Gibts im Bockly auch die Möglichkeit einen Objektbaum .Alarm.xxxxxxxxxxxxxxxxx zu löschen?
    dslraserD 1 Antwort Letzte Antwort
    0
    • X xbow42

      Hallo,
      ich habe in der AlexaApp 2 Wecker konfiguriert die an Arbeitstagen also Mo-Fr. auslösen würden.
      iobroker-alarm0.png
      Nachts soll per cronTrigger ein/kein Wecker je nach Bedingungen(Wetter/iCal(Urlaub)/Feiertag/manuelle Fahrzeugwahl) gestellt werden.
      iobroker-alarm1.png
      die Gefahr besteht das man über die App beim Konfigurieren ggf. den/die Wecker löscht.
      Für den Fall will ich über den DP ..Alarm.AddNew einen neuen Wecker anlegen.

      • Gibt es im Blockly wowas wie IfExist(ObjektID) um zu prüfen ob der DP existiert?
      • Wie ermittel ich am besten nach dem neuen Wecker anlegen die ID .Alarm.xxxxxxxxxxxxxxxxx und baue sie dann so in das Script ein das zur AlarmNr dann der passende Wecker gestellt wird?
      • Gibts im Bockly auch die Möglichkeit einen Objektbaum .Alarm.xxxxxxxxxxxxxxxxx zu löschen?
      dslraserD Offline
      dslraserD Offline
      dslraser
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #47

      @xbow42 sagte in Alexa Wecker schaltet Beleuchtung an:

      Gibt es im Blockly wowas wie IfExist(ObjektID) um zu prüfen ob der DP existiert?

      kannst ja mal damit "rum spielen"

      Bildschirmfoto 2020-01-31 um 17.31.15.png

      <xml xmlns="http://www.w3.org/1999/xhtml">
       <variables>
         <variable type="" id="E-2Ms[EQ*lEe7IRh*cIa">id</variable>
       </variables>
       <block type="procedures_defcustomreturn" id="7R:L*9?)7Wl^RqVg+G`q" x="13" y="13">
         <mutation statements="false">
           <arg name="id" varid="E-2Ms[EQ*lEe7IRh*cIa"></arg>
         </mutation>
         <field name="NAME">existiert_DP</field>
         <field name="SCRIPT">CmlmKGV4aXN0c09iamVjdChpZCkpCnJldHVybiBleGlzdHNTdGF0ZShpZCk7</field>
         <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
       </block>
       <block type="controls_if" id="]U!yuZ]Xu)hfS_B0[PT_" x="13" y="88">
         <mutation else="1"></mutation>
         <value name="IF0">
           <block type="procedures_callcustomreturn" id="LYyU(xF{iqT8am1OyTzX" inline="true">
             <mutation name="existiert_DP">
               <arg name="id"></arg>
             </mutation>
             <value name="ARG0">
               <block type="text_join" id="0THYr?_2)~g0iT?%Ws04">
                 <mutation items="3"></mutation>
                 <value name="ADD0">
                   <block type="text" id="Jj-;K=C14.ARbvgb^G8E">
                     <field name="TEXT">alexa2.0.Echo-Devices.</field>
                   </block>
                 </value>
                 <value name="ADD1">
                   <block type="get_value" id="6cY*I*]xw7%U[1dU(}J(">
                     <field name="ATTR">val</field>
                     <field name="OID">alexa2.0.History.serialNumber</field>
                   </block>
                 </value>
                 <value name="ADD2">
                   <block type="text" id="pQ{:#RL`7+yD^nom$nP[">
                     <field name="TEXT">.Commands.speak-volume</field>
                   </block>
                 </value>
               </block>
             </value>
           </block>
         </value>
         <statement name="DO0">
           <block type="debug" id="cS5*PvPwP7rh%ln:bffF">
             <field name="Severity">log</field>
             <value name="TEXT">
               <shadow type="text" id=",uX#K5U5NdEsTsyHL#@Y">
                 <field name="TEXT">test</field>
               </shadow>
               <block type="procedures_callcustomreturn" id=";;#sdcjDgk|l?EWS{y2^" inline="true">
                 <mutation name="existiert_DP">
                   <arg name="id"></arg>
                 </mutation>
                 <value name="ARG0">
                   <block type="text_join" id="klYn:eOwTM6$6l|^)wg|">
                     <mutation items="3"></mutation>
                     <value name="ADD0">
                       <block type="text" id="=pjJ{/,+=}]fS~rBVln0">
                         <field name="TEXT">alexa2.0.Echo-Devices.</field>
                       </block>
                     </value>
                     <value name="ADD1">
                       <block type="get_value" id="SSP;CdoTz=fnDrj17]J8">
                         <field name="ATTR">val</field>
                         <field name="OID">alexa2.0.History.serialNumber</field>
                       </block>
                     </value>
                     <value name="ADD2">
                       <block type="text" id="QHarz9?-l+2tO.HzoIe0">
                         <field name="TEXT">.Commands.speak-volume</field>
                       </block>
                     </value>
                   </block>
                 </value>
               </block>
             </value>
             <next>
               <block type="comment" id="M$fBZaLgg0pN,/E!r{xy">
                 <field name="COMMENT">mach irgendwas.....</field>
               </block>
             </next>
           </block>
         </statement>
         <statement name="ELSE">
           <block type="debug" id="6a4`,4@P]oEr*lBB];K!">
             <field name="Severity">log</field>
             <value name="TEXT">
               <shadow type="text" id=",uX#K5U5NdEsTsyHL#@Y">
                 <field name="TEXT">test</field>
               </shadow>
               <block type="text" id="Fb^)xLhI/b6Xzz6j,X4@">
                 <field name="TEXT">existiert nicht</field>
               </block>
             </value>
           </block>
         </statement>
       </block>
      </xml>
      

      Bildschirmfoto 2020-01-31 um 17.32.28.png

      X paul53P 2 Antworten Letzte Antwort
      1
      • dslraserD dslraser

        @xbow42 sagte in Alexa Wecker schaltet Beleuchtung an:

        Gibt es im Blockly wowas wie IfExist(ObjektID) um zu prüfen ob der DP existiert?

        kannst ja mal damit "rum spielen"

        Bildschirmfoto 2020-01-31 um 17.31.15.png

        <xml xmlns="http://www.w3.org/1999/xhtml">
         <variables>
           <variable type="" id="E-2Ms[EQ*lEe7IRh*cIa">id</variable>
         </variables>
         <block type="procedures_defcustomreturn" id="7R:L*9?)7Wl^RqVg+G`q" x="13" y="13">
           <mutation statements="false">
             <arg name="id" varid="E-2Ms[EQ*lEe7IRh*cIa"></arg>
           </mutation>
           <field name="NAME">existiert_DP</field>
           <field name="SCRIPT">CmlmKGV4aXN0c09iamVjdChpZCkpCnJldHVybiBleGlzdHNTdGF0ZShpZCk7</field>
           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
         </block>
         <block type="controls_if" id="]U!yuZ]Xu)hfS_B0[PT_" x="13" y="88">
           <mutation else="1"></mutation>
           <value name="IF0">
             <block type="procedures_callcustomreturn" id="LYyU(xF{iqT8am1OyTzX" inline="true">
               <mutation name="existiert_DP">
                 <arg name="id"></arg>
               </mutation>
               <value name="ARG0">
                 <block type="text_join" id="0THYr?_2)~g0iT?%Ws04">
                   <mutation items="3"></mutation>
                   <value name="ADD0">
                     <block type="text" id="Jj-;K=C14.ARbvgb^G8E">
                       <field name="TEXT">alexa2.0.Echo-Devices.</field>
                     </block>
                   </value>
                   <value name="ADD1">
                     <block type="get_value" id="6cY*I*]xw7%U[1dU(}J(">
                       <field name="ATTR">val</field>
                       <field name="OID">alexa2.0.History.serialNumber</field>
                     </block>
                   </value>
                   <value name="ADD2">
                     <block type="text" id="pQ{:#RL`7+yD^nom$nP[">
                       <field name="TEXT">.Commands.speak-volume</field>
                     </block>
                   </value>
                 </block>
               </value>
             </block>
           </value>
           <statement name="DO0">
             <block type="debug" id="cS5*PvPwP7rh%ln:bffF">
               <field name="Severity">log</field>
               <value name="TEXT">
                 <shadow type="text" id=",uX#K5U5NdEsTsyHL#@Y">
                   <field name="TEXT">test</field>
                 </shadow>
                 <block type="procedures_callcustomreturn" id=";;#sdcjDgk|l?EWS{y2^" inline="true">
                   <mutation name="existiert_DP">
                     <arg name="id"></arg>
                   </mutation>
                   <value name="ARG0">
                     <block type="text_join" id="klYn:eOwTM6$6l|^)wg|">
                       <mutation items="3"></mutation>
                       <value name="ADD0">
                         <block type="text" id="=pjJ{/,+=}]fS~rBVln0">
                           <field name="TEXT">alexa2.0.Echo-Devices.</field>
                         </block>
                       </value>
                       <value name="ADD1">
                         <block type="get_value" id="SSP;CdoTz=fnDrj17]J8">
                           <field name="ATTR">val</field>
                           <field name="OID">alexa2.0.History.serialNumber</field>
                         </block>
                       </value>
                       <value name="ADD2">
                         <block type="text" id="QHarz9?-l+2tO.HzoIe0">
                           <field name="TEXT">.Commands.speak-volume</field>
                         </block>
                       </value>
                     </block>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="comment" id="M$fBZaLgg0pN,/E!r{xy">
                   <field name="COMMENT">mach irgendwas.....</field>
                 </block>
               </next>
             </block>
           </statement>
           <statement name="ELSE">
             <block type="debug" id="6a4`,4@P]oEr*lBB];K!">
               <field name="Severity">log</field>
               <value name="TEXT">
                 <shadow type="text" id=",uX#K5U5NdEsTsyHL#@Y">
                   <field name="TEXT">test</field>
                 </shadow>
                 <block type="text" id="Fb^)xLhI/b6Xzz6j,X4@">
                   <field name="TEXT">existiert nicht</field>
                 </block>
               </value>
             </block>
           </statement>
         </block>
        </xml>
        

        Bildschirmfoto 2020-01-31 um 17.32.28.png

        X Offline
        X Offline
        xbow42
        schrieb am zuletzt editiert von xbow42
        #48

        @dslraser danke, sieht schon mal sehr schlüssig aus!

        B 1 Antwort Letzte Antwort
        0
        • dslraserD dslraser

          @xbow42 sagte in Alexa Wecker schaltet Beleuchtung an:

          Gibt es im Blockly wowas wie IfExist(ObjektID) um zu prüfen ob der DP existiert?

          kannst ja mal damit "rum spielen"

          Bildschirmfoto 2020-01-31 um 17.31.15.png

          <xml xmlns="http://www.w3.org/1999/xhtml">
           <variables>
             <variable type="" id="E-2Ms[EQ*lEe7IRh*cIa">id</variable>
           </variables>
           <block type="procedures_defcustomreturn" id="7R:L*9?)7Wl^RqVg+G`q" x="13" y="13">
             <mutation statements="false">
               <arg name="id" varid="E-2Ms[EQ*lEe7IRh*cIa"></arg>
             </mutation>
             <field name="NAME">existiert_DP</field>
             <field name="SCRIPT">CmlmKGV4aXN0c09iamVjdChpZCkpCnJldHVybiBleGlzdHNTdGF0ZShpZCk7</field>
             <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
           </block>
           <block type="controls_if" id="]U!yuZ]Xu)hfS_B0[PT_" x="13" y="88">
             <mutation else="1"></mutation>
             <value name="IF0">
               <block type="procedures_callcustomreturn" id="LYyU(xF{iqT8am1OyTzX" inline="true">
                 <mutation name="existiert_DP">
                   <arg name="id"></arg>
                 </mutation>
                 <value name="ARG0">
                   <block type="text_join" id="0THYr?_2)~g0iT?%Ws04">
                     <mutation items="3"></mutation>
                     <value name="ADD0">
                       <block type="text" id="Jj-;K=C14.ARbvgb^G8E">
                         <field name="TEXT">alexa2.0.Echo-Devices.</field>
                       </block>
                     </value>
                     <value name="ADD1">
                       <block type="get_value" id="6cY*I*]xw7%U[1dU(}J(">
                         <field name="ATTR">val</field>
                         <field name="OID">alexa2.0.History.serialNumber</field>
                       </block>
                     </value>
                     <value name="ADD2">
                       <block type="text" id="pQ{:#RL`7+yD^nom$nP[">
                         <field name="TEXT">.Commands.speak-volume</field>
                       </block>
                     </value>
                   </block>
                 </value>
               </block>
             </value>
             <statement name="DO0">
               <block type="debug" id="cS5*PvPwP7rh%ln:bffF">
                 <field name="Severity">log</field>
                 <value name="TEXT">
                   <shadow type="text" id=",uX#K5U5NdEsTsyHL#@Y">
                     <field name="TEXT">test</field>
                   </shadow>
                   <block type="procedures_callcustomreturn" id=";;#sdcjDgk|l?EWS{y2^" inline="true">
                     <mutation name="existiert_DP">
                       <arg name="id"></arg>
                     </mutation>
                     <value name="ARG0">
                       <block type="text_join" id="klYn:eOwTM6$6l|^)wg|">
                         <mutation items="3"></mutation>
                         <value name="ADD0">
                           <block type="text" id="=pjJ{/,+=}]fS~rBVln0">
                             <field name="TEXT">alexa2.0.Echo-Devices.</field>
                           </block>
                         </value>
                         <value name="ADD1">
                           <block type="get_value" id="SSP;CdoTz=fnDrj17]J8">
                             <field name="ATTR">val</field>
                             <field name="OID">alexa2.0.History.serialNumber</field>
                           </block>
                         </value>
                         <value name="ADD2">
                           <block type="text" id="QHarz9?-l+2tO.HzoIe0">
                             <field name="TEXT">.Commands.speak-volume</field>
                           </block>
                         </value>
                       </block>
                     </value>
                   </block>
                 </value>
                 <next>
                   <block type="comment" id="M$fBZaLgg0pN,/E!r{xy">
                     <field name="COMMENT">mach irgendwas.....</field>
                   </block>
                 </next>
               </block>
             </statement>
             <statement name="ELSE">
               <block type="debug" id="6a4`,4@P]oEr*lBB];K!">
                 <field name="Severity">log</field>
                 <value name="TEXT">
                   <shadow type="text" id=",uX#K5U5NdEsTsyHL#@Y">
                     <field name="TEXT">test</field>
                   </shadow>
                   <block type="text" id="Fb^)xLhI/b6Xzz6j,X4@">
                     <field name="TEXT">existiert nicht</field>
                   </block>
                 </value>
               </block>
             </statement>
           </block>
          </xml>
          

          Bildschirmfoto 2020-01-31 um 17.32.28.png

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #49

          @dslraser
          Besser so:

          if(existsObject(id)) return existsState(id);
          return false;
          

          sonst wird bei nicht existierendem Objekt undefined zurück gegeben.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          3
          • X xbow42

            @dslraser danke, sieht schon mal sehr schlüssig aus!

            B Offline
            B Offline
            bishop
            schrieb am zuletzt editiert von
            #50

            @xbow42
            würdest du mir dein blockly für den Wecker zur Verfügung stellen!?!
            Würde auch gerne auf ICal/Feiertage reagieren damit er den Wecker dann ausschaltet.

            Danke
            Grüße

            X 1 Antwort Letzte Antwort
            0
            • B bishop

              @xbow42
              würdest du mir dein blockly für den Wecker zur Verfügung stellen!?!
              Würde auch gerne auf ICal/Feiertage reagieren damit er den Wecker dann ausschaltet.

              Danke
              Grüße

              X Offline
              X Offline
              xbow42
              schrieb am zuletzt editiert von xbow42
              #51

              @bishop
              ich bin mir nicht sicher, ob du damit was anfangen kannst.
              so 1zu1 wird das nicht laufen da ich weitere Adapter nutze und manuell angelegte DP unter userdata.0 angelegt habe. Mein ICal-Adapter filtert auf "Urlaub".

              Die Funktion "chk_IsWorkingDay" , hilft dir vieleicht dein Script anzupassen.
              iobroker_script_chk_IsWorkingDay.png
              Edit optimierte chk_Funktion:

              <block xmlns="https://developers.google.com/blockly/xml" type="procedures_defreturn" id="w)XegB]vEJkV_0eX]6Qc" x="462.99492026748976" y="-512.0510259487883">
               <field name="NAME">chk_isWorkingDay</field>
               <comment pinned="false" h="80" w="160">Funktion - Ist aktueller Tag ein Arbeitstag? (iCal/Feiertag-Adapter)</comment>
               <statement name="STACK">
                 <block type="variables_set" id="i?z|+p`afay)h4l5A(M_">
                   <field name="VAR" id="+mr|bkNhZXs@C}[MoEko">isWorkingday</field>
                   <value name="VALUE">
                     <block type="logic_negate" id="6*qRRQ$aCx.:T03Eqv^o">
                       <value name="BOOL">
                         <block type="logic_operation" id="a#e8Ku_;:UcuHr).Gd(a" inline="false">
                           <field name="OP">OR</field>
                           <value name="A">
                             <block type="logic_operation" id="1Uq#I7@}iyEG27`^+T[m" inline="false">
                               <field name="OP">OR</field>
                               <value name="A">
                                 <block type="get_value" id="H(*G_1H]p-.$3OI1P.Yc">
                                   <field name="ATTR">val</field>
                                   <field name="OID">feiertage.0.heute.boolean</field>
                                 </block>
                               </value>
                               <value name="B">
                                 <block type="get_value" id="_^95;?E8rUNUA0,t4M?G">
                                   <field name="ATTR">val</field>
                                   <field name="OID">ical.0.events.0.today.Urlaub</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <value name="B">
                             <block type="logic_operation" id="upyRkyiaX,bAwQ8E]WMR" inline="false">
                               <field name="OP">OR</field>
                               <value name="A">
                                 <block type="logic_compare" id=".4o(!h+4!LE5wl4Z)5Bg">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="time_get" id="FLfeVsl:h(K*eqz,;:ev">
                                       <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                       <field name="OPTION">wd</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="math_number" id="+W9B-clYl6nM3l2}|oqx">
                                       <field name="NUM">0</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <value name="B">
                                 <block type="logic_compare" id="m(L2ytt)gZ5cq2yL17dw">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="time_get" id="@nw.m$8S=3m|l}m}pB;c">
                                       <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                       <field name="OPTION">wd</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="math_number" id="(~^XXmzPIC8fv7+,j~(F">
                                       <field name="NUM">6</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </value>
                     </block>
                   </value>
                   <next>
                     <block type="control" id="#7Yn85R$R|n#0oF*_1[v">
                       <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                       <field name="OID">0_userdata.0.Allgemein.IsWorkingDay</field>
                       <field name="WITH_DELAY">FALSE</field>
                       <value name="VALUE">
                         <block type="variables_get" id="KlK$-Xp5Kx{O0yf;bNrT">
                           <field name="VAR" id="+mr|bkNhZXs@C}[MoEko">isWorkingday</field>
                         </block>
                       </value>
                     </block>
                   </next>
                 </block>
               </statement>
               <value name="RETURN">
                 <block type="variables_get" id="[:l(YYM|Zjgm_D[zT0$p">
                   <field name="VAR" id="+mr|bkNhZXs@C}[MoEko">isWorkingday</field>
                 </block>
               </value>
              </block>
              


              iobroker_AlexaWecker.txt

              Export DP_Wecker
              0_userdata.0.Geräte.Wecker.json

              B 1 Antwort Letzte Antwort
              0
              • X xbow42

                @bishop
                ich bin mir nicht sicher, ob du damit was anfangen kannst.
                so 1zu1 wird das nicht laufen da ich weitere Adapter nutze und manuell angelegte DP unter userdata.0 angelegt habe. Mein ICal-Adapter filtert auf "Urlaub".

                Die Funktion "chk_IsWorkingDay" , hilft dir vieleicht dein Script anzupassen.
                iobroker_script_chk_IsWorkingDay.png
                Edit optimierte chk_Funktion:

                <block xmlns="https://developers.google.com/blockly/xml" type="procedures_defreturn" id="w)XegB]vEJkV_0eX]6Qc" x="462.99492026748976" y="-512.0510259487883">
                 <field name="NAME">chk_isWorkingDay</field>
                 <comment pinned="false" h="80" w="160">Funktion - Ist aktueller Tag ein Arbeitstag? (iCal/Feiertag-Adapter)</comment>
                 <statement name="STACK">
                   <block type="variables_set" id="i?z|+p`afay)h4l5A(M_">
                     <field name="VAR" id="+mr|bkNhZXs@C}[MoEko">isWorkingday</field>
                     <value name="VALUE">
                       <block type="logic_negate" id="6*qRRQ$aCx.:T03Eqv^o">
                         <value name="BOOL">
                           <block type="logic_operation" id="a#e8Ku_;:UcuHr).Gd(a" inline="false">
                             <field name="OP">OR</field>
                             <value name="A">
                               <block type="logic_operation" id="1Uq#I7@}iyEG27`^+T[m" inline="false">
                                 <field name="OP">OR</field>
                                 <value name="A">
                                   <block type="get_value" id="H(*G_1H]p-.$3OI1P.Yc">
                                     <field name="ATTR">val</field>
                                     <field name="OID">feiertage.0.heute.boolean</field>
                                   </block>
                                 </value>
                                 <value name="B">
                                   <block type="get_value" id="_^95;?E8rUNUA0,t4M?G">
                                     <field name="ATTR">val</field>
                                     <field name="OID">ical.0.events.0.today.Urlaub</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <value name="B">
                               <block type="logic_operation" id="upyRkyiaX,bAwQ8E]WMR" inline="false">
                                 <field name="OP">OR</field>
                                 <value name="A">
                                   <block type="logic_compare" id=".4o(!h+4!LE5wl4Z)5Bg">
                                     <field name="OP">EQ</field>
                                     <value name="A">
                                       <block type="time_get" id="FLfeVsl:h(K*eqz,;:ev">
                                         <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                         <field name="OPTION">wd</field>
                                       </block>
                                     </value>
                                     <value name="B">
                                       <block type="math_number" id="+W9B-clYl6nM3l2}|oqx">
                                         <field name="NUM">0</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <value name="B">
                                   <block type="logic_compare" id="m(L2ytt)gZ5cq2yL17dw">
                                     <field name="OP">EQ</field>
                                     <value name="A">
                                       <block type="time_get" id="@nw.m$8S=3m|l}m}pB;c">
                                         <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                         <field name="OPTION">wd</field>
                                       </block>
                                     </value>
                                     <value name="B">
                                       <block type="math_number" id="(~^XXmzPIC8fv7+,j~(F">
                                         <field name="NUM">6</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </value>
                     <next>
                       <block type="control" id="#7Yn85R$R|n#0oF*_1[v">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                         <field name="OID">0_userdata.0.Allgemein.IsWorkingDay</field>
                         <field name="WITH_DELAY">FALSE</field>
                         <value name="VALUE">
                           <block type="variables_get" id="KlK$-Xp5Kx{O0yf;bNrT">
                             <field name="VAR" id="+mr|bkNhZXs@C}[MoEko">isWorkingday</field>
                           </block>
                         </value>
                       </block>
                     </next>
                   </block>
                 </statement>
                 <value name="RETURN">
                   <block type="variables_get" id="[:l(YYM|Zjgm_D[zT0$p">
                     <field name="VAR" id="+mr|bkNhZXs@C}[MoEko">isWorkingday</field>
                   </block>
                 </value>
                </block>
                


                iobroker_AlexaWecker.txt

                Export DP_Wecker
                0_userdata.0.Geräte.Wecker.json

                B Offline
                B Offline
                bishop
                schrieb am zuletzt editiert von
                #52

                @xbow42
                werde mal schauen was ich verwenden kann!

                vielen dank

                1 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  Paddex
                  schrieb am zuletzt editiert von
                  #53

                  Hallo,

                  ich möchte das Thema noch einmal aufgreifen und auch hier mal meine Frage stellen.
                  Ich möchte bei mir eine Steuerung programmieren, die 30 Minuten vor dem ersten eingestellten Wecker die Heizung im Badezimmer anmachen soll.

                  Dafür itteriere ich Nachts um 4 Uhr über alle Alarm-Ordner (später kann man den dies auch machen lassen, wenn z.B. in der Alexa Summery das Stichwort Wecker hällt). Suche die raus die "true" sind, packen sie dann in eine Liste welche ich dann sortiere.

                  Dann siehe ich von der kleinsten Uhrzeit 30 Minuten ab und habe die Lösung :-)

                  JUHU - dachte ich ...

                  Leider musste ich feststellen, dass wenn ein neuer Wecker angelegt wird, das Script diesen nicht findet. Erst wenn ich den javascript Adapter neu starte, erst dann findet er den neuen Wecker.

                  Hier erstmal mein Code:

                  var lst_Alarme, lst_Weckzeiten, int_Anzahl, acID, i, str_Weckzeit, str_kleinsteWeckzeitMinus30Min, VorWecker1;
                  
                  function listsGetSortCompare(type, direction) {
                    var compareFuncs = {
                      "NUMERIC": function(a, b) {
                          return Number(a) - Number(b); },
                      "TEXT": function(a, b) {
                          return a.toString() > b.toString() ? 1 : -1; },
                      "IGNORE_CASE": function(a, b) {
                          return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; },
                    };
                    var compare = compareFuncs[type];
                    return function(a, b) { return compare(a, b) * direction; }
                  }
                  
                  
                  // Alle Alarme von Schlafzimmer Echo Dot
                  lst_Alarme = Array.prototype.slice.apply($("channel[state.id=alexa2.0.Echo-Devices.alexa2.0.Echo-Devices.G09XXXXXXXXXX.Alarm.*.enabled]"));
                  lst_Weckzeiten = [];
                  int_Anzahl = 0;
                  if (!lst_Alarme.length) {
                    console.log('Keine Alarme gefunden');
                  } else {
                    for (var acID_index in lst_Alarme) {
                      acID = lst_Alarme[acID_index];
                      int_Anzahl = (typeof int_Anzahl == 'number' ? int_Anzahl : 0) + 1;
                      console.log(([int_Anzahl,' - ',acID,' - ',getState(acID).val].join('')));
                      if (getState(acID).val) {
                        console.log(([acID,' - ',getState(acID).val].join('')));
                        str_Weckzeit = getState((String(acID.slice(0, acID.length - 7)) + 'time')).val;
                        lst_Weckzeiten.push(getDateObject(str_Weckzeit).getTime());
                      }
                    }
                    if (!lst_Weckzeiten.length) {
                      console.log('Keine AKTIVIERTEN Alarme gefunden');
                    } else {
                      console.log('fertige Liste durchsuchen');
                      for (var i_index in lst_Weckzeiten) {
                        i = lst_Weckzeiten[i_index];
                        console.log(('' + formatDate(getDateObject(getDateObject(i).getTime()), "hh:mm:ss")));
                      }
                      console.log('sortierte  Liste');
                      var i_list = lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1));
                      for (var i_index2 in i_list) {
                        i = i_list[i_index2];
                        console.log(('' + formatDate(getDateObject(getDateObject(i).getTime()), "hh:mm:ss")));
                      }
                      console.log('kleinste Element');
                      console.log(('' + formatDate(getDateObject((lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1))[0])), "hh:mm:ss")));
                      console.log('kleinste Element - 30 Minuten');
                      str_kleinsteWeckzeitMinus30Min = ('' + formatDate(getDateObject((parseFloat(getDateObject((lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1))[0])).getTime()) - 30 * 1000 * 60)), "hh:mm:ss"));
                      console.log(str_kleinsteWeckzeitMinus30Min);
                      console.log('kleinste Element - 30 Minuten');
                      (function () {if (VorWecker1) {clearSchedule(VorWecker1); VorWecker1 = null;}})();
                      VorWecker1 = schedule((getDateObject(str_kleinsteWeckzeitMinus30Min).getMinutes()).toString().trim() + ' ' + getDateObject(str_kleinsteWeckzeitMinus30Min).getHours().toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim(), async function () {
                      });
                    }
                  }
                  

                  Und hier noch mal in zusammengesetztes Bild vom Blockly:

                  BlocklyScriptAlexaWecker.png

                  Vielleicht hat ja einer von euch eine Idee, wie man in JS neue Datenpunkte einlesen kann, die Instanz neu starten kann .. etc..

                  Vielen Dank und ich bin gespannt

                  dslraserD Dr. BakteriusD 2 Antworten Letzte Antwort
                  0
                  • P Paddex

                    Hallo,

                    ich möchte das Thema noch einmal aufgreifen und auch hier mal meine Frage stellen.
                    Ich möchte bei mir eine Steuerung programmieren, die 30 Minuten vor dem ersten eingestellten Wecker die Heizung im Badezimmer anmachen soll.

                    Dafür itteriere ich Nachts um 4 Uhr über alle Alarm-Ordner (später kann man den dies auch machen lassen, wenn z.B. in der Alexa Summery das Stichwort Wecker hällt). Suche die raus die "true" sind, packen sie dann in eine Liste welche ich dann sortiere.

                    Dann siehe ich von der kleinsten Uhrzeit 30 Minuten ab und habe die Lösung :-)

                    JUHU - dachte ich ...

                    Leider musste ich feststellen, dass wenn ein neuer Wecker angelegt wird, das Script diesen nicht findet. Erst wenn ich den javascript Adapter neu starte, erst dann findet er den neuen Wecker.

                    Hier erstmal mein Code:

                    var lst_Alarme, lst_Weckzeiten, int_Anzahl, acID, i, str_Weckzeit, str_kleinsteWeckzeitMinus30Min, VorWecker1;
                    
                    function listsGetSortCompare(type, direction) {
                      var compareFuncs = {
                        "NUMERIC": function(a, b) {
                            return Number(a) - Number(b); },
                        "TEXT": function(a, b) {
                            return a.toString() > b.toString() ? 1 : -1; },
                        "IGNORE_CASE": function(a, b) {
                            return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; },
                      };
                      var compare = compareFuncs[type];
                      return function(a, b) { return compare(a, b) * direction; }
                    }
                    
                    
                    // Alle Alarme von Schlafzimmer Echo Dot
                    lst_Alarme = Array.prototype.slice.apply($("channel[state.id=alexa2.0.Echo-Devices.alexa2.0.Echo-Devices.G09XXXXXXXXXX.Alarm.*.enabled]"));
                    lst_Weckzeiten = [];
                    int_Anzahl = 0;
                    if (!lst_Alarme.length) {
                      console.log('Keine Alarme gefunden');
                    } else {
                      for (var acID_index in lst_Alarme) {
                        acID = lst_Alarme[acID_index];
                        int_Anzahl = (typeof int_Anzahl == 'number' ? int_Anzahl : 0) + 1;
                        console.log(([int_Anzahl,' - ',acID,' - ',getState(acID).val].join('')));
                        if (getState(acID).val) {
                          console.log(([acID,' - ',getState(acID).val].join('')));
                          str_Weckzeit = getState((String(acID.slice(0, acID.length - 7)) + 'time')).val;
                          lst_Weckzeiten.push(getDateObject(str_Weckzeit).getTime());
                        }
                      }
                      if (!lst_Weckzeiten.length) {
                        console.log('Keine AKTIVIERTEN Alarme gefunden');
                      } else {
                        console.log('fertige Liste durchsuchen');
                        for (var i_index in lst_Weckzeiten) {
                          i = lst_Weckzeiten[i_index];
                          console.log(('' + formatDate(getDateObject(getDateObject(i).getTime()), "hh:mm:ss")));
                        }
                        console.log('sortierte  Liste');
                        var i_list = lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1));
                        for (var i_index2 in i_list) {
                          i = i_list[i_index2];
                          console.log(('' + formatDate(getDateObject(getDateObject(i).getTime()), "hh:mm:ss")));
                        }
                        console.log('kleinste Element');
                        console.log(('' + formatDate(getDateObject((lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1))[0])), "hh:mm:ss")));
                        console.log('kleinste Element - 30 Minuten');
                        str_kleinsteWeckzeitMinus30Min = ('' + formatDate(getDateObject((parseFloat(getDateObject((lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1))[0])).getTime()) - 30 * 1000 * 60)), "hh:mm:ss"));
                        console.log(str_kleinsteWeckzeitMinus30Min);
                        console.log('kleinste Element - 30 Minuten');
                        (function () {if (VorWecker1) {clearSchedule(VorWecker1); VorWecker1 = null;}})();
                        VorWecker1 = schedule((getDateObject(str_kleinsteWeckzeitMinus30Min).getMinutes()).toString().trim() + ' ' + getDateObject(str_kleinsteWeckzeitMinus30Min).getHours().toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim(), async function () {
                        });
                      }
                    }
                    

                    Und hier noch mal in zusammengesetztes Bild vom Blockly:

                    BlocklyScriptAlexaWecker.png

                    Vielleicht hat ja einer von euch eine Idee, wie man in JS neue Datenpunkte einlesen kann, die Instanz neu starten kann .. etc..

                    Vielen Dank und ich bin gespannt

                    dslraserD Offline
                    dslraserD Offline
                    dslraser
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #54

                    @paddex sagte in Alexa Wecker schaltet Beleuchtung an:

                    Vielleicht hat ja einer von euch eine Idee, wie man in JS neue Datenpunkte einlesen kann, die Instanz neu starten kann .. etc..
                    Vielen Dank und ich bin gespannt

                    Vielleicht hilft Dir das hier

                    https://forum.iobroker.net/post/608712

                    1 Antwort Letzte Antwort
                    0
                    • P Paddex

                      Hallo,

                      ich möchte das Thema noch einmal aufgreifen und auch hier mal meine Frage stellen.
                      Ich möchte bei mir eine Steuerung programmieren, die 30 Minuten vor dem ersten eingestellten Wecker die Heizung im Badezimmer anmachen soll.

                      Dafür itteriere ich Nachts um 4 Uhr über alle Alarm-Ordner (später kann man den dies auch machen lassen, wenn z.B. in der Alexa Summery das Stichwort Wecker hällt). Suche die raus die "true" sind, packen sie dann in eine Liste welche ich dann sortiere.

                      Dann siehe ich von der kleinsten Uhrzeit 30 Minuten ab und habe die Lösung :-)

                      JUHU - dachte ich ...

                      Leider musste ich feststellen, dass wenn ein neuer Wecker angelegt wird, das Script diesen nicht findet. Erst wenn ich den javascript Adapter neu starte, erst dann findet er den neuen Wecker.

                      Hier erstmal mein Code:

                      var lst_Alarme, lst_Weckzeiten, int_Anzahl, acID, i, str_Weckzeit, str_kleinsteWeckzeitMinus30Min, VorWecker1;
                      
                      function listsGetSortCompare(type, direction) {
                        var compareFuncs = {
                          "NUMERIC": function(a, b) {
                              return Number(a) - Number(b); },
                          "TEXT": function(a, b) {
                              return a.toString() > b.toString() ? 1 : -1; },
                          "IGNORE_CASE": function(a, b) {
                              return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; },
                        };
                        var compare = compareFuncs[type];
                        return function(a, b) { return compare(a, b) * direction; }
                      }
                      
                      
                      // Alle Alarme von Schlafzimmer Echo Dot
                      lst_Alarme = Array.prototype.slice.apply($("channel[state.id=alexa2.0.Echo-Devices.alexa2.0.Echo-Devices.G09XXXXXXXXXX.Alarm.*.enabled]"));
                      lst_Weckzeiten = [];
                      int_Anzahl = 0;
                      if (!lst_Alarme.length) {
                        console.log('Keine Alarme gefunden');
                      } else {
                        for (var acID_index in lst_Alarme) {
                          acID = lst_Alarme[acID_index];
                          int_Anzahl = (typeof int_Anzahl == 'number' ? int_Anzahl : 0) + 1;
                          console.log(([int_Anzahl,' - ',acID,' - ',getState(acID).val].join('')));
                          if (getState(acID).val) {
                            console.log(([acID,' - ',getState(acID).val].join('')));
                            str_Weckzeit = getState((String(acID.slice(0, acID.length - 7)) + 'time')).val;
                            lst_Weckzeiten.push(getDateObject(str_Weckzeit).getTime());
                          }
                        }
                        if (!lst_Weckzeiten.length) {
                          console.log('Keine AKTIVIERTEN Alarme gefunden');
                        } else {
                          console.log('fertige Liste durchsuchen');
                          for (var i_index in lst_Weckzeiten) {
                            i = lst_Weckzeiten[i_index];
                            console.log(('' + formatDate(getDateObject(getDateObject(i).getTime()), "hh:mm:ss")));
                          }
                          console.log('sortierte  Liste');
                          var i_list = lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1));
                          for (var i_index2 in i_list) {
                            i = i_list[i_index2];
                            console.log(('' + formatDate(getDateObject(getDateObject(i).getTime()), "hh:mm:ss")));
                          }
                          console.log('kleinste Element');
                          console.log(('' + formatDate(getDateObject((lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1))[0])), "hh:mm:ss")));
                          console.log('kleinste Element - 30 Minuten');
                          str_kleinsteWeckzeitMinus30Min = ('' + formatDate(getDateObject((parseFloat(getDateObject((lst_Weckzeiten.slice().sort(listsGetSortCompare("NUMERIC", 1))[0])).getTime()) - 30 * 1000 * 60)), "hh:mm:ss"));
                          console.log(str_kleinsteWeckzeitMinus30Min);
                          console.log('kleinste Element - 30 Minuten');
                          (function () {if (VorWecker1) {clearSchedule(VorWecker1); VorWecker1 = null;}})();
                          VorWecker1 = schedule((getDateObject(str_kleinsteWeckzeitMinus30Min).getMinutes()).toString().trim() + ' ' + getDateObject(str_kleinsteWeckzeitMinus30Min).getHours().toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim(), async function () {
                          });
                        }
                      }
                      

                      Und hier noch mal in zusammengesetztes Bild vom Blockly:

                      BlocklyScriptAlexaWecker.png

                      Vielleicht hat ja einer von euch eine Idee, wie man in JS neue Datenpunkte einlesen kann, die Instanz neu starten kann .. etc..

                      Vielen Dank und ich bin gespannt

                      Dr. BakteriusD Online
                      Dr. BakteriusD Online
                      Dr. Bakterius
                      Most Active
                      schrieb am zuletzt editiert von
                      #55

                      @paddex Siehe auch: https://github.com/ioBroker/ioBroker.javascript/issues/109

                      1 Antwort Letzte Antwort
                      0
                      • P Offline
                        P Offline
                        Paddex
                        schrieb am zuletzt editiert von
                        #56

                        Hallo und Danke,

                        werde es jetzt die Tage versuch produktiev zu setzen. Erste Test waren schon mal erfolgreich.
                        Wenn das Script um 4 Uhr laufen soll, dann lasse ich den Adapter jetzt einfach um 3:59 neu starten. Funktioniert super über den Expertenmodus in der Instanzenansicht.
                        Noch mal Danke an alle.

                        Gruß

                        haselchenH 1 Antwort Letzte Antwort
                        0
                        • P Paddex

                          Hallo und Danke,

                          werde es jetzt die Tage versuch produktiev zu setzen. Erste Test waren schon mal erfolgreich.
                          Wenn das Script um 4 Uhr laufen soll, dann lasse ich den Adapter jetzt einfach um 3:59 neu starten. Funktioniert super über den Expertenmodus in der Instanzenansicht.
                          Noch mal Danke an alle.

                          Gruß

                          haselchenH Offline
                          haselchenH Offline
                          haselchen
                          Most Active
                          schrieb am zuletzt editiert von
                          #57

                          @apollon77

                          Nimmt Amazon das übel wenn man wie @Paddex das macht und jede Nacht den Adapter neu startet?

                          Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                          apollon77A 1 Antwort Letzte Antwort
                          0
                          • haselchenH haselchen

                            @apollon77

                            Nimmt Amazon das übel wenn man wie @Paddex das macht und jede Nacht den Adapter neu startet?

                            apollon77A Offline
                            apollon77A Offline
                            apollon77
                            schrieb am zuletzt editiert von
                            #58

                            @haselchen Sollte denen egal sein

                            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                            1 Antwort Letzte Antwort
                            0
                            • P Offline
                              P Offline
                              Paddex
                              schrieb am zuletzt editiert von
                              #59

                              Wieso sollte Amazon einem das übel nehmen? ich starte den JavaScript Adapter neu, nicht den Alexa. Durch den Neustart kennt er die neuen Datenpunkte die Alexa bei jedem neuem Wecker anlegt.

                              haselchenH 1 Antwort Letzte Antwort
                              0
                              • P Paddex

                                Wieso sollte Amazon einem das übel nehmen? ich starte den JavaScript Adapter neu, nicht den Alexa. Durch den Neustart kennt er die neuen Datenpunkte die Alexa bei jedem neuem Wecker anlegt.

                                haselchenH Offline
                                haselchenH Offline
                                haselchen
                                Most Active
                                schrieb am zuletzt editiert von
                                #60

                                @paddex

                                Ich bin davon ausgegangen , dass du den Alexa Adapter neu startest.
                                Und da war meine Intention, dass Amazon das irgendwie mitbekommt und nach einer gewissen Zeit temporär den Zugang sperrt.

                                Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                390

                                Online

                                32.5k

                                Benutzer

                                81.8k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe