NEWS
[gelöst]Nur einmal im definierten Zeitraum auslösen? -Sonos Ansage
-
Tempestas,
Richtig! Darum geht es. Ich habe das ja auch mit der CCU Variablen gelöst. Sayit wird bespielt. Hier mal ein log Auszug
sonos-0 2017-06-20 07:51:35.576 info Restore state: volume - 49, mute: false, uri: sonos-0 2017-06-20 07:51:17.946 info Play on sonos[RINCON_B8E937E5C96201400]: http://192.168.xx.xx:8082/state/sayit.3.tts.mp3, Volume: 40 sonos-0 2017-06-20 07:51:17.931 info try to control id sonos.0.root.192_168_0_89.tts with {"val":"40;http://192.168.xx.xx:8082/state/sayit.3.tts.mp3","ack":false,"ts":1497937877917,"q":0,"from":"system.adapter.sayit.3","lc":1453448706} sayit-3 2017-06-20 07:51:17.853 info Copied file '/opt/iobroker/node_modules/iobroker.sayit/say.mp3' to '/opt/iobroker/cache/4fb8e282a851c96d6a99a645f84b4505.mp3' sayit-3 2017-06-20 07:51:17.844 info Set "sonos.0.root.192_168_0_89.tts: 40;http://192.168.xx.xx:8082/state/sayit.3.tts.mp3 sayit-3 2017-06-20 07:51:16.977 info saying: Guten Morgen, heute ist Dienstag der 20te Juni 2017\. Es ist 7 Uhr und 51 Minuten. Die Aussentemperatur beträgt 17,6 Grad. Wetter Bedingungen, Heiter .Heute haben Geburtstag, Xxxxxx
Dennoch bleibt die Sonos manchmal stumm, manchmal nicht. Ich habe den Eindruck, dass das mit dem Abspielen eines Radiosenders nach der Ansage zu tun hat. Bin aber nicht sicher. Ich beobachte vier Situationen:
1. ein Radiosender läuft. Wenn ich dann die Durchsage sende, wird sie zunächst korrekt angespielt. Dann allerdings nochmal, aber deutlich leiser. Warum zweimal, ich weiß es nicht. Und danach wird das Radio auch nicht fortgesetzt
2. eine Playlist läuft: diese wird von der Durchsage wunschgemäß unterbrochen und danach die Playlist fortgesetzt. Also alles bestens
3. Radio läuft und gleichzeitig gibt es auch noch eine Playlist in der Sonos Anzeige: Durchsage erfolgt wie unter 1. zweimal, beim zweitenmal leiser und weder das Radio noch die Playlist werden danach gespielt.
4. kein Radiosender, keine in der Sonos Anzeige: die Durchsage erfolgt korrekt. Das file wird angespielt und "verschwindet" danach auch aus der Playeransicht bei Sonos.
Fazit und Frage: wenn ein Radiosender aktiv ist, werden Durchsagen nicht mehr sauber angespielt. Hat jemand eine Idee, wie das korrigiert werden kann?
-
Sollten wir das nicht in einen separaten thread besprechen ?
Auslösung in Zeitraum ist gelöst oder?
Jetzt haben wir noch ein Sonos Problem
–-----------------------
Send from mobile device
-
Das war mir auch schon im Kopf herumgegangen. Soll ich den Titel ändern?
Vielleicht hören wir noch, was tempestas sagt….
-
Hallo skorpil,
nur in Kürze:
Auch ich (und andere) kennen das Problem mit SayIt, das es leiser wird, wenn mehrere Ansagen kommen.
Meine Vermutung ist, dass SayIt seinen Volume Befehl, sofern gesetzt, multipliziert, d.h. z.B. aus 15 (=0.15 von max 1) wird beim nächsten Mal 0.15 x 0.15 = 0,025 . Oder irgendwie so in der Richtung. Genaues bleibt unklar.
Ich kenne es von meiner "Fenster offen" Ansage, dass es immer leiser wurde bis hin zum totalen Muten der Boxen.
Siehe den Link, da beschreibt ein anderer User ebenfalls ähnliche Probleme. Dort war mir aufgefallen, dass er seine Ansage aus mehreren SayIts zusammensetzt, statt eine Datei zu schaffen, die dann abgespielt wird. Entsprechend wurde es bei ihm auch immer leiser. Leider hat er auf meine Nachfrage nicht mehr reagiert.
http://forum.iobroker.net/viewtopic.php?f=21&t=6694
Auch bei meinen Versuchen, meinen Alarmsound für die Alarmanlage über SayIT auszugeben, ist es mir aufgefallen. Da hatte ich zwar auch Skript Fehler, tatsache war aber, dass es immer leiser wurde, wenn das Skript die nächste Runde SayIT "eingeleitet" hat, während die alte noch aktiv war. Wobei "aktiv" teilweise nach meinem Eindruck länger ist als die reine Spielzeit der mp3.
Was für einen Radiostream nutzt du, wenn es zu Problemen kommt? Irgendwo habe ich von Problemen bei Amazon Prime gelesen, wohingegen tuneIn funktioniert (bei mir läufts ohne Probleme).
Bin nun erstmal unterwegs, mehr später.
-
Ich arbeite mit tuneIn. Das sieht ja danach aus, als hätte noch niemand eine Lösung. Und das scheint auch die Ursache für mein Problem zu sein…
Restore state: volume - 8, mute: false, uri: sonos-0 2017-06-21 08:02:06.429 info Play on sonos[RINCON_B8E937E5C96201400]: http://192.168.0.80:8082/state/sayit.3.tts.mp3, Volume: 40 sonos-0 2017-06-21 08:02:06.414 info try to control id sonos.0.root.192_168_0_89.tts with {"val":"40;http://192.168.0.80:8082/state/sayit.3.tts.mp3","ack":false,"ts":1498024926399,"q":0,"from":"system.adapter.sayit.3","lc":1453448706}
Schau mal auf mein Post #16. Da war "restore state: volume -40" und jetzt war es "-8".
Heute war die Ansage da.
Vielleicht sollten wir das mal als Fehler im GitHub melden und ggf. in einen neuen threat unter Adapter formulieren. Was mein ihr?
-
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: 40
Danach 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. `
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>