2023-06-03 12:08:54.126 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'test.rules'
2023-06-03 12:08:58.060 [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
Type number : solar_eff "WR Wirkungsgrad" [stateTopic="solarview/WR1/EFF", commandTopic="solarview/WR1/EFF"]
Du hast stateTopic und commandTopic identisch gesetzt, das ergibt keinen Sinn.
mqtt kommuniziert immer gerichtet, auf einem Topic wird entweder gesendet oder empfangen, aber nicht beides gleichzeitig.
Da Du ausschließlich sendest, kannst Du das stateTopic einfach leer lassen...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
welche aber nur ausgeführt wird, wenn Solar_Power_dc.state eine gültige Zahl liefert. nPdc kann also nicht null sein. 0 kann auch nicht null sein -> die Meldung muss von einer anderen Rule herrühren.
Hast Du evtl. zwei gleichnamige Rules?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
Type number : solar_eff "WR Wirkungsgrad" [stateTopic="solarview/WR1/EFF", commandTopic="solarview/WR1/EFF"]
Du hast stateTopic und commandTopic identisch gesetzt, das ergibt keinen Sinn.
mqtt kommuniziert immer gerichtet, auf einem Topic wird entweder gesendet oder empfangen, aber nicht beides gleichzeitig.
Da Du ausschließlich sendest, kannst Du das stateTopic einfach leer lassen...
udo1toni hat geschrieben: ↑3. Jun 2023 13:56
Hast Du openHAB mal neu gestartet? Die Meldung ergibt überhaupt keinen Sinn, der Vergleich größer als kommt nur an einer Stelle vor:
welche aber nur ausgeführt wird, wenn Solar_Power_dc.state eine gültige Zahl liefert. nPdc kann also nicht null sein. 0 kann auch nicht null sein -> die Meldung muss von einer anderen Rule herrühren.
Hast Du evtl. zwei gleichnamige Rules?
Nein... ich hab den originalen Teil rausgeloescht und mehrfach neu getartet...
Ok, ich hab den Fehler Gewöhnlich sollte man Variablen nicht fix definieren, aber durch die Zuweisung von 0 wird aus der Variablen automatisch ein Integer. Versuche es bitte so:
rule "calc efficiency"
when
Item Solar_Power_dc changed or
Item Solar_Power_ac changed
then
var Number nPac = 0 // hier Number ergänzen
var Number nPdc = 0 // hier Number ergänzen
if(Solar_Power_ac.state instanceof Number)
nPac = Solar_Power_ac.state as Number
if(Solar_Power_dc.state instanceof Number)
nPdc = Solar_Power_dc.state as Number
var Number nEff = 0 // hier Number ergänzen
if(nPdc > 0)
nEff = nPac / nPdc * 100
Solar_Efficiency.sendCommand(nEff)
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet