Ankündigung

Einklappen

ETS5 Sammelbestellung Vollversion

Infos unter: Link
Mehr anzeigen
Weniger anzeigen

Pluggit Lüftungsanlage anbinden

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

    #31
    Den Pegel habe ich einfach durch nachmessen bestimmt. Die Ports sind per Pullup gegen 3.5V verbunden. Auf dem Board ist ein Mikrocontroller der Firma NXP. Einen MAX232 oder ähnliches konnte ich auch nicht auf dem Board ausmachen. Die 4800 Baud konnte ich durch eine Pegelanzeige mit 115200 Baud bestimmen. Ein Bit war 3 Zeichen lang.

    Ansonsten ist es gar nicht so falsch für Peripherie 12V zur Verfügung zu stellen. Die Fernbedienung gibt es auch in einer Kabelversion. Je nach Leitungslänge muss da ein Pegelwandler her. Ansonsten werde viele Boards, Router u.s.w. auch mit 12V versorgt.

    Die Frage ist wie man nachher die Erkenntnisse in etwas brauchbares umsetzt. Ich werde vermutlich den Arduino in der Anlage belassen oder eine kleine Platine mit AVR fertigen (deswegen noch einmal die Änderung der Pin-Belegung). Wenn es klappt soll der noch die Luftqualität auswerten und die Anlage stoppen wenn diese abweicht. Die Netzwerk- oder Busfähigkeit könnte man mit einem Rasperry Pi herstellen. Leider kann man den nicht in die Anlage verfrachten da er nur einen UART hat. Außerdem ist der AVR schneller bereit, so dass der Anmeldeprozess der Fernbedienung nicht gestört wird.

    Ich mache heute oder übermorgen mal einige Logs fertig und versende die per PN. Ich hatte mich mit der Schaltung so beeilt um noch die Frostmeldung abzupassen. Der Bypass muss wohl noch eine Weile warten.

    @simonk: Ich bin auf einen Hinweis bezüglich Betrieb mit einem Ofen gestoßen. Wenn Ihr so etwas habt schreibt Pluggit ein Heizregister oder Erdwärmetauscher vor. Letzeres lässt sich nachträglich schwer in ein Haus integrieren da man eine Lösung für den Kondenzwasserabfluss braucht.

    Viele Grüße

    Frank

    Kommentar


      #32
      hi Frank
      keine Sorge die Pluggit wird in einen Neubau eingebaut :-)
      Der Neubau befindet sich momentag in der letzten Planungsphase.
      Ich hoffe das ich ende nächsten Monat mit dem Bau anfangen kann.
      Also immer her mit den Logs denn noch hab ich ein bisschen Zeit :-D
      Gruß Simon

      Kommentar


        #33
        Hi Frank, super Arbeit.
        Ich freue mich schon auf die Logs.
        Für eine spätere Anbindung an den Bus will ich mein Wiregate benutzen. Über eine USB/RS232 und etwas Hühnerfutter zur Pegelwandlung sollte das irgendwie funktionieren....

        Ciao, PP

        Kommentar


          #34
          Fernbedienung

          Hallo,

          die Fernbedienung sendet vermutlich im 433MHz Band. Ich habe noch einen Funk-Lautsprecher der in diesem Band arbeitet. Der reagiert in diesem Bereich. Eventuell kann man damit eine Lösung ohne Eingriff in das Gerät finden.

          Viele Grüße

          Frank

          Kommentar


            #35
            Guten Tag
            Frank vielen Dank für deine Vorarbeit.
            Ich habe mir die Logs mal angeschaut und die Daten sind nach Modbus aufgebaut.
            Leider habe ich keine Ahnung von Modbus und muss mich da erstmal einlesen.
            Aber vielleicht hat ja einer Erfahrung mit Modbus und bietet seine Hilfe an.
            Ich bleib auf jeden fall dran :-)
            Gruß Simon

            Kommentar


              #36
              Zitat von SimonK Beitrag anzeigen
              Ich habe mir die Logs mal angeschaut und die Daten sind nach Modbus aufgebaut.
              Danke für den Tipp mit dem Modbus 16 CRC. Dafür hätte ich ewig suchen müssen. Die Checksummen bestehen aus 8 Bit des Modbus 16 CRC.

              Ich habe mal die Spezifikation überflogen. Das Pluggit-Protokoll weicht an einigen Stellen von der Spezifikation ab:

              Es käme nur der RTU Transmission Mode in Frage. Die serielle Übertragung währe dann entweder mit gerader Parität oder zwei Stoppbits. Das ist aber nicht der Fall oder meine Software-UARTS sind fehlerhaft, die habe ich aber noch mit einem FTDI-Kabel getestet.

              Es werden nur 8 Bit (L-Byte) der CRC-Summe anstatt der 16 Bit verwendet.

              Die meisten (oder alle) Frames rufen "(0x03) Read Holding Registers" auf. Dabei ist die Fernbedienung der Master und die Lüftung der Slave. So ein 0x03 Frame ist aber ein Byte kürzer als das der Anlage. Die Antwort müsste ein Byte für die Länge haben. Das kommt auch nicht hin.

              Trotzdem halte ich den Ansatz, dass die Fernbedienung dem Gerät sagt welche Register ausgelesen werden sollen für eine Möglichkeit NACHTRAG: zumal ich auch Pakete "(0x10) Write Multiple registers" gefunden habe. Auch hier ist ein Byte zuviel.

              Auch ohne das Protokoll voll zu verstehen dürfte es leicht möglich sein die Werte T1-4 und S1-2 auszulesen. Einiges konnte ich schon wiederfinden.

              P.S.: Für den Arduino gibt es einen Modbus-Master: Arduino Playground - ModbusMaster Library

              Modbus-Spezifikationen: modbus.org

              Kommentar


                #37
                Hi
                Ich hab mal einen String Umgelegt auf Modbus müsste eigentlich passen.
                Gruß Simon


                Anfrage

                01 03 0408 000C C53D

                01: The Slave Address (1 dez = 01 hex)
                03: The Function Code (read Analog Output Holding Registers)
                0408: The Data Address of the first register requested. (42053-40001 = 2052 = 0408 hex)
                000C: The total number of registers requested. (read 12 registers 42053 to 42064)(12 dez = 000C hex)
                C53D: CRC

                Antwort

                01 03 18 0010 1404 312E 0200 0003 0208 0802 7F01 0004 9104 A500 0000 881B

                01: The Slave Address (1 dez = 01 hex)
                03: The Function Code (read Analog Output Holding Registers)
                18: The number of data bytes to follow (12 registers x 2 bytes each = 24 bytes)(24 dez = 18 hex)
                0010: The contents of register 42053
                1404: The contents of register 42054
                312E: The contents of register 42055
                0200: The contents of register 42056
                0003: The contents of register 42057
                0208: The contents of register 42058
                0802: The contents of register 42059
                7F01: The contents of register 42060
                0004: The contents of register 42061
                9104: The contents of register 42062
                A500: The contents of register 42063
                0000: The contents of register 42064
                881B: CRC



                http://www.simplymodbus.ca/FC03.htm

                Kommentar


                  #38
                  Ich habe mich da bei der Antwort vertan. Die stimmt mit einer 8-Bit CRC überein und hat die richtige Länge. Trotzdem kann ich mir ein Byte der Anfrage nicht erklären.

                  Hier mal einige Anfragen. Die Antworten poste ich wegen einer eventuellen Seriennummer nicht. Etliche Felder habe ich schon identifiziert. Da erstelle ich dann mal eine Tabelle.

                  Lese-Anfragen:
                  01 03 04 00 00 0C 44 FF -> Start 0 Anzahl 0c
                  01 03 04 0C 00 0C 84 FC -> Start 0c Anzahl 0c

                  Wofür könnten 44 und 84 stehen?

                  Noch ein paar Werte 2_=FB->P300, 3_=P300->FB

                  Schreibaktion: Start Kalibrieren
                  2_01 2_10 2_00 2_07 2_00 2_01 2_02 2_00 2_01 2_66 2_27
                  3_01 3_10 3_00 3_07 3_00 3_01 3_B0 3_08

                  Schreibaktion: Stufe 1 blinkt
                  2_01 2_10 2_00 2_00 2_00 2_01 2_02 2_00 2_09 2_66 2_56
                  3_01 3_10 3_00 3_00 3_00 3_01 3_01 3_C9

                  Schreibaktion: Aus
                  2_01 2_10 2_00 2_00 2_00 2_01 2_02 2_00 2_00 2_A6 2_50
                  3_01 3_10 3_00 3_00 3_00 3_01 3_01 3_C9
                  2_01 2_10 2_00 2_2A 2_00 2_01 2_02 2_00 2_02 2_20 2_5B
                  3_01 3_10 3_00 3_2A 3_00 3_01 3_20 3_01

                  Bezüglich einer Hardwarelösung kann ich mir zwei Szenarien vorstellen. Das einfachste wäre ein FTDI 3.3V Kabel was auf das Board gesteckt wird. Die Fernbedienung währe dann ohne Funktion und die gesamte Steuerung muss über das Kabel durch einen PC o.ä. vorgenommen werden. Die Software sollte auch unter Linux laufen damit man mit einem einfachen System wie einem Rasperry PI auskommt. Das setzt allerdings eine weitgehende Entschlüsselung der Felder voraus damit man auch Fehlersituationen erkennen kann.

                  Die Variante zwei wäre für die, die mit der Fernbedienung weiter arbeiten möchten und/oder zusätzliche Sensoren im Gerät möchten. Da ist dann eine Schaltung notwendig. Ich möchte einen Feuchtigkeitssensor und Gas-Sensoren im Luftstom haben um die Anlage danach steuern zu können. Richtung PC würde das gleiche Protokoll gesprochen werden wie mit dem FTDI-Kabel, nur dass die zusätzlichen Sensoren über eine andere Slave-ID angesprochen werden.

                  Was haltet Ihr davon?

                  Hat jemand die Technik da sich mal mit der 433MHz Übertragung zu beschäftigen? Dann könnte man die Anlage ohne Eingriff kontrollieren.

                  Viele Grüße

                  Frank

                  Kommentar


                    #39
                    Hallo Frank
                    Die 44 und die 84 gehören mit zum CRC :-)
                    "01 03 04 00 00 0C" = "44 FF" CRC
                    "01 03 04 0C 00 0C" = "84 FC" CRC
                    Also ich Persönlich tendiere zur zweiten Variante.
                    Freu mich schon auf deine Tabelle.
                    Gruß Simon

                    Kommentar


                      #40
                      Hallo Leute, sagt mal könnte es sein, dass die Temperaturwerte als Bytes übertragen werden? Die Daten aus "4_werte.txt" zeigen ja zwei immer wiederkehrende Request + Response. Im ersten Response ab Offset 0x13 steht: "FF 12 16 03". Deine Anzeigewerte waren: T1=-01°C T2=18°C T3=22°C T4=03°C

                      Kann Zufall sein, oder auch nicht. Frank könntest du noch so einen Record erzeugen? Vermutlich sind die Temperaturen jetzt andere...

                      In beiden Responses aus dem File konnte ich leider keine Standardkodierung eines Datums/Uhrzeit finden. Deshalb habe ich ganz plump nach 0x13:0x27 (19:39) gesucht. Das steht ab Offset 0x06. Noch verrückter wird's beim Datum, das könnte ab Offset 0x03 stehen: 03 0E 08. (Monat Tag Jahr). Wobei das Jahr seit 2005 zu rechnen wäre. Komische proprietäre Kodierung, aber damit stünde als Erstes im Paket Datum und Zeit: 03 0E 08 13 27 '
                      Auch hier wäre zu prüfen, ob's bei einer neuen Aufzeichnung dann auch hinhaut.

                      Was meint ihr dazu?

                      Ciao, PP

                      Kommentar


                        #41
                        Hi Pontius Pilatus

                        Mit den Temperaturwerten hast du recht ich habe in den Logs auch andere Temperatur werte gefunden die im gleichen Register stehen.
                        Aber das würde heißen das in einem Register 2 Werte drin stehen oder sehe ich das jetzt falsch.
                        Im Register 41033 stehen die Temperaturwerte von T1 und T2
                        Und im Register 41034 stehen die Temperaturwerte von T3 und T4


                        Gruß Simon

                        Kommentar


                          #42
                          Hi Simon,
                          Warum nicht. Es hat schon einen Grund, warum Pluggit die Schnittstelle nicht offenlegt ;-)
                          Das gleiche Muster wird es bestimmt bei den Volumenstromangaben S1 und S2 geben. Dafür brauchen wir aber nochmal neue Records mit den Angaben vom Display.

                          Viel merkwürdiger finde ich die 5 Bytes für das Datum. Der Wochentag war da auch nicht direkt bei.

                          Schwierig dürfte es auch sein, die Flags zu identifizieren. Wobei ich nicht auf Bitfelder tippen würde, sondern eher davon ausgehe, dass die Jungs jeweil ein Byte (bool) pro Flag schreiben. Damit wären die zusammenhängenden Nullen in dem von mir untersuchten Record verdächtig für Filter voll, etc.

                          Ciao, PP

                          Kommentar


                            #43
                            Zitat von Pontius Pilatus Beitrag anzeigen
                            Hallo Leute, sagt mal könnte es sein, dass die Temperaturwerte als Bytes übertragen werden? Die Daten aus "4_werte.txt" zeigen ja zwei immer wiederkehrende Request + Response. Im ersten Response ab Offset 0x13 steht: "FF 12 16 03". Deine Anzeigewerte waren: T1=-01°C T2=18°C T3=22°C T4=03°C
                            Zu diesen Erkenntnissen bin ich auch gekommen. In dem was ich dir zukommen lassen habe sind Daten von unterschiedlichen Tagen und anderen Temperaturen.

                            Zitat von Pontius Pilatus Beitrag anzeigen
                            In beiden Responses aus dem File konnte ich leider keine Standardkodierung eines Datums/Uhrzeit finden. Deshalb habe ich ganz plump nach 0x13:0x27 (19:39) gesucht. Das steht ab Offset 0x06. Noch verrückter wird's beim Datum, das könnte ab Offset 0x03 stehen: 03 0E 08. (Monat Tag Jahr). Wobei das Jahr seit 2005 zu rechnen wäre. Komische proprietäre Kodierung, aber damit stünde als Erstes im Paket Datum und Zeit: 03 0E 08 13 27 '
                            Auch hier wäre zu prüfen, ob's bei einer neuen Aufzeichnung dann auch hinhaut.
                            Das ist auch meine Erkenntnise bis jetzt. Ich habe das aber noch nicht mit anderen Datumsangaben gegengeprüft.

                            Ich wollte die Felder alle mal in eine Tabelle übernehmen und dann versuchen zuzuordnen. Dazu habe ich die Logs umformatiert damit man es besser lesen kann. Die Files habe ich noch einmal aktualisiert.

                            Vielleicht hat jemand Lust die Felder mal in eine Tabelle zu übertragen. Ich werde erst einmal an der Hard- und Software weiter arbeiten.

                            Basis für die Hardware wird nun ein Teensy 3.0 werden. Das System hat 3 freie UARTS, einen USB-Port der mit voller USB 1 Geschwindigkeit bedient werden kann und Hardware CRC Unterstützung. Das macht die Analyse einfacher. Dazu kommt noch ein Gas-Sensor (Figaro TGS 2600-B00) sowie ein Temperatur und Feuchtesensor (DHT 11)

                            Mit etwas Glück lässt sich alles auf einer Lochrasterplatine aufbauen. Die Sensoren können leicht im Luftstrom platziert werden um die Raum-Zuluft zu messen. Gerne würde ich noch einen DHT 11 in der Raum-Abluft platzieren. Das könnte aber Auswirkungen auf die Dichtheit haben.

                            Viele Grüße

                            Frank

                            Kommentar


                              #44
                              Ich hab mich grade mal ans Datum gesetzt.
                              Da muss ich euch leider enttäuschen ich habe die logs mal durchsucht und ich glaube das war nur Zufall :-(
                              Denn auf die Anfrage 01 03 04 00 00 0C 44 FF
                              Findet man auch die Antworten
                              01 03 18 01 0E 01 16 12 29 8F 01... und 01 03 18 02 0E 01 16 12 29 8F 01...

                              Gruß Simon

                              Kommentar


                                #45
                                S1 und S2 sind auch gefunden :-)
                                01 03 18 00 10 14 04 5B 56....
                                00>>T1=0C
                                10>>T2=16C
                                14>> T3=20C
                                04>>T4=4C

                                5B >>91*2>>S1=182
                                56>>86*2>>S2=172

                                Gruß Simon

                                Kommentar

                                Lädt...
                                X