Alexa Sprachausgabe

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Lactobacillus
Beiträge: 165
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Alexa Sprachausgabe

Beitrag von Lactobacillus »

Hallo, unsere Waschmaschine ist schon Smart und meldet über Alexa wenn sie fertig ist. Etwas ähnliches will ich nun mit dem Trockner erreichen mittels einer FritzDect 210. In Openhab hab ich bereits mittels einer Rule die Alexa zum sprechen gebracht aber nun fehlt mir die Idee wie ichs hinbekomme dass z.B. bei 25 W Leistung der Steckdose die Meldung kommt der Trockner ist fertig.

Harka
Beiträge: 592
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Alexa Sprachausgabe

Beitrag von Harka »

Moin,
eine Lösung in Javascript könnte etwa so aussehen (Trigger Leistung):

Code: Alles auswählen

var alt = parseFloat(event.oldState);
var neu = parseFloat(event.newState);
if (neu < 2 && alt >= 2) {
  items.getItem('AlexaSprich').sendCommand('Der Trockner ist fertig');
}
Fehlt noch das Abfangen von Fehlern.

Benutzeravatar
udo1toni
Beiträge: 15644
Registriert: 11. Apr 2018 18:05
Answers: 254
Wohnort: Darmstadt

Re: Alexa Sprachausgabe

Beitrag von udo1toni »

Ich gehe davon aus, dass Du bereits die aktuelle Leistung des Trockners erfasst.
Die aktuelle Leistung solltest Du persistieren und Dir die entstehende Lastkurve anschauen (am besten vergleichst Du mehrere Trocknungsvorgänge) Typische Lastkurven weisen gerne zwischendurch mal recht niedrige Leistungsaufnahme auf, entsprechend musst Du also nicht nur auf das Unterschreiten einer bestimmten Schwelle prüfen, sondern, ob diese Schwelle über eine bestimmte Zeit unterschritten wird. Das geht dann z.B. so:

Code: Alles auswählen

var Timer tTrockner = null
rule "Trocker fertig"
when
    Item trocknerLeistung changed
then
    if((newState as Number).intValue > 25) {
        tTrockner?.cancel
        tTrockner = null
        return;
    }
    if(tTrockner === null)
        tTrockner = createTimer(now.plusMinutes(4),[|
            // der Trockner ist fertig, Meldung generieren
            tTrockner = null
        ])
end
Die Rule wird jedes Mal ausgelöst, wenn sich die Leistungsaufnahme des Trockners ändert.
Zunächst prüft die Rule, ob der neue Wert größer als 25 ist (falls das Item nicht Watt liefert, muss man hier natürlich anpassen).
Ist das der Fall, wird ein eventuell laufender Timer tTrockner abgebrochen und der Verweis auf den Timer entfernt. Anschließend wird die Rule abgebrochen.
Ist der Wert hingegen nicht größer als 25, prüft die Rule, ob ein Timer angelegt ist. Ist das nicht der Fall (tTrockner ist null, enthält also keinen Verweis auf einen Timer), so erzeugt die Rule einen Timer. Anschließend ist die Rule beendet.

Wenn nun über (im Beispiel) 4 Minuten der Schwellwert nicht überschritten wurde, läuft der Timer ab und sendet die Nachricht (ich habe hier der Einfachheit halber nur eine Kommentarzeile eingefügt...). Anschließend wird noch der Verweis auf den Timer entfernt und alles ist im Ursprungszustand.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

Lactobacillus
Beiträge: 165
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Alexa Sprachausgabe

Beitrag von Lactobacillus »

Hallo, nein bisher habe ich die Leistung des Trockners nicht erfasst kann ich aber machen. Die 25 Watt waren nur mal eine Nummer.

@Udo1Toni, wie bekomme ich das ganze dann aber auf die Alexa?

Benutzeravatar
udo1toni
Beiträge: 15644
Registriert: 11. Apr 2018 18:05
Answers: 254
Wohnort: Darmstadt

Re: Alexa Sprachausgabe

Beitrag von udo1toni »

Lactobacillus hat geschrieben: Gestern 12:39 wie bekomme ich das ganze dann aber auf die Alexa?
Das verstehe ich jetzt nicht.
Im Ausgangsposting schreibst Du doch
Lactobacillus hat geschrieben: 5. Mär 2026 21:15 In Openhab hab ich bereits mittels einer Rule die Alexa zum sprechen gebracht
Also musst Du ja schon einen entsprechenden Befehl gesendet haben.

Aber ganz grundsätzlich müsstest Du per Alexa Addon für jede angebundene Alexa einen String Channel haben, den Du wiederum mit einem String Item koppelst. Und dann sendest Du den gewünschten Text mittels sendCommand, also z.B.

Code: Alles auswählen

meineAlexa.sendCommand("Der Trockner scheint fertig zu sein.")
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

Lactobacillus
Beiträge: 165
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Alexa Sprachausgabe

Beitrag von Lactobacillus »

Hallo, ja ich habe die Alexa in der Tat zum sprechen gebracht nur muss ich diese Skript ja nun irgendwie in die Rule bekommen 🤔

Benutzeravatar
Snatsch
Beiträge: 459
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Alexa Sprachausgabe

Beitrag von Snatsch »

bei mir zwar google aber das dürfte keinen Unterschied machen. :)

Code: Alles auswählen

var Timer sVolume = null
var Timer xVolume = null
rule "send MessageSay"
when
    Item MeldungSay received update
then
    
    if(MeldungSay.state == NULL || MeldungSay.state.toString == "") {
        logWarn("message","Item Meldung erhielt Update auf {}, keine Ausgabe möglich!",MeldungSay.state)
        return;
    }
    GoogleHomeMinni_Lautstarke.sendCommand(80)
    xVolume = createTimer(now.plusSeconds(2), [|
    val String strMessage = MeldungSay.state.toString
        say(strMessage, "voicerss:deDE")
    ])
        sVolume = createTimer(now.plusSeconds(10), [|
    GoogleHomeMinni_Lautstarke.sendCommand(50)
    ])


        
end
habe noch die Lautstärke angepasst damit ich auch was höre :lol:
deinen Sprachdienst welchen du verwendest musst du auch noch ändern ;)
openhab5.1.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

Lactobacillus
Beiträge: 165
Registriert: 1. Mär 2019 09:13
Answers: 0
Wohnort: Untergruppenbach BaWü

Re: Alexa Sprachausgabe

Beitrag von Lactobacillus »

Bild
Snatsch hat geschrieben: Gestern 22:12 bei mir zwar google aber das dürfte keinen Unterschied machen. :)

Code: Alles auswählen

var Timer sVolume = null
var Timer xVolume = null
rule "send MessageSay"
when
    Item MeldungSay received update
then
    
    if(MeldungSay.state == NULL || MeldungSay.state.toString == "") {
        logWarn("message","Item Meldung erhielt Update auf {}, keine Ausgabe möglich!",MeldungSay.state)
        return;
    }
    GoogleHomeMinni_Lautstarke.sendCommand(80)
    xVolume = createTimer(now.plusSeconds(2), [|
    val String strMessage = MeldungSay.state.toString
        say(strMessage, "voicerss:deDE")
    ])
        sVolume = createTimer(now.plusSeconds(10), [|
    GoogleHomeMinni_Lautstarke.sendCommand(50)
    ])


        
end
habe noch die Lautstärke angepasst damit ich auch was höre :lol:
deinen Sprachdienst welchen du verwendest musst du auch noch ändern ;)
Irgendwie stehe ich auf dem Schlauch. Ich muss doch irgendwie die Fritz Dect Steckdose und die Alexa sprich in eine Rule bringen also die Rule von Udo1Toni und den Sprachbefehl dann.

Antworten