🌡️ Beehive IoT sensors
The Gratheon beehive scale is a low stand that goes under a hive. It has a single load cell and a battery-powered ESP32 pod that sits flush in its side. Every 10 minutes it measures hive weight, brood-nest temperature and hive humidity (from a probe pushed in through the entrance), ambient climate and battery health. No cables run outside the case, and nothing has to be unplugged for an inspection. It pairs with the Entrance Observer, which stands on its front rail and powers it. This section describes the Phase 3 production kit. The bench and field prototypes that led to it are summarised in Earlier prototypes.
3D model
Drag to orbit, point at a part to read what it does, and use Explode to open the scale layer by layer. With Entrance Observer puts the Observer on the front rail, and Stands on → Robot shows the same scale in the Robotic Beehive plinth. The model source is in beehive-sensors/model; see 3D model for how it is built.
Point at any part
Every part has a note: what it is, why it is there and how it is serviced.
What it measures
| Signal | Sensor | What the beekeeper learns |
|---|---|---|
| Hive weight | AP62AFB single-point load cell + HX711 | Nectar flow, the day a swarm leaves (a 1–3 kg drop in minutes), winter stores running low, robbing, theft or a hive knocked over. |
| Brood-nest temperature and hive humidity | SHT45 climate probe pushed in through the entrance | Brood rearing (steady 34–35 °C), a queenless or failing colony (temperature drifts), where the winter cluster sits; damp hives in winter and nectar drying in summer. |
| Ambient temperature and humidity | SHT40 in a louvred pocket in the base wall | Context for weight and brood readings: foraging weather, cold snaps, damp periods. |
| Device health | MAX17048 fuel gauge, Wi-Fi RSSI, reset reason | When to change batteries, and why data stopped arriving. |
Key figures
| Deck | 560 × 510 mm film-faced plywood with a thermo-pine skirt, fits a 506 × 450 mm (Estonian) hive with corner locators |
|---|---|
| Materials | Plywood and thermo-pine from a joinery shop, 3D-printed ASA parts, aluminium only for the load-cell brackets and the front rail |
| Height | 112 mm scale stack + 25 mm levelling feet |
| Capacity | 200 kg (350 kg cell option), overload stops under every deck corner |
| Controller | ESP32-S3-MINI-1 on a Gratheon carrier PCB, Wi-Fi + BLE, LoRa footprint |
| Power | 2–4 × 18650 in a swappable cartridge, USB-C charging on the pod face; 5 V from the Entrance Observer or the Robotic Beehive when fitted. No solar on the scale itself. |
| Battery life | about 9 months (2 cells) or 13 months (4 cells) with no charging at all, at 10-minute readings and 30-minute uploads, including self-discharge and a cold-winter derate |
| Pod | IP67 ASA, flush in the side of the base; 0.96″ OLED, sealed button, USB-C, battery cartridge |
| Accessory interface | Front rail + M12 8-pin connector for the Entrance Observer and the Robotic Beehive harness |
| Shipping | One flat box, about 600 × 550 × 160 mm and 14 kg, calibrated, with a captive transport lock |
| Mounting | 4 × M10 on a 400 × 300 mm pattern, the same as the Robotic Beehive deck pads |
| Target BOM | ≈ €130–225 at 100 units (see bill of materials) |
Details, reasoning and acceptance tests are in the product description. The dimensions of the AP62AFB cell and brackets come from the supplier listing and must be checked on the delivered part before the deck and base drawings are released.
Entrance Observer
The scale has no landing board and no solar panel of its own. Those belong to the Entrance Observer, which is designed to stand on the scale:
| Mount | The Observer frame stands on two printed risers hooked onto the scale's front rail, 2 mm clear of the hive. Its porch bridges over the deck. Frame, roof, landing board, bees and snow on it are carried by the scale base and never weighed. |
|---|---|
| One lead | A short M12 lead from the foot of the Observer's right upright to the scale's accessory connector, under the rail. |
| Power | The Observer (PoE, 12–24 V DC, or its 14 W solar roof with an optional external panel) supplies 5 V; the scale cells stay charged as a backup. |
| Data | The scale sends weight, temperatures and humidity over UART; the Observer uploads them with its bee counts and keeps the scale clock in sync. |
| Probe | The climate probe lead runs in its groove along the deck, under the porch floor, and enters the entrance under the porch roof, out of the camera view. |
Stand-alone, the scale runs about 13 months on a 4-cell cartridge; the cartridge swaps in seconds or charges over USB-C. Connector pinout, installation and the probe are described in the product description.
Robotic Beehive fit
The scale is designed as a module of the Robotic Beehive. Both models use the same axes and hive dimensions, and the interface is fixed:
| Interface | Stand-alone scale | In the Robotic Beehive |
|---|---|---|
| Footprint | Deck 560 × 510 mm, base 504 × 454 mm | Fits between the 22 mm corner posts (722 × 582 mm clear). |
| Mounting | 4 levelling feet, M10, 400 × 300 mm | Feet removed; the same four M10 holes bolt to the plinth deck cross members, where the rubber pads were. |
| Height | 112 mm stack | The hive deck rises 112 mm. In hive-model.js the hive base becomes plinth + 112 mm + bottom board; every lift height derives from it. |
| Accessory connector | Dust cap, or the Entrance Observer lead | The robot harness plugs into the same M12 connector: 5 V from the robot rail (roof panel + battery), UART and WAKE to the Jetson. |
| Electronics pod | Flush in the side bay | Stays in the bay and becomes the always-on supervisor, with LoRa fitted and the watchdog relay output. |
| Data | Weight, temperatures, humidity, battery to telemetry-api | The same, plus a cross-check: during a lift, the drop in scale weight must match what the fork load cells report. |
Production wiring
Everything inside the pod is on one carrier PCB. The pod mates with a dock connector in its bay; an internal harness in the base runs to the load cell, the ambient sensor, the sensor port and the accessory connector, so no cable is exposed outside the case. Click a wire or part for details; switch to 3D in the canvas corner.
Rendered with wire-diagram. The breadboard build from Phase 1 is on Lab bench wiring.
Pin map (carrier PCB rev A)
| ESP32-S3 pin | Function | Connected to | Notes |
|---|---|---|---|
| IO4 | HX711 DOUT | HX711 DT | Input; hold low while the sensor rail is off |
| IO5 | HX711 SCK | HX711 SCK | High for > 60 µs puts the HX711 in power-down |
| IO6 | 1-Wire | M12 pin 4, 4.7 kΩ to 3V3_SW | Reserved for accessory identification |
| IO7 | SENS_EN | TPS22917 ON | Powers the HX711, load-cell excitation, climate probe and OLED |
| IO8 / IO9 | I2C SDA / SCL | MAX17048 (0x36), SHT40 (0x44) | Always-on bus, 10 kΩ pull-ups |
| IO10 | CHG | BQ24074 CHG | Open drain, internal pull-up |
| IO11 | PGOOD | BQ24074 PGOOD | Low when USB-C, an Observer or the robot supplies 5 V |
| IO1 | Button | Sealed face button to GND | RTC GPIO: wakes the pod; short press shows stats, 5 s hold starts BLE setup |
| IO15 / IO16 | I2C 1 SDA / SCL | SHT45 climate probe (0x44) via the sensor port, 0.96″ SSD1306 OLED (0x3C) | Second I2C bus on the switched rail, so unpowered parts never load the always-on bus |
| IO18 | Accessory WAKE | M12 pin 7 | The Observer or the robot can wake the pod |
| IO19 / IO20 | USB D− / D+ | USB-C on the pod face | Flashing, service console |
| IO33–IO37, IO13, IO14, IO21 | LoRa (option) | SX1262 module | Not fitted on the Wi-Fi SKU |
| IO43 / IO44 | UART TX / RX | M12 pins 5 / 6 | Entrance Observer or the Robotic Beehive Jetson |
Firmware: the pin map differs from the Phase 1 DevKit bench. Firmware reads the hardware revision from its configuration and selects the map, so one code base serves the bench, the field prototype and the production pod.
Services
- https://github.com/Gratheon/beehive-sensors - firmware and the 3D model
- https://github.com/gratheon/telemetry-api - server-side ingestion and querying
- Telemetry API docs - service-owned OpenAPI documentation
flowchart LR
beehive-sensors[<a href="https://github.com/Gratheon/beehive-sensors">beehive-sensors</a>] -."send metrics".-> telemetry-api
telemetry-api --"store sensor time series" --> mysql[(<a href="https://github.com/Gratheon/mysql">mysql</a>)]
telemetry-api --"verify API tokens for REST calls"--> user-cycle[<a href="https://github.com/Gratheon/user-cycle">user-cycle</a>]
web-app[<a href="https://github.com/Gratheon/web-app">web-app</a>] --"render telemetry charts"--> graphql-router[<a href="https://github.com/Gratheon/graphql-router">graphql-router</a>]
graphql-router --"query metric history"--> telemetry-api