NEWS
[gelöst]Nur einmal im definierten Zeitraum auslösen? -Sonos Ansage
-
Hallo Skorpil,
welches Volume wird denn da restored?
Man hat ja zum einen die Lautstärke der Sonosbox an sich, zum anderen SayIt (leider habe ich kein Gefühl dafür, wie diese beiden miteinander in Bezug stehen: Überschreibt SayIt die Sonos Einstellung? Wird es als Faktor eingerechnet?)
Auf dem Git steht ja auch noch:
> sayit.N.tts.volume: volume which will be used by playing of the phrase.Das ist ja das, was wir normalerweise ansprechen in den Skripten.
> You can specify the volume of announcement in percent from current or given volume (not from maximal). E.g. if command is de;75;Gutes Wetter and "announce volume" is 50%, the announce will be played with volume 38% from 100% possible.Wo setze ich das "announce volume"? Das habe ich noch nicht gefunden? Spielt das in das Problem mit rein?
-
Welche volumes da restored werden, weiß ich auch nicht. Ich vermute: der Wert vorher. Aber…..
Ich rate: "announce volume" ist das, auf dem die Sonos gerade steht. Also der letzte Stand des zuletzt angespielten Musikstückes, Ansage, was auch immer...ich verstehe den englischen Text so, dass die Lautstärke der Ansage sich stets auf den letzten "current" Stand bezieht. Und dieser auch "restored", also wieder hergestellt wird.
Nur, manchmal eben nicht. Z.B. bei Radiostreams...
-
Heute morgen habe ich manuell, bevor die Ansage kam, die Lautstärke auf einen mitteren Wert gestellt. Genau in Werten geht das leider nicht. Hier das log:
sonos-0 2017-06-22 07:31:13.802 info Restore state: volume - 42, mute: false, uri: sonos-0 2017-06-22 07:30:51.631 info Play on sonos[RINCON_B8E937E5C96201400]: http://192.168.xx.xx:8082/state/sayit.3.tts.mp3, Volume: 40Danach wird ja der Radiostream gestartet mit
"http://192.168.xx.xx/sonos2.php?zonen=kueche&action=radioplaylist&playlist=RTL%20-%20Die%20besten%20Hits%20aller%20Zeiten&volume=8";Hier wird als Lautstärke "Volumen=8" eingestellt. Und die zeigt sich so auch in der Sonos App.
-
Welche volumes da restored werden, weiß ich auch nicht. Ich vermute: der Wert vorher. Aber…..
Ich rate: "announce volume" ist das, auf dem die Sonos gerade steht. Also der letzte Stand des zuletzt angespielten Musikstückes, Ansage, was auch immer...ich verstehe den englischen Text so, dass die Lautstärke der Ansage sich stets auf den letzten "current" Stand bezieht. Und dieser auch "restored", also wieder hergestellt wird.
Nur, manchmal eben nicht. Z.B. bei Radiostreams... `
Das würde erklären, warum die Boxen leiser werden bis hin zum Mute. Meine Vermutung ist, dass SayIt während es läuft quasi die Lautstärke der Sonos "übernimmt", aber nicht schnell genug zurücksetzt.
Dann kommt die nächste Ansage, die Sonosbox gilt statt z.B. auf 50% eben nur auf SayIt * Sonosbox [sagen wir 15 x 50% = 7.5] und wird wieder multipliziert… so wird es immer leiser.
Meine Lösung für mein Fensterskript war es, einfach das SayIt Volume nicht zu setzen im Skript, wobei ich das auch noch beobachten muss (aktuell ist es einfach zu warm morgens).
Unklar bleibt aber sowieso für mich, was genau die Laustärke ist. Da die Boxen ja nicht in % geregelt werden sondern undefinierbaren absoluten Zahlen (was bedeuted "12"? Ich weiß nur, dass 12 bei mir für das Badezimmer laut genug ist morgens).
-
Das ist sehr lieb, Dutchman. Ich probiere erstmal und werde das funktionsfähige Skript hier posten - wenn ich es hinkriege. `
:D so wieder am PC, hier hast du mal ein beispiel wie ich es gelöst habe zur inspieration ;)
Blöcke:
Screen Shot 2017-06-18 at 15.03.41.png
Der generierte JavaCode sieht dan in etwa so aus:
var Bedtime; // Activate Bed-Time Modus by TV off Bedtime = false; on({id: "harmony.0.Woonkamer.activities.currentStatus"/*activity:currentStatus*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; // Disable lights living room with delay of 15 seconds if (getState("harmony.0.Woonkamer.activities.currentStatus").val == 0 && getState("openhab.0.items.Woonkamer_Kast").val == true && compareTime("22:00", "6:00", "between")) { setStateDelayed("openhab.0.items.Woonkamer_Kast", false, 15000, false); } Bedtime = true; }); schedule({astro: "sunrise", shift: 0}, function () { if (compareTime(getAstroDate("sunrise", undefined, 0), null, "<", null) && Bedtime == true) { Bedtime = false; } });In dem block setze ich eine variable auf falsch, danach die abfrage ob die variable false ist wen ja setze auf true.
Bei nästen mal ist die variable true und wird nichts ausgeöst.
Der zweite block setz per astro funtion den block wieder auf falsch (war in meinem fall praktisch kan aber auch anderer shedule usw sein).
Da ich es mit variablen löse ist der wert nicht festgelegd, also adapter, script oder iobroker neustart fängt dan wieder bei NULL an.
Dutch
PS: wenn du diese blöcke probieren möchtest hier der code zum import:
!
.....`Hey, ich habe mich an deinem Script orientiert da ich das ganze derzeit lerne :)
Ich benutze das ganze für eine Guten-Morgen Routine.
Irgendwie klappt es mit dem Flag aber nicht, kannst du sagen was ich falsch mache?
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="variables_set" id="xvs=nbv9z_Z)s;4Z!|#^" x="38" y="64"><field name="VAR">Wakeup</field> <value name="VALUE"><block type="logic_boolean" id="AjrYZTXBGz7w,~Vol6Wz"><field name="BOOL">TRUE</field></block></value> <next><block type="on" id="kPCG3bU;Fc7HHYySm@{Q"><field name="OID">node-red.0.hue-motion</field> <field name="CONDITION">ne</field> <statement name="STATEMENT"><block type="controls_if" id=";/djsW44X8,iQmkuZ!Uy"><value name="IF0"><block type="logic_operation" id="tgZjK(Z+ya7E2)fo1mjo"><field name="OP">AND</field> <value name="A"><block type="time_compare" id="epL2VT@^sVJ4VslQ-y_~"><mutation end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">06:00</field> <field name="END_TIME">13:00</field></block></value> <value name="B"><block type="logic_compare" id="e]lW_ksSt7qU~^F8JsvJ"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="5G:,`TR:EOA4v2i!JuA-"><field name="ATTR">val</field> <field name="OID">node-red.0.hue-motion</field></block></value> <value name="B"><block type="logic_boolean" id="G|,)nJw[c=62.zDmB|`6"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="Z5Mtuz[=Qey@=8+o9=LA"><mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090XXX70MLB.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text_join" id="PPs!%YASk!0_zaU20niI"><mutation items="5"></mutation> <value name="ADD0"><block type="text" id="-!?cr_WS}IK!;yZC2`!a"><field name="TEXT">Guten Morgen Chef. Ich hoffe du hast gut geschlafen. Dein Wagen hat noch</field></block></value> <value name="ADD1"><block type="get_value" id="bsS=yj1t~Vc2P0`jE5JR"><field name="ATTR">val</field> <field name="OID">bmw.0.XXXXX.dynamic.remaining_fuel</field></block></value> <value name="ADD2"><block type="text" id="vY3Y_`Q9y;q1]pt|WI;R"><field name="TEXT">Liter im Tank, was einer ungefähren Reichweite von</field></block></value> <value name="ADD3"><block type="get_value" id="MyW,AR!g!)-5`{p!n`^4"><field name="ATTR">val</field> <field name="OID">bmw.0.XXXXX.dynamic.kombi_current_remaining_range_fuel</field></block></value> <value name="ADD4"><block type="text" id="WMIilUe72b(P/%l1}6B="><field name="TEXT">Kilometer entspricht.</field></block></value></block></value> <next><block type="control" id="#~uPdO~TuVuqY;HL_TVW"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090XXX70MLB.Routines.4a56b499-87ff-4c8e-aae1-6e0d58d282fd</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">13</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="x=?;8Ck-h~K?+GPG?1Hw"><field name="BOOL">TRUE</field></block></value></block></next></block></statement> <next><block type="variables_set" id="=~tAtK@6owV.Uq`Br9MB"><field name="VAR">Wakeup</field> <value name="VALUE"><block type="logic_boolean" id="Ahp!B(;)WC+R#C`kAQ{K"><field name="BOOL">FALSE</field></block></value></block></next></block></statement> <next><block type="astro" id="nqQ4%f_iInvU{ytAz]47"><field name="TYPE">night</field> <field name="OFFSET">0</field> <statement name="STATEMENT"><block type="controls_if" id=";@|9?-X9ar]3sk+h`|1T"><value name="IF0"><block type="time_compare" id="o0C8kqnxjshVIy*`1v+2"><mutation end_time="false"></mutation> <field name="OPTION">></field> <field name="START_TIME">05:00</field></block></value> <statement name="DO0"><block type="variables_set" id=")eT.f,x+2V+ah|{H.g4d"><field name="VAR">Wakeup</field> <value name="VALUE"><block type="logic_boolean" id="5(v;8@2RzqpVe{BcM[sG"><field name="BOOL">TRUE</field></block></value></block></statement></block></statement></block></next></block></next></block></xml>