I built four bee-hive scales according to the great instructions of the Beelogger project.
As the HX711-breakout-boards are not suitable for setups with 3.3V, I’m trying it with a NAU7802-breakout-board now.
It doesn’t have problems when being driven with 3.3V and should be more precise than the HX711.
As an additional feature it has an internal temperature sensor which could help compensating the temperature drift, sadly its esphome-component doesn’t support it (yet).
According to the documentation it has an external calibration mode that may only be used without load, so it cannot be used for our use case.
It also has an internal calibration mechanism that can be used with load, it somehow uses the internal temperature sensors’ values, sadly the datasheet doesn’t say anything about how it really works.
The result of the internal calibration is getting read back by the esphome-component as it just sets the offset and the gain.
The breakout-board I bought only exposes one ADC channel, Adafruit has an updated version since June 23rd, 2025 that exposes both channels, but sadly I couldn’t find any way to get it in Europe yet.
It’s also not supported by the esphome-component (yet).
I connected it like this:

The code for the test setup:
i2c:
sda: GPIO4
scl: GPIO5
frequency: 400khz
scan: true
sensor:
- platform: nau7802
name: "NAU7802 Weight"
gain: 128
ldo_voltage: "3.0V"
update_interval: ${update_interval}
filters:
- calibrate_linear:
datapoints:
# measuring at 25 °C
- 64429 -> 0
- 166362 -> 4.58 # super with empty frames + tension belt
- 392628 -> 14.58 # super with empty frames + tension belt + 10kg
...
button:
- platform: template
name: "Toggle Internal Calibration"
on_press:
- logger.log: "Internal calibration toggled"
- nau7802.calibrate_internal_offset
This code exposes the internal calibration via a button. The documentation says the internal calibration should be called on temperature or parameter changes, this is an open TODO as well as compensating the temperature drift.
Additional new TODOs:
- Support for the internal temperature sensor for the NAU7802-eshome-component
- Support for channel B for the NAU7802-esphome-component
- A proper state machine for the NAU7802-esphome-component (similar to the suggestion to the HX711-component in this pull-request)
Leave a Reply