Ankündigung

Einklappen
Keine Ankündigung bisher.

UZSU Widget für Lüftung

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

    UZSU Widget für Lüftung

    Hallo Forum,

    ich bin seit Tagen am basteln und suchen, aber ich bekomme es nicht hin, wesewegen ich mich an euch wende.
    Installiert ist 2.8 + UZSU V5.0 gem Vorgabe.

    Ich kann die div Stufen anwählen, aber die ETS zeigt nichts an. Kann jemand HIlfestellung geben bitte, wo ich noch einen Eintrag ergänzen muss?

    Code:
    {{ basic.formula('kwl1', 'kwl.level', 'Stufe', '((VAR-12)/27)') }}
    {{ uzsu.uzsu_icon('kwluzsu1', 'kwl.level.uzsu', 'Lüftungsstufe', '0', '', '', 'list', ['S0:17', 'S1:51','S2:77', 'S3:102', 'S4:128', 'S5:153', 'S6:179','S7:204' ,'S8:250']) }}
    2. Frage:

    ich würde gerne den Taster Stoßlüften haben, welcher dann auf Stufe 7 für 40 Minuten aktiviert ist.
    Wie kann ich diese beiden Parameter umsetzen, so dass ich die Parameter vor eingestellt habe und nur einen Knopf drücken muss, ohne Pop up?
    Aktuell bekomme theoretisch ich nur die Stufe umgesetzt, nicht aber die Zeit
    Code:
    {{ uzsu.uzsu_icon('boostuzsu2', 'kwl.boost.uzsu', 'Stoßlüften', '0', '', '', 'bool', 'S7:204') }}
    alternativ
    kann ich beides im Poupup einstellen.
    Wie aber ohne Popup umsetzen?
    Code:
    {{ uzsu.uzsu_icon('boostuzsu2', 'kwl.boost.uzsu', 'Stoßlüften', '0', '', '', 'num', 'S7:204') }}
    Code:
    [kwl]
        [[level]]
            type = num
            visu_acl = rw
            knx_dpt = 5
            knx_cache = 0/4/10
            knx_send = 0/4/9
            sqlite = no
        [[[uzsu]]]
            type=dict
            uzsu_item=kwl.level
            visu_acl=rw
            cache = True
        [[boost]]
            type = num
            visu_acl = rw
            knx_dpt = 5
            knx_cache = 0/4/10
            knx_send = 0/4/9
            sqlite = no
        [[[uzsu]]]
            type=dict
            uzsu_item=kwl.boost
            visu_acl=rw
            cache = True
    Angehängte Dateien
    Zuletzt geändert von bmx; 13.11.2016, 15:11. Grund: Code-Bereiche aufgehübscht

    #2
    Mal SmartHomeNG im Develop gestartet und geschaut, ob es dort ankommt?

    Und bitte die Config in [ CODE ] ... [ / CODE ] einschliessen und ggf. formatieren mit Einzügen für die bessere Lesbarkeit...
    Zuletzt geändert von bmx; 13.11.2016, 10:46.

    Kommentar


      #3
      folgendes kommt an:

      Code:
      2016-11-13 09:44:56 DEBUG __init__ Main VISU json_parse: send to 192.168.100.75:51941: {'items': [['kwl.level', 51.0], ['kwl.level.uzsu1', {'active': True, 'list': [{'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,SA,SU', 'timeMax': '', 'timeCron': '9:46', 'time': '9:46', 'timeMin': '', 'delayedExec': {'active': False, 'value': '', 'deviceString': '', 'type': 'String'}, 'timeOffset': '', 'active': False, 'holiday': {'weekend': False, 'workday': False}, 'event': 'time', 'condition': {'active': False, 'value': '', 'deviceString': '', 'type': 'String'}, 'value': '153'}, {'rrule': 'FREQ=WEEKLY;BYDAY=SA,SU', 'timeMax': '', 'timeCron': '9:48', 'time': '9:48', 'timeMin': '', 'delayedExec': {'active': False, 'value': '', 'deviceString': '', 'type': 'String'}, 'timeOffset': '', 'active': False, 'holiday': {'weekend': False, 'workday': False}, 'event': 'time', 'condition': {'active': False, 'value': '', 'deviceString': '', 'type': 'String'}, 'value': '77'}]}], ['kwl.boost.uzsu2', {'active': False, 'list': []}],
      Code:
      2016-11-13 09:47:39 DEBUG __init__ Main KNX[default]: 1.1.35 set 0/4/10 to 50 -- __init__.py:Parse_telegram:207
      
      2016-11-13 09:47:39 DEBUG item Main Item kwl.level = 50 via KNX 1.1.35 0/4/10 -- item.py:__update:470
      2016-11-13 09:47:39 DEBUG item Main Item kwl.boost = 50 via KNX 1.1.35 0/4/10 -- item.py:__update:470
      2016-11-13 09:47:39 DEBUG item Main Item kwl.level_alt = 50 via KNX 1.1.35 0/4/10 -- item.py:__update:470
      Zuletzt geändert von bmx; 13.11.2016, 15:12. Grund: Code aufgehübscht

      Kommentar


        #4
        Update:
        jetzt geht Fall 1:
        ich hatt vergessen die aktiv ACT zu setzen.

        wie kann ich nun noch einen einfachen Schalter implementieren, der bei betätigung x minuten bei stufe x aktiv bleibt und dann wieder deaktiviert wird?

        nächste Frage:
        wie kann ich über einen Modus Urlaub die Schatltzeiten deaktivieren
        Angehängte Dateien
        Zuletzt geändert von KF55W; 13.11.2016, 10:52.

        Kommentar


          #5
          Idee:
          Du könntest erstens ein Item Urlaub definieren.
          Zum zweiten definierst Du ein "Hilfsitem" Dieses Hilfsitem wird durch die UZSU geschaltet.
          Zum dritten dann ein Manuell Item. Dieses kann mit Autotimer arbeiten und eine gewisse Zeit nach dem Einschalten dann wieder ausgehen.

          Das Schaltitem kwl.level kann einen eval_trigger auf das Hilfsitem und auch auf das Manuell Item bekommen.
          Das eval liefert dann den richtigen Wert als Kombination von Hilfsitem und Manuell Item zum Schalten. Ist etwas kompliziert für eval, darum würde ich es nach meinem Geschmack in eine kleine Logik packen die vom Hilfsitem und auch vom Manuell Item getriggert wird.

          Da steht dann in etwa drin:
          Code:
          if sh.Manuellitem():
          sh.kwl.level( Stufe x )
          else
          sh.kwl.level( Hilfsitemwert )
          Gruß,
          Bernd
          Zuletzt geändert von bmx; 13.11.2016, 18:54.

          Kommentar


            #6
            Hi Bernd,

            danke für die Hilfestellung.
            Könntest du mir das etwas konkreter beschreiben.

            Das UZSU ist für mich noch ziemlich undurchsichtig.
            Auch in der Programmierung bin ich ziemlich bescheiden aufgestellt.

            Aber wenn du mir noch etwas genauer erklärst, am besten auch wie die Items und das UZSU aussehen könnte, bekomme ich das schon hin.
            danke vorab und viele Grüße

            Kommentar


              #7
              kleines Update:

              ich habe jetzt ein basic.button, welcher den Wert 204 vorgibt und einen Autotimer, der den Wert nach x sekunden wieder auf Stufe 3 (wert 102) setzt.

              Problem jetzt: der Autotimer setzt alle x sekunden den mittlerweile neuen Wert auch wieder auf Stufe 3 (wert 102)

              Code:
                 [[boost]]
                    type = num
                    visu_acl = rw
                    timer = 20 = 102
                    knx_dpt = 5
                    knx_cache = 0/4/10
                    knx_send = 0/4/9
                    sqlite = no
              Zuletzt geändert von bmx; 13.11.2016, 20:07. Grund: wieder CODE vergessen...

              Kommentar


                #8
                Mit "autotimer " sollte es gehen. Siehe diesen Thread https://knx-user-forum.de/forum/supp...-und-autotimer
                Gruß Wolfram

                P.S: das Item [boost] triggert dann mit jeder Änderung den Autotimer neu. Die GA hinter knx_cache schreibt Dir aber immer wieder Änderungen ins item. Ich denke deshalb, dass Du das knx_cache weglassen musst.
                Zuletzt geändert von wvhn; 14.11.2016, 19:11.

                Kommentar


                  #9
                  hi wolfram, danke für die Unterstützung.

                  ich hab den Beitrag gelesen, aber ich kann ihn nicht umsetzen.
                  Welchen Befehl muss ich wohin kopieren, dass es funktioniert?
                  item.conf? seite.html oder wohin kommt der befehl sh.kwl.boost.timer(10, 23)?
                  Muss mein Item.conf dann die zeile autotimer enthalten und wenn ja, was solld a drin stehen?


                  Kommentar


                    #10
                    Hi,

                    Du hast doch schon eine halbwegs funktionierende Lösung erstellt. M.E. Musst Du in Deiner item.conf nur die Zeile knx_cache im item [boost] weglassen. Sonst triggert jede Änderung auf der GA der Lüftung immer wieder den Autotimer in [boost], also z.B. auch wenn das item [level] geändert wird.

                    Ob dann in Deiner item.conf
                    Code:
                    timer = 20 = 102
                    oder
                    Code:
                    autotimer = 20 = 102
                    besser funktioniert, kannst Du ausprobieren. Nach dem oben verlinkten Thread würde ich letzteres verwenden.


                    Gruß Wolfram

                    Kommentar


                      #11
                      jetzt gehts, ohne cache, mit autotimer. danke!

                      Kann ich diesen Basic.button auch mit einem realen Tastertriggern?
                      Aktuell gehen in Küche und Bädern jeweils ein Taster auf Stoßlüften, via Aktor.
                      Den würde ich gerne sparen.

                      Zusätzlich: Kann ich den alten Wert vor dem Stoßlüften zwischenspeichern und dann wieder setzen?
                      Code:
                          [[level_alt]]
                          type = num
                      ...

                      Kommentar


                        #12
                        Wenn ich mich richtig erinnere, hatte ich das damals in den Items und Logiken für die Helios-KWL schon gelöst (bin grad nicht zu Hause, kann also nicht nachsehen). Schau mal hier.
                        /tom

                        Kommentar


                          #13
                          Das mit dem Taster hab ich gelöst:
                          Alle Taster senden den Wert auf eine neue GA 0/4/8. Hier lauscht auch der Analogaktor und verarbeitet den Wert in die gewünschte Stufe.

                          Zusätzlich habe ich den diese GA als cache für das Stoßlüften genommen, so dass der AUTOTIMER aktiv wird, entweder wenn Stoßlüften an der SV gedrückt wird, oder eben einer der Taster, getriggert über den cache.

                          Code:
                          [kwl]
                              [[level]]
                              type = num
                                  visu_acl = rw
                                  knx_dpt = 5
                                  knx_cache = 0/4/10
                                  knx_send = 0/4/9
                                  sqlite = no
                                  [[[uzsu1]]]
                                  type=dict
                                         uzsu_item=kwl.level
                                      visu_acl=rw
                                      cache = True    
                              [[boost]]
                               type = num
                              visu_acl = rw
                              autotimer = 40 = 51
                              knx_dpt = 5
                              knx_cache = 0/4/8
                                  knx_send = 0/4/9
                                  sqlite = no
                          Jetzt bleibt noch das Zwischenspeichern des Wertes, welcher dann anscließend wieder gesetzt werden soll.
                          Hier hab ich leider noch nichts finden könne, Tom.
                          Wenn du wieder zuhause bist und dir das in die Finger fällt, würde ich mich über ne kurze Rückmeldung freuen.
                          danke soweit an alle

                          Kommentar


                            #14
                            Hallo Andreas,

                            Auszug aus der 'helios_logics.py' (siehe zip-File in dem von mir verlinkten Beitrag):

                            Code:
                            [FONT=courier new]...
                            elif trigger_source == "ventilation.booster.logics.switch":
                            
                             if sh.ventilation.rs485._power_state() == 0:    # Switch it on first (if necessary)
                                sh.ventilation.rs485._power_state(1)
                                logger.debug("Ventilation switched ON")
                                time.sleep(10)
                            
                             if trigger_value == True:                       # Booster mode on
                                sh.ventilation.booster.logics.value_after_boost(sh.ventilation.rs485._fanspeed())
                                sh.ventilation.rs485._fanspeed(boost_fanspeed)
                                logic.trigger(dt=sh.now()+datetime.timedelta(seconds=boost_time), value="helios_boost_off")
                                logger.debug("Booster mode activated for " + str(boost_time) + " seconds")
                            
                             else:                                            # Booster mode off
                                # todo: hier noch zur Sicherheit 30 Sekunden warten ---> einfach auf  item(age) warten
                                sh.ventilation.rs485._fanspeed(sh.ventilation.booster.logics.value_after_boost())
                                logger.debug("Ventilation switched back to fan speed " + str(sh.ventilation.booster.logics.value_after_boost()))
                            ...[/FONT]
                            Mein item logics.value_after_boost ist das 'Speicher-Item' und entspricht Deinem kwl.level_alt. Weiterhin gibt es die Items boost_fanspeed und boost_time, die ich über die Visu steuere. Auf diese Art und Weise kann man z.B. auch mal Stufe 5/6/7/8 für 15/30/45/60 Minuten anschalten (Steuerung über Radiobuttons).

                            Hoffe, das hilft Dir ein bisschen weiter.

                            /tom

                            Kommentar


                              #15
                              Nachtrag: Probier mal folgenden Ansatz, könnte klappen, bin mir aber nicht sicher (nur schnell aufgeschrieben, also ungetestet):

                              Code:
                              [FONT=courier new][kwl]
                                  [[level]]
                                      type = num
                                      visu_acl = rw
                                      knx_dpt = 5
                                      knx_cache = 0/4/10
                                      knx_send = 0/4/9
                                      sqlite = no
                              
                                      [[[uzsu1]]]
                                          type=dict
                                          uzsu_item=kwl.level
                                          visu_acl=rw
                                          cache = True   
                              
                               [[boost]]
                                   type = num
                                   visu_acl = rw
                                   autotimer = 40 = sh.kwl.level_alt()
                                   knx_dpt = 5
                                   knx_cache = 0/4/8
                                   knx_send = 0/4/9
                                   sqlite = no
                              
                               [[level_alt]]
                                   type = num
                                   eval = sh.kwl.level.prev_value()    # Wert *vor* dem jetzigen Boost-Wert
                                   eval_trigger = kwl.boost[/FONT]
                              /tom

                              Kommentar

                              Lädt...
                              X