Sonos ???

@hoggle: Schutz gegen Mehrfachtriggerung hatte ich nicht mit drin. Vielleicht liegt ja daran. danke!

So sieht der Debug bei mir aus:

debug.png

Hallo Gemeinde,

ich habe jetzt mal ein wenig die TTS Scene der Franzosen angepasst, damit nun auch wieder WeatherConditions über die Fibaro funktioniert.
Freu mich wenn es jemand nutzen kann…

-- 245 Virtual Device ID
-- 28 Process button ID
local sid, bid = 245, 28 -- müsste bei jedem gleich sein wenn ihr das VD von Krikoff nutzt, ansonsten anpassen.

if fibaro:countScenes() > 1 then
  fibaro:abort();
end

local cond = ( api.get('/weather')['WeatherCondition']); --WetterCondition über Fibaro-API, bei jedem gleich.
local tempext = fibaro:getValue(27, "value"); -- Außentemperatur, bei mir MotionSensor ID für Temp.
fibaro:debug ("Außentemperatur : "..tempext)
local degre = string.gsub(tempext, '[,]' , ' komma ')
local degre = string.gsub(degre, '[.]' , ' komma ')
local degre = string.gsub(degre, '[-]' , ' minus ')
 
local currentDate = os.date("*t")
local jourL = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"}
local jour = jourL[currentDate.wday]
fibaro:debug ("Tag : "..jour)

 local moisL = {"Januar", "Februar", "März", "April", "Mai", "Juni",
               "Juli", "August", "September", "Oktober", "November", "Dezember"}
local mois = moisL[currentDate.month]
fibaro:debug ("Monat : "..mois)
 
local condfr ="";
if( cond == "clear" ) then condfr = "heiter"; end
if( cond == "cloudy" ) then condfr = "bewölkt. denk dran es könnte regnen"; end
if( cond == "rain" ) then condfr = "am regnen. vergiss deinen Schirm nicht"; end
if( cond == "snow" ) then condfr = "am Schneien"; end
if( cond == "storm" ) then condfr = "am stürmen, bleib mal besser zuhause"; end
if( cond == "fog" ) then condfr = "Nebelig, in Wuppertal"; end
fibaro:debug ("Wetter : "..condfr)
 
fibaro:debug ("Weitergabe des Textes an VoiceRSS")
-- Create TTS params object
 fibaro:debug ("Übergabe Text an fibaro und Ansage los")

local params = {
  
  -- TTS Message
  message = "Hallo meine lieben, ich wünsch euch einen Guten Tag. es ist "..jour .." der "..currentDate.day .." "..mois ..
            ". Es sind ".. currentDate.hour .." Uhr und ".. currentDate.min .." Minuten. "..
            "Die Außentemperatur beträgt "..degre ..
            " Grad. und es ist  "..condfr ..". ",  
  duration = 'auto',    -- Duration: "auto", xx seconds
  language = "de-de",    -- Language: de-de
  volume = 25            -- Volume
}
local _f = fibaro
local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end}
-- Make a request to the remote to process params object instantly
_x:set(tostring(sid), { tts = params })
_f:call(sid, "pressButton", bid) 

Vielleicht findet einer von euch noch raus warum man trotz abort der Scene immer wieder noch das Hallo der Dame einmal hört.
Anpassen und reinstellen bitte. Danke

Viel Spaß und MfG.

Basti

Hi,

Hat jemand statt VoiceRSS schon mal AWS Polly getestet?
https://aws.amazon.com/de/polly/

Viele Grüße Hoggle

Hallo Hoggle,

habe gesehen du nutzt auch die Node-Sonos-Http-API. Habe Versucht eine .mp3 von meiner NAS (Synology) abzuspielen. Bekomme das leider nicht ans laufen. Als Befehl habe ich folgendes eingetragen:

response = sonos:GET("/Bad/clip/192.168.2.115/music/TTS/Duschen.mp3/30");

hast du nen Tipp für mich wie ich das hinbekomme?

lg. Beijonig

Hi,

nein, mp3s nutze ich nicht (mehr)… :slight_smile:
Wenn Du den Link in den Brwoser aufrufst, geht es dann?

Schau mal in den Post:
https://forum.fibaro.com/index.php?/topic/21797-tutorial-alternative-sonos-vd-using-node-sonos-api/&

VG Hoggle

Hallo Basti,
ich habe für mein Sonos deine TTS Scene übernommen.
Da ich keinen MotionSensor für die Außentemperatur habe, habe ich die Zeilen 9-14 auskommentiert.

Nun zeigt mir die Scene folgendes an
siehe Anhang

