Ankündigung

Einklappen
Keine Ankündigung bisher.

Prozentwert im Webdisplay formatieren

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

    [EibStudio] Prozentwert im Webdisplay formatieren

    Ich würde gerne in der WebVisualisierung neben meinen Jalousiebuttons die % Rückmeldung vom Jalousieaktor anzeigen, allerdings würde ich hinter dem EIB Telegramm noch gerne das %-Zeichen anhängen, und wenn möglich noch eine Timestamp. Wie kann ich sowas machen, meine bisherigen versuche schlugen bisher immer fehl.

    so funktioniert es zumindest mit der Wert-Anzeige:
    if (event("Diele 1.1-0/0/1")) then pdisplay(Rollo1ID,("Diele 1.1-0/0/1"),BLIND,INACTIVE,GREEN,DieleID) endif
    Aber wenn ich versuche das % und die Zeit anzuhängen mit:
    if (event("Diele 1.1-0/0/1")) then pdisplay(Rollo1ID,("Diele 1.1-0/0/1",$%$,settime()),BLIND,INACTIVE,GREEN,DieleID) endif
    dann bekomme ich immer einen Fehler:
    STOP Parser --> (Rollo1ID,("Diele 1.1-0/0/1",$%$,settime()),BLIND,INACTIVE,GREEN,DieleID) endif
    Wie kann ich sowas lösen ?
    mfg Mike

    #2
    vielleicht so:

    pdisplay(Rollo1ID,(convert("Diele 1.1-0/0/1",$$) + $%$,settime()),BLIND,INACTIVE,GREEN,DieleID)

    Kommentar


      #3
      Hallo,

      Vielen Dank für deine schnelle Antwort,
      dachte mir schon daß es mit convert funktioniert, bin noch ziemlicher Anfänger was den EIB-PC anbelangt, ist mein erstes Projekt mit diesem Gerät.

      leider bekomme ich trotzdem eine Fehlermeldung nachdem ich die Zeile einfüge.

      Hab es jetzt so eingefügt,
      Code:
      if (event("Diele 1.1-0/0/1")) then pdisplay(Rollo1ID,(convert("Diele 1.1-0/0/1",$$)+$%$,settime()),BLIND,INACTIVE,GREEN,DieleID) endif
      Fehlermeldung:
      Datei: "./tmpMacroOut.txt" wurde geschriebenSyntaxfehler in Zeile:[343]
      >if pbutton(21,ZentID)==1 then pdisplay(Rollo1ID,(convert("Diele 1.1-0/0/1",$$)+$%$,settime()),BLIND,INACTIVE,GREEN,DieleID ) endif < in der Datei "./tmpApp.txt"
      Gültig bis Spaltenposition: {39}
      STOP Parser --> (Rollo1ID,(convert("Diele 1.1-0/0/1",$$)+$%$,settime()),BLIND,INACTIVE,GREEN,DieleID ) endif

      Kommentar


        #4
        Ich glaube die eine Klammer war zuviel:

        InfoTime=convert(settime(),$$)

        pdisplay(Rollo1ID,convert("Diele 1.1-0/0/1",$$) + $% $ + InfoTime,BLIND,INACTIVE,GREEN,DieleID)

        Sorry, Du musst die Zeit dann auch noch konvertieren.

        Kommentar


          #5
          Zitat von kropfm Beitrag anzeigen
          Ich glaube die eine Klammer war zuviel:

          pdisplay(Rollo1ID,convert("Diele 1.1-0/0/1",$$) + $%$,settime()),BLIND,INACTIVE,GREEN,DieleID)
          • settime muss man auch in einen String konvertieren, sonst kann man nicht verknüpfen
          • Den % Wert muss man skalieren (ist ja u08)

          Also
          Code:
           pdisplay(Rollo1ID,convert(convert("Diele 1.1-0/0/1",0f16)/2.54f16),$$) + $%$+convert(settime(),$$),BLIND,INACTIVE,GREEN,DieleID)
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #6
            @kropfm Stimmt, danke, dann muß ja die eine Klammer nach settime() auch noch weg, oder ?

            Dann überlegt er beim parsen schon mal länger, bekomme danach aber einen Laufzeitfehler wegen falschem Datentyp ???

            Laufzeitfehler:
            ! Falscher Datentyp: >pdisplay(Rollo1ID,convert("Diele 1.1-0/0/1",$$)+$%$,settime(),BLIND,INACTIVE,GREEN,DieleID) < !
            Überprüfen Sie ggf. auch Argumenttypen von Funktionen

            Ist ein 1Byte wert (u08)

            @enertegus
            Danke, na dieser code ist ja richtig kompliziert, da blick ich nicht durch :-) ! Leider will es immer noch nicht funktionieren.

            Fehler:
            >if (event("Diele 1.1-0/0/1")) then pdisplay(Rollo1ID,convert(convert("Diele 1.1-0/0/1",0f16)/2.54f16),$$) + $%$+convert(settime(),$$),BLIND,INACTIVE,GREEN,Die leID) endif < in der Datei "./tmpApp.txt"
            Gültig bis Spaltenposition: {133}
            STOP Parser --> ,BLIND,INACTIVE,GREEN,DieleID) endif

            NACHTRAG:

            Habs gefunden, es hat sich wohl noch eine Klammer zuviel eingeschlichen bei deinem Code.

            so funktioniert zumindest das parsen:
            if (event("Diele 1.1-0/0/1")) then {
            pdisplay(Rollo1ID,convert
            (convert("Diele 1.1-0/0/1",0f16/2.54f16),$$) + $%$ +
            convert(settime(),$$),BLIND,INACTIVE,GREEN,DieleID )} endif

            ---------------------------
            Werds gleich mal testen, besten Dank für eure Hilfe,
            das hätt ich ohne euch nicht hinbekommen.

            Kommentar


              #7
              Super, der Code funktioniert jetzt. Super sache.

              Aber eine kleinigkeit ist mir noch aufgefallen, kann man die 100% Anzeige noch formatieren ? so daß die 2 Nullen nach dem Komma noch ausgeblendet werden ?

              Siehe Bild




              Angehängte Dateien

              Kommentar


                #8
                Ja, das geht. Bin aber leider gerade nicht zu Hause.

                Kommentar


                  #9
                  enertegus,

                  Would be nice to include this extension in the Blind/Rollo macros part of the library.

                  regards, martenss

                  Kommentar


                    #10
                    Zitat von Mike01 Beitrag anzeigen
                    Super, der Code funktioniert jetzt. Super sache.
                    Aber eine kleinigkeit ist mir noch aufgefallen, kann man die 100% Anzeige noch formatieren ? so daß die 2 Nullen nach dem Komma noch ausgeblendet werden ?
                    Du musst den Fließkommawert in u08 umwandeln.
                    [highlight=epc]
                    Prozent=convert(convert("Diele 1.1-0/0/1",0f16)/2.54f16,0)
                    pdisplay(Rollo1ID, + convert(Prozent,$$) + $%$ +
                    convert(settime(),$$),BLIND,INACTIVE,GREEN,DieleID )} endif
                    [/highlight]
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      Zitat von enertegus Beitrag anzeigen
                      [highlight=epc]
                      Prozent=convert(convert("Diele 1.1-0/0/1",0f16)/2.54f16,0)
                      [/highlight]
                      So werden aber keine 100% angezeigt, da das Ergebnis aus dem convert = 100,34645 ist. Dividiere ich hingegen durch 2.5488 komme ich auf 100 und die 100% werden angezeigt. Aber! Alles was im Bereich von 90% - 99% liegt wird damit nicht angezeigt.

                      Micha, kannst Du das mal überprüfen?

                      Uwe

                      Kommentar


                        #12
                        I believe there are rounding issues with the 2byte floating point implementation in the EibPC. More specifically received GAs in this format suffer from this (internal variables/objects in this format are mostly handled ok).

                        See also another posting which I original wrote in the Wiregate forum, but should be moved here: https://knx-user-forum.de/forum/supp...wiregate/13035

                        regards, martenss

                        Kommentar


                          #13
                          Zitat von michel38 Beitrag anzeigen
                          Micha, kannst Du das mal überprüfen?
                          Ja, werde ich.
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #14
                            Hast Du schon etwas herausgefunden?

                            Uwe

                            Kommentar


                              #15
                              Zitat von michel38 Beitrag anzeigen
                              Hast Du schon etwas herausgefunden?
                              Uwe
                              Bei mir ist alles in Ordnung, d.h. auch Werte zwischen 90 und 100% werden angezeigt.

                              Grundsätzlich:
                              F16 sind nicht so genau wie F32. Der Bereich der darstellbaren Zahlen ist eingeschränkt. Um die Sache einfach zu machen, konvertiert die FW jede Zahl intern in einen F32 und rechnet immer intern mit F32. Dies ist genauer und wohl auch besser getestet, als mit dem Fancy-F16 KNX Wert.

                              Außerdem würde ich immer per Multiplikation skalieren, weil das immer Performance spart:

                              [highlight=epc]
                              P=92.5%
                              S_f16=100.0/255.0
                              S_f32=100f32/255f32
                              Prozent_f16=convert(P,0f16)*S_f16
                              Prozent_f32=convert(P,0f32)*S_f32
                              Prozent_Convert_f16=convert(Prozent_f32,0.0)
                              [/highlight]

                              92.5% entspricht also 235 (auch hier ist schon 92.5% gar nicht mehr exakt mit u08 darstellbar). Der EibPC rechnet hier mit meinem Taschenrechner 235/255=0.92156... recht genau das gleiche aus.
                              Angehängte Dateien
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar

                              Lädt...
                              X