Außendusche Frostsicher machen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Außendusche Frostsicher machen

Beitrag von Snatsch »

die Fehlermeldung lautet :)

Code: Alles auswählen

2022-10-10 22:21:09.471 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Duschheizung_anschalten-1' failed: An error occurred during the script execution: index=1, size=1 in Duschheizung_anschalten
openhab4.3.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

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

Re: Außendusche Frostsicher machen

Beitrag von udo1toni »

Und diese Meldung ergibt keinen Sinn. Nochmal die Frage (anders gestellt): Wie hast Du die Rule exakt angelegt?

PS: Die Fehlermeldung bezieht sich definitiv nicht auf diese Rule.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

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

Re: Außendusche Frostsicher machen

Beitrag von Snatsch »

wie alle meine Rules über Visual Studio Code. :?
openhab4.3.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

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

Re: Außendusche Frostsicher machen

Beitrag von udo1toni »

Dann hast Du noch eine andere Rule laufen...

Code: Alles auswählen

rule "Duschheizung schalten"
passt nicht zu

Code: Alles auswählen

UID 'Duschheizung_anschalten-1' failed: An error occurred during the script execution: index=1, size=1 in Duschheizung_anschalten
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

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

Re: Außendusche Frostsicher machen

Beitrag von Snatsch »

Irgendwie ist der Wurm drinn. :roll:
wenn ich dir Rule selbst auslöse kommt die Log Warnung

Code: Alles auswählen

2022-10-10 23:39:25.408 [WARN ] [e.model.script.Temperatur outdoor_t1] - Sensor Item liefert keinen gültigen Zahlenwert. Abbruch!
openhab4.3.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

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

Re: Außendusche Frostsicher machen

Beitrag von udo1toni »

Nein, das passt. newState als implizite Variable wird nur bei einem changed Ereignis mit Daten gefüllt. Du könntest die Rule auch folgendermaßen modifizieren:

Code: Alles auswählen

rule "Duschheizung schalten"
when 
    Item Temperaturen_outdoor_t1 changed 
then
    if(!(Temperaturen_outdoor_t1.state instanceof Number)) {
       logWarn("Temperatur outdoor", "Sensor Item liefert keinen gültigen Zahlenwert. Abbruch!")
       return;
    }
    val nNew = (Temperaturen_outdoor_t1.state as Number).floatValue
    if(nNew < 7.7 && Duschheizung_Betrieb.state != ON) {
       logInfo("Außentemperatur ist unter 3 Grad")
       Duschheizung_Betrieb.sendCommand(ON)
        Meldung.postUpdate ("Die Duschheizung ist jetzt eingeschaltet")
    }
    if(nNew > 10 && Duschheizung_Betrieb.state != OFF) {
       Duschheizung_Betrieb.sendCommand(OFF)
        Meldung.postUpdate("Die Duschheizung ist jetzt ausgeschaltet")
    }
end

Code: Alles auswählen

newState
wird also einfach an allen Stellen durch Temperaturen_outdoor_t1.state ersetzt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
rfu
Beiträge: 24
Registriert: 8. Okt 2021 15:41
Answers: 0

Re: Außendusche Frostsicher machen

Beitrag von rfu »

Hi,

ich denke die Fehlermeldung mit "index=1, size=1" kommt weil der log Befehl zwei Parameter erwartet, aber nur einen bekommt...

Code: Alles auswählen

logInfo("Außentemperatur ist unter 3 Grad")
rfu
openHAB 3.3.0 im docker

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

Re: Außendusche Frostsicher machen

Beitrag von Snatsch »

ich habe wirklich keine Ahnung was da schief läuft.
Ich habe die Rule jetzt laufen

Code: Alles auswählen

rule "Duschheizung Anschalten"
when 
    Item Temperaturen_outdoor_t1 changed 
