Resümierend (1):
	Bedeutet immer wenn eval gesetzt ist, wird es auch benutzt wenn eine Itemzuweisung der Art sh.Item(value) ausgeführt wird.
Demzufolge erzeugt eine Itemdefinition wie
	bei einem Aufruf mit 
	 auch einen Wert 5 des Items.
Alternativ kann man den Wert eines Items auch über seine (private) Methode __update__() setzen:
	 dann bekommt das Item den Wert 0.
PS: (1) hat in SmartHomeNG 1.5.1 so ausgesehen:
	nur um klarzustellen das es da in letzter Zeit keine Änderung wesentlicher Art gab.
							
						
					Code:
	
	class Item():
    """..."""
    def __call__(self, value=None, caller='Logic', source=None, dest=None):
        if value is None or self._type is None:
        return copy.deepcopy(self._value)
        if self._eval:
            args = {'value': value, 'caller': caller, 'source': source, 'dest': dest}
            self._sh.trigger(name=self._path + '-eval', obj=self.__run_eval, value=args, by=caller, source=source, dest=dest)
        else:
             self.__update(value, caller, source, dest)
Demzufolge erzeugt eine Itemdefinition wie
Code:
	
	Foo:
    type: num
    eval: value+5
    initial_value: 0
Code:
	
	sh.Foo(0)
Alternativ kann man den Wert eines Items auch über seine (private) Methode __update__() setzen:
Code:
	
	sh.Foo._Item__update(0)
PS: (1) hat in SmartHomeNG 1.5.1 so ausgesehen:
Code:
	
	    def __call__(self, value=None, caller='Logic', source=None, dest=None):
        if value is None or self._type is None:
            return self._value
        if self._eval:
            args = {'value': value, 'caller': caller, 'source': source, 'dest': dest}
            self._sh.trigger(name=self._path + '-eval', obj=self.__run_eval, value=args, by=caller, source=source, dest=dest)
        else:
            self.__update(value, caller, source, dest)


 
 
Kommentar