Seite 1 von 1

Lautstärke während einer Sprachausgabe

Verfasst: 25. Sep 2022 22:42
von Snatsch
Hallo,
könnte mal wieder etwas Hilfe gebrauchen :)
Ich habe folgende Rule mit eurer Hilfe am laufen.

Code: Alles auswählen

rule "send Message"
when
    Item Meldung received update
then
    GoogleHomeMinni_Lautstarke.sendCommand(100)
    if(Meldung.state == NULL || Meldung.state.toString == "") {
        logWarn("message","Item Meldung erhielt Update auf {}, keine Ausgabe möglich!",Meldung.state)
        return;
    }
    val String strMessage = Meldung.state.toString
    val urlmessage = java.net.URLEncoder::encode(strMessage, 'UTF-8')
    val telegramAction = getActions("telegram","telegram:telegramBot:XXXXXXX")
    telegramAction.sendTelegram(strMessage)
    say(strMessage,null)
    sendHttpGetRequest("https://api.callmebot.com/whatsapp.php?source=openHAB&phone=+XXXXXX&apikey=XXXXXX&text=" + urlmessage)
    GoogleHomeMinni_Lautstarke.sendCommand(50)
end
jetzt ist es so das die Lautstärke zwar vor der Sprachausgabe hoch geht aber während der Ausgabe wieder runter :(
könnte man da mit einem Timmer arbeiten ? Also das die Lautstärke nach 30 Sekunden oder so wieder runter geht

MfG Snatsch

Re: Lautstärke während einer Sprachausgabe

Verfasst: 26. Sep 2022 16:33
von udo1toni
Vor allem setzt Du die Lautstärke schon hoch, bevor Du weißt, ob Du überhaupt einen Ton ausgeben kannst ;) wenn also die Warnmeldung ausgegeben wird, bleibt die Lautstärke auf 100 %.
Leider gibt es keine Rückmeldung von der say() Action für das Ende der Ausgabe, weshalb tatsächlich ein Timer das Mittel der Wahl sein dürfte.

Re: Lautstärke während einer Sprachausgabe

Verfasst: 26. Sep 2022 18:07
von Snatsch
ich habe es jetzt so gemacht und es scheint auch zu funktionieren

Code: Alles auswählen

var Timer mVolume = null
rule "send Message"
when
    Item Meldung received update
then
    GoogleHomeMinni_Lautstarke.sendCommand(80)
    if(Meldung.state == NULL || Meldung.state.toString == "") {
        logWarn("message","Item Meldung erhielt Update auf {}, keine Ausgabe möglich!",Meldung.state)
        return;
    }
    val String strMessage = Meldung.state.toString
    val urlmessage = java.net.URLEncoder::encode(strMessage, 'UTF-8')
    val telegramAction = getActions("telegram","telegram:telegramBot:xxxxxxx")
    telegramAction.sendTelegram(strMessage)
    say(strMessage,null)
    sendHttpGetRequest("https://api.callmebot.com/whatsapp.php?source=openHAB&phone=xxxxxxxxx&apikey=xxxxxxx&text=" + urlmessage)
    
    mVolume = createTimer(now.plusSeconds(10), [|
    GoogleHomeMinni_Lautstarke.sendCommand(50)
    ])
    
end

Re: Lautstärke während einer Sprachausgabe

Verfasst: 27. Sep 2022 06:06
von udo1toni
Ja, aber wie erwähnt... oder vielleicht etwas anders formuliert: Du solltest die Lautstärke erst nach der Prüfung auf eine gültige Meldung auf 80 setzen, also die Zeile

Code: Alles auswählen

GoogleHomeMinni_Lautstarke.sendCommand(80)
hinter den if-Block verschieben.

Re: Lautstärke während einer Sprachausgabe

Verfasst: 27. Sep 2022 20:47
von Snatsch
Also so hier ?

Code: Alles auswählen

var Timer mVolume = null
rule "send Message"
when
    Item Meldung received update
then
    
    if(Meldung.state == NULL || Meldung.state.toString == "") {
        logWarn("message","Item Meldung erhielt Update auf {}, keine Ausgabe möglich!",Meldung.state)
        return;
    }
    GoogleHomeMinni_Lautstarke.sendCommand(80)
    val String strMessage = Meldung.state.toString
    val urlmessage = java.net.URLEncoder::encode(strMessage, 'UTF-8')
    val telegramAction = getActions("telegram","telegram:telegramBot:xxxxxxx")
    telegramAction.sendTelegram(strMessage)
    say(strMessage,null)
    sendHttpGetRequest("https://api.callmebot.com/whatsapp.php?source=openHAB&phone=+xxxxxxxx&apikey=xxxxxxx&text=" + urlmessage)
    
    mVolume = createTimer(now.plusSeconds(10), [|
    GoogleHomeMinni_Lautstarke.sendCommand(50)
    ])
    
end

Re: Lautstärke während einer Sprachausgabe

Verfasst: 27. Sep 2022 23:16
von udo1toni
Genau :)