Seite 7 von 9
Re: Meldung Waschmaschine wenn fertig
Verfasst: 23. Mai 2022 21:36
von Innocent
Jesses... Das versteh ich nicht... Werde mich aber dennoch hin setzen und mich damit beschäftigen.
Items heißen alle recht gleich.
BatteryLevelKZ
BatteryLevelSZ
BatteryLevelGWC
Das einfachste für mich wäre das zu adaptieren was ich schon habe

Re: Meldung Waschmaschine wenn fertig
Verfasst: 23. Mai 2022 22:17
von udo1toni
Wie gesagt... lege einfach drei Switch Items an:
Code: Alles auswählen
AlarmBatteryLevelKZ "Kinderzimmer"
AlarmBatteryLevelSZ "Schlafzimmer"
AlarmBatteryLevelGWC "Gäste WC"
In Anführungszeichen stehen jeweils die Label.
Und noch die beiden Gruppen
Und oben stehende Rule...
Wahlweise kannst Du gAlarmBatteryLevel auch noch gleich nutzen, um anzuzeigen, wie viele Batterien gewechselt werden müssen. Dazu musst Du die Aggregation Funktion der Group auf One OFF then OFF else ON setzen. Anschließend kannst Du im Label mit %d die Anzahl der Items ablesen, welche OFF sind.
Re: Meldung Waschmaschine wenn fertig
Verfasst: 13. Feb 2023 14:18
von Selter
Snatsch hat geschrieben: ↑26. Jun 2021 10:25
vielen Dank für deine Antwort. Wie so oft

