Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
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
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
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...
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...
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:
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
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.
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...
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:
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
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
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..
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.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar