Seite 1 von 1

Number Item NULL

Verfasst: 20. Jan 2023 12:26
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?

Re: Number Item NULL

Verfasst: 20. Jan 2023 16:24
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.

Re: Number Item NULL

Verfasst: 20. Jan 2023 17:33
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

Re: Number Item NULL

Verfasst: 20. Jan 2023 17:52
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).

Re: Number Item NULL

Verfasst: 20. Jan 2023 18:08
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.