Ankündigung

Einklappen
Keine Ankündigung bisher.

Cannot assign value in null context

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

    Cannot assign value in null context

    Hallo,

    ich habe in einer Regel einen Timer zum Ausschalten des Lichts definiert.
    Leider bekomme ich aber von openhab immer, wenn die Regel ausgeführt werden sollte einen Fehler.
    Hier meine Rule Definition:

    Code:
    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
     [LEFT]import [/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/B][LEFT][SIZE=2][COLOR=#000000]org.openhab.core.library.types.*[/COLOR][/SIZE][/LEFT]
    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]import [/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/B][LEFT][SIZE=2][COLOR=#000000]org.openhab.model.script.actions.*[/COLOR][/SIZE][/LEFT]
    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]import [/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/B][LEFT][SIZE=2][COLOR=#000000]org.joda.time.*[/COLOR][/SIZE][/LEFT]
    [SIZE=2] [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]  [LEFT]var [/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/B][LEFT][SIZE=2][COLOR=#000000]Timer entryTimer = [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]var [/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/B][LEFT][SIZE=2][COLOR=#000000]Timer toiletTimer = [/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
    [B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]
    [/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]rule [/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/B][LEFT][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[U]Licht[/U] [U]Eingangsbereich[/U] An"[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
     [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]when[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
    [SIZE=2][/SIZE] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Item[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] presenceGroundFloorEntryDirect [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]changed[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]to[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ON[/SIZE][/LEFT]
     [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]then[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
     [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2](entryTimer != [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2])[/SIZE][/LEFT]
    [SIZE=2] [LEFT]{[/LEFT]
     [LEFT]entryTimer.cancel()[/LEFT]
     [LEFT]entryTimer = [/LEFT][/SIZE][LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
    [SIZE=2] [LEFT]}[/LEFT]
    [/SIZE] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2](brightnessGroundFloorEntry.state < [/SIZE][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]20[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] && lightGroundFloorEntryCeiling.state == OFF)[/SIZE][SIZE=2] [/SIZE][/LEFT][SIZE=2]
     [LEFT]{[/LEFT]
     [LEFT][I]sendCommand[/I](lightGroundFloorEntryCeiling, ON)[/LEFT]
     [LEFT]} [/LEFT]
    [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]end[/LEFT]
     [LEFT] [/LEFT]
    [/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] [LEFT]rule [/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/COLOR][LEFT][/LEFT][/SIZE][LEFT][/LEFT][/B][LEFT][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[U]Licht[/U] [U]Eingangsbereich[/U] [U]Aus[/U]"[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
     [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]when[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
    [SIZE=2][/SIZE] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]Item[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] presenceGroundFloorEntryDirect [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]changed[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]to[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] OFF[/SIZE][/LEFT]
    [SIZE=2][/SIZE] [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]then[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
     [LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2](lightGroundFloorEntryCeiling.state == ON)[/SIZE][/LEFT]
    [SIZE=2] [LEFT]{[/LEFT]
     [LEFT]entryTimer = [I]createTimer[/I]([I]now[/I].plusSeconds([/LEFT]
    [/SIZE] [LEFT][SIZE=2][COLOR=#7d7d7d][SIZE=2][COLOR=#7d7d7d]120[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) [|[/SIZE][/LEFT]
    [SIZE=2][I]sendCommand[/I](lightGroundFloorEntryCeiling, OFF) [LEFT]] [/LEFT]
     [LEFT]} [/LEFT]
     [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]end[/COLOR][/SIZE][/COLOR][/SIZE][/B]
    Und hier die Fehlermeldung:
    20:09:24.849 ERROR o.o.c.s.ScriptExecutionThread[:50]- Error during the execution of rule 'Licht Eingangsbereich Aus': Cannot assign a value in null context.

    Leider habe ich keine Ahnung, was ich ändern könnte, damit es funktioniert.
    Kann mir da jemand weiter helfen?

    Gruß
    Jochen Kluger

    #2
    Nach ein bisschen Suchen habe ich in folgenden Artikeln den gleichen bzw. ähnliche Fehler gefunden:
    https://groups.google.com/forum/#!to...ab/3OHBFnliUe8
    https://knx-user-forum.de/openhab/32...er-fehler.html

    Am 9.10.2013 hat Kai Kreuzer in dem google groups Artikel geschrieben, er wolle das im Xbase prüfen. Ich benutze die 1.4.0 und bekomme den Fehler, daher gehe ich mal davon aus, dass hier keine Änderung durchgeführt wurde.

    Ich kann auch die Vermutungen aus dem google groups Thread teilen, ich nutze die Items aus den Rules auch an anderen Stellen als Trigger.

    Leider komme ich erst in den nächsten Tagen dazu weitere Tests zu machen und zu prüfen, ob ein Workaround funktioniert.

    Kommentar


      #3
      Hi,

      kurzes Update: In oben erwähntem Thread wurde stark vermutet, dass das Problem mit https://code.google.com/p/openhab/issues/detail?id=487 zusammenhängt. Dieses Issue wurde zu Eclipse SmartHome übernommen und ist dort mittlerweile gefixt, siehe https://bugs.eclipse.org/bugs/show_bug.cgi?id=423532.
      Das zukünftige openHAB 2.0 (welches Eclipse SmartHome nutzen wird), sollte das Problem also hoffentlich nicht mehr haben.

      Grüße,
      Kai

      Kommentar


        #4
        Ich fürchte allerdings, dass dies nicht die einzige Ursache war, ich hatte ja auch schon einen Fehler im xbase vermutet. Jedenfalls hab ich damals alle fraglichen Variablendeklarationen bereinigt und sehe den Fehler trotzdem noch, wenn auch sehr selten. Reproduzieren kann ich ihn allerdings nicht.

        Kommentar


          #5
          Immerhin ist in Eclipse SmartHome nun auch eine neuere Version von Xbase drin. Vielleicht ist dieser Fehler ja nun weg, wir werden sehen...

          Kommentar


            #6
            Hallo,
            ich kam leider erst jetzt dazu nochmal zu testen.
            Auch bei mir ließ sich der Fehler umgehen, indem ich nur in einer Rule auf das Item als Trigger zugreife.
            Das hilft zwar erstmal, aber ich hoffe dann einfach, dass das Problem im nächsten Release nicht mehr auftritt.

            Kommentar

            Lädt...
            X