Alexa Sprachausgabe
-
Lactobacillus
- Beiträge: 162
- Registriert: 1. Mär 2019 09:13
- Wohnort: Untergruppenbach BaWü
Alexa Sprachausgabe
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: 591
- Registriert: 30. Apr 2021 13:13
Re: Alexa Sprachausgabe
Moin,
eine Lösung in Javascript könnte etwa so aussehen (Trigger Leistung): Fehlt noch das Abfangen von Fehlern.
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');
}- udo1toni
- Beiträge: 15641
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Alexa Sprachausgabe
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:
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.
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
])
endZunä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.2 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.5 - 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
Hostsystem Proxmox VE 9.1.5 - 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