Ankündigung

Einklappen
Keine Ankündigung bisher.

Vorstellung eines AP Sensors auf Basis der OpenKNX Firmware

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

    Vorstellung eines AP Sensors auf Basis der OpenKNX Firmware

    Hallo zusammen,

    vor einiger Zeit war Waldemar (mumpf​) und Marco (​traxanos) so nett und hat mir das OpenKNX Framework näher gebracht, damit ich meine ersten Erfahrungen damit sammeln konnte.

    Und nun ist daraus ein AP Sensor der auf einem Seeeduino RP2040 basiert entstanden der in ein Standard Gehäuse (Camdenboss schwarz, weiss oder grau) passt, diesen setze ich im Keller bei mir schon seit einiger Zeit ein und er läuft ganz gut. Für die externen Eingänge muss man das Gehäuse dann leicht bearbeiten dies ist aber schnell erledigt. Auch ist da noch ein kleiner Design Fehler drin da man erst das Gehäuse an der Wand verschrauben muss und dann die Platine darin.

    Funktionell kann der Sensor aktuell nur
    • den intern aufgesteckten SHT31 (es geht nur diese Sensor aktuell) auslesen.
    • den internen Kontakt (ON/OFF) auswerten
    • die 3 externen Kontakte (ON/OFF) auswerten
    KNX_EnvironmentSensor.png image.pngimage.pngimage.png


    IMG_3305.jpg IMG_3303.jpg IMG_3306.jpg



    image.png

    image.png


    image.png

    image.png



    image.png

    Es gibt zwar schon den eigentlich fast perfekten Sensor SEN-UP1-8xTH​, aber ich wollte dies direkt montierter in einer AP Dose, daher habe ich meinen Sensor entwickelt.

    Und da eventuell jemand anderes ähnlichen Bedarf hat und ich dies nicht für mich behalten möchten stelle ich diesen nun hier vor.

    Ich habe noch vor bei den externen Eingängen Zähler (Wasser, Strom, Gas) zu realisieren und eventuell noch weitere Sensoren zu integrieren, dies dauert aber noch etwas da mir aktuell die Zeit etwas dafür fehlt.
    Zusätzlich würde ich die Hardware gerne auf die RP2040 SMD Variante ändern, dann müsste man nur noch die nicht SMD teile auflöten, aber da kämpfe ich noch mit dem Designguide vom RP2040.

    Auch kann es sein das im Code noch der ein oder andere Fehler ist und das Gerät nicht zu 100% funktioniert oder Abstürzt.


    Grüße

    Marco

    #2
    Hey Marco,

    das ist cool und auch voll super, dass Du das hier vorstellst. Falls Du Dir einiges an Firmware-Entwicklung sparen willst, kann ich Dir unser Modulkonzept noch ans Herz legen. Deine Hardware könnte:
    • das Sensormodul nutzen, und damit dann neben dem SHT3x auch noch z.B. den BME280 anbinden (ohne Programmieraufwand).Sonst sind - soweit ich das sehe - die meisten Einstellungen auch verfügbar (Schwellwerte - bei Dir Alarme - und Min/Max allerdings nur über das Logikmodul). Man kann aber alles erweitern...
    • das Binary-Input-Modul nutzen, um die Binäreingägne als KO verfügbar zu machen
    • das Button-Modul nutzen, um die Eingänge für Fensterkontakte oder Taster zu nutzen (ist eine Taster-Applikation)
    • das Zähler-Modul nutzen (noch in Entwicklung), um die Eingänge auch als Zähler zu nutzen (hier wäre noch Entwicklungsaufwand da, gut für Synergieeffekte)
    • das Logikmodul nutzt Du ja schon
    • den VPM könnte man da auch noch gleich laufen lassen
    Für die meisten dieser Sachen musst Du nur die Pinangaben über #define deklarieren, in ein Projekt zusammenschmeißen und dann ist das fertig.
    Nur so als Anregung, Du bist gerne bei Fragen willkommen.

    Gruß, Waldemar

    OpenKNX www.openknx.de

    Kommentar


      #3
      mumpf

      Hallo Waldemar, du meinst die jeweiligen OFM Module und die verwende ich dann einfach in meinem Sensormodule oder?
      Ich schaue mir dies auf jeden Fall nächste Woche an, da es so sinnvoller ist, da man ja nicht alles doppelt machen und dann in die identischen Fehler zu rennen.



      Kommentar


        #4
        Genau, ich meine die OFM, so wie das OFM-LogicModule.

        Aber lass uns nochmal drüber reden, es sind noch nicht alle auf dem gleichen Qualitätsstand wie das Logikmodul bezüglich Einbettbarkeit, da wirst Du potentiell noch Hilfe von uns brauchen. Aber grundsätzlich sehe ich bei Deiner Hardware die Möglichkeit, quasi ohne (bzw. mit minimaler) Programmierung eine komplette Applikation und Firmware zu bekommen, die sehr viel (wenn nicht sogar alles) von dem macht, was Du haben willst.

        Und das freut mich besonders, denn das ist unsere Leitidee bei OpenKNX: Man hat eine Hardware und kann mit wenig Aufwand dazu eine KNX-kompatible Firmware incl. ETS Applikation erstellen.
        Schau Dir das an und melde Dich mit Fragen, gerne mal wieder auch mit einem Call, der alle Klarheiten beseitigt .

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          mumpf

          Hallo Waldemar,
          kann es sein, dass das OFM-SensorModule noch nicht auf den OpenKNX Standard umgebaut ist?

          Weil in den ComObjekten im XML ist die ID nur mit einem %T% (z.B. %AID%_O-%T%000050) angegeben und dies führt dann zu Problemen beim KNXProducer
          Auch die IDs werden angemeckert -->
          Code:
          Parameter SENS_Error has the Id=M-00FA_A-AFFA-02-0000_UP-%T%000100, but this Id has not the OpenKNX-Format _UP-tcccnnn$
          Parameter SENS_Dewpoint has the Id=M-00FA_A-AFFA-02-0000_UP-%T%000101, but this Id has not the OpenKNX-Format _UP-tcccnnn$
          Parameter SENS_Comfort has the Id=M-00FA_A-AFFA-02-0000_UP-%T%000102, but this Id has not the OpenKNX-Format _UP-tcccnnn$
          Parameter SENS_Airquality has the Id=M-00FA_A-AFFA-02-0000_UP-%T%000103, but this Id has not the OpenKNX-Format _UP-tcccnnn$
          Parameter SENS_Accuracy has the Id=M-00FA_A-AFFA-02-0000_UP-%T%000104, but this Id has not the OpenKNX-Format _UP-tcccnnn$​
          Das BinaryInput Modul geht, da sind aber auch die IDs in der XML mit %TT% enthalten.


          Oder mache ich da wieder was falsch



          Grüße

          Marco

          Kommentar


            #6
            Du musst das Sensormodul von v1-Branch nehmen.

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #7
              Hallo Waldemar,

              erstmal Vielen Dank für deine Rückmeldung.
              Ich habe nun auf V1 umgestellt, aber leider bekomme immer noch die identischen Fehler, mache ich da noch was falsch?

              Zusätzlich gibt es hier auch noch eine Sensormodul.parts.xml wie binde ich den diese ein? Ich hatte bis jetzt immer nur *templ.xml oder *share.xml Dateien :-(

              Code:
              <op:define
              ....
              ....
                  share="../lib/***\src/*Module.share.xml"
                  template="../lib/***/src/*Module.templ.xml"​
                  ? ="../lib/***/src/*Module.parts.xml"​
              ...
              ...
              </op:define

              Kommentar


                #8
                Hallo Marco,

                am einfachsten ist es meistens sich das dazu passende OAM anzuschauen.

                https://github.com/OpenKNX/OAM-Senso...ensormodul.xml
                OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                Kommentar


                  #9
                  Hi Marco,

                  das kann nicht sein, Auszug aus dem aktuellen v1-XML:
                  Code:
                                <Union SizeInBit="8">
                                  <Memory CodeSegment="%AID%_RS-04-00000" Offset="0" BitOffset="0" />
                                  <Parameter Id="%AID%_UP-%TT%00100" Name="Error" ParameterType="%AID%_PT-OnOffYesNo" Offset="0" BitOffset="0" Text="Fehlerobjekt für Standardmesswerte anzeigen" Value="0" />
                                  <Parameter Id="%AID%_UP-%TT%00101" Name="Dewpoint" ParameterType="%AID%_PT-OnOffYesNo" Offset="0" BitOffset="1" Text="Taupunkt berechnen" Value="0" />
                                  <Parameter Id="%AID%_UP-%TT%00102" Name="Comfort" ParameterType="%AID%_PT-OnOffYesNo" Offset="0" BitOffset="2" Text="Behaglichkeitszone ausgeben" Value="0" />
                                  <Parameter Id="%AID%_UP-%TT%00103" Name="Airquality" ParameterType="%AID%_PT-OnOffYesNo" Offset="0" BitOffset="3" Text="Luftqualitätsampel ausgeben" Value="0" />
                                  <Parameter Id="%AID%_UP-%TT%00104" Name="Accuracy" ParameterType="%AID%_PT-OnOffYesNo" Offset="0" BitOffset="4" Text="Kalibrierungsfortschritt ausgeben" Value="0" />
                                  <Parameter Id="%AID%_UP-%TT%00105" Name="DeleteData" ParameterType="%AID%_PT-DeleteData" Offset="0" BitOffset="5" Text="Kalibrierungsdaten löschen" Value="0" />
                                </Union>​
                  Da ist klar %TT% drin.

                  Und: OFM ist self contained, Du musst Dich nicht um .parts.xml kümmern. Die werden intern verwendet, das passt schon.

                  Ich kann Dir nur anbieten, dass wir zusammen drauf schauen, ich weiß nicht, was da schief sein könnte. Aber falls Du noch %T% im String hast, hast Du sicherlich falsche Sourcen.

                  Gruß, Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    #10
                    Hallo Waldemar,

                    ok dies erklärt es, meinst du daher eventuell V1dev oder V1-parts, da passt es nämlich?
                    Ich habe eben auch nochmal zur Sicherheit online im Github geschaut und da ist bei mir in der V1 noch nur ein T.

                    Kommentar


                      #11
                      Hi Marco,

                      entschuldige bitte. Ich bin gerade am Vorbereiten vom nächsten Release und dachte wirklich, ich hab schon alles nach v1 gemerged, aber beim VPM und beim Sensormodul ist das noch nicht der Fall. Also (bis ich Dir dann sage, dass Du bitte auf v1 gehst) gilt im Augenblick:
                      • Logikmodul v1
                      • Sensormodul v1dev
                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Hallo Waldemar,

                        ist nicht schlimm wir alle sind Menschen und es ist auch nur ein Hobby.

                        Kann es sein das man nur eine *.share.xml einbinden kann? Weil wenn ich die vom Sensormodul und meine eigene nutze dann habe ich doppelte Objekte. Wenn ich nun eine davon auskommentiere geht es wieder. Wenn mehrere gehen, dann ist der Fehler sicher in meiner eigenen zu suche und dann schaue ich erstmal.

                        Ansonsten ist es super wenn man die Module einbindet, das man sofort viele Standards abdecken kann, das einzige was ich noch wissen müsste ob man hier auch eine Abhängigkeit (z.B. Eingang x kann ein Zähler oder Binäreingang) sein hinbekommt oder ob man die Hardware dann statisch erzeugen sollte.

                        Grüsse und schönes Wochenende

                        Marco


                        Kommentar


                          #13
                          Man kann mehrere .share.xml einbinden, aber mann muss dort bei den KO-Nummers selber rechnen.
                          Folgende Regeln:
                          • Common hat die KO 1-19 "reserviert".
                          • Alle anderen share sollten mit der KO-Nummer 0 anfangen
                          • Im op:define sollte es ein KoSingleOffset geben, der dann den KO-Offset für das Share angibt
                          Beispiel:
                          Du möchtest dass Dein Share die KO 20-39 verwendet.
                          Das Sensormodul hat im share 0-29 verwendet.

                          Wenn Du die einfach so einbindest, bekommst Du eine Fehlermeldung für 0, da das nicht zugelassen ist und Kollisionen für 1-29.
                          Lösung:
                          Du machst in Deinem share auch die KO-Nummern von 0-19.
                          Bei Deinem op:define gibst Du KoSingleOffset="20" an, beim Sensormodul KoSingleOffset="40" an.
                          Schon hast Du einen Kollisionsfreien KO-Bereich von 1-69.
                          Und Dein KoOffset (für die templ. files) kann dann ab 70 beginnen.

                          Wir haben das absichtlich nicht automatisiert im Producer abgebildet, damit man für Erweiterungen Lücken im KO-System lassen kann.

                          Zitat von MarcoLanghans Beitrag anzeigen
                          das einzige was ich noch wissen müsste ob man hier auch eine Abhängigkeit (z.B. Eingang x kann ein Zähler oder Binäreingang) sein hinbekommt oder ob man die Hardware dann statisch erzeugen sollte.
                          ​Das hab ich nicht verstanden...

                          Gruß, Waldemar

                          P.S.: Wenn Du willst, können wir nochmal telefonieren. Dann schaue ich auch über Dein XML und verrate Dir noch ein paar "last minute"-Tricks
                          OpenKNX www.openknx.de

                          Kommentar


                            #14
                            Hallo Waldemar,

                            wenn ich meine xml fertig habe können wir dies gerne tun, aber aktuell muss ich die erstmal komplett neu machen wenn ich auf die Module umstelle und dies Dauer gerade vermutlich etwas da der Tag leider nur 24h hat ;-)

                            Bezüglich der anderen Frage ich habe aktuell 3 externe Eingänge und zeige basierend auf der Auswahl andere Einstellungen an.

                            2024-07-07_14-50-27.jpg 2024-07-07_14-53-32.jpg 2024-07-07_14-58-59.jpg

                            Wenn ich nun die Standard Module einbauen sieht es ja so aus.

                            2024-07-07_14-49-18.jpg

                            Hier müsste ich wissen ob man mit den Module auch die Möglichkeit aus meiner aktuellen Applikation hinbekommen kann?
                            Wenn nicht ist auch kein Thema, ich will eh eine neue Revision machen, dann ändere ich die HW ein wenig.

                            Grüße

                            Marco

                            Kommentar


                              #15
                              mumpf


                              Hallo Waldemar, der Hinweis zu den Offsets war super Hilfreich, jetzt passt alles :-)
                              Müsste nun nur noch Wissen ob der dynamische Teil aus meiner aktuellen Applikation noch umgesetzt werden kann oder ob ich mein HW anpassen muss.

                              Ich finde es auch wirklich Super das Ihr euer Wissen mit anderen teilt und nicht closed lasst :-)

                              Kommentar

                              Lädt...
                              X