Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

bama5015
Beiträge: 7
Registriert: 20. Aug 2019 18:28

Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von bama5015 »

Hallo zusammen,

ich bin noch ein ziemlicher Neuling, was das Programmieren mit OpenHab angeht.
Ich bin aktuell dabei eine Rule zu schreiben.

Hintergrund: Ich möchte den Regen der letzten vollen Stunde in ein Item Schreiben und dieses Item dann in meiner Sitemap anzeigen lassen. Den Regen der letzten Stunde errechne ich wie folgt: Regenzähler_gesamt minus Regenstand_vor_einer_Stunde.

Laut Logmeldungen werden die Items auch korrekt gesetzt. Aber im Sitemap wird der Wert (aktuell blank) nicht verändert.

Bestimmt ist das ein reiner Anfängerfehler. Ich bin um Jede Hilfe/Hinweis Dankbar.

ITEMS
Number Stand_letztH "Gesamter Regenstand vor einer Stunde"
Number Niederschlag_letzteH "Niederschlag"
Number Regen_gesamt "Rain counter as Number" {channel="homematic:HM-WDS100-C6-O-2:ccu:OEQ2113542:1#RAIN_COUNTER"}

RULE:

rule "Regen pro Stunde"
when
Time cron "0 0 * * * ?"
then
if( Stand_letztH.state == NULL ) {
Stand_letztH.sendCommand("0")
logWarn("IF", "Stand letzt Stunde wurde initiiert")
}
Niederschlag_letzteH.sendCommand((Regen_gesamt.state as DecimalType) - (Stand_letztH.state as DecimalType) )
Stand_letztH.sendCommand(Regen_gesamt.state as DecimalType)
end



Protokoll:
2019-08-20 19:46:30.068 [ome.event.ItemCommandEvent] - Item 'Niederschlag_letzteH' received command 0.00

2019-08-20 19:46:30.080 [ome.event.ItemCommandEvent] - Item 'Stand_letztH' received command 13.57

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von peter-pan »

Wie sieht dein Sitemap-Eintrag aus ? Wie sieht der Log für dein Item Regen_gesamt aus ? Triggert die Rule ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von peter-pan »

Also ich hab das Ganze mal getestet.
Eigentlich müsstest du auch eine Fehlermeldung bei der Ausführung bekommen haben (Cron Trigger funktioniert).

Code: Alles auswählen

2019-08-21 10:32:33.383 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Regen pro Stunde': Could not cast NULL to org.eclipse.smarthome.core.library.types.DecimalType; line 11, column 37, length 33
.

So sieht sie bei mir aus:

Code: Alles auswählen

rule "Regen pro Stunde"
when
  Item Dummy4 changed to ON or
  Time cron "0 0 * * * ?"
then
  logInfo("Regen proStunde", "gestartet")
  if( Stand_letztH.state == NULL ) {
      Stand_letztH.sendCommand(0)
      logWarn("IF", "Stand letzt Stunde wurde initiiert")
  }
  Niederschlag_letzteH.sendCommand((Regen_gesamt.state as Number) - (Stand_letztH.state as Number) )
  Stand_letztH.sendCommand(Regen_gesamt.state as Number)
end
Die Items sind auch etwas modifiziert (Suffixe im Label:)

Code: Alles auswählen

Group  RegenTest  "Gruppe Regen" 
Number Stand_letztH "Gesamter Regenstand vor einer Stunde [%.1f mm]"  (RegenTest)
Number Niederschlag_letzteH "Niederschlag [%.1f mm]"    (RegenTest)
Number Regen_gesamt "Rain counter as Number [%.1f mm]"    (RegenTest)   // homematic
und natürlich auch ein Eintrag in der Sitemap (minimal)

Code: Alles auswählen

    Group item=RegenTest                   labelcolor=["blue"]
Das Ergebnis sieht dann so aus:
regen.png
Ein kleiner Tipp noch; wenn du Items, Rules, etc. ist die Lesbarkeit wesentlich besser, wenn du Code-Fences benutzt
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

bama5015
Beiträge: 7
Registriert: 20. Aug 2019 18:28

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von bama5015 »

Hallo Peter Pan,

herzlichen Dank für den Code. Bei mir funktioniert es. Ich habe in der IF-Anweisung NULL in Anführungszeichen gesetzt. Warum mein alter Code nicht funktioniert, weiß ich leider nicht. Das muss ich mir bei Gelegenheit mal im Detail anschauen.

Danke noch einmal und viele Grüße
BAMA

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von peter-pan »

Hallo BAMA,
das mit NULL brauchst du m.E. nicht in Hochkomma setzen. Dieser Teil wird nur einmal, nach dem Anlegen des Items durchlaufen, da dann noch keine Werte enthalten sind, oder nach einem Neustart des Systems, wenn das Item nicht persistiert wird.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von udo1toni »

Weil ich ja immer meinen Senf dazu geben muss...

Das eine ist die Sache mit den log Befehlen. Da verweise ich jetzt mal flugs auf mein eigenes Posting in einem anderen Thread: viewtopic.php?f=15&t=2381#p10853

Das andere ist die Sache mit dem sendCommand() vs. postUpdate(). Du möchtest eine Anzeige in der UI beeinflussen, also möchtest Du den Status des Items ändern. Das geht über postUpdate(). sendCommand() ändert hier nur deshalb den Status, weil openHAB normalerweise ein autoupdate macht.

DecimalType sollte man nur dann verwenden, wenn es unbedingt sein muss, lieber Number nutzen!
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von peter-pan »

...und das ist auch gut so.
Deine Tipps sind halt die besten und du wirst nicht müde uns immer wieder auf die Sprünge zu helfen. Meinen besonderen Dank auch noch für die Unterstützung zum Upgrade meines RPi3 von Jessie auf Stretch. Läuft alles wunderbar.
Gruss,
Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

bama5015
Beiträge: 7
Registriert: 20. Aug 2019 18:28

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von bama5015 »

Danke Udo und auch danke Peter. :)

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

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von udo1toni »

Ach so, und noch was gefunden... :P

Code: Alles auswählen

if( Stand_letztH.state == NULL ) {
naja... ja, das fängt zumindest mal einen Fall ab. Es gibt aber auch noch UNDEF (ziemlich unbekannt...)
Du möchtest wissen, ob sich eine gültige Zahl im Status befindet. das geht so:

Code: Alles auswählen

if(!(Stand_letztH.state instanceof Number)) {
Der Code wird ausgeführt, falls der Status nicht vom Typ Number ist. Die Klammern sind notwendig, um das NOT (das Ausrufezeichen) korrekt zuzuordnen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

bama5015
Beiträge: 7
Registriert: 20. Aug 2019 18:28

Re: Rule Verändert ITEM, Veränderung kommt in Sitemap nicht an

Beitrag von bama5015 »

Das habe ich jetzt auch eingebaut. Es läuft, Danke :)

Ich habe auch eine Vermutung, warum mein alter Code nicht in der BasicUI angezeigt wurde. Kann es sein, dass ich jedem Item, das nicht vom Typ String ist, sagen muss wie die Aufbereitung aussieht? Z.B. "Niederschlag [%.1f mm]"

Antworten