Amazon Dash Smart Shelf

I just saw this on amazon, the Dash Smart Shelf.

It looks like the replacement idea for the dash button is a “smart shelf” that keeps track of the weight of a product to automatically re-order it when you’re getting low.
I have no intention of buying one for the intended use, but love the concept of having something like this that I could integrate into HA.

I think these were just released a few days ago so I doubt anyone has one yet, but if so, I wonder how hackable this is like the original dash button.

If anyone has ideas or knows more, please chime in!

2 Likes

looks interesting.

i wonder what the min/max weight limits are? I could see a use for these if they can be hacked. Too bad they are indoor use only tho.

Small: up to 30 lbs (13.6 kg) Medium: up to 60 lbs (27.2 kg) Large: up to 200 lbs (90.7 kg)

thanks I missed that info.

I just ordered one for the sole purpose to taking it apart to see what’s inside :D
I’ll update if there’s anything interesting inside or find a clear way to re-purpose for use in HA.

I can think of one good re-purpose If its hackable. 3D filament scale!

Maybe a mailbox scale as well /shrug

Hopefully You find a common esp32/8266 it in. /fingers-crossed

I have received it and cracked it open.

There’s some good news and bad news.

The bad news is that it doesnt use one of the common ESP chips (which I expected; amazon was bound to use a more custom SoC). It uses the MediaTek MT7697HN chip, which has an ARM core. This chip line, from the product literature is:

MT7697 is a highly integrated SoC which features a Cortex-M4 application processor, a low power 1x1 802.11b/g/n single-band Wi-Fi subsystem, a Bluetooth subsystem, and a Power Management Unit.
The application processor subsystem contains ARM Cortex-M4F MCU. It also includes many peripherals, including UART, I2C, SPI, I2S, PWM, IrDA, and auxiliary ADC. It also includes embedded SRAM/ROM.

Programming for this would be above my skill level if were even possible in the first place. (It may be?)

The good news is that it uses 4 standard load cells, and the molded area for their circuitboard looks big enough to fit an ESP8266 and a HX711 chip to read the load cells.

When I have time I’ll probably attempt replacing the board with an ESP and HX711 since I never intended to connect it to amazon anyway. For $15 you get a nice looking case and 4 load cells, so overall still not a bad deal.

Also slightly annoying, there are a whopping 20 screws holding it together. 8 of them are under the rubber feet pads, which involves removing them for access. Fortuinately they came off cleanly and can be reattached with double-sided tape.

Below is a photo album of the guts:

4 Likes

I agree with you, $15 is not a bad deal for a nice case and 4 load cells.Think I’ll get one to play with.

Thanks for the tare down review!

Edit: price is now $20 still not a bad deal.

I was able to successfully use the load cell that comes with the smart shelf and added Nodmuc and HX711 load amplifier and was able to get the device calibrated.

3 Likes

OK. You have my attention now! I have been wanting to build something like this for dog’s water bowl. I feel bad every time it is dry.

I just ordered a 7" x 7" one. I’m excited to try this with ESPHome.

1 Like

@macguy81 Any tips/info you can share on how you got your NodeMCU and HX711 working? Any particular code libraries you can recommend?

I assume you connected the 4 load cells to the HX711 using a full bridge approach like the following?

You can follow TheHookup (1) Measure Propane, CO2, Salt, and so much more with this DIY MQTT Weight Sensor using Tasmota - YouTube, only thing i had to do was connect wire opposite to what he says he would even explain that in the video

@Silicon_Avatar and @macguy81

I ordered the smallest size amazon dash smart shelf and tried to open it. It has 3 screws under each rubber feet pads. But it is still not opening. How do I open it without damaging? Where are the other screws ? Can you please help?

If the pic, there is a set of 4 wires that run to something that isnt a load cell… What do they run to?

Hi macguy81 - your post inspired me to follow in your footsteps. Instead of esp8266 I’ve used an esp32 but everything is roughly the same. Using bogde’s hx711 library.

The code is working alright but the hardware is what I’m having trouble with. The scale calibrated just fine, and showed stable readings when the screws were not re-installed and the scale surface was just sitting loosely on top of the load cells. I was worried what would happen when I re-installed the screws, and lo and behold I’m getting wildly inconsistent readings from the scale now that the screws are holding the scale surface down against the load cells (where it was just gravity holding the pad down before).

Did you experience this issue and find a solution? Or am I possibly doing something wrong like screwing them in too tightly. Mind you, I’ve replicated this problem with only the feet-pad screws as well as all the screws replaced. Again, the readings were stable and reliable with no screws.

Thanks in advance for your help.

UPDATE after some tinkering, it appears the issue might have been in my code. The set_scale() function takes a “conversion factor” that is used later to convert from the ADC’s raw unit of measurement to any chosen unit of weight. It is user-specified following the README instructions on calibration:

How to calibrate your load cell

  1. Call set_scale() with no parameter.

  2. Call tare() with no parameter.

  3. Place a known weight on the scale and call get_units(10).

  4. Divide the result in step 3 to your known weight. You should

    get about the parameter you need to pass to set_scale().

  5. Adjust the parameter in step 4 until you get an accurate reading.

The issue occurs only when I call set_scale() with no parameter, which results in the measurements jumping around as I described. Calling it with the default value of set_scale(2280.f) results in stable reliable readings. Given that the SCALE value is only the denominator of a simple function (unit = value/scale) why would NOT passing a value to that function result in inconsistent readings, provided scale doesn’t change between readings?

SOLVED - aka I’m bad at math. I nearly had it when I hit on the SCALE value as the problem. The inherent noise in the signal from the load cells was throwing me off. It was normal to have some jumping around, and downscaling the signal with SCALE would show almost no variance, provided a large enough value of SCALE is used. Going from a 6-digit number like 535,600 to a 1-decimal-place small number like 9.2 (the known weight in kg of my calibration object) showed only changes at the .1 kg level, which I can accept. Hope my misadventure in basic number usage helps someone down the road.

1 Like

I believe either the ESP8266 (arduino-style microcontroller + wifi functionality) if you’re talking about the four wires that run FROM the HX711 TO the ESP8266 outside the box. OR you’re talking about the four red wires FROM the load cells that run TO the HX711. These carry weak analog signals that the HX711 converts to stronger, readable digital signals that then the ESP8266 can read and send somewhere, like to your computer via USB/SERIAL or to a web-based database (like mySQL) via WiFi.

I am able to dismantle the dash shelf but not sure how to do listen into serial communication on the device.
anyone with experience please share.
My goal is to hack the firmware and have the device send comm to my endpoint

1 Like

Any success on this effort to hack the firmware? I have 3 scales and looking to re-flash the firmware as well.

I have a question about stock behavior of this device. I believe you can have it either order something automatically for you or just notify you via email.

Could you use the imap integration to watch for these emails? If you had multiple of these devices, could you use some information (ideally in the email subject line) to differentiate them from one another?

I’d like to get in control on the firmware changing the way these scales work without changing any of the hardware. I think we’d need to find someone skillful enough to flash the firmware on the chip to give us the missing functionality.

  1. Send scale serial id and weight to HA using some well known method like MQTT
  2. Tare functionality (manage a bin, bowl and other containers on the scale)
  3. Assign weight value against user specified UoM (eg. 25 grams = 1 bottle = 10% = etc.). Should be fairly easy to manage in HA
  4. Take control on data push presets (factory presets are push data out every 1h when USB powered or every 24h for data set collected every 1h when battery powered)
  5. Take control on the button in front of the scale