so habe es für die einzelnen Sensoren mal umgeschrieben nach dem Vorbild von Code 2. Die Rules laufen grundsätzlich in der LOG Datei an, aber Telegram werde ich erst sehen, wenn die Werte sich dann um 1 ändern, dass werde ich sehen bis morgen.
Trotz das die LOG Loading Modell ausführt kommen dann aber Fehler.
die Beispiel Rules:
//globale Variablen zu Beginn der Datei definieren!
var Number nBAD1Sent = -99999
rule "tmp2"
when
Item mqtt_topic_BAD_BAD1 changed
then
if(Math::abs((mqtt_topic_BAD_BAD1.state as Number).floatValue - nBAD1Sent) > 1) {
sendTelegram("bot1","BAD: " +mqtt_topic_BAD_BAD1.state.toString)
nBAD1Sent = (mqtt_topic_BAD_BAD1.state as Number).floatValue
}
end
[ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'tmp2': An error occurred during the script execution: Could not invoke method: java.lang.Math.abs(int) on instance: null
//globale Variablen zu Beginn der Datei definieren!
var Number nBAD1Sent = -99999
rule "tmp2"
when
Item mqtt_topic_BAD_BAD1 changed
then
if(!(mqtt_topic_BAD_BAD1.state instanceof Number)) {
logWarn("tmp2","mqtt_topic_BAD_BAD1 ungütig! ({})",mqtt_topic_BAD_BAD1.state)
return;
}
val Number nTemp = mqtt_topic_BAD_BAD1.state as Number
logInfo("tmp2","nTemp = {}, nBAD1Sent = {}",nTemp,nBAD1Sent)
val Number nTemp2 = nTemp.floatValue - nBAD1Sent
if(Math::abs(nTemp2) > 1) {
logInfo("tmp2","Temperaturunterschied > 1!")
sendTelegram("bot1","BAD: " + nTemp.toString)
nBAD1Sent = nTemp
}
end
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
hallo udo1toni
werde ich ausprobieren und berichten
Frage zur Zeile 9. gewolt oder Tippfehler? ungütig oder doch ungültig?
@peter-pan
anbei ein Screenshot vom Item
Wie man sieht habe ich in Autoupdate nichts drin, da die Sonoffs ja von alleine bei Änderung die Werte senden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ok. Das Item ist als normales Number-Item definiert und nicht als UoM-Item.
Habe den Fehler bei mir reproduzierbar gemacht (mit meiner Test-Rule). Bitte ändere "floatValue" auf "doubleValue". Normalerweise ist das mit dem floatValue ok, aber anscheinend hat die "abs"-Funktion/Methode, da gewisse Ansprüche an den Wert der da rüber kommt. So genau kann ich das auch nicht sagen, da ich eigentlich auch"noobie" bin. Ich probier's halt immer wieder mit "Trial and Error".
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
@peter-pan
klasse das du das reproduzieren konntest. Dein Tipp mit doubleValue bingt es aktuell. Genaues muss ich erst sehen. Es wird zumindest was gesendet und die LOG zeigt noch keine Fehler an, aber muss schauen, ob das ab 1 Grad klappt. Erste Test reagierten schon mal. Temperatur von 22,4 auf 33 Grad wurden gemeldet und auch wieder zurück zum Normalwert. Ich probiere auch immer hin und her, aber viele Parameterkenntnisse fehlen mir einfach noch.
Ich werde berichten, aber gerade der Bad Sensor meldete immer geringe Schwankungen, was nun hoffentlich so läuft.
Zudem noch die Fragen;
Leider bekomme ich keine Grad Zeichen und auch keine % für Hydrowerte, denn ich habe diesen Code auf alle Sensoren angewahnt.
Und kann man die Zahl >1 auch auf >0,5 oder >0.5 setzen? also nicht so ganz große Sprünge bei den Änderungen.
Natürlich kannst Du auch kleinere Stufen als 1 verwenden. (amerikanisches Komma also z.B. 0.5)
Das °C oder % musst Du selbst anhängen. Wenn Du im Itemnamen jeweils identisch ein Schlüsselwort hast, mit dem die Rule erkennen kann, ob es sich um Temperatur oder Luftfeuchte handelt, kann es bei der einen Rule bleiben
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
Freut mich, dass es läuft. Udo hat dir ja die Möglichkeiten mit kleineren Schritten als 1 erklärt.
Was das Anzeigen der Suffixe (°C, %, etc) in PaperUI angeht hab ich gar keine Ahnung wie man das hinkriegt. ich hab alles über Textfiles konfiguriert. Du kannst aber auch in der Sitemap eine Formatierung vornehmen, z.B. so:
In Paper UI Control kann man die Anzeige von Einheiten nicht beeinflussen, das wird über die Channel Definition vorgegeben, man kann diesen Teil des Channels aber nicht selbst konfigurieren, nur das Binding selbst kann die Einheiten setzen.
Paper UI Control ist aber überhaupt nicht dazu gedacht, das System normal zu bedienen, das ist rein als kurze Testmöglichkeit für den Administrator gedacht. Man sollte also das Nicht-Vorhandensein von Einheiten nicht überbewerten.
Mit OH 3 wird es Paper UI ohnehin nicht mehr geben, dann ist mit diesem Unsinn ohnehin Schluss
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet