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[0] = modelByte;

    data[1] = 0xCE;  // Type byte for weight stable

    data[2] = weightByte1;

    data[3] = weightByte2;

    data[4] = 0x00;

    data[5] = 0x00;

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


    Tastenereignis:

    data[0] = modelByte;

    data[1] = 0xAA;  // Type byte for weight stable

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

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

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

    data[4] = 0x00;

    data[5] = 0x00;

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


    Ausschalten:

    data[0] = modelByte;

    data[1] = 0x2A;

    data[2] = buttonNumber;

    data[3] = buttonShortPress;

    data[4] = 0x00;

    data[5] = 0x00;

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


    Batteriespannung:

    data[0] = modelByte;

    data[1] = 0x22;

    data[2] = voltageByte1;

    data[3] = voltageByte2;

    data[4] = 0x00;

    data[5] = 0x00;

    data[6] = 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.

    HDS serial


    #Programmierer #API #Bluetooth #WLAN #USB



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


    mirjam updated 2025/02/26