forked from fritob/Camper-Monitor
Kühlbox: Stellbefehl in der Länge, die die Box erwartet
Diesmal gegen die Referenzimplementierung geprüft statt geraten. Rahmen, Längenbyte, Prüfsumme, Anmelde- und Abfragepaket stimmen dort byteweise mit unseren überein. Ein Unterschied blieb: die Länge des Einstellungs- blocks. Ich hatte sie an die Zonenerkennung gehängt. Sendet eine Box den langen Datensatz, füllt den zweiten Block aber mit Nullen, galt sie als einzonig und bekam den kurzen Befehl - während sie den langen erwartet. Die Box verwirft ihn dann wortlos, und Ein- und Ausschalten blieb wirkungslos. Die Referenz hängt die Länge an die Antwort der Box, nicht an eine Deutung davon. Jetzt auch hier. Für die Anzeige bleibt die Erkennung unverändert: ein leerer zweiter Block wird weiterhin nicht als zweite Zone gezeigt. Zweitens die Anmeldung. Abfragen beantwortet die Box teils auch unangemeldet, Stellbefehle nicht. Ob die Anmeldung je bestätigt wurde, wurde bisher nicht verfolgt. Jetzt schon: fehlt die Bestätigung, wird vor dem Stellbefehl noch einmal angemeldet. In der Diagnose steht der Stand als eigene Zeile. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -241,10 +241,12 @@ struct AlpicoolState: Equatable {
|
||||
p[10], p[11], p[12], p[13], // Kompressordrehzahlen
|
||||
]
|
||||
|
||||
// Der zweite Block gehört nur an den Befehl, wenn die Box wirklich
|
||||
// zwei Zonen hat. Einzonen-Boxen senden den langen Datensatz teils
|
||||
// mit, nehmen den langen Befehl aber nicht an.
|
||||
if isDualZone, p.count >= 28 {
|
||||
// Der zweite Block gehört an den Befehl, sobald die Box ihn auch
|
||||
// gemeldet hat – unabhängig davon, ob die Anzeige eine zweite Zone
|
||||
// zeigt. Die Box erwartet den Befehl in der Länge, in der sie selbst
|
||||
// antwortet; ein kürzerer wird verworfen, auch wenn der zweite Block
|
||||
// nur Nullen enthält.
|
||||
if p.count >= 28 {
|
||||
data += [
|
||||
p[18], // Sollwert rechts
|
||||
0, 0,
|
||||
|
||||
Reference in New Issue
Block a user