Smarte Kaffee Maschine

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Habe ich erledigt:

Es kommt folgendes:

Code: Alles auswählen

2022-04-17 19:09:14.917 [INFO ] [org.openhab.core.model.script.coffee] - nOld = 0.0 nNew = 30.43
gefolgt mit der Fehlermeldung:

Code: Alles auswählen

2022-04-17 19:09:14.919 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Kaffee1-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in Kaffee1
(die 30 Watt sind erstmal nur eine ""Test Lampe"" Die Kaffeemaschine hat ~ 950Watt)

Danke
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

Stochern im Nebel... Kannst Du mal bei der Definition der Variablen nOld einen Wert Über 0 angeben?

Code: Alles auswählen

    var nOld = 0.5
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Musste meine Antwort noch mal neu Schreiben:
Edit:

Kannst Du mal bei der Definition der Variablen nOld einen Wert Über 0 angeben?
Ich kann es Speicher ohne Fehlermeldung.

der Wert im Log "dynamisch" = sprich, es wird immer der vorher angezeigte ""New" wert angezeigt. :idea:
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

Ja, aber das passt dann ja. nOld ist der vorherige Wert, nNew der aktuelle Wert. War nOld 0 und nNew ist 950 (die hattest Du ja oben angegeben) und es läuft kein Timer, dann wurde die Maschine gerade eingeschaltet. War nOld 950 und nNew ist 0 und es läuft kein Timer, dann hat die Kaffeemaschine aufgehört zu heizen und man kann den Timer starten.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Das passt schon, aber es geht an dem Punkt der Berechnung nicht weiter...

Habe den Wert mal von 100 auf 25 gesenkt. Kann ja nicht so viel Kaffee trinken... :-D

Meine Test Lampe hat 30 Watt...

Also habe ich dann Mal die Lampe ausgeschaltet und der Wert sinkt wie erwartet von 30 auf 0. Das Log zeigt plausibele Werte.

Aber es tut sich nix. Also es kommt keine Nachricht raus, und die Fehlermeldung kommt auch weiter hin...
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

Das kann nicht sein...

Also noch ausführlicheres Logging:

Code: Alles auswählen

// Globale Variablen zu Beginn der Datei definieren!
var Timer tKaffee = null                                                // Timer für Kaffee Meldungen

rule "Kaffeemaschine Überwachung 1"
when
    Item shellyplugsb580c9192168178120_Leistung changed
then
    var nOld = 0
    if(previousState instanceof Number)
        nOld = (previousState as Number).floatValue

    var nNew = 0
    if(newState instanceof Number)
        nNew = (newState as Number).floatValue

    logInfo("coffee","nOld = {} nNew = {}",nOld,nNew)
    if(tKaffee === null) {
        logInfo("coffee","tKaffee === null")
        if(nNew > 25) {
            logInfo("coffee","nNew > 25")
            if(nOld < 1) {
                logInfo("coffee","nOld < 1")
                sendBroadcastNotification("Kaffee wird gekocht :) ")
            }
        } else if(nNew < 1) {
            logInfo("coffee","nNew < 1")
            sendBroadcastNotification("Kaffee ist fertig :) ")
            tKaffee = createTimer(now.plusMinutes(30),[|
                sendBroadcastNotification("Kaffee ist eingekocht ;) ")
                tKaffee = null
            ])
        }
    }
end

rule "Kaffeemaschine Überwachung 2"
when
    Item shellyplugsb580c9192168178120_Betrieb changed to OFF
then
    tKaffee?.cancel
    tKaffee = null
end
Es wird jetzt quasi jeder Schritt einzeln überprüft, um herauszufinden, welcher Vergleich nun wirklich den Fehler auslöst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Danke für deine Bemühungen, und Versuche.
Habe auch den PI schon mal neu gestartet wo openhab drauf läuft.
Spielt es eine Rolle, das ich OH3.2 nutze?


Habe dein Rule gespeichert und gestartet:

Code: Alles auswählen

2022-04-18 20:39:43.172 [INFO ] [org.openhab.core.model.script.coffee] - nOld = 0.0 nNew = 30.08

2022-04-18 20:39:43.174 [INFO ] [org.openhab.core.model.script.coffee] - tKaffee === null

2022-04-18 20:39:43.177 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in test
Dann habe ich die Lampe ausgeschaltet, Der Shelly blieb von der Messung her aber noch Aktiv.... Eigentlich müsste er ja dann eine Nachricht senden, tut aber nix.

Code: Alles auswählen

2022-04-18 20:39:46.408 [INFO ] [org.openhab.core.model.script.coffee] - nOld = 30.08 nNew = 0.0

2022-04-18 20:39:46.413 [INFO ] [org.openhab.core.model.script.coffee] - tKaffee === null

