Ankündigung

Einklappen
Keine Ankündigung bisher.

Zählerwerte verarbeiten

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

    #16
    Oh oh, da hab ich ja was losgetreten...

    bei mir harpert es glaube ich an den Grundlagen...

    Der Binäreingang sendet mir eine alle 5 Impulse seinen Zählwert als Ganzzahl, 4 Byte...

    Wie kann ich mit diesen Wert umgehen, bzw. zumindest anzeigen lassen?

    Ich hab mal versucht die GA des Zählwertes in eine Variable zu schreiben, und diese dann als Weboutput ausgeben... leider mit Try und Error und/oder in kombination "Brett vorm Kopf" gescheitert...

    Baustelle 2 wird dann der Webinput sein, um den aktuellen Zählerstand zu berücksichtigen...
    Wenn etwas schief gehen kann... Wird es schief gehen :-)

    Kommentar


      #17
      ich hab das mit dem Macro gelöst:

      [highlight=epc]
      // Strommessung Variable
      // @date 05.07.2012
      // @version 1
      // @ Brick
      :begin StrommessungVar(Name,mAVar,StartSpeicherID)
      :info $für dieses Macro können 8 Buttons(Shifter) eingesetzt werden, die die Werte (z.b akt. Tagesverbrauch) ausgeben. Die Variablennamen (z.b Name^akttagverbrauch) können aus dem Macro übernommen werden. $ \\
      $Eindeutiger Name des Macros$\\
      $Variable die einen mA Wert liefert$\\
      $Sart ID für den Flashspeicher (8 Stück aufsteigend)$
      :shortinfo $Strommessung mit Variable$

      Name^Akt=mAVar*1000f32
      Name^Summe=0f32
      Name^Alt=0f32
      Name^TagM1=0f32
      Name^TagM2=0f32
      Name^WocheM1=0f32
      Name^WocheM2=0f32
      Name^MonatM1=0f32
      Name^MonatM2=0f32
      Name^JahrM1=0f32
      Name^JahrM2=0f32
      Name^akttagverbrauch=0f32
      Name^vortagverbrauch=0f32
      Name^aktwocheverbrauch=0f32
      Name^vorwocheverbrauch=0f32
      Name^aktmonatverbrauch=0f32
      Name^vormonatverbrauch=0f32
      Name^aktjahrverbrauch=0f32
      Name^vorjahrverbrauch=0f32
      Name^StartID0=0u16 + convert(StartSpeicherID,0u16)
      Name^StartID1=1u16 + convert(StartSpeicherID,0u16)
      Name^StartID2=2u16 + convert(StartSpeicherID,0u16)
      Name^StartID3=3u16 + convert(StartSpeicherID,0u16)
      Name^StartID4=4u16 + convert(StartSpeicherID,0u16)
      Name^StartID5=5u16 + convert(StartSpeicherID,0u16)
      Name^StartID6=6u16 + convert(StartSpeicherID,0u16)
      Name^StartID7=7u16 + convert(StartSpeicherID,0u16)
      Name^StartID8=8u16 + convert(StartSpeicherID,0u16)
      Name^save=0b01





      //Speicherung der Werte
      if after(systemstart(),3000u64) then readflash(Name^Alt,Name^StartID0);readflash(Name^T agM1,Name^StartID1);readflash(Name^TagM2,Name^Star tID2);readflash(Name^WocheM1,Name^StartID3);readfl ash(Name^WocheM2,Name^StartID4);readflash(Name^Mon atM1,Name^StartID5);readflash(Name^MonatM2,Name^St artID6);readflash(Name^JahrM1,Name^StartID7);readf lash(Name^JahrM2,Name^StartID8) endif
      if mtime (00,00) then writeflash(Name^Summe,Name^StartID0) endif
      if change (Name^Akt) then Name^Summe=Name^Alt+Name^Akt endif

      //Tagesverbrauch + Gestern
      if htime(23,59,00) then {
      Name^TagM2=Name^TagM1;
      Name^TagM1=Name^Summe;
      writeflash(Name^TagM2,Name^StartID2);
      writeflash(Name^TagM1,Name^StartID1)
      } endif
      //Wochenverbrauch
      if wtime(00,00,30,MONTAG) then {
      Name^WocheM2=Name^WocheM1;
      Name^WocheM1=Name^Summe;
      writeflash(Name^WocheM2,Name^StartID4);
      writeflash(Name^WocheM1,Name^StartID3)
      } endif
      //Monatsverbrauch
      if (day(1) and !day(2)) and htime(00,00,01) then {
      Name^MonatM2=Name^MonatM1;
      Name^MonatM1=Name^Summe;
      writeflash(Name^MonatM2,Name^StartID6);
      writeflash(Name^MonatM1,Name^StartID5)
      } endif
      //Jahresverbrauch
      if month(01,01) and !month(02,01) and htime(00,00,01) then {
      Name^JahrM2=Name^JahrM1;
      Name^JahrM1=Name^Summe;
      writeflash(Name^JahrM2,Name^StartID8);
      writeflash(Name^JahrM1,Name^StartID7)
      } endif

      if Name^save==1b01 then {
      writeflash(Name^Summe,Name^StartID0);
      writeflash(Name^TagM2,Name^StartID2);
      writeflash(Name^TagM1,Name^StartID1);
      writeflash(Name^WocheM2,Name^StartID4);
      writeflash(Name^WocheM1,Name^StartID3);
      writeflash(Name^MonatM2,Name^StartID6);
      writeflash(Name^MonatM1,Name^StartID5);
      writeflash(Name^JahrM2,Name^StartID8);
      writeflash(Name^JahrM1,Name^StartID7);
      Name^save==0b01
      } endif

      //Verbrauchsanzeige & Stromkosten
      if change(Name^Summe) then {
      Name^akttagverbrauch=Name^Summe - Name^TagM1;
      Name^vortagverbrauch=Name^TagM1-Name^TagM2;
      Name^aktwocheverbrauch=Name^Summe - Name^WocheM1;
      Name^vorwocheverbrauch=Name^WocheM1-Name^WocheM2;
      Name^aktmonatverbrauch=Name^Summe - Name^MonatM1;
      Name^vormonatverbrauch=Name^MonatM1-Name^MonatM2;
      Name^aktjahrverbrauch=Name^Summe - Name^JahrM1;
      Name^vorjahrverbrauch=Name^JahrM1-Name^JahrM2;
      }endif

      :end

      // Strommessung GA
      // @date 05.07.2012
      // @version 1
      // @ Brick
      :begin StrommessungGA(Name,mAGA,StartSpeicherID)
      :info $für dieses Macro können 8 Buttons(Shifter) verwendet werden, die die Werte (z.b akt. Tagesverbrauch) ausgeben. Der Eingangswert kommt aus einer GA. Die Variablennamen können aus dem Macro übernommen werden. $ \\
      $Eindeutiger Name des Macros$\\
      $Variable die einen mA Wert liefert$\\
      $Sart ID für den Flashspeicher (9 Stück aufsteigend)$
      :shortinfo $Strommessung mit GA$

      Name^Akt=mAGA*1000f32
      Name^Summe=0f32
      Name^Alt=0f32
      Name^TagM1=0f32
      Name^TagM2=0f32
      Name^WocheM1=0f32
      Name^WocheM2=0f32
      Name^MonatM1=0f32
      Name^MonatM2=0f32
      Name^JahrM1=0f32
      Name^JahrM2=0f32
      Name^akttagverbrauch=0f32
      Name^vortagverbrauch=0f32
      Name^aktwocheverbrauch=0f32
      Name^vorwocheverbrauch=0f32
      Name^aktmonatverbrauch=0f32
      Name^vormonatverbrauch=0f32
      Name^aktjahrverbrauch=0f32
      Name^vorjahrverbrauch=0f32
      Name^StartID0=0u16 + convert(StartSpeicherID,0u16)
      Name^StartID1=1u16 + convert(StartSpeicherID,0u16)
      Name^StartID2=2u16 + convert(StartSpeicherID,0u16)
      Name^StartID3=3u16 + convert(StartSpeicherID,0u16)
      Name^StartID4=4u16 + convert(StartSpeicherID,0u16)
      Name^StartID5=5u16 + convert(StartSpeicherID,0u16)
      Name^StartID6=6u16 + convert(StartSpeicherID,0u16)
      Name^StartID7=7u16 + convert(StartSpeicherID,0u16)
      Name^StartID8=8u16 + convert(StartSpeicherID,0u16)


      //Speicherung der Werte
      if after(systemstart(),2000u64) then readflash(Name^Alt,Name^StartID0);readflash(Name^T agM1,Name^StartID1);readflash(Name^TagM2,Name^Star tID2);readflash(Name^WocheM1,Name^StartID3);readfl ash(Name^WocheM2,Name^StartID4);readflash(Name^Mon atM1,Name^StartID5);readflash(Name^MonatM2,Name^St artID6);readflash(Name^JahrM1,Name^StartID7);readf lash(Name^JahrM2,Name^StartID8) endif
      if mtime (00,00) then writeflash(Name^Summe,Name^StartID0) endif
      if change (Name^Akt) then Name^Summe=Name^Alt+Name^Akt endif

      //Tagesverbrauch + Gestern
      if htime(23,59,00) then {
      Name^TagM2=Name^TagM1;
      Name^TagM1=Name^Summe;
      writeflash(Name^TagM2,Name^StartID2);
      writeflash(Name^TagM1,Name^StartID1)
      } endif
      //Wochenverbrauch
      if dayofweek()==MONTAG and htime(00,00,10) then {
      Name^WocheM2=Name^WocheM1;
      Name^WocheM1=Name^Summe;
      writeflash(Name^WocheM2,Name^StartID4);
      writeflash(Name^WocheM1,Name^StartID3)
      } endif
      //Monatsverbrauch
      if day(1) and htime(00,00,10) then {
      Name^MonatM2=Name^MonatM1;
      Name^MonatM1=Name^Summe;
      writeflash(Name^MonatM2,Name^StartID6);
      writeflash(Name^MonatM1,Name^StartID5)
      } endif
      //Jahresverbrauch
      if month(1,1) and htime(00,00,10) then {
      Name^JahrM2=Name^JahrM1;
      Name^JahrM1=Name^Summe;
      writeflash(Name^JahrM2,Name^StartID8);
      writeflash(Name^JahrM1,Name^StartID7)
      } endif


      //Verbrauchsanzeige & Stromkosten
      if change(Name^Summe) then {
      Name^akttagverbrauch=Name^Summe - Name^TagM1;
      Name^vortagverbrauch=Name^TagM1-Name^TagM2;
      Name^aktwocheverbrauch=Name^Summe - Name^WocheM1;
      Name^vorwocheverbrauch=Name^WocheM1-Name^WocheM2;
      Name^aktmonatverbrauch=Name^Summe - Name^MonatM1;
      Name^vormonatverbrauch=Name^MonatM1-Name^MonatM2;
      Name^aktjahrverbrauch=Name^Summe - Name^JahrM1;
      Name^vorjahrverbrauch=Name^JahrM1-Name^JahrM2;
      }endif

      :end
      [/highlight]

      @ Markus... zwar schön.. aber für den TO nicht hilfreich ..
      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

      Kommentar


        #18
        Zitat von enertegus Beitrag anzeigen
        was/welche genau meinst Du da?
        Ich glaube es wäre nicht sinnvoll hier öffentlich aus dem Betathread zu zitieren? Und wenn doch lasse ich Brick gerne diesbezüglich den Vortritt, der kann ja live aus der ersten Reihe berichten ...

        Kommentar


          #19
          zieht mich da nicht mit rein
          Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

          Kommentar


            #20
            Hallo Martin,

            ich habe mal dein Macro auf meine Bedürfnisse, bzw. die meines Gaszählers und Binäreingangs angepasst... doch die Zählwerte machen mich wahnsinnig...

            Der aktuelle Wert wird als Impuls alle 5 gezählte Impulse durch den Binäreingang auf den bus gesendet... Nachts wird der Zähler des Binäreingangs zurück gesetzt, um einen Überlauf zu vermeiden.

            Doch die ermittelten Werte machen keinen Sinn...

            Kannst du da evtl mal dübergucken?

            Hier der Code:
            Code:
            //Gaszähler auswerten
            
            Gas_varkosten=0.9524f32*11.1f32*0.068f32
            //Brennwert=0.9524f32*11.1f32
            Gas_Impulse=0u32
            Gas_m3_Summe=0f32
            Gas_m3_alt=0f32
            Gas_TagM1=0f32
            Gas_TagM2=0f32
            Gas_WocheM1=0f32
            Gas_WocheM2=0f32
            Gas_MonatM1=0f32
            Gas_MonatM2=0f32
            Gas_JahrM1=0f32
            Gas_JahrM2=0f32
            Gas_akttagverbrauch=0f32
            Gas_vortagverbrauch=0f32
            Gas_aktwocheverbrauch=0f32
            Gas_vorwocheverbrauch=0f32
            Gas_aktmonatverbrauch=0f32
            Gas_vormonatverbrauch=0f32
            Gas_aktjahrverbrauch=0f32
            Gas_vorjahrverbrauch=0f32
            if event("Zählimpulse-5/0/0") then Gas_Impulse="Zählimpulse-5/0/0" endif
            Gas_m3=convert(Gas_Impulse,0f32)/100.0f32
            //Speicherung der Werte
            if after(systemstart(),2000u64) then readflash(Gas_m3_alt,0u16);\\
                readflash(Gas_TagM1,1u16);\\
                readflash(Gas_TagM2,2u16);\\
                readflash(Gas_WocheM1,3u16);\\
                readflash(Gas_WocheM2,4u16);\\
                readflash(Gas_MonatM1,5u16);\\
                readflash(Gas_MonatM2,6u16);\\
                readflash(Gas_JahrM1,7u16);\\
                readflash(Gas_JahrM2,8u16) endif
            if mtime (00,00) then writeflash(Gas_m3_Summe,0u16) endif
            if change (Gas_m3) then Gas_m3_Summe=Gas_m3_alt+Gas_m3 endif
            //Tagesverbrauch + Gestern
            if htime(23,59,00) then {
                Gas_TagM2=Gas_TagM1;
                    Gas_TagM1=Gas_m3_Summe;
                    writeflash(Gas_TagM2,2u16);
                    writeflash(Gas_TagM1,1u16);
                write("Zähler rücksetzen-5/0/1",EIN) 
            } endif
            //Wochenverbrauch
            if dayofweek()==MONTAG and htime(00,00,10) then {
                    Gas_WocheM2=Gas_WocheM1;
                    Gas_WocheM1=Gas_m3_Summe;
                    writeflash(Gas_WocheM2,4u16);
                    writeflash(Gas_WocheM1,3u16)
            } endif
            //Monatsverbrauch
            if day(1) and htime(00,00,10) then {
                    Gas_MonatM2=Gas_MonatM1; 
                    Gas_MonatM1=Gas_m3_Summe;
                    writeflash(Gas_MonatM2,6u16);
                    writeflash(Gas_MonatM1,5u16)
            } endif
            //Jahresverbrauch
            if month(1,1) and htime(00,00,10) then {
                    Gas_JahrM2=Gas_JahrM1;
                    Gas_JahrM1=Gas_m3_Summe;
                    writeflash(Gas_JahrM2,8u16);
                    writeflash(Gas_JahrM1,7u16)
            } endif
            // Berechnungen
            if change(Gas_m3_Summe) then {
                    Gas_akttagverbrauch=Gas_m3_Summe;
                    Gas_vortagverbrauch=(Gas_TagM1-Gas_TagM2);
                    Gas_aktwocheverbrauch=(Gas_m3_Summe - Gas_WocheM1);
                    Gas_vorwocheverbrauch=(Gas_WocheM1-Gas_WocheM2);
                    Gas_aktmonatverbrauch=(Gas_m3_Summe - Gas_MonatM1);
                    Gas_vormonatverbrauch=(Gas_MonatM1-Gas_MonatM2);
                    Gas_aktjahrverbrauch=(Gas_m3_Summe - Gas_JahrM1);
                    Gas_vorjahrverbrauch=(Gas_JahrM1-Gas_JahrM2);
                }endif
            //Weboutput befüllen:
                 
            Gas_Out=$<html><head><title>Gasverbrauch</title></head><body>\\
                    <table align="left" border="0" cellpadding="1" cellspacing="1" style="width: 250px;"><tbody>\\
                    <tr><td style="font-weight:bold">Gasverbrauch</td><td>&nbsp;</td></tr>\\
                <tr><td style="color:black">heute:</td><td>$+convert(convert(Gas_akttagverbrauch,0f16),$$)+$ m³ / $  +convert(convert(Gas_akttagverbrauch*Gas_varkosten,0f16),$$)  + $ €$+$</td></tr>\\
                    <tr><td style="color:black">laufende Woche:</td><td>$+convert(convert(Gas_aktwocheverbrauch,0f16),$$)+$ m³ / $+convert(convert(Gas_aktwocheverbrauch*Gas_varkosten,0f16),$$)+ $ €$+$</td></tr>\\
                    <tr><td style="color:black">laufender Monat:</td><td>$+convert(convert(Gas_aktmonatverbrauch,0f16),$$)+$ m³ / $+convert(convert(Gas_aktmonatverbrauch*Gas_varkosten,0f16),$$)  + $ €$+$</td></tr>\\
                    <tr><td style="color:black">laufendes Jahr:</td><td>$+convert(convert(Gas_aktjahrverbrauch,0f16),$$)+$ m³ / $ +convert(convert(Gas_aktjahrverbrauch*Gas_varkosten,0f16),$$)   + $ €$+$</td></tr>\\
                    </tbody></table></body></html>$c65534
                 
            Gas_Out1=$<html><head><title>Gasverbrauch</title></head><body>\\
                    <table align="left" border="0" cellpadding="1" cellspacing="1" style="width: 250px;"><tbody>\\
                    <tr><td>&nbsp;</td><td>&nbsp;</td></tr>\\
                    <tr><td style="color:black">gestern:</td><td>$+convert(convert(Gas_vortagverbrauch,0f16),$$)+$ m³ / $  +convert(convert(Gas_vortagverbrauch*Gas_varkosten,0f16),$$)  + $ €$+$</td></tr>\\
                    <tr><td style="color:black">letzte Woche:</td><td>$+convert(convert(Gas_vorwocheverbrauch,0f16),$$)+$ m³ / $+convert(convert(Gas_vorwocheverbrauch*Gas_varkosten,0f16),$$)+ $ €$+$</td></tr>\\
                    <tr><td style="color:black">letzter Monat:</td><td>$+convert(convert(Gas_vormonatverbrauch,0f16),$$)+$ m³ / $+convert(convert(Gas_vormonatverbrauch*Gas_varkosten,0f16),$$)+ $ €$+$</td></tr>\\
                    <tr><td style="color:black">letztes Jahr:</td><td>$+convert(convert(Gas_vorjahrverbrauch,0f16),$$)+$ m³ / $ +convert(convert(Gas_vorjahrverbrauch*Gas_varkosten,0f16),$$) + $ €$+$</td></tr>\\
                    </tbody></table></body></html>$c2000
                 
                 
                if change(Gas_akttagverbrauch) then {
                        weboutput(37,Gas_Out);
                        weboutput(36,Gas_Out1);
                } endif
            Angehängte Dateien
            Wenn etwas schief gehen kann... Wird es schief gehen :-)

            Kommentar


              #21
              ohne mir das jetzt im Detail angesehen zu haben... ich hab bei mir den
              Zähler NICHT zurück gesetzt.. das könnte bei dir ein Problem sein..
              wegen dem Überlauf ? was hast du den für einen Zähler ?
              und wieviele Impulse hast du pro Std/min/sec ?? gibt das wirklich einen
              Überlauf.. bzw. wenn ja.. wann ?
              Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

              Kommentar


                #22
                Hallo Martin,

                ich habe den Binäreingang als Zähler definiert, der mir alle 5 Impulse den aktuellen Zählwert sendet.

                Der MDT Binäreingang wird auch bei Stromausfall auf "0" gesetzt... ansonsten könnte er glaube ich bis 65.535 zählen, um danach wieder auf 0 zu springen.

                Im Programm rechne ich dann die gezählten Impulse mit dem Divisor 100 in m³ um, da 0,1m³ einem Impuls entspricht.

                Irgends ist da ein Bug, oder das Brett vorm Kopf ^^
                Wenn etwas schief gehen kann... Wird es schief gehen :-)

                Kommentar


                  #23
                  Hallo zusammen,

                  ich habe mich bei dem Gaszähler jetzt auf das fortschreiben des Zählerstandes festgesetzt.

                  Das sollte ja in der Theorie recht einfach gehen, jedoch scheitert es an der praktischen Umsetzung.

                  Mein Code

                  Code:
                  //Gaszähler auswerten
                  
                  Gas_Zaehlerstand=2478.43f32
                  if eventwrite("Zählimpulse-5/0/0") then Gas_Zaehlerstand+0.01f32;
                  weboutput(36,$<html><body bgcolor="#fff">Zählerstand<ul style="list-style-type:disc"><li>Gas:$+convert(convert(Gas_Zaehlerstand,0f16),$$)+$ m³</li></body></html>$ ) endif
                  zählt brav den Zählerstand weiter, jedoch hört er nach einiger Zeit auf und gibt dann nur noch einen veralteten Wert aus.

                  Hat jemand eine Idee?

                  LG

                  Ralf

                  PS: Den Binäreingang kann ich als Fehlerquelle ausschliessen, die EIB Telegramme treffen auf dem Bus ein uns sollten somit vom EibPC auch verarbeitet werden.
                  Wenn etwas schief gehen kann... Wird es schief gehen :-)

                  Kommentar


                    #24
                    Hallo Ralf,
                    bist du in der Thematik weiter gekommen und hast das Problem gelöst?
                    Ich habe seit gestern Abend nun auch den Gaszähler dran, bislang mich aber noch gar nicht an die Programmierung gesetzt.
                    Wäre gut da mal eine Info von dir zu bekommen.
                    LG Chris

                    Kommentar


                      #25
                      Zitat von R52 Beitrag anzeigen
                      Hallo zusammen,
                      ich habe mich bei dem Gaszähler jetzt auf das fortschreiben des Zählerstandes festgesetzt.
                      Was mir eben erst aufgefallen ist: Die Addition von Fliesskomma (auch 32 Bit) ist mathematisch nicht fehlerfrei. Insbesondere
                      Zahl=Zahl+.01f32
                      kann bei einer gewissen Größe der Zahl die Mantisse zu groß werden. Die kleine Zahl .01 wird dann einfach weggerundet. Daher wäre es besser, mit u32 oder u64 zu zählen, weil da das Problem nicht auftreten kann.
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #26
                        Das Probelm was sich mir gerade stellt kann eventuell auch daher kommen -
                        Mein Aktueller Gaszählerstand ist z.B. 3937.41f32.
                        Nun muss ich für die Webausgabe das ganze leserlich machen mit "convert(convert(GasAktuellerStand,0f16),$$)+$ m³$"
                        Dabei ist der Wert der aber im Browser angezeigt wird ein anderer (3942,4) und ändert sich auch nicht mehr!
                        Wo habe ich da gerade einen denkfehler?

                        Code:
                        Gas_Zaehlerstand=3938.68f32
                        GasAktuellerStand=0f32
                        GasCounter=0u32
                        GasHeute=0f32
                        GasGestern=0f32
                        
                        if event("GaszaehlerWert-7/1/0") then GasCounter="GaszaehlerWert-7/1/0";\\
                            GasAktuellerStand=Gas_Zaehlerstand+convert(GasCounter,0f32)*0.01f32 endif
                        
                        if change(GasCounter) then GasHeute=GasHeute+0.01f32 endif
                        
                        if (htime(23,58,00)) then GasGestern=GasHeute;\\
                            GasHeute=0f32 endif
                        
                        if change(GasHeute) then pdisplay(ID_Gas_Heute,convert(convert(GasHeute,0f16),$$)+$ m³$,METER,03,GREY,PID_HausTechnik)endif
                        if change(GasAktuellerStand) then pdisplay(ID_Gas_Stand,convert(convert(GasAktuellerStand,0f16),$$)+$ m³$,METER,03,GREY,PID_HausTechnik) endif
                        if change(GasGestern) then pdisplay(ID_Gas_Gestern,convert(convert(GasGestern,0f16),$$)+$ m³$,METER,03,GREY,PID_HausTechnik)endif

                        Kommentar


                          #27
                          Zum einen: Die Konvertierung von f32 nach f16 macht alles wesentlich ungenauer:
                          Code:
                          convert(convert(GasHeute,0f16),$$)
                          d.h. Zahlen, die das f16 Format darstellen kann, sind wesentlich ungenaur und auch kleiner als f32.
                          Zudem ist hier auch das Problem, dass die Genauigkeit einer kleinen Zahl zu großen Zahl leidet (Asorption), vgl. https://de.wikipedia.org/wiki/Gleitkommazahl
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #28
                            Aber eine andere Möglichkeit - leserliche Zahlen, auf zwei Stellen hinter dem Komma genau - im WebServer darzustellen gibt es doch nicht, oder?
                            Danke;-)

                            Kommentar


                              #29
                              vermutlich musst du so ein Konstrukt wählen die Werte als u64 abzuspeichern und für den Webserver erst nach f32 wandeln und dann durch 100 dividieren.
                              ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                              Kommentar


                                #30
                                Schau Dir mal im Handbuch "stringformat(...)" an. Ich schätze damit findest Du, was Du suchst - ist aber etwas unglücklich beschrieben, deshalb ist der Start meist mit viel Probieren verbunden. Am Schluss solltest Du Deine f32 aber schön mit zwei Kommastellen haben...

                                Kommentar

                                Lädt...
                                X