Seite 5 von 6

Re: Rules

Verfasst: 8. Feb 2019 10:35
von mamoel
Entferne bitte mal die Zeile

Code: Alles auswählen

if(Stall_Temp.state instanceof QuantityType) {
und das zugehörige "}"
Dann laufen lassen und das Log dazu posten.

Re: Rules

Verfasst: 8. Feb 2019 10:50
von peter-pan
Hallo Matze,
das Item in deinem . items -File heisst String Luft_Wohnzimmer "Luftfeuchtigkeit Wohnzimmer", in der Sitemap hast du es aber als Luft_Wohzimmer definiert. Da fehlt das "n".

Das andere schauen wir dann mal, wenn du den Log postest.

Gruss - Peter

Re: Rules

Verfasst: 8. Feb 2019 14:14
von matze.lingen
mamoel hat geschrieben: 8. Feb 2019 10:35 Entferne bitte mal die Zeile

Code: Alles auswählen

if(Stall_Temp.state instanceof QuantityType) {
und das zugehörige "}"
Dann laufen lassen und das Log dazu posten.
Hier die Log ausgabe nach der Änderung:

Code: Alles auswählen

2019-02-08 14:04:31.042 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'default.sitemap'
2019-02-08 14:06:40.245 [INFO ] [.eclipse.smarthome.model.script.bot1] - Temperaturänderung erkannt.
2019-02-08 14:06:40.246 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Temp_Stal_rule': An error occurred during the script execution: index=1, size=1
2019-02-08 14:07:33.892 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'default.rules'
2019-02-08 14:11:29.703 [INFO ] [.eclipse.smarthome.model.script.bot1] - Temperaturänderung erkannt.
2019-02-08 14:11:29.704 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Temp_Stal_rule': An error occurred during the script execution: index=1, size=1

Re: Rules

Verfasst: 8. Feb 2019 14:38
von mamoel
Die Ferndiagnose gestaltet sich schwieriger als gedacht...

Nur um sicher zu gehen - ändere bitte mal die zwei entsprechenden zwei Zeilen auf

Code: Alles auswählen

val Number nTemp = Stall_Temp.state as Number
val Number nTempPrev = previousState as Number
Anschließend bitte wieder den passenden Logfile-Auszug posten.

Re: Rules

Verfasst: 8. Feb 2019 20:34
von peter-pan
Hallo Matze,
bitte probiere mal Folgendes. Bitte speichere die nachstehendene Rule mal in deinem Rules -Ordner.

Code: Alles auswählen

rule "Temp_Stal_y_rule"
when
    Item Stall_Temp changed
then
        var Number nTemp = Stall_Temp.state as Number
        var Number nTempPrev = previousState as Number
        logInfo("bot6", "Neuer Wert: " + nTemp)
        logInfo("bot6", "Letzter Wert: " + nTempPrev)

  if(Stall_Temp.state instanceof Number) {
        logInfo("bot6","Temperaturstatus ist vom Typ Number.") //ist das nicht der Fall, wird auch nichts ausgeführt
/*
        if(nTemp <= -10 && nTempPrev > -10) {
           logInfo("bot6", "Temperatur unter -10")
           //sendTelegram("bot6", "Stall Temperatur ist nun {}",nTemp)
         return;
        }
        if(nTemp <= -5 && nTempPrev > -5) {
           logInfo("bot6", "Temperatur unter -5")
           //sendTelegram("bot6", "Stall Temperatur ist nun {}",nTemp)
         return;
        }
        if(nTemp <= 0 && nTempPrev > 0) {
           logInfo("bot6", "Temperatur unter 0")
           //sendTelegram("bot6", "Stall Temperatur ist nun {}",nTemp)
         return;
        }
*/
    }
	else logInfo("bot6","Da stimmt was nicht.")
end
Der innere If-Teil ist hier auskommentiert. Es sollte also nur die ersten drei Logs. in deinem Logger ausgegeben werden.

Am besten speicherst du diese Rule unter einem neuen Namen (z.B. bot6.rules) ab. Dann solltest auch in frontail (logger) bei Filter (oben rechts ) nur die relevanten Informationen bekommen, wenn du hier bot6 eingibst. Es sollten dann alle Änderungen die dein item Stall_Temp macht, auch in der Rule protokolliert werden.

Gruss -Peter

P.S. Die Meldung mit dem Luft_Wohzimmer sollte jetzt auch weg sein, oder ?

Re: Rules

Verfasst: 9. Feb 2019 07:51
von matze.lingen
So ich hab nun beides gemacht, einmal eine neue Rule hinzugefügt mit den infos von Peter-Pan und die Werte angepasst wie mamoel es wollte das Ergebnis nach einem Temperatur Update ist:

Code: Alles auswählen

2019-02-09 07:42:46.425 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'default.rules'
peter-pan hat geschrieben: 8. Feb 2019 20:34 P.S. Die Meldung mit dem Luft_Wohzimmer sollte jetzt auch weg sein, oder ?
Ja das entfernen meines dämlichen Rechtschreibfehlers hat den Fehler im Log beseitigt :) Habe dabei noch einen 2ten gefunden und nun lässt sich sogar mein Rollo im Wohnzimmer bedienen :D

Edit:
Nun ist doch noch mehr passiert:

Code: Alles auswählen

2019-02-09 07:42:46.425 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'default.rules'
2019-02-09 07:55:54.240 [INFO ] [.eclipse.smarthome.model.script.bot1] - Temperaturänderung erkannt.
2019-02-09 07:55:54.242 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Temp_Stal_rule': An error occurred during the script execution: index=1, size=1
2019-02-09 07:55:54.243 [INFO ] [.eclipse.smarthome.model.script.bot6] - Neuer Wert: 7.20
2019-02-09 07:55:54.244 [INFO ] [.eclipse.smarthome.model.script.bot6] - Letzter Wert: 7.30
2019-02-09 07:55:54.246 [INFO ] [.eclipse.smarthome.model.script.bot6] - Temperaturstatus ist vom Typ Number.
2019-02-09 08:13:31.766 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'samsungtv:tv:0ee6b280_00fa_1000_8f62_5cf6dc46b39a' to inbox.
2019-02-09 08:15:14.634 [INFO ] [.eclipse.smarthome.model.script.bot1] - Temperaturänderung erkannt.
2019-02-09 08:15:14.684 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Temp_Stal_rule': An error occurred during the script execution: index=1, size=1
2019-02-09 08:15:14.684 [INFO ] [.eclipse.smarthome.model.script.bot6] - Neuer Wert: 7.10
2019-02-09 08:15:14.689 [INFO ] [.eclipse.smarthome.model.script.bot6] - Letzter Wert: 7.20
Gruß
Matze

Re: Rules

Verfasst: 9. Feb 2019 11:18
von peter-pan
Hallo Matze,
lässt du deine Rules (die, die das Item Stall_Temp triggern) gleichzeitig laufen ? Wenn ja, bitte mal eine stoppen und checken, bei welcher der Fehler
[ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Temp_Stal_rule': An error occurred during the script execution: index=1, size=1
gemeldet wird.

Gruss Peter

Re: Rules

Verfasst: 9. Feb 2019 12:08
von matze.lingen
peter-pan hat geschrieben: 9. Feb 2019 11:18 Hallo Matze,
lässt du deine Rules (die, die das Item Stall_Temp triggern) gleichzeitig laufen ? Wenn ja, bitte mal eine stoppen und checken, bei welcher der Fehler
gemeldet wird.

Gruss Peter
Habe jetzt nur deine Regel drin die andere ist aus.

Code: Alles auswählen

2019-02-09 11:22:01.459 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'default.rules'
2019-02-09 11:44:23.393 [INFO ] [.eclipse.smarthome.model.script.bot6] - Neuer Wert: 8.20
2019-02-09 11:44:23.394 [INFO ] [.eclipse.smarthome.model.script.bot6] - Letzter Wert: 8.10
2019-02-09 11:44:23.395 [INFO ] [.eclipse.smarthome.model.script.bot6] - Temperaturstatus ist vom Typ Number.
2019-02-09 11:49:13.825 [INFO ] [.eclipse.smarthome.model.script.bot6] - Neuer Wert: 8.30
2019-02-09 11:49:13.826 [INFO ] [.eclipse.smarthome.model.script.bot6] - Letzter Wert: 8.20
2019-02-09 11:49:13.828 [INFO ] [.eclipse.smarthome.model.script.bot6] - Temperaturstatus ist vom Typ Number.
2019-02-09 11:54:06.193 [INFO ] [.eclipse.smarthome.model.script.bot6] - Neuer Wert: 8.40
2019-02-09 11:54:06.194 [INFO ] [.eclipse.smarthome.model.script.bot6] - Letzter Wert: 8.30
2019-02-09 11:54:06.195 [INFO ] [.eclipse.smarthome.model.script.bot6] - Temperaturstatus ist vom Typ Number.
Ist wohl irgendwas an der Regel. Deine läuft.

Re: Rules

Verfasst: 9. Feb 2019 13:02
von mamoel
Sieht doch gut aus. Jetzt würde ich den auskommentierten Bereich wieder dazu nehmen. Also das /* und das */ wieder entfernen.

Re: Rules

Verfasst: 9. Feb 2019 13:09
von peter-pan
Hallo Matze,
das hab ich mir fast gedacht, da dein Item Stall_Temp als Number deklariert ist und nicht als Quantity. Allerdings kriege ich mit einem "instanceof Quantity<T>" auch immer so komische Meldungen, selbst wenn ich das Item als solches (z.B Number:Temperature) deklariert habe.

So jetzt kannst du ja langsam deine Rule wieder "frei lassen" und die ersten zwei Auskommentierungen (/* u. */) wieder rausnehmen. Dann sind die "inneren If's wieder aktiv. Allerdings sind dann immer noch die Telegramme auskommentiert.

Ich habe bei den If's mit "return" gearbeitet, aber das muss so nicht unbedingt sein. Wenn du die Logs

Code: Alles auswählen

2019-02-09 11:44:23.393 [INFO ] [.eclipse.smarthome.model.script.bot6] - Neuer Wert: 8.20
2019-02-09 11:44:23.394 [INFO ] [.eclipse.smarthome.model.script.bot6] - Letzter Wert: 8.10
2019-02-09 11:44:23.395 [INFO ] [.eclipse.smarthome.model.script.bot6] - Temperaturstatus ist vom Typ Number.
nicht mehr brauchst, einfach auskommentieren.

So jetzt ist natürlich deine Kreativität, bzw. deine Wünsche, wie diese If's funktionieren sollen gefragt. Da nur du weisst, was da genau rauskommen soll.

Viel Spass noch

Gruss - Peter

P.S. Hab grad gesehen, das @mamoel dir bereits gepostet hat.