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