Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Alexa Wecker schaltet Beleuchtung an

    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

    Alexa Wecker schaltet Beleuchtung an

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

      @dslraser
      Jo. Ich schreib das noch so, da wo der Wecker klingelt, also Schlafzimmer, Kinderzimmer u.s.w., das dann auch nur "Da" die Lampen angehen, u.s.w. 🙂

      Einfach für jeden Echo den Block kopieren, und das Licht, oder was auch immer passieren soll, passiert dann, wenn der Wecker klingelt.

      Pfad zum Alexa2 Adapter kopieren und umändern. Beispiel:

      alexa2.0.Echo-Devices.G000MW04741702CN.Alarm.00444ada-fc0d-37e3-84ff-03b6b8e93613.triggered

      umändern in

      alexa2.0.Echo-Devices.G000MW04741702CN.Alarm.*.triggered
      und dann einfügen.

      Von nem riesen Script zu nem Einzeiler. Schon fasst Peinlich.. 😂😂
      Zwischenablage-1.jpg

      J ostseereiter 2 Replies Last reply Reply Quote 0
      • J
        Jan1 @Elzershark last edited by Jan1

        @Elzershark
        Ok das war ja das Beispiel @sveni_lee oben und wenn das funktioniert, brauch ich das gar nicht mehr testen.
        Wenn man die Funktion dieses Block kennt, ist es wirklich sehr einfach😎

        Da muss ich mir gleich noch was ausdenken wo man das noch überall sinnvoll einsetzen kann.

        S 1 Reply Last reply Reply Quote 1
        • S
          sveni_lee @Jan1 last edited by

          @Jan1

          naja, im Grunde überall wo Du verschiedene DP überwachenmöchtests die entweder mit dem gleichen Pfad beginnen oder aber gleich enden... Das gilt für eine Menge Adapter...

          J 1 Reply Last reply Reply Quote 1
          • J
            Jan1 @sveni_lee last edited by

            @sveni_lee
            Eben und da gibts am WE viel zu vereinfachen. Bei Blockly erklärt sich das meiste von selber, aber solche Blöcke eben nicht. Deshalb freue ich mich da immer wie Bolle, wenn einer hier mal ein Beispiel aufzeigt was das Ding macht und gleich ein praktisches Beispiel dazu.

            Das lustige bei Dir ist dann noch, dass Du von Blockly kein Plan hast, aber eben JavaScript beherrschst.

            1 Reply Last reply Reply Quote 0
            • ostseereiter
              ostseereiter @Elzershark last edited by

              @Elzershark
              der Trigger RegExp gibt es bei mir nicht. Bekomme auch ne Fehlermeldung beim Script kopieren,
              Screenshot (29).png

              dslraser 1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @ostseereiter last edited by

                @ostseereiter

                welche Version vom Adapter ist installiert ?

                Bildschirmfoto 2020-01-27 um 16.26.52.png

                ostseereiter 1 Reply Last reply Reply Quote 0
                • ostseereiter
                  ostseereiter @dslraser last edited by

                  @dslraser 4.1.12
                  Screenshot (30).png

                  ostseereiter dslraser paul53 3 Replies Last reply Reply Quote 0
                  • ostseereiter
                    ostseereiter @ostseereiter last edited by

                    Screenshot (31).png
                    Muss man hier noch was einstellen?

                    1 Reply Last reply Reply Quote 0
                    • dslraser
                      dslraser Forum Testing Most Active @ostseereiter last edited by

                      @ostseereiter
                      installiere mal eine höhere Version, der Baustein kam glaube ich erst nach 4.1.12 dazu

                      ostseereiter 1 Reply Last reply Reply Quote 0
                      • ostseereiter
                        ostseereiter @dslraser last edited by

                        @dslraser ok alles klar

                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @ostseereiter last edited by

                          @ostseereiter sagte:

                          4.1.12

                          Installiere Version 4.3.4 (latest).

                          ostseereiter 1 Reply Last reply Reply Quote 1
                          • ostseereiter
                            ostseereiter @paul53 last edited by

                            @paul53
                            habe jetzt aus latest 4.3.0 installiert höher gibt es bei mir nicht. Funktioniert aber auch danke.

                            1 Reply Last reply Reply Quote 0
                            • X
                              xbow42 last edited by 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?
                              dslraser 1 Reply Last reply Reply Quote 0
                              • dslraser
                                dslraser Forum Testing Most Active @xbow42 last edited by

                                @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 paul53 2 Replies Last reply Reply Quote 1
                                • X
                                  xbow42 @dslraser last edited by xbow42

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

                                  B 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @dslraser last edited by paul53

                                    @dslraser
                                    Besser so:

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

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

                                    1 Reply Last reply Reply Quote 3
                                    • B
                                      bishop @xbow42 last edited by

                                      @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 Reply Last reply Reply Quote 0
                                      • X
                                        xbow42 @bishop last edited by 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 1 Reply Last reply Reply Quote 0
                                        • B
                                          bishop @xbow42 last edited by

                                          @xbow42
                                          werde mal schauen was ich verwenden kann!

                                          vielen dank

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            Paddex last edited by

                                            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

                                            dslraser Dr. Bakterius 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            438
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly javascript
                                            13
                                            60
                                            4967
                                            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