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