Programmierer-Leitfaden zur Half Decent Scale


Über Bluetooth sollten diese Befehle als Binärdaten gesendet werden.

  • Über USB und WLAN sollten diese Befehle als Hexadezimalzeichenfolgen gesendet werden.
  • Siehe auch die älteren Decent Scale API-Dokumente. Die Half Decent Scale ist mit diesem Befehlssatz kompatibel, fügt jedoch eine erhebliche Anzahl neuer Befehle hinzu.
  • Eine Python-Bibliothek ist ebenfalls verfügbar.

Die neue „Heartbeat“-Funktion behebt Verbindungsprobleme mit Android 9 und älteren Versionen.

  • Apps müssen mindestens alle 5 Sekunden einen „Heartbeat“ senden, sonst wird die Bluetooth-Verbindung unterbrochen
    • Der Heartbeat-Befehl, der an die Waage gesendet werden muss, lautet: „03 0a 03 ff ff 00 0a“
  • Warum gibt es diese Funktion?
    • Ältere Android-Versionen haben das Problem, dass Bluetooth-Verbindungen zu Geräten aufrechterhalten werden, obwohl die App keine Verbindung mehr hat.
    • Der Heartbeat behebt dieses Problem und entspricht dem Ansatz, den Decent bei Bluetooth auf dem DE1 gewählt hat, um dasselbe Problem zu lösen.
  • Ältere Apps, die die Heartbeat-Funktion nicht kennen, deaktivieren automatisch die Heartbeat-Anforderung
    • wenn sie den Bluetooth-Befehl „LED ON“ senden, wobei das sechste Byte in diesem Befehl auf 00 gesetzt ist
    • oder den TARE-Befehl mit dem letzten Byte als 00.
  • Apps, die die Heartbeat-Funktion nutzen möchten (was dringend empfohlen wird),
    • sollten 01 als letztes Datenbyte des Befehls „LED ON“ senden, zum Beispiel: „03 0A 01 01 00 01 08“
    • sollten ebenfalls 01 als letztes Datenbyte des Befehls „TARE“ senden, zum Beispiel: „03 0F 01 00 00 01 0C”
    • Diese Varianten der Befehle LED EIN und TARE haben keine negativen Auswirkungen auf ältere Decent Scales, die nicht über die Heartbeat-Funktion verfügen.
  • DE1-Benutzer sollten auf die NIGHTLY de1app vom 11. April oder neuer aktualisieren.

Befehle, die HDS empfangen kann (v2.5.8)

03 0F TARE (mit Prüfsumme) (bitte lesen Sie den Hinweis oben bezüglich der Heartbeat-Funktion)

03 0A 00 Turn off oled

03 0A 01 Turn on oled (bitte lesen Sie den Hinweis oben bezüglich der Heartbeat-Funktion)

03 0A 02 Power off

03 0A 03 00 Exit power mode, normal oled brightness

03 0A 03 01 Enter power mode, lowest oled brightness

03 0B 00 Timer stop

03 0B 02 Timer reset

03 0B 03 Timer start

03 1A 00 Manual Calibration

03 1A 01 Smart Calibration

03 1B WiFi OTA

03 1D 00 Set sample to 1

03 1D 01 Set sample to 2

03 1D 02 Set sample to 4

03 1E 00 00 Hide Menu

03 1E 00 01 Show Menu

03 1E 01 00 Hide About info

03 1E 01 01 Show About info

03 1E 02 00 Hide debug info

03 1E 02 01 Show debug info

03 1F Reset

03 20 00 Disable Weight via USB

03 20 01 Enable Weight via USB

03 22 Send Battery voltage data once


Gewicht:

data = modelByte;

data = 0xCE;  // Type byte for weight stable

data = weightByte1;

data = weightByte2;

data = 0x00;

data = 0x00;

data = calculateXOR(data, 6);  // Last byte is XOR validation


Tastenereignis:

data = modelByte;

data = 0xAA;  // Type byte for weight stable

data = buttonNumber;//1 for O button, 2 for ▢ button

data = buttonShortPress;//1 for short press, 2 for long press

// Fill the rest with dummy data or real data as needed

data = 0x00;

data = 0x00;

data = calculateXOR(data, 6);  // Last byte is XOR validation


Ausschalten:

data = modelByte;

data = 0x2A;

data = buttonNumber;

data = buttonShortPress;

data = 0x00;

data = 0x00;

data = calculateXOR(data, 6);  // Last byte is XOR validation


Batteriespannung:

data = modelByte;

data = 0x22;

data = voltageByte1;

data = voltageByte2;

data = 0x00;

data = 0x00;

data = calculateXOR(data, 6);  // Last byte is XOR validation


Debugging über USB

Sie können ein USBC-Kabel anschließen und ein Programm wie Serial mit den Einstellungen 115200,8,N,1 verwenden, um die Waage im Betrieb zu beobachten. Dies macht das Debugging extrem einfach.


#Programmierer #API #Bluetooth #WLAN #USB


  • Dies ist eine Übersetzung von: Programmers guide to the Half Decent Scale


    Updated 2025/02/26