Using Firmata with an HX711 load cell amplifier

I would like to wire an HX711 load cell amplifier to an Arduino UNO and use Firmata to communicate readings to a python application running on a host computer.

Here is my arduino sketch:

#include <Firmata.h>

class HX711 {
  const uint8_t dt_pin;
  const uint8_t sck_pin;

  HX711(const uint8_t dt_pin, const uint8_t sck_pin);

  void begin();

  int32_t read();

HX711::HX711(uint8_t dt_pin, uint8_t sck_pin) : dt_pin(dt_pin), sck_pin(sck_pin) {

void HX711::begin() {
  pinMode(sck_pin, OUTPUT);
  pinMode(dt_pin, INPUT);
  digitalWrite(sck_pin, LOW);

int32_t HX711::read() {
  while (digitalRead(dt_pin) != LOW) yield();

  int32_t value = 0;
  value = (value << 8) + shiftIn(dt_pin, sck_pin, MSBFIRST);
  value = (value << 8) + shiftIn(dt_pin, sck_pin, MSBFIRST);
  value = (value << 8) + shiftIn(dt_pin, sck_pin, MSBFIRST);
  if(value & 0x00800000) value |= 0xFF000000;

  digitalWrite(sck_pin, HIGH);
  digitalWrite(sck_pin, LOW);

  return value;

HX711 hx711(6, 5);

void setup() {
  // put your setup code here, to run once:


int32_t value = 0;
byte data[5];

void loop() {
  // put your main code here, to run repeatedly:
  value =;
  data[1] = value & 0x7F;
  value >>= 7;
  data[2] = value & 0x7F;
  value >>= 7;
  data[3] = value & 0x7F;
  value >>= 7;
  data[4] = value & 0x7F;
  Firmata.sendSysex(EXTENDED_ANALOG, 5, data);

The next step is to write a python program that can read the values on the host computer. I’d like to use one of the standard python firmata libraries listed at:

I started with the official one named pyduino, but it hasn’t been updated in nearly a decade, and doesn’t appear to support the EXTENDED_ANALOG sysex command.

Does anyone know which of the other four libraries supports that command and maybe give me a short python script that prints the incoming values on the console?