Number Item NULL

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
AndyRPi
Beiträge: 68
Registriert: 3. Jan 2021 11:06
Answers: 0
Wohnort: Wörlitz / Obertshausen

Number Item NULL

Beitrag von AndyRPi »

Moin Zusammen,
ich habe mir eine Numberitem erstellt um anschließend per Regel eine Zahl hineinzuschreiben.
Nun musste ich folgenden umweg gehen: Ich musst erst eine 0 reinschreiben bevor ich meine Errechnete Zahl der erste mal rein schreibe. Kann mir das jemand erklären?
Openhab 4.0.0 RPi SSD
Homematic CCU3
Phoscon
Shelly
FRITZ!Box
Alexa

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

Re: Number Item NULL

Beitrag von udo1toni »

Die Frage ist, wie Du die Werte reinschreibst. Grundsätzlich ist es nicht notwendig, ein Item zu initialisieren, um mit einer Rule Werte schreiben zu können.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

AndyRPi
Beiträge: 68
Registriert: 3. Jan 2021 11:06
Answers: 0
Wohnort: Wörlitz / Obertshausen

Re: Number Item NULL

Beitrag von AndyRPi »

udo1toni hat geschrieben: 20. Jan 2023 16:24 Die Frage ist, wie Du die Werte reinschreibst. Grundsätzlich ist es nicht notwendig, ein Item zu initialisieren, um mit einer Rule Werte schreiben zu können.

Code: Alles auswählen

  if (itemRegistry.getItem('Heizung__Buero_Betrieb').getState() == 'OFF') {
          Heizdauer = (chronoUnit.SECONDS.between((((persistence.previousState(itemRegistry.getItem('Heizung__Buero_Betrieb'),true)) ? persistence.previousState(itemRegistry.getItem('Heizung__Buero_Betrieb'),true).getTimestamp() : 'undefined')),(zdt.now())));
          logger.warn(Heizdauer);
          Verbrauch = (Heizdauer * Leistung) / 3600000;
          logger.error(Heizdauer);
          logger.error(Verbrauch);
          Alter_Verbrauch = itemRegistry.getItem('Heizdauer_Buero').getState();
          berechnung = Alter_Verbrauch + Verbrauch;
          events.sendCommand('Heizdauer_Buero', berechnung);
        }
Ich nutze Blockly dafür. Eventuell geht da etwas nicht so. Es geht um die Variable Heizdauer
Openhab 4.0.0 RPi SSD
Homematic CCU3
Phoscon
Shelly
FRITZ!Box
Alexa

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

Re: Number Item NULL

Beitrag von udo1toni »

Der Punkt ist vermutlich: Du nutzt sendCommand(). sendCommand() sendet einen Befehl (vor allem in Richtung verlinkte Channel, aber auch, um andere Rules zu triggern, die auf received command reagieren).
Eigentlich möchtest Du aber nur den Status des Items setzen. Das passiert zwar (Default Verhalten) auch bei sendCommand, aber halt nur, weil openHAB der Meinung ist, wenn ein Befehl an das Item gesendet wird, muss der Status ja auf jeden Fall den gleichen Wert bekommen (oder einen anderen, der auf dem Befehl beruht, z.B. Befehl OFF führt bei einem Dimmer Item zu einem Status 0)
Es kann durchaus sein, dass das zu ienem Holpern in der Datenverarbeitung führt.

Korrekt (im Sinne von: Staus direkt setzen) ist der Befehl postUpdate().

Außerdem benutzt Du Variablen, z.B. berechnung, die sind aber gar nicht initialisiert. Ich bin mir nicht sicher, ob das in Javascript keine Rolle spielt (scheint ja erst mal egal zu sein).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

AndyRPi
Beiträge: 68
Registriert: 3. Jan 2021 11:06
Answers: 0
Wohnort: Wörlitz / Obertshausen

Re: Number Item NULL

Beitrag von AndyRPi »

Danke Udo für den Hinweis. Den Teil mit dem initialisieren der variablen habe ich nicht kopiert. Ich versuche es mal mit Update.
Openhab 4.0.0 RPi SSD
Homematic CCU3
Phoscon
Shelly
FRITZ!Box
Alexa

Antworten