2022-04-18 20:39:46.415 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in test
Immer wenn es eine Leistungsänderung gibt, gibt´a genau diese Fehler Meldung, bis zu dem Punkt, wo ich den Shelly auf "OFF" setze...

Hast du noch eine Idee?

Danke und Gruss.
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

Was mir gerade erst auffällt: offensichtlich macht er einen Integer Vergleich... absurd... hab ich vorher komplett übersehen...

Probiere bitte mal , ob es beim Vergleich mit einem expliziten Floatwert funktioniert. (einfach .0 an den Wert anhängen)

Code: Alles auswählen

// Globale Variablen zu Beginn der Datei definieren!
var Timer tKaffee = null                                                // Timer für Kaffee Meldungen

rule "Kaffeemaschine Überwachung 1"
when
    Item shellyplugsb580c9192168178120_Leistung changed
then
    var nOld = 0
    if(previousState instanceof Number)
        nOld = (previousState as Number).floatValue

    var nNew = 0
    if(newState instanceof Number)
        nNew = (newState as Number).floatValue

    logInfo("coffee","nOld = {} nNew = {}",nOld,nNew)
    if(tKaffee === null) {
        logInfo("coffee","tKaffee === null")
        if(nNew > 25.0) {
            logInfo("coffee","nNew > 25")
            if(nOld < 1.0) {
                logInfo("coffee","nOld < 1")
                sendBroadcastNotification("Kaffee wird gekocht :) ")
            }
        } else if(nNew < 1.0) {
            logInfo("coffee","nNew < 1")
            sendBroadcastNotification("Kaffee ist fertig :) ")
            tKaffee = createTimer(now.plusMinutes(30),[|
                sendBroadcastNotification("Kaffee ist eingekocht ;) ")
                tKaffee = null
            ])
        }
    }
end

rule "Kaffeemaschine Überwachung 2"
when
    Item shellyplugsb580c9192168178120_Betrieb changed to OFF
then
    tKaffee?.cancel
    tKaffee = null
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Moin.

Habe es versucht.

Fehler weiterhin vorhanden, aber es hat sich geändert von (int,int) jetzt neu: (int,double)

Start:

Code: Alles auswählen

2022-04-19 20:12:57.718 [INFO ] [org.openhab.core.model.script.coffee] - nOld = 0.0 nNew = 30.54

2022-04-19 20:12:57.721 [INFO ] [org.openhab.core.model.script.coffee] - tKaffee === null

2022-04-19 20:12:57.723 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,double) on instance: null in test

Testlampe aus:

Code: Alles auswählen

2022-04-19 20:13:05.714 [INFO ] [org.openhab.core.model.script.coffee] - nOld = 30.54 nNew = 0.0

2022-04-19 20:13:05.718 [INFO ] [org.openhab.core.model.script.coffee] - tKaffee === null

2022-04-19 20:13:05.721 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,double) on instance: null in test
:?:
einfach .0 an den Wert anhängen
Hatte ich auch schon mal versucht. Auch mit 2 Nachkomma stellen...

So irgendwie will das nicht so recht.


trotzdem danke für deine Mühe. ;) :)
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

Das kann nicht sein... da ist irgendwas oberfaul.

Wir können die Variablen notfalls auch typisieren:

Code: Alles auswählen

// Globale Variablen zu Beginn der Datei definieren!
var Timer tKaffee = null                                                // Timer für Kaffee Meldungen

rule "Kaffeemaschine Überwachung 1"
when
    Item shellyplugsb580c9192168178120_Leistung changed
then
    var Number nOld = 0
    if(previousState instanceof Number)
        nOld = (previousState as Number).floatValue

    var Number nNew = 0
    if(newState instanceof Number)
        nNew = (newState as Number).floatValue

    logInfo("coffee","nOld = {} nNew = {}",nOld,nNew)
    if(tKaffee === null) {
        logInfo("coffee","tKaffee === null")
        if(nNew > 25.0) {
            logInfo("coffee","nNew > 25")
            if(nOld < 1.0) {
                logInfo("coffee","nOld < 1")
                sendBroadcastNotification("Kaffee wird gekocht :) ")
            }
        } else if(nNew < 1.0) {
            logInfo("coffee","nNew < 1")
            sendBroadcastNotification("Kaffee ist fertig :) ")
            tKaffee = createTimer(now.plusMinutes(30),[|
                sendBroadcastNotification("Kaffee ist eingekocht ;) ")
                tKaffee = null
            ])
        }
    }
end

rule "Kaffeemaschine Überwachung 2"
when
    Item shellyplugsb580c9192168178120_Betrieb changed to OFF
then
    tKaffee?.cancel
    tKaffee = null
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten