# Measuring the weight of a beehive

Hi All,

Could you please share links to your projects, as I am very interesting to monitor my beehives during this winter ?

Best regards

Alain

Hi Alain,
In winter, if the bees go into hibernation and form a winter cluster, you will find that each hive looses weight at a constant rate. The rate likely depends on the size of the bee colony; it should be roughly proportional to the number of bees. Or, blame my intuition, maybe proportional to the cubic root of the number of bees, since they form a sphere?

A flat-lining behive (rate of weight loss = 0) means the colony is dead.

Snow will interfere with your readings as in this Danish study, where readings with snow cover were left out [Dropbox - Error]

The figure shows weight drop in two consecutive winters, together with the loss rate (g/day) equal to the slope of each line. There is one line for each hive in both winters.

• Niels.

In this posting Lars showed a photo with pieces of alloy to mount a load cell.

I constructed a low cost variant of a bee scale. The load cell is mounted between two alloy profiles and distance plates. The holes must be drilled very accurate so I use a CNC for this:

You can find more photos under: https://www.facebook.com/media/set/...

Hi Lars, after finishing my prototype I ask myself why your prototype http://bildr.no/view/dUJJYWRC or http://forum.arduino.cc/index.php?topic=113534.msg1473176#msg1473176 looks like it looks. You do not use a whole L-profile at the bottom. You have some gaps right and left on the vertical flank. Is this to mount it on a subbase? How is the load cell mounted on the lower L-profile?

Do you mount the scale on the front or back of the hive? Or left/right? Front vs. back has the disadvantage that weight is not divided equally in the hive. With honey in the back you have always higher load on the back side. If you put it right/left I think this is not so a problem. But mounting on a shorter side is more easy and more practically.

Digging this guy up from the dead.

Where is everyone on this project?

Gilligan:
Where is everyone on this project?

I have different prototypes running:

• Weight Platform Prototype I with Film Coated Plywood
• Weight Platform Prototype II low cost module, weights only one side of the hive
• Shields for Seeeduino Stalker (3.3 V) or Arduino Pro (3.3 V without RTC) and Yun / Uno (5 V)
• a prototype with an ESP8266 on a breadboard
• and also a prototype version with an Arduion Pro Mini and GSM

With the Seeduino Stalker and Arduino Pro as node I can use radio (RFM69) for data transfer, gateway is an Arduino Yun. I used this lib for RFM69: GitHub - LowPowerLab/RFM69: RFM69 library for RFM69W, RFM69HW, RFM69CW, RFM69HCW (semtech SX1231, SX1231H)

The ESP uses Wifi and I can send the datasets via REST or via MQTT. Tested with the libs for Adafruit IO: GitHub - adafruit/Adafruit_MQTT_Library: Arduino library for MQTT support and GitHub - adafruit/Adafruit_IO_Arduino: Arduino library to access Adafruit IO from WiFi, cellular, and ethernet modules.

I have also a Seeduino Stalker version with a GPRSbee, this sends the data via GSM/GPRS to a PHP script. Data visualization is done by Dygraphs http://dygraphs.com/ There is alos a GPRSbee lib for MQTT so switching from HTTP to MQTT should be possible easily (not tested yet).

We have also a Berlin (Germany) based group that develops a much more elaborated backend for bee monitoring purpose under the project name hiveeyes
It is based on BERadio, Kotori and Grafana mainly.

HI Clemens. Will you be making you prototypes available to replicate? - I am trying a similar project. Just wanting to be able to able to send weight via gsm and have it plotted on a graph. I will probably have 12 scales in different regions in NZ.
Thanks!

Yes, I will publish code and constructions files. I am in a beta / alpha phase so not all is perfect, e.g. I have an design error in the PCB file, so I have to connect two pins to the Stalker directly and not over the shield. But one prototype with 2 DHT22 or 33 sensors, 5 DS18B20 and load cell is sending data every 20 minutes since over four weeks without any problem from my balcony. We set up an other installation some days ago with reduced sensors--only humidity/temperature outside and the weight--and this is running also.

You can find the graph of a test installation under
http://open-hive.org/prototype-bee-scale/prototype-brandenburg.html

It is an interactive graph. You can select an area with the mouse--the timeline or the value range--so you can zoom in. With a double click you got back to all datapoints: Under the graph there are check boxes for every data series. If one chosen, for example only the weight and all other off, the script scales automatically the graphic so that the current values are populate the full scale range.

I use dygraphs http://dygraphs.com for visualization, a JavaScript library that deals with many data points. It runs as browser side JS, not on the server Thus, the first call may take more time when thousands records are loaded but if you then zoom in or out is the super fast.

The raw data, which the script directly processes, are simple comma-delimited values on the server:

``````Date/Time,Weight,Outside Temperature,Outside Humidity,Voltage
2016/06/15 20:34:38,  71.892, 17.3, 99.9, 4.08
2016/06/15 21:34:38,  71.810, 17.2, 99.9, 4.07
2016/06/15 22:34:38,  71.692, 16.3, 99.9, 4.07
2016/06/15 23:34:38,  71.614, 16.0, 99.9, 4.07
2016/06/16 01:34:38,  71.525, 15.4, 99.9, 4.06
2016/06/16 02:34:38,  71.470, 15.0, 99.9, 4.06
2016/06/16 03:34:38,  71.405, 14.0, 99.9, 4.06
2016/06/16 04:34:38,  71.363, 13.5, 99.9, 4.06
2016/06/16 05:34:38,  71.329, 13.3, 99.9, 4.05
2016/06/16 06:34:38,  71.378, 14.6, 99.9, 4.06
2016/06/16 07:34:38,  71.439, 22.0, 78.6, 4.08
2016/06/16 08:34:38,  71.496, 21.6, 71.1, 4.11
2016/06/16 09:34:38,  71.339, 21.9, 76.0, 4.14
2016/06/16 10:34:38,  71.216, 21.4, 73.9, 4.17
2016/06/16 11:34:38,  71.252, 22.0, 75.0, 4.18
2016/06/16 12:34:38,  71.245, 22.5, 64.6, 4.18
``````

You can see on the first photo the complete bee monitoring system:

• The main electronics in the middle.
• Right in blue, a drilled cup with a DHT33 / combined humidity/temperature sensor for outdoors.
• Below are the load cell for a unilateral weight with aluminum L-profiles.
• On top 5 DS18B20 temperature sensors (can be more also) for the brood nest area.
• Left side in curlers (against cementing) a DHT33 for indoor use.

All sensors are connected with round cables, which can be good passed through the screwable, waterproof cable glands on the case. An exception is the temperature array for inside (on top of the photo). There is a small board as flat cable connector. With this flat cable it is very easy to connect a pin header as as branch for the various temperature sensors between the combs.

The electronic case with a small solar cell under the transparent acrylic cover. The box is waterproof. The screws started after a wet day to rust. The box in the photo is on the balcony for about a month.

Inside the box it's quite busy:

• At the bottom you can see the Seeeduino Stalker (red board), an Arduino derivative with additional clock (RTC), a charging circuit for solar panel and Lipo and a bee socket. "Bee socket" has nothing to do with bees ... haha! On the bee socket, the GSM / GPRS module sits, with "SIM800" print.
• Right (white) is the self-designed shield with the load cells IC, some screw terminals, resistors, caps. Currently we have connections for a load cell and up to 3 DHTxx or DS18B20 sensors.
• The small printed antenna for the modem is between board and housing, a black cable goes (almost invisible in the pic) from the modem to the antenna
• The rechargeable battery, a Lipo, is under the Stalker and and so not visible.

Soem close ups Lipo, printed antenna, DHT on a smal breakout so that it fits in a curler, same DHT covered by a drilled Ikea cup for weather protection:

And I thought we were high tech when we would go out and lift each side of our hives with a fishing scale to see what they weighed ! The one thing we really had to watch for was that they had enough going into winter and in the spring, that they didn't go empty (the Seattle area is notorious for 2-3 weeks of nice weather in April which gets them all cranked up, the queen laying then 2-3 weeks of cold/rain/snow). You could lose a hive easily in late spring when that happened (cold / rain was also typically when your new queens arrived in the mail with no way to put them in the hives )

gpsmikey:
[...] and lift each side of our hives with a fishing scale to see what they weighed !

There are a lot of commercial scales out that count on a double "H" as scale frame. The load cell is mounted on the "-" of the "H", see e.g. Stockwaagen | BeeWatch . I've seen also some DIY prototypes of this scale type. Most wiggly but I don't know is it due to the concept at all or is it the amateur welding skills or the weak and too thin material.

Nevertheless I decided to count on a single side weighting process. Construction is easy, hive stands still stable, and of cause it is cheaper than a full-blown H frame.

I did some control measurement (Herold Magazin with Zander frames similar to a Langstroth Hive) last autumn--I did not write numbers down--but I had maximum 2 kg difference between the front and the back side of a hive.

What are your experiences, do you think a single side measurement (on the back) is sufficient? I asked in a German beekeeper discussion forum and most voted for a compete weighting procedure.

We were not that concerned with the accuracy as we were with making sure they were at least 80 pounds or more going into winter (pref. over 100) and they did not drop below about 35-40 in the spring to avoid them starving out. It doesn't surprise me you get different readings depending on the side - I would think the side with the most sun would be the heaviest, but I never actually checked them that way (and this was before all the problems with colony collapse we are seeing these days).

Hi,

It's my first post but I have been watching the progress of Lars project.
So let's go:

I have a similar situation with the beehives.
I want to monitor the weight of a freezer full of product to see if it is getting empty (when it becomes light), to send more products without the need to send someone to check.

This could also serve to warn about an interruption in the supply of freezer energy, so I could check what happened before the melting of the products.

I was thinking of installing the weight ranges between the wheels and the base of the freezer and a system that would send daily (or on demand) weight measurements by sms.
Energy would be no problem because the system could be connected to power supply of freezer.

Is there any practical and feasible way to test this idea?

I appreciate any consideration.

One problem with strain gauge between wheel and freezer is that when you move it a little bump on the floor will have a stress/impact far greater than normal load. Strain gauges usually resist 150-200% stress of their nominal measuring force limit, but more than that will very likely affect their readings.
I would use a fixed weight-measuring frame with screws to lift the fridge a few mm once it is in its place.

Very good idea Blimpyway.
Can you tell me how can I connect the weight scale sensor with a gsm data logger (data logger model/ what I have to check to ensure the weight sensor compatibility)?

I'm not sure I understand the question.

You should look into tutorials, examples about how to:

• Connect HX711 (strain gauge sensor) to arduino.
• Connect arduino to a GSM module or modem to send SMS-es

Combine the two in a arduino program that reads weight and sends weight data via SMS

If there-s any chance the freezer be located in a WiFi coverage area, I would use Wifi instead of GSM.

Clemens is there a chance that you can find time to make af software version for Stalker V3.1 (DS1337S RTC and GPSBee ) of yours OpenHive ?

Hello Clemens and other guys,

Clemens, I have some questions for you if you can answer please.

I am working on Arduino based bee scale project and I am experiencing some problems with ADC and GSM module interference.
I am using shielded HX711 breakout board and SIM800L module. Everything works ok till SIM800L module starts to communicates with network. When GSM module receives SMS or voice call ADC data become corrupt so weight is not correct. All is powered from 3.7V 4000mAh Li battery. I've tried to power GSM module from other battery but problem still persist. It looks like interference comes from RF side.
I have made dual side PCB (photo attached) with separate ground planes and decoupling for analog, digital and GSM sections but again problem persist. ADC reading is averaged in firmware but it does not helped a lot.
I do not know what else to try.

Sorry for my bad English. :-[

Here is picture...

Bole dont you think its because of the unshielded wire from your loadcell ? The wire should be as short as possible, othervise the vill act as "a pickup" for any noise (and the GSM-signal).

Sorry for my bad English. :-[

Hi all.
Since I last posted I have still been working on my scales but sporadically. I have working code - and it was working well, I thought I had it at the point where I just needed to start tidying it (understatement). I had the scales running for about 1 week continuously, then was out of the country for 3 weeks. On returning I set it up again and without changing the code it returned an error when trying to upload the scale data. I am not too sure why but my best guess is that when I send the USSD to retrieve balance info, the returned message is overflowing the buffer and causing the AT+CIPSEND to fail. I assume that when it was working the message returned from the network provide was less than the 64 bytes and so the error was not occurring...would this make sense as a reason for the error to occur? The reason I know retrieving the balance is what causes the failure is because the upload works without error when I temporarily remove the balance function.

The flow of the code is:
Normal setup
Power SIM900 and connect network
Query current date and time and send to RTC
Set interrupt alarm time depending on current time

Get weight
Get Balance
Get SIM900 IMEI
Power down
Sleep

wait for interrupt

Int
Serial output:

``````~⸮⸮⸮⸮⸮
RDY

+CFUN: 1

*PSUTTAT+CGATT=1

OK
AT+CSTT="internet"

OK
AT+CIICR

OK
AT+CIFSR

100.104.40.165
AT+CIPSPRT=1

OK
AT+CIPQSEND=0

OK
AT+CLTS=1

OK
AT+CCLK?

+CCLK: "17/06/26,10:04:29+48"

OK
RTC Time: 2000/1/1 0:1:7
Old datetime:  2000/1/1 0:1:8
New datetime:  2017/6/26 10:4:28
A1 Enabled for 4 PM
A1 Enabled for 4 PM in Setup
AT+CIPSHUT

SHUT OK

NORMAL POWER DOWN
<⸮⸮⸮⸮
RDY

+CFUN: 1

*PSUTTZ: 2017, 6, 25,AT+CGATT=1

OK
AT+CSTT="internet"

OK
AT+CIICR

OK
AT+CIFSR

100.102.156.30
AT+CIPSPRT=1

OK
AT+CIPQSEND=0

OK
Weighing Mode Active
ForceValueRaw>
521
grams>
71
8000
ValueA>
490
ValueB>
3974
PC>
0
AT+CUSD=1,"*100*1#,15"

OK
check balance string:
20
Second Pass
013949000670615
15
AT+CIPSTART="tcp","sxxxxs.xxxxxxxxxxxxx.co.nz","80"

OK
AT+CIPSEND

ERROR
GET http://sxxxxs.xxxxxxxxxxxxx.co.nz/pass-data?scale_id=013949000670615&weight=71&bal=20 HTTP/1.0

ERROR
AT+CIPCLOSE

CLOSE OK
AT+CIPSHUT

SHUT OK

NORMAL POWER DOWN
A1 Enabled in Loop
Going to Sleep Now
``````

My reponse code (which I think could use significant improvement:

``````void Response()
{
delay(100);
while(!GPRS.available());
if(GPRS.available()){
while(GPRS.available()){
}
}
}
``````

and the balance query code:

``````void Balance(){
GPRS.println("AT+CUSD=1,\"*100*1#,15\"\r");
Response();
{
while(!GPRS.available());
if(GPRS.available()>0){
while(GPRS.available()){

int startPos = (balance_content.indexOf("\$"));

do
{
if (isdigit(balance_content.charAt(startPos)))
break;
}
while (++startPos < balance_content.length());

// Then find the index of the last digit
int endPos = startPos;
do
{
if (isWhitespace(balance_content.charAt(endPos)))
break;
}
while (++endPos < balance_content.length());

bal = balance_content.substring(startPos, endPos);
bal.trim();
Serial.println(bal);
}
}

GetID();
}
}
``````

Just to emphasise, the code worked well previously and the only thing I can think changed is the Network response to balance inquiry. What I don't understand is why the CIPSEND fails and I can only assume that when the buffer overflowed it times out the SIM900 "session". I am not a proficient coder. I have written all the code with a lot of trial and error, which I know people wont appreciate - but ultimately I am a beekeeper and truly understanding this language has been beyond me.