then
    if(!(Temperaturen_outdoor_t1.state instanceof Number)) {
       logWarn("Temperatur outdoor", "Sensor Item liefert keinen gültigen Zahlenwert. Abbruch!")
       return;
    }
    val nNew = (Temperaturen_outdoor_t1.state as Number).floatValue
    if(nNew < 7.7 && Duschheizung_Betrieb.state != ON) {
       logInfo("Außentemperatur ist unter 3 Grad")
       Duschheizung_Betrieb.sendCommand(ON)
        Meldung.postUpdate ("Die Duschheizung ist jetzt eingeschaltet")
    }
    if(nNew > 10 && Duschheizung_Betrieb.state != OFF) {
       Duschheizung_Betrieb.sendCommand(OFF)
        Meldung.postUpdate("Die Duschheizung ist jetzt ausgeschaltet")
    }
end
aber es kommt immer wieder der gleiche Fehler im LOG

Code: Alles auswählen

2022-10-11 19:34:32.369 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Duschheizung_Anschalten-1' failed: An error occurred during the script execution: index=1, size=1 in Duschheizung_Anschalten
warum steht da Duschheizung Anschalten -1 ?
Habe doch nur eine Rule "Duschheizung Anschalten" Habe auch schon die Cache gelöscht und die Rule im Config Ordner.
openhab4.3.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

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

Re: Außendusche Frostsicher machen

Beitrag von udo1toni »

Oh. Ja, das logInfo ist verkehrt. logInfo (wie alle anderen Log-Befehle) erwartet zwingend zwei Strings, wobei der erste String der Name des Loggers ist (kein Teil der Log-Meldung) und der zweite String die eigentliche Meldung. Hab ich auch übersehen... man wird betriebsblind...

Code: Alles auswählen

rule "Duschheizung schalten"
when 
    Item Temperaturen_outdoor_t1 changed 
then
    if(!(Temperaturen_outdoor_t1.state instanceof Number)) {
       logWarn("tempOutdoor", "Sensor Item liefert keinen gültigen Zahlenwert. Abbruch!")
       return;
    }
    val nNew = (Temperaturen_outdoor_t1.state as Number).floatValue
    if(nNew < 7.7 && Duschheizung_Betrieb.state != ON) {
       logInfo("tempOutdoor", "Außentemperatur ist unter 3 Grad")
       Duschheizung_Betrieb.sendCommand(ON)
        Meldung.postUpdate ("Die Duschheizung ist jetzt eingeschaltet")
    }
    if(nNew > 10 && Duschheizung_Betrieb.state != OFF) {
       Duschheizung_Betrieb.sendCommand(OFF)
        Meldung.postUpdate("Die Duschheizung ist jetzt ausgeschaltet")
    }
end
Der Loggername enthält gewöhnlich auch keine Leerzeichen und ebensowenig Sonderzeichen oder Umlaute.
Über den Loggernamen kann man (im laufenden Betrieb) das LogLevel steuern, also z.B. nur noch Warnmeldungen ausgeben lassen, oder auch gar keine Meldungen. Alles abhängig vom Namen (org.openhab.model.script.tempOutdoor wäre z.B. der Loggername für die log-Befehle in obiger Rule).

Aber noch mal der Hinweis: Die Fehlermeldung gibt immer den Klartext Namen der auslösenden Rule an. Wenn die Rule "Duschheizung schalten" heißt, ist eine Meldung bezüglich "Duschheizung_Anschalten" nicht durch diese Rule verursacht. Wenn man Rules im Zusammenhang mit logs postet, sollte man darauf achten, dass diese vollständig und zeichengenau wiedergegeben werden. Es bringt nichts, Rules zu haben, die "ungefähr so" sind, wie im Original. Steht in einer Rule z.B. ein Passwort im Klartext, oder meinetwegen eine Mailadresse, so kann man die gerne unkenntlich machen, genau wie Tokens usw, aber eben keine essenziellen Dinge der Rule abändern, wie soll man da Fehler zuordnen können?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
rfu
Beiträge: 24
Registriert: 8. Okt 2021 15:41
Answers: 0

Re: Außendusche Frostsicher machen

Beitrag von rfu »

Hi,

gibt der logger nicht die rule im File an, also nicht den namen der Rule selber, sondern 'Duschheizung_Anschalten-1' wäre die erste Rule im File 'Duschheizung_Anschalten.rules'

rfu
openHAB 3.3.0 im docker

Antworten