NEWS
Badradio
-
@lustig29
sollte so laufen:<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="{!Ow5W{xI=1u8E[NnSUK" x="-713" y="-962"> <field name="OID">deconz.0.Sensors.14.presence</field> <field name="CONDITION">gt</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="Kx3vNe=R:}qK8)0gWt@"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="4?*WfIKqZiI!c(5PfJ@j" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="x`2E4DnQ.BgSd,iRP*c8" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="Ohd:_Bw/iju]Awl-^=z-"> <field name="OP">NEQ</field> <value name="A"> <block type="time_get" id="O^x[v[!?catkP4RCpOz]"> <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="Ja2f??qvp!GX*YKtcJ]6"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id=")oLQU@bu6a5/?n_Dhv1h"> <field name="OP">NEQ</field> <value name="A"> <block type="time_get" id="NN4DT)!uI~)C([1SECM*"> <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="My8hqgd2/OACXUvdMGC{"> <field name="NUM">6</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="time_compare_ex" id="Tt0_xmUcA.@q=R^6c?K"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"> <shadow type="text" id="Ds2^t-6oqCLq{#P9fh(/"> <field name="TEXT">21:00</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="gu#LKi_N|YJrLy[.i6XR"> <field name="TEXT">04:30</field> </shadow> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="procedures_callnoreturn" id="HYDQ4AV{{wC}d6ksPT*]"> <mutation name="mach Musik"></mutation> </block> </statement> <value name="IF1"> <block type="logic_operation" id="H:r0a@jlkAc9sL$O(O#V" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="P$fbDr7:773XkVU2=BJp" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="i3/O:|ti/LY/uHR/fEU+"> <field name="OP">EQ</field> <value name="A"> <block type="time_get" id="^G;Psf~+o2]}Uob(]b2a"> <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="_.Mul65$$G*j*sZ^bQ.r"> <field name="NUM">5</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="iK:{R?msG0E(6C}XAUog"> <field name="OP">EQ</field> <value name="A"> <block type="time_get" id="H{FxEk#$^~Rwn5uv]37Y"> <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="_P;Wn7P;KOm7#aLJNC)}"> <field name="NUM">6</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="time_compare_ex" id="^lfh?S(toOnFPFKDFi+g"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"> <shadow type="text" id="8dK5/$+^{fKNNFd^zvf/"> <field name="TEXT">23:00</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="z=Vk@M/,CRI+E`n8`bUU"> <field name="TEXT">04:30</field> </shadow> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="procedures_callnoreturn" id="dz?2/:3,Q*Br%A9/HRYS"> <mutation name="mach Musik"></mutation> </block> </statement> </block> </statement> <next> <block type="on" id="sM:.Y~^%@f(]1=[;xCd]"> <field name="OID">deconz.0.Sensors.9.open</field> <field name="CONDITION">gt</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="5cj)P381Yi%K(%Q6B4l"> <value name="IF0"> <block type="get_value" id="I,5DN_vB(m]L_X%%l0C"> <field name="ATTR">val</field> <field name="OID">javascript.0.scriptEnabled.Alexa.Musik_an</field> </block> </value> <statement name="DO0"> <block type="control" id="-YhxQx;-Ohq38S3jpH,F"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0QU0574740N2B.Player.controlPause</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=".=Zr.OXX+3jD[5g4N84O"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="z.h$,n|N2GUp46ne8_SS"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.Alexa.Musik_an</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="#Lz~5_ooORwjdqU#Xd|]"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="oQu-RS?b?*%VTU/wm#PF" disabled="true"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Sensors.6.presence</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="J5VYYL98Ib}qaE`GTXmi"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> <block type="procedures_defnoreturn" id="zDn%EJ=R{.L40rH7~+|Q" x="62" y="-962"> <field name="NAME">mach Musik</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="control" id="0caXwgeFdZ2+*-%4$]n7" disabled="true"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0QU0574740N2B.Commands.speak-volume</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_number" id="qgnMFdS`CHLm~05gl|0$"> <field name="NUM">30</field> </block> </value> <next> <block type="control" id="beIy{b}b`o+JDO}s--G*" disabled="true"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0QU0574740N2B.Commands.ssml</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="@8xQbOq8H?PQJA?Obn$x"> <field name="TEXT"><speak><voice name="Hans">Hallo, ich wünsche dir viel Erfolg bei deinem Geschäft. Hände waschen bitte nicht vergessen!</voice>.</speak></field> </block> </value> <next> <block type="control" id="k!y+]`TjgB*YNCulFP(b" disabled="true"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0QU0574740N2B.Player.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="|,.2zG8A2}c;nn9~X%3Z"> <field name="NUM">20</field> </block> </value> <next> <block type="control" id="!l0yy;jVq!YL4RH3xD/8" disabled="true"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0QU0574740N2B.Music-Provider.TuneIn</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">4</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="text" id="V4T*~XZ),3.JVa}:sLV,"> <field name="TEXT">HR 3</field> </block> </value> <next> <block type="control" id="DENupJe1)#Ft`L$5)c^,"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0QU0574740N2B.Player.controlPlay</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="I%X3.ec/A@FYni-5!MvP"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="-K*]=!?T(x=t3aH]yXB"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.Alexa.Musik_an</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="R4Lwk@QMSU7wLUUR_{)"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
@Jan1 Hallo, das Skript läuft soweit ganz gut. Ich muss es nur beim ersten betreten selbst starten...?
Beim ersten Betreten passiert nichts. Wenn ich Alexa sage: "Spiele... auf Tunein", geht es los.
Beim nächsten Betreten des Bades funktioniert dann das Skript wie gewollt. Bewegung wird erkannt, Wiedergabe startet.
Ich vermute das es mit dem Control Play / Control Pause zusammen hängt. Sind ja Buttons.
Ich habe leider noch keine Lösung gefunden.
Den BMW, schließe ich als Fehler aus. Ich habe noch einen LED Streifen im Bad, der über diesen und den Türkontakt gestört wird. Das geht ohne Probleme -
@lustig29
Schau doch einfach mal die Trigger DPs an, wie die zuerst stehen und ob die sich wie angegeben ändern. -
@Jan1 Control Play steht schon auf true. Das dürfte doch nicht sein, oder?
-
@lustig29
Du startest ja ein weiteres Script und kein Plan was das macht. Wenn irgendwas auf true steht, hast einfach vergessen das per Script auch wieder auf false zu schalten. Schau einfach wo was nicht passt und ergänzt es. Das Grundgerüst läuft ja und der Rest ist Kindergeburtstag. -
@lustig29
das geht schon so wie Du das machen möchtest, aber warum so kompliziert ?
Ich habe mir mal eine Routine in der Alexa App gemacht (spiele ndr zwei). Diese Routine ist im Alexa Adapter (nach dem Routine erstellen den Adapter neu starten) verfügbar. Bei mir ist der Trigger eine HUE Lampe (weil die sowieso über einen Bewegungsmelder eingeschaltet wird) Diese Routine läuft immer zuverlässig und das Blockly wird sehr einfach (bis auf Deine Zusatzeinschränkungen)
Geht das Licht an, startet der Radiosender, geht das Licht aus, dann auch der Radiosender...Routine
Mein kurzes Blockly
Edit: und hier schaltest Du ganze Scripte an und aus, das ist ohnehin nicht empfohlen...
und hier...
-
@dslraser Ja, aber warum funktioniert das mit ControlPlay nicht? Ich möchte ja nicht irgendeinen Radiosender abspielen. Ich will nur, dass die Musikwiedergabe fortgesetzt wird. Egal ob Tunein, Spotify, usw.
-
So sieht mein Skript im Moment aus
-
@Jan1 Kannst du mir bitte nochmal helfen mit dem Control Play Problem?
-
@lustig29
ich bin zwar nicht Jan1 und kenne Deinen Bewegungsmelder nicht (meine BWM bleiben auf true, solange Bewegung erkannt wird und lassen sich konfigurieren wann sie wieder auf false gehen wenn keine Bewegung mehr erkannt wird)
Ich weiß auch nicht wie lange der letzte Sender (oder Provider) in den Datenpunkten vom Alexa2 Adapter nach dem letzten abspielen drinn stehen bleibt. Wenn die immer drinn bleiben, dann sollte doch ein erneutes drücken auf play reichen.Vorschlag, so in etwa (nicht getestet)
EDIT: Export eben noch mal etwas verändert (22.07.2020 19:06 Uhr)
-
@dslraser Dankeschön, werde ich mal testen.
-
@dslraser Dankeschön, werde ich mal testen.
Ich habe das mal bei mir getestet.
Ich weiß auch nicht wie lange der letzte Sender (oder Provider) in den Datenpunkten vom Alexa2 Adapter nach dem letzten abspielen drinn stehen bleibt. Wenn die immer drinn bleiben, dann sollte doch ein erneutes drücken auf play reichen.
Der Sender steht zwar noch in den Datenpunkten vom Alexa2 Adapter drinn, aber nach einer Weile (wie lange weiß ich nicht) reicht ein einfaches play drücken dann nicht mehr. Da muss dann erst einmal wieder bei den Povider Daten im Adapter (der Sender, oder auch eine Play Liste usw.) neu angestoßen werden.
Ich höre bei mir immer den gleichen Sender und lade quasi den dann neu.
Immer das was zu letzt gehört wurde irgendwann wieder einfach per play zu starten, geht also so nicht.
Man müsste wahrscheinlich dafür das zu letzt gehörte in eine Variable im Blockly weg schreiben (oder auch in einen eigenen Datenpunkt) und das dann wieder starten. -
@dslraser Gute Idee.Wie würde das dann in etwa aussehen?
-
-
@dslraser Super, vielen Dank schon mal
-
Super, vielen Dank schon mal
immer das zu letzt gehörte nach irgendeiner Pause wieder ab zu spielen ist komplizierter als gedacht. Wenn es sich nur auf z.B. Radiosender von TuneIn begrenzen würde, dann ginge es ja noch.
Aber, sobald andere Skills oder auch Playlisten, egal ob von Amazon Music oder auch andere Playlisten zwischendurch was abspielen, dann erscheinen die gar nicht in den Datenpunkten vom Alexa2 Adapter, somit kann man die nicht abgreifen.
Da ich immer den gleichen TuneIn Sender einschalten lasse, habe ich da bisher auch nicht weiter drauf geachtet.
Ich habe auch nicht wirklich eine Idee bzw. eine Logik wie man alle diese Datenpunkte beobachten soll (geht zwar) und dann eine Logik für das zu letzt gehörte aufbauen kann, da sich selbst innerhalb von TuneIn "Provider" oder auch Service verändern.
Das alles ändert sich (das meiste davon)
damit hatte ich so angefangen, werde es aber nicht weiter verfolgen
Vielleicht hilft Dir Jemand anderes bei diesem Projekt...
Ich bin da dann raus. -
Hätte noch einmal eine Frage. Kann man das Skript eventuell so gestalten, dass die Musik gleich beim Betreten startet und beim Verlassen sofort endet? Ich habe einen Türkontakt von Xiaomi und einen Bewegungsmelder von Ikea im Bad im Einsatz. Vielleicht kann man ja was mit den 2 Objekten basteln. Was mich aktuell auch noch stört, dass die Musikwiedergabe erst nach 5 Sekunden startet. Hänge mein aktuelles Skript nochmal als Bild dran.
-
Einen gewissen zeitlichen Versatz wirst Du immer haben, wenn Du mit Streams arbeitest. Skript wird ausgelöst, abgearbeitet, dann wird der Stream für Dein Gerät aufbereitet....da können schonmal 5sek ins Land ziehen.
-
Ich bins mal wieder.
Dieses Mal mit diesem Bad Skript. Meine Frage, warum startet die Musik Wiedergabe nach ca. 2 Minuten neu und wie kann ich das ändern? -
hi,
ich würde in die Funktion "mach Musik" eine Abfrage nach _Is Playing reinnehmen und nur HR3 setzten wenn nicht schon läuft, dann kannste auch manuell übersteuern.