Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin ComfoAir (KWL Wohnraumlüftung Zehnder, Paul, Wernig)

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

    Sehr gut!! Es wird langsam mit der Novus... :-) Ich befürchte, dass ich mir doch über kurz oder lang die Embedded-Welt näher anschauen muss. Es gibt doch sicher nen passenden Arduino den ich dafür verwenden könnte!? Da gibt's bestimmt Turorials für Dummies

    Kommentar


      Macht euch nicht zu viel Hoffnung. Ich habe meine bisherigen Erkenntnisse in Form einer Excel-Datei angehängt.
      Es sieht so aus als ob der Slave die gemessenen Temperaturdaten gar nicht auf den RS485 Bus schickt. Alles wird vom Master aus gepollt. Es handelt sich um einen (meines Wissens) sogenannten "SingleMaster Bus mit mehreren Slaves" d.h. die Slaves senden nur auf anfrage des Masters, das wiederum heißt, dass dieser das Bustiming vollständig steuert. Würde man nun von unserem "Spy-Gerät" am Bus eine Nachricht senden, würde diese mit hoher Warscheinlichkeit mit einer anderen Nachricht (vom Master oder den anderen Slaves) kollidieren. Somit müsste man es irgendwie schaffen sich beim Master (beim Startup) zu "registrieren".
      Eine Umschaltung der Lüfterstufen könnte man evtl. so realisieren, indem man ein zweites Bedienteil (z.B. an Adresse 0x112, ob die Adresse egal ist weiß ich nicht) emuliert, und dem Master entsprechend dem Protokoll die Antworten schickt. Ich weiß aktuell nicht ob das Wissen über das Protokoll schon ausreicht aber einen Versuch wäre es wert.
      Es müsste m.E. allerdings so ablaufen, dass beim Startup der Lüftungsanalage das "Gateway" bereits am Bus ist damit der Master bei der anfänglichen "Buserkundung" das Device registiert.....

      Bzgl. Arduino bin ich nicht so fit. Bin mehr der Low-Level C Programmierer

      Die Arduino's haben aber meines Wissens alle eine USB-Schnittstelle zum programmieren, vielleicht ließe sich die auch schon als Kommunikationsschnittstelle zum PC/RasPi verwenden, dann braucht man nur noch eine UART für den RS485 Bus.....
      Der "Arduino MEGA 2560" hat 4 UART's und einen ATmega2560 Controller der kann laut Datenblatt auch das 9bit Protokoll, ob die Arduino Plattform das kann weiß ich nicht.
      Man muss scheinbar aufpassen, denn manche Arduinos basieren nicht auf 8bit AVR-core sondern auf 32bit ARM-core....
      Hier die Links zu den Infos:
      https://www.arduino.cc/en/Reference/Serial
      https://www.arduino.cc/en/Main/ArduinoBoardMega2560
      http://www.atmel.com/Images/Atmel-25..._datasheet.pdf
      Kapitel 22.4 auf Seite 204
      Angehängte Dateien

      Kommentar


        Irgendwie ist das seltsam, die Adressen scheinen starr belegt zu sein. Wenn ich mit meinem Gateway im Stil eines TFT-Displays auf der Adresse 0x112 an den Master antworte, wird scheinbar auch davon ausgegengen, dass Geräte an den Adressen 0x114 und 0x115 vorhanden sind. Wenn auf 0x115 keine Antwort im Sinne einer Defrosterheizung kommt, wird dies als "Fehler bei der Kommunikation mit Defroster" angesehen. Mein Gateway antwortet außerdem noch nicht in dem richtigen Timing, sodass es zu wiederholten anfragen vom Master kommt...weiter bin ich noch nicht gekommen...

        Kommentar


          In deiner Excel-Analyse sieht man sehr schön, dass das erste Datenbyte in einer 02er-Nachricht immer die Absenderadresse ist. Manchmal mit 0x80 geodert, aber meistens in reinform. Das hattest du bei dem simulierten Bedienteil auch berücksichtigt!? Ansonsten könnte ich mir Vorstellen, dass ab Adresse 0x112 eher eine zweite gekoppelte KWL als "Slave" kommt mit allen Subkomponenten. Hab jetzt aber nicht in der Anleitung nachgelesen ob das wirklich geht. Hast du mal 0x106 bzw. 0x107 probiert? Die wären ja noch im ersten Adressblock und laut Anleitung kann man bei den neueren Geräten genau drei TFTs anschließen. Würde ja passen...

          Kommentar


            Hallo Deival,

            hast du dein ATMega Board selber gelötet?

            Anbei noch meine Auswertung bisher zu den Daten fürs TFT, ist zwar nicht wirklich relevant für unser Vorhaben aber zur Vollständigkeit.
            Angehängte Dateien
            Zuletzt geändert von johnson; 04.01.2016, 15:03.

            Kommentar


              Zitat von coderchris Beitrag anzeigen
              In deiner Excel-Analyse sieht man sehr schön, dass das erste Datenbyte in einer 02er-Nachricht immer die Absenderadresse ist. Manchmal mit 0x80 geodert, aber meistens in reinform. Das hattest du bei dem simulierten Bedienteil auch berücksichtigt!? Ansonsten könnte ich mir Vorstellen, dass ab Adresse 0x112 eher eine zweite gekoppelte KWL als "Slave" kommt mit allen Subkomponenten. Hab jetzt aber nicht in der Anleitung nachgelesen ob das wirklich geht. Hast du mal 0x106 bzw. 0x107 probiert? Die wären ja noch im ersten Adressblock und laut Anleitung kann man bei den neueren Geräten genau drei TFTs anschließen. Würde ja passen...
              Das mit den evtl. Absenderadressen bei den 02er-Nachrichten ist mir auch aufgefallen, und ich habe dann noch weiter überlegt und ich bin darauf gekommen, dass der Master ja sowieso weiß woher er er die Antwort bekommt, denn er hat ja die Anfrage geschickt. Ich glaube vielmehr, dass der Inhalt der 02er-Nachrichten dem Master sagt welchen Typ von Gerät am anderen Ende sitzt. Eine andere Möglichkeit wäre natürlich auch, dass die Adressen für den jeweiligen Gerätetyp einfach fix sind, das würde bedeuten dass vermutlich kein zweites Display an den alten Geräten geht.

              Laut der Menüstruktur gibt es folgende Gerätetypen:
              1. Master
              2. Bedieneinheit
              3. Lüfter-Slave
              4. Defroster
              5. Heizregister
              6. EWT-Klappe

              Ich habe nur 1-4, hat von euch jemand 5 oder/und 6?
              In der Betriebsanleitung des BUS-Thermostats steht, dass die Gerätetypen 4-6 nur je einmal am RS485-Bus sein dürfen.

              Die Anschlussmöglichkeit für 3 Displays gibt es scheinbar erst ab Baujahr (?) 10/2014. In der Betriebsanleitung ist von Adressen 1 -3 die Rede, dies ist vermutlich ein Offset.

              Wenn ich mal Zeit habe probiere ich andere Addressen aus aber erstmal muss ich das Timing-Problem beseitigen.

              Außerdem möchte ich einfach mal ausprobieren eine solche Nachricht an den Master zwischendrin einschleusen:
              0101 11 04 00 02 1C 29 16 05 02 01 10 01 01 00 00 00 00 00 00 DD Konfiguration TFT (Bedienteil) an Master
              Vielleicht würde es auch reichen die folgende Nachricht zu schicken um nur die Lüfterstufe zu ändern:
              0101 02 04 08 01 XX

              Kommentar


                Zitat von johnson Beitrag anzeigen
                Hallo Deival,

                hast du dein ATMega Board selber gelötet?

                Anbei noch meine Auswertung bisher zu den Daten fürs TFT, ist zwar nicht wirklich relevant für unser Vorhaben aber zur Vollständigkeit.
                Ja das ist ein Relikt aus einem meiner Vorgängerprojekte, eine selbstgeroutete Platine (Eagle) die aufgrund diverser Änderungen im Vorgängerprojekt durch eine neue ersetzt wurde. Habe die alte Platine nun mit einer speziell abgeänderten Software (Compiler: WinAVR) für meine Experimente genutzt.
                Aktuell habe ich nur den Atmega644p zusammen mit einem MAX487 (RS485-Pegelwandler) und einem 5V FTDI-USB-UART-Kabel in Betrieb. Der Atmega läuft mit 14,7456 MHz (externer Quarz) damit die Baurates möglichst genau erzeugt werden können.
                1x https://www.reichelt.de/Atmel-ATMega...SET=16&WKID=0&
                1x https://www.reichelt.de/ICs-MAX-0100...SET=16&WKID=0&
                1x https://www.reichelt.de/Quarze/14-74...SET=16&WKID=0&
                2x https://www.reichelt.de/Scheiben/KER...ET=500&WKID=0&
                1x https://www.reichelt.de/USB-Konverte...ET=500&WKID=0&

                Kommentar


                  Hallo johnson,

                  habe Deine Registerbeschreibung anhand meiner Daten in meinem Excel-Sheet gegengeprüft. Scheint alles so zu stimmen. Was mir nicht ganz klar ist, ist die "Kühltemp".
                  Der Rest passt zu meinen Daten. Bitte schau Dir das nochmal an, denn ich glaube ich habe da auch noch ein paar interessante Sachen gesehen.
                  Speziell das Register "Datenregister TFT" im Excel-Sheet und dort die Spalte T und Zeile 5.

                  P.S. Experimente hab ich heute mangels Lust keine gemacht
                  Angehängte Dateien
                  Zuletzt geändert von deival; 05.01.2016, 01:02.

                  Kommentar


                    Danke für dein Update.
                    Hab eben erst gesehen, dass in meiner Übersicht für das TFT Page 0x00 und 0x10 nicht drin waren, muss wohl beim Drucken verloren gegangen sein, du hast sie aber drin genau so wie ich.
                    Die Kühltemp findest du unter dem Punkt Einstellungen->Kühlung Sole-Defroster->Kühltemperatur
                    Ich bin auch noch nicht dahinter gestiegen warum die Antwort vom Bedienteil 2Bytes lang ist und die Antwort vom Slave 3Bytes lang ist.
                    0102 00 01 FD -> Checksum: 0000
                    0101 02 02 02 10 ED -> Checksum: 0000
                    0104 00 01 FB -> Checksum: 0000
                    0101 03 02 04 06 01 FD -> Checksum: 0000
                    Es gibt noch die Softwarestände im Display diese habe ich auch noch nicht entdeckt.
                    Zuletzt geändert von johnson; 05.01.2016, 10:59.

                    Kommentar


                      Ok, Danke. Das mit den unterschiedlichen Antworten hab ich auch noch nicht kapiert aber vermutlich wird da noch etwas spezielles signalisiert was je nach Busteilnehmertyp unterschiedlich ist. Die Filterlaufzeit müsste eigentlich auch noch irgendwo stehen....ausser die wird nur im Display verwaltet...

                      Kommentar


                        Habe heute wieder mal einen Abend vor dem TFT der Lüftung verbracht - zusammen mit dem Laptop - und hab alle Einstellmöglichkeiten durchprobiert.
                        Kann durchaus sein dass ich noch was übersehen habe.
                        Das Ergebnis ist hier:
                        Angehängte Dateien

                        Kommentar


                          Hallo an alle Freunde von Paul NOVUS/FOCUS Geräten,

                          Respekt, ihr habt schon ganz viel geschafft. Ich helfe auch gern mit. Mein Ziel wäre Lüfterstufe per rasphberry PI zu steuern und wenn möglich auch die Temperaturen anzuzeigen.

                          Meine Konfiguration: Paul Focus 200 mit LED Bedienteil, RS485 to USB Konverter(Paul Adapterplatine Klemmstelle X1 RX -> A+ und TX -> B- des Konverter), Notebook, software RealTerm half=1 baud=9600 port=3 data=8m1 display=3

                          Ich habe bislang viel Schrottdaten ausgelesen, aber mit der richtigen Einstellung = 8M1 (danke euch!) passt es jetzt . Anbei zum Vergleich Startup mit LED Bedienteil

                          LG Pavol
                          Angehängte Dateien

                          Kommentar


                            Hallo,

                            ich glaube das die bytes sollen nicht als 9N1 sondern als 8S1 interpretiert werden. Parity Error signalisiert Anfang des Befehl. So finde ich es logischer für mich. Benutzer #johnson beschreibt es in diesem Thread.

                            Adressen sollen nicht als 0105, 0101 sondern als 05,01, usw interpretiert werden. Auch Umsetzung wird umso einfacher. Receiver soll fähig sein separat die Datenbits und Paritybit an den "frame parser" übergeben zu können. Sender setzt den paritybit am Anfang des Frame.

                            was sagt ihr dazu? LG Pavol

                            ich würde gern ein Simulator dafür schreiben. ich sehe mir um was es schon gibt im net und melde mich

                            reverse engineering macht spaß

                            Kommentar


                              aha, 8S1 zu simulieren ist doch nicht so einfach, mit Arduino sollte es einfacher sein, Ich habe den source code von SoftwareSerial runterladen, es sollte nicht schwierig sein es auf 9N1 anzupassen, leider habe ich kein arduino board zur hand, es sollte aber mit jeder board funktionieren, mega ist nicht notwendig, oder?

                              Arduino könnte dann das ganze bedeinteil simulieren(antowerten auf poolen, konfiguration werte speichern) und nur gewünsche werte und kommandos zu verfügung stellen..

                              Kommentar


                                Hallo pavol,

                                egal ob 9N1 oder 8S1 es sind immer 9 Datenbits, bei 8S1 wird das Parity als Datenbit mißbraucht.
                                Das höchstwertigste Bit zeigt ob es eine Adresse ist oder nicht.
                                Ich hatte auch 8S1 als ich nur den Rs485-Konverter an Winxp hatte.
                                Ich wollte mit C# auch immer auf PE triggern, das funktionierte aber nicht immer zuverlässig.
                                Dann bin ich auf den Atmel umgestiegen und habe dort die 9N1 eingestellt (man kann auch MPCM einstellen dann kommen Daten erst im Empfangspuffer an wenn Bit 9 eine "1" ist, wollte ich aber nicht da ich alle Daten nur durchreichen will)um auf dem Bus zu lauschen.
                                Ich habe die Daten wie deival abgehört und mit 56700 8N1 an einer anderen seriellen Schnittstelle and den PC gesendet.
                                Ich habe nach jedem Datenpaket ein CR+LF angehängt und somit kann ich jetzt auf der PC-Seite alle Pakete sortieren und auswerten.
                                Habe heute auch noch neue Daten gesammelt werde diese nach der Auswertung morgen posten.

                                Welchen RS485-Konverter benutzt du?
                                Kann der RaspPi echte 9Bit?

                                Nachdem was hier jetzt an Infos zur Verfügung stehen sollte es kein Problem sein das Bedienteil gegen ein eigenes(RaspPi) zu ersetzten. Mein Ziel ist es aber das TFT (hat ja eine ganze Stange gekostet) noch zu behalten und irgendwie die Daten seitlich einzuschleusen.
                                Zuletzt geändert von johnson; 10.01.2016, 20:28.

                                Kommentar

                                Lädt...
                                X