Hallo an alle SmartHome.py Freunde,
ich meine, dies schon gelesen zu haben und habe sowohl das Forum wie auch die Dokumentation durchforstet, bin aber nicht fündig geworden. Daher bitte ich um Hilfe für folgendes:
Ich möchte eine Logic für mehrere Items, bzw. mehrere Gruppen von Items verwenden. Es müsste möglich sein, mehrere Einträge für die gleiche Logic in der logic.conf zu konfigurieren und die Items jeweils als Attribute dort anzugeben. Dies funktioniert soweit, wenn der Name der Items verwendet wird; funktioniert aber noch nicht, wenn diese Items geändert werden sollen.
Zur geplanten Funktionsweise der Logic: Die Logik setzt Telegramme von Wippen in Telegramme zur Aktivierung der Treppenhauslichtfunktion eines Aktors um. Die Wippen werden entsprechend der Statustelegramme des Aktors nachgeführt.
items.conf:
logic.conf:
aussenbeleuchtung.py:
Log:
Vielen Dank!
ich meine, dies schon gelesen zu haben und habe sowohl das Forum wie auch die Dokumentation durchforstet, bin aber nicht fündig geworden. Daher bitte ich um Hilfe für folgendes:
Ich möchte eine Logic für mehrere Items, bzw. mehrere Gruppen von Items verwenden. Es müsste möglich sein, mehrere Einträge für die gleiche Logic in der logic.conf zu konfigurieren und die Items jeweils als Attribute dort anzugeben. Dies funktioniert soweit, wenn der Name der Items verwendet wird; funktioniert aber noch nicht, wenn diese Items geändert werden sollen.
Zur geplanten Funktionsweise der Logic: Die Logik setzt Telegramme von Wippen in Telegramme zur Aktivierung der Treppenhauslichtfunktion eines Aktors um. Die Wippen werden entsprechend der Statustelegramme des Aktors nachgeführt.
items.conf:
Code:
[aa]
name = Aussenanlage
sv_page = room
sv_img = scene_garden.png
[[licht]]
[[[west]]]
name = West
type = bool
visu_acl = rw
knx_dpt = 1
knx_cache = 8/3/223
knx_send = 8/3/223
[[[[status]]]]
name = Status
type = bool
visu_acl = rw
knx_dpt = 1
knx_cache = 8/1/223
knx_send = 8/1/223
[[[[treppenhauslichtfunktion]]]]
name = Treppenhauslichtfunktion
type = bool
visu_acl = rw
knx_dpt = 1
knx_cache = 8/3/224
knx_send = 8/3/224
[[[[dauerein]]]]
name = Dauer Ein
type = bool
visu_acl = rw
knx_dpt = 1
knx_cache = 8/3/225
knx_send = 8/3/225
Code:
[aussenbeleuchtung_west] filename = aussenbeleuchtung.py watch_item = aa.licht.west | aa.licht.west.status rocker_item = aa.licht.west status_item = aa.licht.west.status switch_item = aa.licht.west.treppenhauslichtfunktion
Code:
import logging
logger.info("starte")
try:
logic.rocker_item
logic.status_item
logic.switch_item
except NameError:
logger.error("The following 3 attributes must be defined when calling this logic: rocker_item, status_item, switch_item")
else:
logger.debug("Parameters ok.")
changed_item = sh.return_item(trigger['source'])
if changed_item.changed_by().startswith('KNX:'):
logger.debug('item geändert durch Telegramm vom Bus.')
##### dies funktioniert: #####
if trigger['source'].endswith(logic.rocker_item):
if trigger['value']:
##### dies funktioniert NICHT: #####
sh.item[logic.switch_item](1)
else:
sh.aa.licht.west.treppenhauslichtfunktion(0)
sh.aa.licht.west.dauerein(0)
elif trigger['source'].endswith("aa.licht.nord.status"):
if trigger['value']:
sh.aa.licht.west(1)
else:
sh.aa.licht.west(0)
else:
logger.debug('item geändert durch smartHome, keine Aktion.')
Code:
2014-09-29 18:52:44,239 DEBUG Main knx: 1.1.4 set 8/3/223 to True -- __init__.py:parse_telegram:190
2014-09-29 18:52:44,247 DEBUG Main Item aa.licht.west = True via KNX 1.1.4 8/3/223 -- item.py:__update:363
2014-09-29 18:52:44,254 DEBUG Main Triggering aussenbeleuchtung_west - by: Item source: aa.licht.west dest: None value: True -- scheduler.py:trigger:162
2014-09-29 18:52:44,268 INFO aussenbeleuchtung_west starte -- aussenbeleuchtung.py:<module>:15
2014-09-29 18:52:44,273 DEBUG aussenbeleuchtung_west Parameters ok. -- aussenbeleuchtung.py:<module>:21
2014-09-29 18:52:44,278 DEBUG aussenbeleuchtung_west item geändert durch Telegramm vom Bus. -- aussenbeleuchtung.py:<module>:24
2014-09-29 18:52:44,285 ERROR aussenbeleuchtung_west Logic: aussenbeleuchtung_west, File: /usr/smarthome/logics/aussenbeleuchtung.py, Line: 27, Method: <module>, Exception: 'SmartHome' object has no attribute 'item' -- scheduler.py:_task:334
Traceback (most recent call last):
File "/usr/smarthome/lib/scheduler.py", line 327, in _task
exec(obj.bytecode)
File "/usr/smarthome/logics/aussenbeleuchtung.py", line 27, in <module>
sh.item[logic.rocker_item](1)
AttributeError: 'SmartHome' object has no attribute 'item'



Kommentar