So ganz will es noch nicht.. aber fast 
Hier mein Item:
Das meine (theoretische) logic.conf:
Und hier mein multiclick.py:
So far so good. Das mit dem scheduler.remove wollte irgendwie nicht funktionieren, keine Ahnung warum!? Mit add statt trigger und change statt remove habe ich derzeit zumindest die gewünschte Funktionalität. Der Debug-Code kommt hier:
Sieht ja im Großen und Ganzen alles gut aus.. allerdings habe ich folgende Probleme:
- Problem 1: das *:multiclick im watch_item will nicht funktionieren. Habe kompletten Smarthomeordner gelöscht und mittels git clone -b develop git://github.com/mknx/smarthome.git auf den Developerbranch umgestellt. Allerdings wird hier die Logik einfach nicht geschalten, sondern nur, wenn ich explizit mein Item angebe
- Problem 2: Das multiclick-Item wird wohl ausgeführt, da das knx_send 9/0/0 funktioniert. Allerdings funktioniert das squeezebox_send nicht. Das Abstruse an der Sache: Forme ich das mcitem so um, dass es ein anderes Item mit genau dem gleichen Inhalt (squeezebox_send = ...) aufruft, passt alles. Es scheint also irgendwie am "Unteritem multiclick" zu liegen!???
Vielen Dank für die hoffentlich letzte Hilfestellung

Hier mein Item:
Code:
[[Playlist_Andy]] [[[Load]]] type = bool enforce_updates = true visu_acl = rw knx_listen=2/2/1 knx_dpt=1 multiclick click_count = 2 [[[[singleclick]]]] type = bool enforce_updates = true visu_acl = rw knx_dpt=1 [[[[multiclick]]]] type = bool enforce_updates = true visu_acl = rw knx_dpt = 1 knx_send = 9/0/0 squeezebox_send = <playerid> playlist index -1
Code:
[Mehrfachklick] filename = multiclick.py watch_item = *:multiclick
Code:
#!/usr/bin/env python logger.info(trigger) invalue = trigger['value'] item = sh.return_item(trigger['source']) scitem = sh.return_item(trigger['source']+'.singleclick') mcitem = sh.return_item(trigger['source']+'.multiclick') if 'click_count' in item.conf: count = int(item.conf['click_count']) if hasattr(logic, 'save_state_' + item.id()): if item.prev_update_age() < 0.8: val = int(getattr(logic, 'save_state_' + item.id())) + 1 setattr(logic, 'save_state_' + item.id(), val) logger.debug("Klickcount: "+str(val)) else: setattr(logic, 'save_state_' + item.id(), 1) else: setattr(logic, 'save_state_' + item.id(), 1) if int(getattr(logic, 'save_state_' + item.id())) > count-1: #sh.scheduler.remove('singleclick') sh.scheduler.change('singleclick', active=False) setattr(logic, 'save_state_' + item.id(), 0) logger.debug("Fuehre Multiclickitem aus") mcitem(1) else: logger.debug("Fuehre Singleclickitem aus") next_time = sh.now() + dateutil.relativedelta.relativedelta(seconds=1) sh.scheduler.add('singleclick', scitem, prio=3, cron=None, cycle=None, value=invalue, offset=None, next=next_time) #sh.scheduler.trigger('singleclick', obj=scitem, by='multiclick', source=None, value=invalue, dest=None, prio=3, dt=next_time)
Code:
2014-05-22 00:52:00,428 DEBUG Main knx: 0.0.0 set 2/2/1 to True -- __init__.py:parse_telegram:202 2014-05-22 00:52:00,439 DEBUG Main Item Squeezebox_KG.Playlist_Andy.Load = True via KNX 0.0.0 2/2/1 -- item.py:__update:363 2014-05-22 00:52:00,446 DEBUG Main Triggering Mehrfachklick - by: Item source: Squeezebox_KG.Playlist_Andy.Load dest: None value: True -- scheduler.py:trigger:162 2014-05-22 00:52:00,454 INFO Mehrfachklick {'dest': None, 'source': 'Squeezebox_KG.Playlist_Andy.Load', 'by': 'Item', 'value': True} -- multiclick.py:<module>:2 2014-05-22 00:52:00,460 DEBUG Mehrfachklick Fuehre Singleclickitem aus -- multiclick.py:<module>:28 2014-05-22 00:52:01,023 DEBUG Main knx: 0.0.0 set 2/2/1 to True -- __init__.py:parse_telegram:202 2014-05-22 00:52:01,037 DEBUG Main Triggering Mehrfachklick - by: Item source: Squeezebox_KG.Playlist_Andy.Load dest: None value: True -- scheduler.py:trigger:162 2014-05-22 00:52:01,043 INFO Mehrfachklick {'dest': None, 'source': 'Squeezebox_KG.Playlist_Andy.Load', 'by': 'Item', 'value': True} -- multiclick.py:<module>:2 2014-05-22 00:52:01,051 DEBUG Mehrfachklick Klickcount: 2 -- multiclick.py:<module>:14 2014-05-22 00:52:01,056 INFO Mehrfachklick Deactivating logic: singleclick -- scheduler.py:change:261 2014-05-22 00:52:01,061 DEBUG Mehrfachklick Fuehre Multiclickitem aus -- multiclick.py:<module>:25 2014-05-22 00:52:01,067 DEBUG Mehrfachklick Item Squeezebox_KG.Playlist_Andy.Load.multiclick = True via Logic None None -- item.py:__update:363 2014-05-22 00:52:01,083 DEBUG Main knx: 0.0.0 set 9/0/0 to 01 -- __init__.py:parse_telegram:193
- Problem 1: das *:multiclick im watch_item will nicht funktionieren. Habe kompletten Smarthomeordner gelöscht und mittels git clone -b develop git://github.com/mknx/smarthome.git auf den Developerbranch umgestellt. Allerdings wird hier die Logik einfach nicht geschalten, sondern nur, wenn ich explizit mein Item angebe
- Problem 2: Das multiclick-Item wird wohl ausgeführt, da das knx_send 9/0/0 funktioniert. Allerdings funktioniert das squeezebox_send nicht. Das Abstruse an der Sache: Forme ich das mcitem so um, dass es ein anderes Item mit genau dem gleichen Inhalt (squeezebox_send = ...) aufruft, passt alles. Es scheint also irgendwie am "Unteritem multiclick" zu liegen!???
Vielen Dank für die hoffentlich letzte Hilfestellung

Kommentar