Skip to content

Nachdimmen

cstrassburg edited this page Apr 1, 2015 · 4 revisions

Ziel

Nachdimmen von Lampen auf einen bestimmten Wert um das Licht nachts gedimmt einzuschalten.

Logik

Die Logik pürft ob globale oder lokale Voraussetzungen für das Nachdimmen gegeben sind. Wenn ja wird gedimmt, ansonsten nichts gemacht. Das lokale Item überschreibt dabei das globale Item, somit lassen sich Lampen einzeln auf Uhrzeiten etc. konfigurieren, alle zentral oder auch gemischt nachdimmen. Nur wenn beim Item das "nachdimm_wert" Attribut konfiguriert ist, wird durch die Logik nachgedimmt.

Die Logik wird unter logics/nachdimmen.py gespeichert.

/usr/local/smarthome/logics/nachdimmen.py

#!/usr/bin/env python

logger.info("Nachdimmen Logik gestartet")

itemname = trigger['source']
item = sh.return_item(itemname)

if trigger['value'] == True:

    active = False
    has_local = False

    #schauen ob es ein lokales Steueritem gibt
    search_id = item.id()+".nachdimmen"
    for child in item.return_children():
         if child.id() == search_id:
                has_local = True

    if has_local:
        if item.nachdimmen:
           logger.info("local active")
           active = True
    else:
        if sh.zentral.nachdimmen:
             logger.info("zentral active")
             active = True
    # Lampe auf Wert aus  nachdimm_wert = xx dimmen
    if active:
        item.helligkeit(item.conf['nachdimm_wert'])
    else:
        logger.info("Nachdimmen Logik: Nachdimmen weder beim Objekt noch zentral aktiviert")

else:
    logger.info("Nachdimmen Logik: Licht wird ausgeschaltet")

Die Logik aktiviert man unter etc/logic.conf mit dem Eintrag von:

/usr/local/smarthome/etc/logic.conf

[nachdimmen]
    filename = nachdimmen.py
    watch_item = *:nachdimm_wert

Items

items/zentral.conf

[zentral]
   [[nachdimmen]]
      type = bool
      knx_dpt = 1
      visu_acl = rw
      knx_send = 1/0/3
      knx_cache = 1/0/3
      [[[uzsu]]]
         type=dict
         uzsu_item=zentral.nachdimmen
         cache=True
         visu_acl=rw

items/nachdimm_test.conf

[test]
   [[testlichtB]]
      type = bool
      knx_dpt = 1
      visu_acl = rw
      knx_send = 7/7/5
      knx_cache = 7/7/5
      nachdimm_wert = 20
      [[[helligkeit]]]
            type = num
            visu_acl = rw
            knx_dpt = 5
            knx_cache = 7/7/95
            enforce_updates = yes
            knx_send = 7/7/93

   [[testlicht]]
      type = bool
      knx_dpt = 1
      visu_acl = rw
      knx_send = 7/7/1
      knx_cache = 7/7/2
      nachdimm_wert = 45
      [[[nachdimmen]]]
         type = bool
         visu_acl = rw
      [[[helligkeit]]]
            type = num
            visu_acl = rw
            knx_dpt = 5
            knx_cache = 7/7/85
            enforce_updates = yes
            knx_send = 7/7/83

      [[[uszu]]]
         type=dict
         uzsu_item=test.testlicht.nachdimmen
         cache=True
         visu_acl=rw