Ankündigung

Einklappen
Keine Ankündigung bisher.

Eine Art wenn dann Funktion

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

    Eine Art wenn dann Funktion

    Hallo zusammen,

    habe mir bis jetzt meine VISU selbst zusammen gebastelt per Copy und Paste. Jetzt komme ich leider nicht weiter!

    <td align="left" width="100px">
    {{ basic.symbol('AHT', 'ALARM.TUEREN.HAUSTUER_ALARM', 'HAUSTUER OFFEN', icon1~'fts_door_open.png',0 ) }}
    {{ basic.symbol('AHT1', 'ALARM.TUEREN.HAUSTUER_ALARM', 'HAUSTUER GESCHLOSSEN', icon0~'fts_door.png', 1) }}
    </td>


    Hiermit lasse ich mir optisch anzeigen, ob eine Tür oder Fenster geöffnet ist, jetzt möchte ich aber ein Funktion hinzufügen und zwar, wenn die Tür geöffnet wird, gleichzeitig das Licht im Flur angeht! Habe die Suchfunktion genutzt, nur leider nicht gefunden. Hier meine sh.py Einträge:

    [ALARM]
    [[TUEREN]]
    [[[HAUSTUER_ALARM]]]
    name = Haustuer Alarm
    type = bool
    knx_dpt = 1
    knx_listen = 4/0/0
    knx_send = 4/0/0
    knx_init = 4/0/0

    UND:


    [EG]
    [[BELEUCHTUNG]]
    [[[FLUR_DECKE]]]
    name = Deckenleuchte Flur
    type = bool
    knx_dpt = 1
    knx_listen = 2/0/2
    knx_send = 2/0/2
    knx_init = 2/0/2
    enforce_updates=true

    Wäre sehr dankbar für Hilfe!!
    Viele Grüße




    #2
    ...cool wäre dann auch noch eine Checkbox, womit ich die Funktion aktivieren oder deaktivieren kann...

    Kommentar


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

      Kommentar


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

        Kommentar


          #5
          @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.

          Kommentar


            #6
            @psilo: Vielen Dank ... ich sollte es vielleicht anders ausdrücken... ich raff es nicht ...!! Sorry ...

            Kommentar


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

              Kommentar


                #8
                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!

                Kommentar


                  #9
                  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

                  Kommentar


                    #10
                    Vielen Dank, werde es am WE testen und berichten...

                    Kommentar


                      #11
                      Leider bleibt die Lampe dunkel....

                      Kommentar


                        #12
                        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

                        Kommentar


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

                          Kommentar


                            #14
                            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?

                            Kommentar


                              #15
                              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.

                              Kommentar

                              Lädt...
                              X