Muss ich in Zeile 45 was ändern, weil ich keine Außentemperatur habe?
Ich dachte er holt sich das aus dem Fibaro Wetter.

Gruß secundani

debug-wetter.jpeg

Hi,

wenn Dein Script genauso aussieht, definierst Du nicht "degre ", was in Zeile 44 verwendet wird.
Da musst Du Zeile 44 entsprechend anpassen.

Oder oben “tempext” definieren.

VG Hoggle

Wenn Du die Temp aus dem HC nimmst, versuche mal in Zeiel 10:
local tempext = tonumber(api.get('/weather')['Temperature'])

Hi,
also das war ja echt ne super Hilfe. Danke
Es funktioniert super mit der Grad Ansage.

Nun hab ich aber noch ein Problem, sorry.

wenn ich die Szene im HC2 starte, dann kommt die Ansage super auf dem Sonos an.
Starte ich aber das VD mit dem Process Button, passiert nichts. Meine VD ID hab ich eingetragen und die Button ID hat sich ja nicht geändert.
Hast Du eventuell noch einen Tipp woran es liegen könnte?

Gruß

Hi,

Perfekt.
Was genau meinst Du mit
“Starte ich aber das VD mit dem Process Button”?
Welches VD?

Viele Grüße Hoggle

Moin,
ich dachte, dass das Sonos remote 1.0.1 ein Virtual Device ist.

Wenn ich über mein iPhone bzw. im HC2 selbst das Virtual Modul (Sonos remote 1.0.1) aufrufe und den Button “Process” drücke, passiert gar nichts.
Wenn ich die Scene die ich TTS genannt habe starte, dann kommt die Sprachausgabe perfekt. Zwar dreimal hintereinander, aber das ist erst mal weniger problematisch.
Ich habe in der scene auch das drin


if fibaro:countScenes() > 1 then
  fibaro:abort();

Ich habe auch wie hier in den Beiträgen beschrieben, über Debug, den Button geprüft und es kommt keine Fehlermeldung.
Leider habe ich überhaupt keine Ahnung warum der Button “Process” ID= 28 nicht reagiert.

Gruß

Hallo zusammen,

ich muss das Thema nochmal rausholen. Ich muss sagen, dass ich noch recht neu bin, was das Homecenter angeht, habt ein wenig NAchsicht, wenn ich nicht alles weiß…

Also, ich finde dass ja eine gute Idee.

Ich würde gerne von Montags - Freitags um genau zu sein, zwischen 6.30-7.45 eine Szene aktiv schalten.
Diese Szene sol über den Motion Sensor gestartet werden.
Sie soll mir das Wetter sagen, und Radio spielen.

So weit, so gut.

Ich habe gesehen, dass es verschiedene Möglichkeiten gibt.

Über den Controller und auch über die Remote. Die Controller habe ich beide ans Laufen bekommen, leider komme ich mit der Szene nicht weiter.

Ich habe schon versucht, die Szene von Nicolas Dörig
https://doonic.wordpress.com zu nutzen, da geht aber leider die Ansage nicht…

Leider habe ich nicht verstanden, wo man es auf Voice RSS Dienst umstellt.

Hat noch eine einen Tipp für mich?

Mit Controller meinst du denn Sonos-Commander?
Mit dem geht das TTS nicht (mehr)…
“die Remote” ist das Remote-VD?

Viele Grüße Hoggle

Moin Hoggle,

ja genau, ich meinte einmal den SONOS Commander und einmal den von Doonic und dann gibt es wohl noch einen mit der Version 1.01.
An laufen habe ich beide bekommen, nur um dann das beschriebenen Szene auszuführen bzw. TTS habe ich nicht ans laufen bekommen.

Du brauchst TTS geht (nicht) mehr. Gilt das für alle Dienste?

Für TTS bin hc auf VoiceRSS und AWS Polly umgestiegen nutze dafür aber einen RPI dazwischen.

Moin Hoggle,

alles klar, also verstehe ich das richtig: Kein Voice RSS auf SONOS ohne RPI, korrekt?

Denke, dass das auch mit dem Sonos-Remote-VD geht…
Müsste ich mir noch mal ansehen.

Moin Hoggle,

alles klar, wenn Du eine Idee hast, wäre ich nicht abgeneigt Sie auszuprobieren.

Auch eine Idee, dass die SONOS nur zu bestimmten Uhrzeiten funktioniert, wäre noch ein Traum…
Denn wer will schon nachts um drei auf Toilette gehen und dann geht das Gedudel erstmal los…

Besten Gruß, Pascal.

Hast du dich schon bei Voice RSS registriert?