Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 KNX mit ETS

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

    Hallo thesing,

    zum letzten GIT Stand, das auskommentieren des "#define USE_TP" führt bei verwendung des "knx-demo" Projektes unter Arduino zur fehlermeldung, wenn man z.B. einen SAMD21 mit TP-Uart beteriben möchte ;-)

    Ohne die Änderungen in der "tp_uart_link_layer.cpp" erhalte ich folgende Konsolen ausgabe in zusammenspiel mit der Siemens BCU
    Code:
    readMemory<\r><\n>
    RESTORED FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF <\r><\n>
    saved memory doesn't match manufacturerId, version or hardwaretype<\r><\n>
    manufacturerId: FFFF FA<\r><\n>
    version: FFFF 3<\r><\n>
    hardwareType: FF FF FF FF FF FF <\r><\n>
    00 00 00 00 00 00 <\r><\n>
    ownaddr 0<\r><\n>
    progmode on<\r><\n>
    progmode off<\r><\n>
    progmode on<\r><\n>
    expected L_DATA_CON not received<\r><\n>
    got L_ACKN_IND<\r><\n>
    got L_ACKN_IND<\r><\n>
    got L_ACKN_IND<\r><\n>
    got L_ACKN_IND<\r><\n>
    got UNEXPECTED: 0xE1<\r><\n>
    got U_CONFIGURE_IND: 0x1<\r><\n>
    got L_ACKN_IND<\r><\n>
    got U_STATE_IND: 0xCF<\r><\n>
    got unexpected L_DATA_CON<\r><\n>
    expected L_DATA_CON not received<\r><\n>
    got L_ACKN_IND<\r><\n>
    got L_ACKN_IND<\r><\n>
    got L_ACKN_IND<\r><\n>
    got L_ACKN_IND<\r><\n>
    got UNEXPECTED: 0xE1<\r><\n>
    got U_CONFIGURE_IND: 0x1<\r><\n>
    got L_ACKN_IND<\r><\n>
    got U_STATE_IND: 0xCF<\r><\n>
    got unexpected L_DATA_CON<\r>
    Elektrisch habe ich keine Probleme mehr, nutze jetzt ein 4081 (AND-gate) als Levelshifter 3.3V auf 5V, 5V auf 3,3V mit Widerstandsteiler.
    Signale habe ich mittlerweile mit meinem Oszi verifiziert.
    Vih/Vil Pegel auf beiden Seiten werden erreicht.
    Delay rise 195ns
    Delay fall 139ns
    Also mehr als ausreichend für 19,5 kBaud

    Hast du noch eine Idee, wonach ich sehen könnte?

    Elektronik Updates:

    Optokoppler:
    Um die Geschwindigkeit mit den TLP281 möglich machen benötigt man recht viel Strom und ein sehr hochohmigen Eingang, was mit die Siemens BCU nicht zu sein scheint, somit ist es mit der auf dem Breakout board vorliegenden Schaltung nicht möglich was hin zu bekomme, da man den Pull-up und den Basis Vorwiderstand nicht separat verändern kann. :-(
    Mit geändertem Transistor ist die Schaltung schon schneller, aber je nach verwendeten Transistor nicht Leistungsfähig genug um die SiemensBCU zu befeuern.
    Also noch kein erfolg :-(

    Geplant ist ein Gatter zwischen Optokoppler und SiemensBCU zu hängen.
    (Hochohmiger Eingang, Niederohmiger Ausgang)

    Levelshifer:
    Getestet habe ich auch bidirektionale Levelshifter, die einfachen N-MOS Transistor basierten sowie einen mit TI IC. (Warum bi-dierektional, hatte ich noch da...)
    Leider ohne erfolg, da die Siemens BCU zu niederohmig ist.
    Ein beschalten mit pull-ups/downs hat auch nicht geholfen :-(

    Somit wie oben beschrieben ein AND-Gate für 3V3 -> 5V und ein R-Teiler für 5V-> 3,3V



    Was verwendet ihr für ein NCN5120 Board?

    Kommentar


      Da kann ich leider nicht helfen. Ich benutze eine MicroBCU von https://knx-user-forum.de/forum/proj...nx-transceiver

      VG
      Thomas

      Kommentar


        Hallo Thomas,

        Ich benutze deinen Stack schon länger mit dem SAMD21 ohne Probleme. Jetzt würde ich gerne auf den Leistungsfähigeren ESP8266 oder so umsteigen. Da ein Projekt das erfordert um andere Hardware anzuschließen die beim SAMD nicht läuft.

        Soweit ich verstanden habe hat der ESP8266 keinen richtigen Seriellen Port um KNX TP anzuschließen, richtig?
        Der ESP32 hat wohl mehrere Uarts. Unterstützt dein Stack den ESP32 mit TP? Das wäre für mich den Idealfall. WLAN würde ich gerne nicht benutzen.

        VG Sebastian

        Kommentar


          Getestet habe ich es nicht, aber es sollte funktionieren. Ggf. musst du den richtigen SerialPort bei Erstellung der Esp32Platform übergeben (oder den Standard ändern https://github.com/thelsing/knx/blob...latform.cpp#L9)

          VG Thomas

          Kommentar


            Hallo Thomas,
            kann ich mit deinem Stack auch Data Secure realisieren?
            Vielen Dank schon mal.
            VG Marcus

            Kommentar


              Wenn du mit realisieren implementieren meinst, dann ja. Bisher ist aber noch nichts in der Richtung implementiert.
              VG
              Thomas

              Kommentar


                Hi,

                falls es die beteiligten hier interessiert: Ich habe soeben das Ergebnis meiner Arbeit mit den Stack veröffentlicht. Nachzulesen hier: https://knx-user-forum.de/forum/%C3%...dul-von-masifi

                Danke nochmal für die Unterstützung hier.

                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  Hallo zusammen,

                  ich lese hier schon einige Zeit sehr interessiert stumm mit und bin begeistert, was hier geleistet wird.
                  Privat habe ich mir einen Sensor aufgebaut, welcher mit einem ESP8266 und Siemens TP-UART Werte kabelgebunden (nicht über WiFi) an den KNX Bus sendet. Das funktioniert soweit problemlos, bisher setze ich die KNX Lib. von Thorsten Gehrig ein. Ich möchte aber das Devices zusätzlich auch über die ETS parametrieren können, was mit der genannten Lib. nicht geht.
                  Ich sehe aber hier bei der von thesing entwickelten Lib. vor lauter Bäumen den Wald nicht, was ich wo ändern muss, damit die KNX Kommunikation mit einem ESP8266 (z.B. D1 Mini) per TP über den Siemens UART läuft (und eben nicht per WiFi über IP).
                  Kann mir da jmnd. einen Schubs geben, wo ich schauen muss?

                  Vielen lieben Dank und Gruß
                  Geolin

                  Kommentar


                    Du musst eigentlich nur https://github.com/thelsing/knx/blob...facade.cpp#L21 Die Bau57B0 zu Bau07B0 ändern.
                    Dann sollte ArduinoPlatform::SerialDebug auf die DebugSerial gesetzt werden (wahrscheinlich Serial1 bei dir).
                    Die Serielle Schnittstelle für knx wird bei https://github.com/thelsing/knx/blob...atform.cpp#L10 gesetzt. Das sollte eigentlich auch stimmen.

                    Ich hoffe das hilft soweit.

                    Kommentar


                      Zitat von thesing Beitrag anzeigen
                      Du musst eigentlich nur https://github.com/thelsing/knx/blob...facade.cpp#L21 Die Bau57B0 zu Bau07B0 ändern.
                      Dann sollte ArduinoPlatform::SerialDebug auf die DebugSerial gesetzt werden (wahrscheinlich Serial1 bei dir).
                      Die Serielle Schnittstelle für knx wird bei https://github.com/thelsing/knx/blob...atform.cpp#L10 gesetzt. Das sollte eigentlich auch stimmen.

                      Ich hoffe das hilft soweit.
                      Vielen Dank für den Hinweis, dann werde ich das mal ausprobieren.

                      Kommentar


                        Hi Thomas,

                        hab schon länger nicht mehr in Deinen Stack abtauchen müssen, da alles geradezu perfekt und irre stabil läuft. Aber heute hätte ich doch eine Situation, bei der ich überlege, ob ich es besser machen kann...

                        Deswegen hier die Frage: Kann ich irgendwie in der Anwendung mitbekommen, ob ein KO per GroupValueRead abgefragt wurde?

                        Hintergrund: Messwerte werden ja üblicherweise über Bedingungen zyklisch gesendet, ich schreibe aber auch Zwischenergebnisse mit valueNoSend ins KO, damit man sie sich per Read abholen kann.
                        Eine meiner Bedingungen ist "Abweichung vom letzten gesendeten Wert" und das kann man auf 2 Arten interpretieren: Abweichung vom letzten AKTIV gesendeten Wert (so ist es jetzt) oder eben Abweichung vom letzten Wert, der auf dem Bus war - und das könnte auch ein gelesener Wert sein. Um letzteres zu realisieren, müsste ich wissen, wann und welcher Wert gelesen wurde.

                        Frohe Ostern und viele Grüße,
                        Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          Hallo Waldemar

                          das gibt es bisher nicht. Man könnte dafür aber einfach ein neues Flag am GroupObject hinzufügen. Ich es sinnvoll ist Logikaktionen von einem Read abhängig zu machen ist Geschmackssache. Ich sehe Reads eher als etwas passives. Zumal ein Read nicht heißt, dass alle Geräte den Wert gesehen haben, da ja ein Gerät noch nicht gestartet sein könnte o.ä. Aber es spricht aus meiner Sicht nichts dagegen so ein Flag hinzuzufügen.

                          Viele Grüße und frohe Ostern.
                          Thomas

                          Kommentar


                            Hi Thomas,

                            danke für die Antwort.

                            Zitat von thesing Beitrag anzeigen
                            Ich sehe Reads eher als etwas passives.
                            Ich stimme Dir da zu bzw. habe es auch bisher so interpretiert und implementiert. Ich weiß auch noch nicht, ob ich es angehen werde, aber wenn, dann weiß ich ja jetzt, wo ich nachschauen muss.

                            Zitat von thesing Beitrag anzeigen
                            Zumal ein Read nicht heißt, dass alle Geräte den Wert gesehen haben, da ja ein Gerät noch nicht gestartet sein könnte o.ä.
                            Genau über dieses Problem bin ich auch letztens gestolpert, als ich die Initialisierung eines Logikkanals getestet hatte und dieser "sporadisch" nicht funktionierte. Lag auch nur daran, dass andere Geräte noch nicht sendefähig waren. Deswegen gibt es in der nächsten Version meiner Logik-Firmware ein "Zyklisch lesen, bis das erste Telegramm eingeht" .

                            Gruß, Waldemar
                            OpenKNX www.openknx.de

                            Kommentar


                              Hallo Zusammen,

                              nach dem die Beispielprojekte super funktioniert haben, habe ich mich mal an ein eigenes Projekt getraut.
                              Irgendwas grobes muss ich leider falsch gemacht haben, den nach dem erfolgreichen Import der KNX_Bettsensor_IP.knxprod startet meine ETS5 nicht mehr.

                              Hat jemand eine Ahnung wie ich das wieder repariert bekomme?

                              Gruß, Kay
                              Angehängte Dateien

                              Kommentar


                                Hallo Kay,

                                das schockt einen schon ganz schön, oder? Ich hoffe, Du hast Dein produktives Projekt vorher exportiert .

                                Ansonsten: Keine Panik! Bisher hab ich meine ETS immer wieder zum Leben wiedererwecken können...

                                Übliche Ursache: Produktkatalog ist kaputt. Hast Du selber verursacht (s.u.).
                                • ETS beenden
                                • C:\ProgramData\KNX\ETS5\OnlineCatalog irgendwo hin kopieren (Sicherheitskopie)
                                • C:\ProgramData\KNX\ETS5\OnlineCatalog löschen
                                • ETS neu starten
                                Danach wird das ziemlich sicher wieder laufen.

                                Worauf Du noch in Zukunft achten musst: Solange Du Dich nicht um Versionierung kümmerst (und das macht man beim rumprobieren meist nicht), musst Du folgendermaßen vorgehen, damit der Produktkatalog nicht irgendwann (passiert nicht sofort) kaputt geht (ich nehme an, Du hast ein Bettsensor.knxprod):
                                • Bettsensor aus Deinem Projekt löschen
                                • Bettsensor aus dem Katalog löschen
                                • Projekt schließen
                                • Projekt markieren
                                • Rechts im Eigenschaften-Fenster mit der Maus auf "Gesamtgröße" gehen, jetzt erscheint "Jetzt komprimieren"
                                • Da drauf clicken
                                • Danach Projekt wieder öffnen
                                Jetzt kannst Du einen neu gebauten Bettsensor.knxprod in den Katalog importieren und anschließend in Dein Projekt aufnehmen.

                                Gruß, Waldemar
                                OpenKNX www.openknx.de

                                Kommentar

                                Lädt...
                                X