Ankündigung

Einklappen
Keine Ankündigung bisher.

Eine Art wenn dann Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gatzman
    antwortet
    Vielen Dank für die Hilfe! Habe jetzt fast alles so wie es sein soll !!

    Einen Kommentar schreiben:


  • Mike01
    antwortet
    Das kannst du auch alles in eine Logik packen, du kannst in der Logik auswerten, welcher Fensterkontakt ausgelöst hat, und dann unterschiedliche Telegramme auslösen.

    z.B. wenn deine Fensterkontakte alle mit ALARM... beginnen setzt du in der logic.conf-Datei das watch_item wie folgt:
    Code:
    watch_item = ALARM.*
    dann wird bei jedem Fensterkontakt deine Logik getriggert. In der Logik kannst du dann mit
    Code:
     if trigger['by']=='Item' and trigger['source']=='ALARM.TUEREN.HAUSTUER_ALARM':
    Für jeden Kontakt eine eigene auswertung machen.

    Einen Kommentar schreiben:


  • Gatzman
    antwortet
    und jetzt benötige ich das für mehrere Türen und Fenster... muss ich jeweils eigene .py Dateien anlegen, oder kann ich eine Auflistung machen?

    Einen Kommentar schreiben:


  • Gatzman
    antwortet
    Es funktioniert! Hatte einen Schreibfehler ..... boooaaaahhhh vielen Dank!
    Zuletzt geändert von Gatzman; 18.03.2016, 15:04.

    Einen Kommentar schreiben:


  • Mike01
    antwortet
    Hast du die Freigabe auf EIN geschaltet ?
    also Taster in der SmartVisu Oberfläche anlegen, und dann auf ein schalten,
    oder über die Konsole auf "ein" setzen,
    wenn ja, dann bitte mal Logfile prüfen, und ggf hier anfügen.

    gruß, Mike

    Einen Kommentar schreiben:


  • Gatzman
    antwortet
    Leider bleibt die Lampe dunkel....

    Einen Kommentar schreiben:


  • Gatzman
    antwortet
    Vielen Dank, werde es am WE testen und berichten...

    Einen Kommentar schreiben:


  • Mike01
    antwortet
    Hi,

    Hier mal ein kleines Beispiel, wie es gehen sollte:

    zusätzliches Item anlegen:
    Code:
    [Freigabe]
    name = Freigabe
    type = bool
    enforce_updates = true
    cache = true
    im Ordner logics eine neue Logik-Datei anlegen
    z.b. haustuer.py

    und in der Datei die wenn-dann Logik anlegen
    Code:
    if sh.Freigabe() == 1:
      if sh.ALARM.TUEREN.HAUSTUER_ALARM() == 1:
        sh.EG.BELEUCHTUNG.FLUR_DECKE(1)
    zuletzt noch die Datei /etc/logic.conf öffnen und die Logik aktivieren
    Code:
    [freigabe]
        filename = haustuer.py
        watch_item = ALARM.TUEREN.HAUSTUER_ALARM
    danach Smarthome neu starten.
    Es sollte dann wenn Freigabe ein, und wenn Alarm ein die Beleuchtung ebenfalls auf ein geschaltet werden.
    Alarm aus wird ignoriert, Licht muss dann manuell ausgeschaltet werden.

    Gruß, Mike

    Einen Kommentar schreiben:


  • Gatzman
    antwortet
    Vielen Dank für Deine Bemühungen ... ... leider kann ich nicht wirklich programmieren, habe es ja im Eingangspost erwähnt, copy & paste! Werde mich aber jetzt damit beschäftigen! Bisher hat die Umsetzung unserer Haussteuerung mit smartVISU gut geklappt, da ich für alle benötigten Sachen immer Beispiele gefunden habe! Wir haben uns jetzt Fensterkontakte einbauen lassen, die Überwachung bzw. Anzeige ob auf oder zu in SmartVISU klappt auch.. jetzt möchte ich halt ein Ereignis "programmieren" wenn eine Tür oder Fenster aufgeht! ... Als Beispiel das Licht angeht, oder eine Sirene ertönt!

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Ich habe mal noch ein bischen was dazugeschrieben. Vielleicht mal mitteilen, was genau man da nicht rafft??? Programmieren kannst aber schon? ;-)

    Einen Kommentar schreiben:


  • Gatzman
    antwortet
    @psilo: Vielen Dank ... ich sollte es vielleicht anders ausdrücken... ich raff es nicht ...!! Sorry ...

    Einen Kommentar schreiben:


  • psilo
    antwortet
    @Gatzman: Zu Logiken steht wirklich genug im Wiki...

    http://mknx.github.io/smarthome/logic.html
    https://github.com/mknx/smarthome/wiki/Logiken

    Simples Beispiel:
    Logik zur Berechnung der Windstärke in Beaufort abh. von Veränderungen am Windmesser

    items.conf (Itemdefinition)
    Code:
    [knx_global]
        [[weather]]
            [[[wind]]]
                type = num
                visu_acl = r
                sqlite = yes
                knx_dpt = 9
                knx_cache = 6/6/6
                [[[[beaufort]]]]
                    type = num
                    visu_acl = r
                [[[[string]]]]
                    type = str
                    visu_acl = r
    etc/logic.conf (Logik, die auf das o.g. Item hört und bei Veränderungen aktiviert wird. Referenz auf das File wo Logik implementiert ist)
    Code:
    [WindLogic]
        crontab = init
        filename = wind.py
        watch_item = knx_global.weather.wind
    logics/wind.py (Implementierung der Logik, prüfung auf den wind-Wert und setzen von 2 weiteren Item-Attributen abh. davon)
    Code:
    if sh.knx_global.weather.wind() < 0.3:
        sh.knx_global.weather.wind.string("Windstille")
        sh.knx_global.weather.wind.beaufort(0)
    elif sh.knx_global.weather.wind() >= 0.3 and sh.knx_global.weather.wind() < 1.6:
        sh.knx_global.weather.wind.string("leiser Zug")
        sh.knx_global.weather.wind.beaufort(1)
    elif sh.knx_global.weather.wind() >= 1.6 and sh.knx_global.weather.wind() < 3.4:
        sh.knx_global.weather.wind.string("leichte Brise")
        sh.knx_global.weather.wind.beaufort(2)
    elif sh.knx_global.weather.wind() >= 3.4 and sh.knx_global.weather.wind() < 5.5:
        sh.knx_global.weather.wind.string("schwacher Wind")
        sh.knx_global.weather.wind.beaufort(3)
    elif sh.knx_global.weather.wind() >= 5.5 and sh.knx_global.weather.wind() < 8.0:
        sh.knx_global.weather.wind.string("mäßiger Wind")
        sh.knx_global.weather.wind.beaufort(4)
    elif sh.knx_global.weather.wind() >= 8.0 and sh.knx_global.weather.wind() < 10.8:
        sh.knx_global.weather.wind.string("frischer Wind ")
        sh.knx_global.weather.wind.beaufort(5)
    elif sh.knx_global.weather.wind() >= 10.8 and sh.knx_global.weather.wind() < 13.9:
        sh.knx_global.weather.wind.string("starker Wind")
        sh.knx_global.weather.wind.beaufort(6)
    elif sh.knx_global.weather.wind() >= 10.8 and sh.knx_global.weather.wind() < 13.9:
        sh.knx_global.weather.wind.string("steifer Wind")
        sh.knx_global.weather.wind.beaufort(7)
    elif sh.knx_global.weather.wind() >= 10.8 and sh.knx_global.weather.wind() < 20.8:
        sh.knx_global.weather.wind.string("stürmischer Wind")
        sh.knx_global.weather.wind.beaufort(8)
    elif sh.knx_global.weather.wind() >= 20.8 and sh.knx_global.weather.wind() < 24.5:
        sh.knx_global.weather.wind.string("stürmischer Wind")
        sh.knx_global.weather.wind.beaufort(9)
    elif sh.knx_global.weather.wind() >= 24.5 and sh.knx_global.weather.wind() < 28.5:
        sh.knx_global.weather.wind.string("stürmischer Wind")
        sh.knx_global.weather.wind.beaufort(10)
    elif sh.knx_global.weather.wind() >= 28.5 and sh.knx_global.weather.wind() < 32.7:
        sh.knx_global.weather.wind.string("orkanartiger Sturm")
        sh.knx_global.weather.wind.beaufort(11)
    else:
        sh.knx_global.weather.wind.string("Orkan")
        sh.knx_global.weather.wind.beaufort(12)
    Zuletzt geändert von psilo; 18.03.2016, 11:12.

    Einen Kommentar schreiben:


  • Gatzman
    antwortet
    das ist ja das Problem, ich habe leider bisher nichts gefunden...vielleicht wärst Du so nett und hilfst mir auf die Sprünge..

    Einen Kommentar schreiben:


  • kunig
    antwortet
    Das kannst du z.B. mit einer Logik machen. Beispiele wie man sowas angeht findest du entweder hier im Forum oder einfach über Google.

    Einen Kommentar schreiben:


  • Gatzman
    antwortet
    ...cool wäre dann auch noch eine Checkbox, womit ich die Funktion aktivieren oder deaktivieren kann...

    Einen Kommentar schreiben:

Lädt...
X