Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

    Warum das Rad neu erfinden?

    https://github.com/thorsten-gehrig/a...GroupWrite.ino
    Viele Grüße,
    Stefan

    DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

    Kommentar


      Die Leistung des Busankopplers könnte zudem auch knapp sein, um den Uno zu versorgen. Leuchten denn am Uno die LEDs, wenn er über den Busankoppler versorgt wird? Falls nein: die 5V des Busankopplers nicht verwenden und den Arduino extern versorgen (aber nur zum Testen aufm Testbrett, später muss da eine galvanische Trennung hin).
      Viele Grüße,
      Stefan

      DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

      Kommentar


        Moin, hier ist es still geworden, geht es hier weiter oder woanderst?
        Erst mal Danke an alle die das ermöglicht haben, geile Projekte...
        Ich bin seit ein paar Wochen neu im Arduino Umfeld und will ne Wetterstation aufbauen...
        Melde mich wenn es Fortschritte gibt...

        Kommentar


          Schau mal bei Openknx

          Kommentar


            So, erste Erfolge zeichen sich ab, mein "Wetterstation-Prototyp" läuft und sendet Daten auf den Bus...
            Echt schade dass ich das Thema so lange nicht bemerkt habe ...

            Eine Frage habe ich doch, es scheint Rundungsfehler zu geben wenn ich Float Werte sende ... wo ist mein Fehler?

            Die Variable im Arduino ist definiert als

            Code:
            float adjustedpressData;
            auf dem Webserver ergibt
            client.print(F("Luftdruck "));
            client.print(adjustedpressData);
            client.print(" Pa");
            client.println("<br />");​
            die Ausgabe

            Luftdruck 997.08 Pa

            ich sende so:

            Code:
            knx.groupWrite2ByteFloat("0/0/22", adjustedpressData); // Luftdruck
            in der ETS kommt

            997,12 Pa

            an... nicht tragisch aber verwunderlich...

            Uwe

            Kommentar


              Es könnte sein (lange kein Arduino mehr gemacht), dass der "float" in Wirklichkeit ein "double" ist. Ob das Auswirkungen auf die Verarbeitung im "knx" Objekt hat, weiß ich natürlich nicht. Aber danach würde ich zuerst schauen.

              Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.

              Kommentar


                Ich hab mich etwas in die Datentypen eingelesen und gehe nun davon aus, dass das die normalen Rundungsfehler bei IEEE 754 sind... also damit leben oder mit Integer arbeiten und im HS umrechenn...

                Kommentar



                  Ein Rundungsfehler von 0.08 ist unrealistisch. Das wäre eine Katastrophe.

                  997.08 ergibt in IEEE 754 den Wert 997.08001708984375

                  Zuletzt geändert von emax; 19.11.2022, 14:35.
                  Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.

                  Kommentar


                    Bist du da sicher? Ich gehe davon aus dass das binär codiert wird, nicht dezimal... und dann bin ich schon ziemlich weit hinter dem Komma...

                    Kommentar


                      Die Genauigkeit auf dem Bus kann man einfach mit der ETS selber prüfen:
                      Sende einfach mit dem Gruppenmonitor einen Wert in DPT 9.x und schaue, welcher Wert wirklich gesendet wurde.
                      997.08 auf 997.12 halte ich für realistisch. Es ist ja ein 2 Byte float, nicht 4 Byte.

                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        Hi Waldemar, das war zu einfsach... guter Trick...
                        Angehängte Dateien

                        Kommentar


                          Zitat von boardman Beitrag anzeigen
                          Bist du da sicher?
                          Ich bin nicht sicher, ich weiß es. ;-)
                          Kannst Du ja mal nachrechnen - oder auch hier nachrechnen lassen.


                          Zitat von mumpf Beitrag anzeigen
                          Die Genauigkeit auf dem Bus [...] ist ja ein 2 Byte float, nicht 4 Byte.
                          Das ist dann kein IEEE 754, wie boardman angegeben hatte. Diese Definition bezieht sich auf 32 Bit und 64 Bit Werte.

                          Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.

                          Kommentar


                            Klugscheissen kann ich auch (-:
                            https://en.wikipedia.org/wiki/Half-p...g-point_format

                            man kann also durchaus auch 16 Bit mit IEEE 754 codieren...
                            https://en.wikipedia.org/wiki/IEEE_754-2008_revision

                            okay, geht erst seit 2008 und nenn
                            t sich IEEE 754r, aber dass wir von der ETS/EIB reden war ja klar und was die dort treiben kannte ich auch nicht...

                            Kommentar


                              > Klugscheissen kann ich auch
                              Vielen Dank. Das wird auch durch das Alibi-Smiley nicht besser.

                              Oder meinst Du vielleicht das hier?
                              > Ich hab mich etwas in die Datentypen eingelesen und gehe nun davon aus, dass das die normalen Rundungsfehler bei IEEE 754 sind

                              Und
                              > dass wir von der ETS/EIB reden war ja klar
                              Ach so. Ich dachte, Du redest vom Arduino und von IEEE 754. Wo Du Dich ja eingelesen hast.

                              Mal kurz und knapp: Du hast gefragt und ich habe eine präzise Antwort zu Deiner (falschen) Vermutung, woher die Rundunsfehler kommen, gegeben.

                              Passiert mir nicht noch mal.

                              Viel Spaß noch.
                              Zuletzt geändert von emax; 20.11.2022, 01:19.
                              Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.

                              Kommentar


                                Hey emax , sorry! Das war wirklich nicht ernst gemeint und daher mein gescheiterter Versuch das als Ironie zu kennzeichenn, bitte nicht böse nehmen... ich entschuldige mich und nehem es zurück...

                                Also ich fasse zusammen:
                                Arduino schickt ein float mittels KNXTPUART auf den Bus, damit sind wir in der ETS Welt... dort kommt HEX an und wird mit Rundungsfehlern interpretiert...
                                Zitat von boardman Beitrag anzeigen
                                Code:

                                knx.groupWrite2ByteFloat("0/0/22", adjustedpressData); // Luftdruck
                                in der ETS kommt

                                997,12 Pa
                                Ich hab nun endlich die ETS Doku gefunden... Hier die Definition:
                                http://www.knx.org/fileadmin/downloa....5.00%20AS.zip
                                Unbenannt.png
                                und damit hast du auch Recht dass es kein IEEE 754 half precision ist... da geht auch hier im Forum einiges durcheinander...

                                Uwe

                                Kommentar

                                Lädt...
                                X