Watterkotte Wärmepumpe auslesen mit Arduino (Thema: CRC-Berechung)

Jetzt habe ich auch mal ne Frage.

Ich bin jetzt schon seit einiger zeit dran meine Watterkotte Wärmepumpe zu "vernetzten" also ich will sie auslesen und steuern (Einsatztemperatur und Handabschaltung etc.)

Die Kommunikation als solches habe ich anhand eines Artikel hier Linux steuert Wämepumpe
Hier habe ich auch die Datenadressen und Rückmeldungen gefunden. Was mit jetzt aber meisten beschäftigt wie berechne ich eine CRC16 Cheksummen

Der Hex Frame zum Abfragen der Aussentemperatur lautet z.B.
10 02 01 15 00 08 00 04 10 03 7e a0
DLE | STX | Lesekommando | Adresse | Bytes | DLE | ETX | CRC

Jetzt weiß ich das de CRC Summe des Lesekommandos(01 15), Adresse(00 08) und die zu Empfangenen Bytes(00 04) 7E A0 ergeben. Desweitern habe rausgefunden das es CRC-16 mit dem CRC polynom 0x8005 mit der CRC Order 16 handelt.

Ich habe es aber nicht raus gefunden wie ich diese Berechnung in Arduino einbinden kann. Mit dem Rechner hier >Klick< kann ich zwar meine CRC berechnet bekomme aber kein Aussagefähige Formel für meine Befehle.

Wenn ich jetzt die Einsatztemperatur der Heizung lese sieht das Kommando so aus
10 02 01 15 00 F4 00 04 10 03 (Hier fehlen jetzt die zwei CRC Bytes)
Wie berechne die CRC von den Roten Bytes mit dem Arduino.

Es geht so von statten das der Arduino(Node) via Max232 mit der Heizung verbunden ist im Technikraum. Dieser Arduino bekommt via RS485 den Befehl z.B. die Aussetemperatur zu lesen diese wird dann zurück Via RS485 an den Teensy geschickt der das wiederum aufbereitet für die HMI.
Ich will aber nicht für jeden Befehlt den kompletten Farme hinterlegen incl. DLE STX etc.

Kann mit hier einer der C++ Cracks weiterhelfen. (Da ich aus dem SPS Bereich komme hat man nicht ganz soviel mit CRC und C++ zu tun)

Vielen Dank schonmal

Gruß
DerDani

Das hast du gesehen : Cyclic redundancy check - Wikipedia ?

Hübsch erklärt für ein CRC-4

Etwas komplizierter die deutsche Version, dafür mit einem c - Beispielprogramm.

CRC-16 mit dem CRC polynom 0x8005

und Beispieldaten hast du auch ?
Dann ist das schwierigste geschafft! Schnell ans Werk, bevor jurs dir ein Lehrbeispiel liefert :wink: