Ankündigung

Einklappen
Keine Ankündigung bisher.

basic.Button wert erhöhen.

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

    basic.Button wert erhöhen.

    Hallo Liebes Forum,

    ich versuche mittels Button einen Wert in der Visu zu erhöhen.

    Ich habe schon vieles Versucht aber leider noch keinen Erfolg gehabt. Die Funktion soll genauso sein wie die Sollwertvorgabe im RTR.

    Ich habe mir den Quellcode vom Widget bereits angeschaut - werde daraus aber nicht wirklich schlau.

    Folgendes Item habe ich angelegt:
    Code:
    [OG]
       [[Benni]]
           [[[Spot]]]
           type = bool
           visu_acl = rw
           knx_dpt = 1
           knx_send = 3/0/3
          [[[temp]]]
            name = Temperature
                type = num
            visu_acl = rw
                knx_dpt = 9
                knx_listen = 3/2/0
                knx_init = 3/2/0
        [[[set]]]
            type = num
            visu_acl = rw
            cache = on
            value=28
    mittels einem Slider kann ich den Wert wunderbar verändern. Wie ist der den der Quellcode um einen Wert einfach um eins zu erhöhen.

    Code:
    {{basic.button('u1', 'OG.Benni.set', '', 'plus', sh.OG.Benni.set() +1 , 'midi') }}
    funktioniert nicht.

    Ich muss das doch hoffentlich nicht über eine Logik lösen - oder doch?

    #2
    Vor dem gleichen Problem steh ich auch grade.
    Finde dazu auch nichts. Ich möchte einfach nur das "Silo" runterzaehlen, wenn ich die Taste druecke passiert einfach nichts, keine Fehlermeldung gar nichts ..


    Code:
            {{ basic.tank('tank6', 'pellets.fuellstand', 0, 133, 1, 'pallets') }}
                        {{ basic.button('minus', 'pellets.erhoehen', '', 'minus', '', '') }} 
                        {{ basic.float('aktuell','pellets.fuellstand', '' ) }} 
                        {{ basic.button('plus', 'pellets.verringern', '', 'plus', '', '') }}
    Code:
    [pellets]
        [[fuellstand]]
            name = stand
            type = num
            visu = yes
            visu_acl = rw
            sqlite = true
            cache = yes    
            enforce_updates = True
        [[erhoehen]]
            name = Fuellstand_hoch
            type = num
            visu = yes
            visu_acl = rw
            enforce_updates = True
            eval = sh.pellets.fuellstand() + 1
        [[verringern]]
            name = Fuellstand_runter
            type = num
            visu = yes
            visu_acl = rw
            enforce_updates = True
            eval = sh.pellets.fuellstand() - 1

    Kommentar


      #3
      Auf die Schnelle (da unterwegs):

      Ich würde das wie folgt machen:
      - eval unter pellets/fuellstand packen
      - eval_trigger ebenfalls unter pellets/fuellstand und mit erhoehen bzw. verringern auslösen.

      Per "if" Statement im eval kannst Du unterscheiden, welches Item ausgelöst hat und erhöht oder verringert werden soll...

      hth

      Gruss
      Jochen.

      Kommentar


        #4
        ... oder alternativ zwei Mini-Logiken, die + und - als watch_item haben und dann

        sh.pellets.fuellstand = sh.pellets.fuellstand() - 1
        sh.pellets.fuellstand = sh.pellets.fuellstand() +1

        rechnen (die evals können so nicht funktionieren - damit schreibst Du nur den füllstand + oder - 1 in das jeweilige Item, aber Du willst ja eigentlich das Füllstands-Item ändern, oder?).

        hth2,
        /tom

        Kommentar


          #5
          echnen (die evals können so nicht funktionieren - damit schreibst Du nur den füllstand + oder - 1 in das jeweilige Item, aber Du willst ja eigentlich das Füllstands-Item ändern, oder?).
          genau ich möchte einfach den fuellstand +-1 rechnen bei button betätigung
          Ich seh den Wald vor lauter Bäumen nicht mehr, ich hab auch schon versucht mit sh.pellets.fuellstand(value)+1 zu arbeiten, das funktioniert aber auch nicht, dann bekomme ich den " unsupported operand type(s) for +: 'NoneType' and 'int'" fehler.
          So schwer/aufwändig kann es doch gar nicht sein.

          Kommentar


            #6
            Schreib mal jeweils einen meiner beiden Befehle oben in die eval-Zeile des dazugehörigen Buttons (+ und -).

            Bin zwar unterwegs und kanns grad nicht ausprobieren, aber theoretisch müsstest Du den Füllstand sogar direkt aus den beiden Buttons damit setzen können, ohne noch extra eine Logik aufzusetzen ...

            /tom

            Kommentar


              #7
              2015-02-16 15:34:29 WARNING pellets.verringern-eval Item pellets.verringern: problem evaluating (sh.pellets.fuellstand = sh.pellets.fuellstand()-1): invalid syntax (<string>, line 1)
              2015-02-16 15:34:30 WARNING pellets.erhoehen-eval Item pellets.erhoehen: problem evaluating sh.pellets.fuellstand = sh.pellets.fuellstand()+1: invalid syntax (<string>, line 1)
              weder ne variante mit () oder mit "" funktioniert
              einfache Sachen können halt doch manchmal sehr schwer sein

              Kommentar


                #8
                Mal schaun, ob ich das mit den Logiken aus der Ferne und aus dem Kopf so hinbekomme - ist ungetestet ...

                smarthome/items/items.conf:
                Code:
                # für Anbindung der Buttons
                [pellets]
                    [[erhoehen]]
                        name = Fuellstand_hoch
                        type = num
                        visu = yes
                        visu_acl = rw
                        enforce_updates = True
                    [[verringern]]
                        name = Fuellstand_runter
                        type = num
                        visu = yes
                        visu_acl = rw
                        enforce_updates = True
                smarthome/etc/logic.conf:
                Code:
                # um die Buttons mit den beiden Logiken zu verbinden (die Logiken zu 'triggern')
                [pellets_erhoehen_logic]
                    filename = pellets_hoch.py
                    watch_item = pellets.erhoehen
                [pellets_verringern_logic]
                    filename = pellets_runter.py
                    watch_item = pellets.verringern
                smarthome/logics/pellets_hoch.py: (neu erstellen)
                Code:
                # button ---> item 'erheohen' ---> Triggert diese Logik, addiert dann 1 zum Füllstand
                sh.pellets.fuellstand(sh.pellets.fuellstand()+1)
                smarthome/logics/pellets_runter.py: (neu erstellen)
                Code:
                # button ---> item 'verringern' ---> Triggert diese Logik, zieht dann 1 vom Füllstand ab
                sh.pellets.fuellstand(sh.pellets.fuellstand()-1)
                Danach sh.py neu starten. Bitte nicht gleich hauen, wenn's auf Anhieb nicht klappt oder Tippfehler drin sind ...

                /tom

                Edit: War klar, dass ich beim Kopieren auf dem Tablet Sachen vergesse. Änderungen rot markiert ...

                Kommentar


                  #9
                  also
                  hab deine möglichkeit ausprobiert, sie funktioniert, danach ist mir aber des Rätsels lösung eingefallen

                  es musste korrekt lauten:
                  Code:
                      [[erhoehen]]
                          name = Fuellstand_hoch
                          type = num
                          visu = yes
                          visu_acl = rw
                          enforce_updates = True
                          eval = [COLOR=Red]sh.pellets.fuellstand(sh.pellets.fuellstand()+1)[/COLOR]
                  dann funktionierts direkt ohne logic!

                  Kommentar


                    #10
                    Zitat von Bonze Beitrag anzeigen
                    dann funktionierts direkt ohne logic!
                    *Klatschhandvorkopf* na klar, in der Logik hatte ich es komischerweise dann auch richtig ... Hauptsache, es geht jetzt.

                    /tom

                    Kommentar


                      #11
                      DANKE !!!

                      Für alle die es Interessiert:


                      Code:
                      	[[[rtr1]]]
                      		name = Raumtemperatur
                      		sv_widget = {{ device.rtr('item', 'Aktor: ', 'item.ist', 'item.soll', '', '', '', '', 'item.stell', '0.5') }}
                      		[[[[soll]]]]
                      			visu_acl = rw
                      			sqlite = true
                      			type = num
                      			knx_dpt = 9
                      			knx_listen = 5/3/26
                      			knx_send = 5/3/26
                      			knx_status = 5/3/26
                      			knx_init = 5/3/26
                      			enforce_updates = yes 
                      			knx_cache = 5/3/26
                      		[[[[ist]]]]
                      			visu_acl = ro
                      			sqlite = true
                      			type = num
                      			knx_dpt = 9
                      			knx_listen = 5/3/25
                      			knx_status = 5/3/25
                      			knx_init = 5/3/25
                      		[[[[soll_desc]]]]
                      			type = num
                      			visu_acl = rw
                      			name = soll_desc
                      			enforce_updates = True
                      			eval = sh.first.wohnzimmer.rtr1.soll(sh.first.wohnzimmer.rtr1.soll()-0.5)
                      		[[[[soll_asc]]]]
                      			type = num
                      			visu_acl = rw
                      			name = soll_asc
                      			enforce_updates = True
                      			eval = sh.first.wohnzimmer.rtr1.soll(sh.first.wohnzimmer.rtr1.soll()+0.5)
                      		[[[[stell]]]]
                                  visu_acl = ro
                                  type = num
                                  knx_dpt = 5001
                                  knx_listen = 5/3/28
                                  knx_init = 5/3/28
                      			knx_cache = 5/3/28

                      Kommentar

                      Lädt...
                      X