Das mit dem Strich hatte ich gestern Abend schon probiert und hatte aber keine Lehrzeichen gesetzt
Mein Code sieht jetzt so aus.
Code: Alles auswählen
var Timer tWash = null
var Boolean bWash = false
rule "Waschmaschine fertig"
when
Item Waschmaschine_Leistung changed
then
logInfo("Waschmaschine", "Rule triggert ! Wert : {} ", Waschmaschine_Leistung.state )
if(!bWash)
{
if(Waschmaschine_Leistung.state > 1600 | W ) // Erkennung die Maschine wurde gestartet
bWash = true
}
else
{ // bWash ist true -> Maschine aktiv
if(Waschmaschine_Leistung.state < 4 | W )
{ // Erkennung die Maschine ist vielleicht fertig
if(tWash === null)
tWash = createTimer(now.plusMinutes(3), [|
MeldungWhatsApp.postUpdate("Die Waschmaschiene ist fertig !")
MeldungSay.postUpdate("Die Waschmaschine ist fertig",null)
tWash = null
bWash = false
])
}
else if(Waschmaschine_Leistung.state > 6 | W )
{ // notwendig, falls Stromaufnahme zwischendurch sehr niedrig
tWash?.cancel
tWash = null
}
}
end
Hallo,
ich versuche mich auch gerade an der Waschmaschinenbenachrichtigung.
So ganz komme ich aber mit den 3 Leistungswerten nicht klar. Ich hoffe, Ihr könnt mir anhand des Diagramms helfen ...
Meine Rule:
Code: Alles auswählen
var Timer tWash = null
var Boolean bWash = false
rule "Waschmaschine fertig"
when
Item EG_bad_x_gs1_Power changed
then
val Number valWamaPwr = (EG_bad_x_gs1_Power.state as Number).floatValue // Messwert als Zahl ohne Einheit
logInfo("WASCHMASCHINE", "Waschmaschine Rule triggert ! Wert : {} ", valWamaPwr)
if(!bWash)
{
if(valWamaPwr > 10) // Erkennung die Maschine wurde gestartet
bWash = true
VxWaschma.sendCommand(ON)
}
else
{ // bWash ist true -> Maschine aktiv
if(valWamaPwr < 2)
{ // Erkennung die Maschine ist vielleicht fertig
if(tWash === null)
tWash = createTimer(now.plusMinutes(3), [|
tWash = null
bWash = false
logInfo("WASCHMASCHINE", "Waschmaschine fertig ! Wert : {} ", valWamaPwr)
val actions = getActions("pushover", "pushover:pushover-account:soundBike")
actions.sendHtmlMessage("Waschmaschine ist fertig", "openHAB3")
VxWaschma.sendCommand(OFF)
])
}
else if(valWamaPwr >= 2.5)
{ // notwendig, falls Stromaufnahme zwischendurch sehr niedrig
tWash?.cancel
tWash = null
logInfo("WASCHMASCHINE", "Waschmaschine Stromaufnahme zwischendurch sehr niedrig - Wert : {} ", valWamaPwr)
}
}
end
Re: Meldung Waschmaschine wenn fertig
Verfasst: 5. Mär 2023 15:01
von tommesd
Ich habe einen Shelly 1PM verbaut, der den Stromverbrauch der Waschmaschine übermittelt. Außerdem habe ich die hier erstellte rule angepasst und eingefügt. Leider funktioniert die bei mir nicht, im Log steht folgender Fehler:
Code: Alles auswählen
2023-03-05 14:56:42.999 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Waschkeller-1' failed: An error occurred during the script execution: index=1, size=1 in Waschkeller
Das Item
Code: Alles auswählen
Number StromverbrauchWaschmaschine "Stromverbrauch Waschmaschine" <Energy> (gMapdb) ["Point"] {channel="shelly:shellyplus1pm:Waschmaschine:meter#currentWatts"}
Die rule
Code: Alles auswählen
var Timer tWash = null
var Boolean bWash = false
val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
rule "Waschmaschine fertig"
when
Item StromverbrauchWaschmaschine changed
then
if(!bWash) {
if(StromverbrauchWaschmaschine.state > 10) { // Erkennung die Maschine wurde gestartet
sendTelegram("Waschmaschine wurde gestartet")
bWash = true
}
} else { // bWash ist true -> Maschine aktiv
if(StromverbrauchWaschmaschine.state < 1.4) { // Erkennung die Maschine ist vielleicht fertig
if(tWash === null)
tWash = createTimer(now.plusMinutes(4), [|
sendTelegram("Waschmaschine ist fertig")
tWash = null
bWash = false
])
} else if(StromverbrauchWaschmaschine.state > 3){ // notwendig, falls Stromaufnahme zwischendurch sehr niedrig
tWash?.cancel
tWash = null
}
}
end
Kann mir jemand auf die Sprünge helfen???
Re: Meldung Waschmaschine wenn fertig
Verfasst: 6. Mär 2023 00:50
von udo1toni
Ist das die gesamte Datei, oder sind da noch mehr Rules mit drin?
Die Fehlermeldung bezieht sich auf den ersten Blick auf die erste Zeile (das ist die Definition der Timer Variablen, die ist aber korrekt).
Grundsätzlich darfst Du die telegramAction nicht außerhalb der Rule definieren (bzw. es ist nicht gut, das zu tun).
Da Du einen Itemstatus drei Mal innerhalb der Rule verwendest, erscheint es sinnvoll, hier eine Variable zu nutzen.
Code: Alles auswählen
var Timer tWash = null
var Boolean bWash = false
rule "Waschmaschine fertig"
when
Item StromverbrauchWaschmaschine changed
then
val nStrom = (StromverbrauchWaschmaschine.state as Number).floatValue
if(!bWash) {
if(nStrom > 10) { // Erkennung die Maschine wurde gestartet
val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
sendTelegram("Waschmaschine wurde gestartet")
bWash = true
}
} else { // bWash ist true -> Maschine aktiv
if(nStrom < 1.4) { // Erkennung die Maschine ist vielleicht fertig
if(tWash === null)
tWash = createTimer(now.plusMinutes(4), [|
val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
sendTelegram("Waschmaschine ist fertig")
tWash = null
bWash = false
])
} else if(nStrom41 > 3){ // notwendig, falls Stromaufnahme zwischendurch sehr niedrig
tWash?.cancel
tWash = null
}
}
end
Re: Meldung Waschmaschine wenn fertig
Verfasst: 6. Mär 2023 13:39
von tommesd
Danke für die schnelle Hilfe, allerdings scheint die rule nicht zu funktionieren. Ich bekomme keine Nachricht wenn der Waschgang gestartet wurde und demnach auch nicht beim Beenden. Im Log steht folgendes.
Code: Alles auswählen
[ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Waschmaschine-1' failed: An error occurred during the script execution: index=1, size=1 in Waschmaschine
Es ist die einzige rule in der Datei, wobei ich das Gleiche gerne noch mit dem Trockner überwachen würde. Sollte man das dann in einer zweiten Datei machen oder kann man eine zweite rule in der Datei mit den gleichen Variablen erstellen?
Re: Meldung Waschmaschine wenn fertig
Verfasst: 7. Mär 2023 02:22
von udo1toni
Nein, Du kannst beliebig viele Rules in einer *.rules Datei ablegen.
Kann es sein, dass Du die Datei mit einem Windows Editor erstellt hast?
Kannst Du die Datei bitte mal mit nano direkt auf dem Pi öffnen (ich gehe mal davon aus, dass openHAB auf einem Pi läuft)?
Eventuell sind Deine Zeilen jeweils mit <CR><LF> umgebrochen. In openHAB allgemein und unter GNU/Linux im Besonderen ist es üblich, nur <LF> am Zeilenende zu verwenden.
Das wäre nun die einzige Idee, die ich momentan noch zu dem Fehler habe.
Re: Meldung Waschmaschine wenn fertig
Verfasst: 8. Mär 2023 11:38
von tommesd
Hallo Udo,
vielen Dank für den Hinweis, Du hast mir sehr geholfen, jetzt funktioniert es.
Re: Meldung Waschmaschine wenn fertig
Verfasst: 8. Mär 2023 18:02
von udo1toni
Das ist echt ein lästiger Bug, der eigentlich gar nicht auftreten sollte...
Re: Meldung Waschmaschine wenn fertig
Verfasst: 10. Mär 2023 11:40
von tommesd
Ich editiere die Dateien mit Windows über Visual Studio Code. Kann man da einstellen, dass er die Dateien immer mit dem Linux Zeilenende speichert?
Habs gefunden
If you want new files to automatically have the correct line endings, then you can set the following setting in the top level of your settings.json file:
For LF:
{
"files.eol": "\n",
}