Ankündigung

Einklappen
Keine Ankündigung bisher.

Elemente für Zwang 2-bit Werte darstellen und bedienen können

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

    Elemente für Zwang 2-bit Werte darstellen und bedienen können

    Hallo,

    ich vermisse Elemente um das Zwangsstellungsobjekt 2-Bit richtig ansteuern und vor allem den Status dargestellt zu bekommen.
    2 Bit Werte werden hier nicht direkt unterstützt so wie ich das sehe - oder habe ich was übersehen?

    Der derzeitige Workarround ist mit 1Byte u08 zu arbeiten für die 4 Möglichkeiten 0, 1, 2, und 3, was auch funktioniert, aber nicht wirklich elegant ist, was die Darstellung und Bedienung betrifft. Ausser dem normalen Button habe ich bis jetzt keine Möglichkeit gefunden, direkt ohne Logik etc. auf die GA mit 2-Bit zuzugreifen und dafür benötige ich dann 3 Buttons, was auch nicht optimal ist.

    Ich beschäftige mich jetzt seit rund 3 Monaten mit dem EibPC2 und es läuft bis jetzt schon das Meiste so wie ich mir das vorstelle - nicht zu letzt durch dieses hervorragende Forum, was einem doch immer wieder Anregungen zeigt. Den hervorragenden Enertx Support natürlich auch, der mir doch schon bei manchen grundlegenden Anfangsschwierigkeiten geholfen hatte.

    #2
    Zitat von blaumann Beitrag anzeigen
    Hallo,
    ich vermisse Elemente um das Zwangsstellungsobjekt 2-Bit richtig ansteuern und vor allem den Status dargestellt zu bekommen.
    2 Bit Werte werden hier nicht direkt unterstützt so wie ich das sehe - oder habe ich was übersehen?
    Doch, es gibt für den Zwei-Bit Typen im Experten oder im Logikblatt den Typ b02 (der dann eben 2 Bits gesetzt bekommt).

    Code:
    // Bit 2 Setzen
    Sperre = 2b02
    Analog dazu ist die Variablendefinition im Logikeditor
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Gibt es denn eine "Standardbelegung" der 4 Zustände?

      Für die Darstellung kannst du dir leicht behelfen. Da ich davon ausgehe, dass du das öfters darstellen willst, empfehle ich ein Experten-Makro.

      Neue Makrobibliothek in den Projekt-Makros anlegen:

      Code:
      :begin vmB02Visu(uShifterId, uShifterId_P, bObj)
      :info $Zeigt den Zustand einer Zwangsstellung in der Visu$ \\
      $uShifterId Experten-Variable (u08)$ \\
      $uShifterId_P Experten-Variable der Seite$ (u08) \\
      $bObj das Anzuzeigende Objekt (b02)$ $
      :shortinfo $Zeigt den Zustand einer Zwangsstellung in der Visu$
      
      if bObj == 0b02 then pdisplay(uShifterId, $Zustand 1$, TEMPERATURE, INACTIVE, GREY ,uShifterId_P) endif
      if bObj == 1b02 then pdisplay(uShifterId, $Zustand 2$, NIGHT, INACTIVE, GREY ,uShifterId_P) endif
      if bObj == 2b02 then pdisplay(uShifterId, $Zustand 3$, ICE, INACTIVE, GREY ,uShifterId_P) endif
      if bObj == 3b02 then pdisplay(uShifterId, $Zustand 4$, WEATHER, INACTIVE, GREY ,uShifterId_P) endif
      :end
      (Zur Bedeutung der Argumente platziere mal den Cursor auf "pdisplay" und drücke F1)

      In einem neuen Experten-Programm brauchst du dann für jedes darzustellende Sperrobjekt nur noch den Makro-Aufruf:
      vmB02Visu(meineID, meineID_P, "b02-0/0/33")


      Dies verknüpft das Visu-Element mit dem Programm über die Variablen meineID, meineID_P. Dies sind normale Variablen, die einen Verweis auf das Visu-Element und dessen Seite speichern, und werden angelegt, wenn du ein Element als "Mit Experten verknüpfen" konfigurierst und "meineID" als "Eindeutiger Variablenname" angibst.

      Kommentar


        #4
        Super, danke für die Infos, die Darstellung klappt jetzt schon mal.
        Allerdings möchte ich den Zustand ja auch ändern können. Dazu habe ich einen Multibutton genommen, der auch die Zustände korrekt anzeigt.
        Nur das Umschalten haut noch nicht hin. Mpbutton erwartet ja ein u08 als Auswahl und keine b02 (was vom Wert ja gleich sein sollte).


        :begin ZwangB02Visu2(uShifterId, uShifterId_P, bObj)
        :info $Zeigt den Zustand einer Zwangsstellung in der Visu$ \\
        $uShifterId Experten-Variable (u08)$ \\
        $uShifterId_P Experten-Variable der Seite$ (u08) \\
        $bObj das Anzuzeigende Objekt (b02)$ $
        :shortinfo $Zeigt den Zustand einer Zwangsstellung in der Visu$

        if bObj == 0b02 then {
        pdisplay(uShifterId, $deaktivert 1$, SWITCH, INACTIVE, GREEN ,uShifterId_P);
        mpbutton(uShifterId, 0u08, uShifterId_P);
        } endif
        if bObj == 1b02 then {
        pdisplay(uShifterId, $deaktivert 2$, NIGHT, INACTIVE, GREY ,uShifterId_P);
        mpbutton(uShifterId, 1u08, uShifterId_P);
        } endif
        if bObj == 2b02 then {
        pdisplay(uShifterId, $Zwang AUS 3$, WEATHER, ACTIVE, BLINKBLUE ,uShifterId_P);
        mpbutton(uShifterId, 2u08, uShifterId_P);
        } endif
        if bObj == 3b02 then {
        pdisplay(uShifterId, $Zwang EIN 4$, ICE, DARKRED, BLINKRED ,uShifterId_P);
        mpbutton(uShifterId, 3u08, uShifterId_P);
        } endif
        :end
        Oder benötige ich für das Schalten ein eigenes Makro?

        Kommentar


          #5
          Wenn du die Anzeige auf dem Multibutton ändern willst, verwende auch die Funktion pdisplay und übergebe als letztes Argument die Nummer der Option:
          Code:
          if bObj == 0b02 then {
          pdisplay(uShifterId, $deaktivert 1$, SWITCH, INACTIVE, GREEN ,uShifterId_P, 1);
          } endif
          Schau am Besten auch mal das Beispiel auf S. 64 im Handbuch an.

          Die Funktion mpbutton dient nur der Auswertung, ob die entsprechende Auswahl (1...254) im zweiten Argument in der Visu ausgewählt wurde (Rückgabewert 255) oder ob eine Taste (1 bei Button, 1-4 bei Shifter als Rückgabewert) gedrückt wurde.

          Kommentar


            #6
            Im Handbuch S. 64 kommt als 7. Argument 1, 2 und 3, auf S. 152 ist das als [Mbutton] beschrieben, um die angezeigt Auswahl des Dropdown Menüs zu ändern.

            Leider haut das bei mir aber nicht hin, der Multi Button ändert zwar die Darstellung der Icons, aber mehr auch nicht, Wenn ich hier was auswähle dann passiert nichts.
            Es äbdert sich weder das Icon, der Auswahltext noch wird was auf den Bus geschrieben. Ich bin grade etwas ratlos....

            Kommentar


              #7
              Zeig' doch nochmal den Code.
              Die Auswertung eines Multibuttons erfordert ein paar Zeilen. Grundsätzlich hast du zwei Ereignisse:

              Auswahl auf einen bestimmten Eintrag geändert:
              if mpbutton(, 1...254, ) == 255 then ...

              Icon 1...4 mit einer bestimmten Auswahl gedrückt:
              if mpbutton(, 1...254, ) == 1...4 then


              Und eben die pdisplay-Funktion, um die Anzeige zu ändern, bei der du die anzuzeigende Option als letztes Argument mit übergibst (s.o.)

              Schau doch mal in die Makrobibliothek EnertexWebV3: MultiButton2. Das zeigt die Schritte.
              Zuletzt geändert von foobar0815; 04.11.2020, 11:46.

              Kommentar


                #8
                Hallo,

                also nach einigem lesen und Probieren habe ich es soweit zum laufen gebracht (oder lag es an dem FW Update auf die 4.107, welches ich heute eingespielt hatte ?)

                Sieht jetzt so aus:

                :begin ZwangB02Schalten_Visu(uShifterId, uShifterId_P, bObj)
                :info $Schaltet den ausgwählten Zustand je nach Auswahl und aktualisiert auch entspr. das Icon$ \\
                $uShifterId Experten-Variable (u08)$ \\
                $uShifterId_P Experten-Variable der Seite$ (u08) \\
                $bObj das Anzuzeigende Objekt (b02)$ $
                :shortinfo $Schaltet den ausgwählten Zustand je nach Auswahl und aktualisiert auch entspr. das Icon$

                if mpbutton(uShifterId, 1, uShifterId_P)==255 then {
                pdisplay(uShifterId, $deaktivert 1$, SWITCH, INACTIVE, GREEN, uShifterId_P, 1);
                write(bObj,0b02);
                } endif
                if mpbutton(uShifterId, 2, uShifterId_P)==255 then {
                pdisplay(uShifterId, $deaktivert 2$, NIGHT, INACTIVE, GREY, uShifterId_P, 2);
                write(bObj,1b02);
                } endif
                if mpbutton(uShifterId, 3, uShifterId_P)==255 then {
                pdisplay(uShifterId, $Zwang AUS 3$, WEATHER, ACTIVE, BLINKBLUE, uShifterId_P, 3);
                write(bObj,2b02);
                } endif
                if mpbutton(uShifterId, 4, uShifterId_P)==255 then {
                pdisplay(uShifterId, $Zwang EIN 4$, ICE, DARKRED, BLINKRED, uShifterId_P, 4);
                write(bObj,3b02);
                } endif

                :end
                Manchmal muß man eben verschiedene Beispiele lesen und verstehen :-)
                Danke!

                Kommentar


                  #9
                  Zitat von blaumann Beitrag anzeigen
                  oder lag es an dem FW Update auf die 4.107, welches ich heute eingespielt hatte ?
                  Nein, da gab es keine Änderung.

                  Eine Anmerkung hab ich dazu noch:
                  Du schaltest aktuell beim Wechseln der aktuellen Option. Da du in dem Multibutton keine Option für "Nichts tun" hast, der Browser beim Start aber automatisch das erste Element des MButtons aktiviert (ohne Änderung in der Firmware), generiert dies kein Änderungs-Ereignis und damit kein Signal an die Firmware, dass die Option gesetzt wurde.

                  Praktischer ist entweder das Telegramm über das Icon auszulösen oder einen leeren ersten Eintrag hinzuzufügen.

                  Kommentar


                    #10
                    Danke für den Hinweis, das macht Sinn.
                    Habe ich eben geändert in einen Leer Eintrag, funktioniert.

                    Kommentar

                    Lädt...
                    X