Ankündigung

Einklappen
Keine Ankündigung bisher.

Item uninitialized...was tun, um das zu verhindern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Item uninitialized...was tun, um das zu verhindern

    Hi,
    sporadisch habe ich das Problem, das Items nicht initializiert sind. Vermutlich passiert das, (machmal?) wenn das Item-Definitionsfile neu geladen wird.

    Z.B. dieses Item:
    Code:
    Switch         KNX_K_sL_Werkstatt          "Deckenlicht Werkstatt"    (gKG_Werkstatt,gLichtKG )  {knx="0/26"}
    erscheint bei diesem Statement in einer Rule
    Code:
    logInfo("LogIt","Werkstatt      : " + KNX_K_sL_Werkstatt.state.toString)
    mit dieser Ausgabe im Log:
    Code:
    - Werkstatt      : Uninitialized
    Sobald ich einmal den Switch im UI betätigt habe, ist alles fein. Ob das auch der Fall ist, wenn ich den physikalischen Schalter betätige kann ich aufgrund von 503km derzeit nicht ausprobieren.

    Kann ich etwas tun, um diese Phänomen zu umgehen (also das mit dem "uninitialized", nicht das mit den km?

    Gruß
    Peter

    #2
    Der erste Schritt wäre, ein < zu ergänzen, damit beim Start von openHAB der Status geholt wird. Als zweites wäre es günstig, dafür eine Status-GA zu verwenden, statt der Schalt-GA.
    Code:
    Switch KNX_K_sL_Werkstatt "Deckenlicht Werkstatt" (gKG_Werkstatt,gLichtKG ) {knx="[COLOR=#FF0000]<[/COLOR]0/26"}
    
    // [COLOR=#696969]oder, unter der Annahme, dass der Aktor seinen Status über 0/27 rückmeldet:[/COLOR]
    
    // Switch KNX_K_sL_Werkstatt "Deckenlicht Werkstatt" (gKG_Werkstatt,gLichtKG ) {knx="0/26[COLOR=#FF0000]+<0/27[/COLOR]"}
    Leider werden alle Items auf uninitialized gesetzt, sobald auch nur eine .items-Datei gespeichert wird (unabhängig davon, ob nun Änderungen stattfanden oder nicht). Dieses Verhalten ist auf der einen Seite lästig, aber vermutlich fast sicher unvermeidbar, wenn man nicht großen Aufwand treiben möchte, um alle Wenns und Abers bei einer Teilaktualisierung zu berücksichtigen (z.B. Änderungen der Gruppenzugehörigkeit, Änderung eines Groupitems...).
    Bisher ist es so, dass die Status von knx ausschließlich bei Neustart aktiv geholt werden, nicht beim Reinitialisieren der Items. Wenn es also Änderungen an den Items gibt, wird das Item trotzdem uninitialized sein. Der einzige Ausweg ist, alle Items zu persistieren und per restoreOnStartup den letzten Zustand wiederherzustellen (das passiert auch beim Reinitialisieren), mapdb als Persistence Service ist genau zu diesem Zweck eingebaut worden, hier wird nur der jeweils letzte Wert aufgehoben.

    Kommentar

    Lädt...
    X