What's the bee-weather &
how-to correct particulate-matter readings

(in Grafana, of course)

Matthias Mehldau
The Hiveeyes Project

GrafanaConONline 2020
AmsterdamCyberspace, May, 14th20th 2020
If a dashboard fails, have a look at the static version of these slides (PDF).

part #1: what's the (bee-)weather?

meteogram: past & future

how are the bees?

how is the weather for bees?

part #2: particulate matter:
official vs. low-cost sensors

compare nearby stations

compensation at high humidities

part #1: what's the (bee-)weather?

meteograms (future only)

meteograms by NWS/weather.gov and wetterzentrale.de

my first meteogram (past only)

combining past & future

1st challenge: two station-lists, no common ID

solution: manually generate a combined-list (using lon/lat)
to access different station-IDs with consecutive variable-queries

"nesting" of dashboard templating variables

$COMMON_CDC_NAME (cdc_name)
↳ $COMMON_CDC_ID (cdc_sta_id) || ↳ $COMMON_MOSMIX_ID (mosmix_id)

2nd challenge: (no) two equals are the same

°C ≠ K -- but + 273.15 is

m/s ≠ km/h -- but × 3.6 is

sec/1hr ≠ min/10min -- but ÷ 3600 is

meteogram: past & future


how are the bees?

measured elements
& what they indicate

hive's weight

does nectar/pollen get harvested or eaten?

drying of nectar

in winter: will feed last until spring?

controlling population/size of hive


detection if honey flow stalls

planning of harvest

theft and other horseplays

scale and hive by karsten

latest swarm event

swarm at Cle21's hive on May, 6th 2020

weight of an untouched bee-hive

hive: Zentrum für Urbanistik, Berlin (no harvesting), 2019

temperatures & humidities

35±1°C inside hive? Brood: ✓! Queen: ✓!

mulitple sensors: position and size of brood-nest

planning of medical treatment

bee-weather: pre-flight conditions

as studied by german weather-service DWD

enough temperature, sun

not too much wind, rain

bee-hive & -weather dashboard

queen's egg laying rate

from temperature, according to Bretschko & Bergemann

research: thermal image

SVG-plugin by Marco Warm

coming up: sound

Fast Fourier transform (FFT) < 1kHz of hive-sound with heatmap-plugin, by Diren

part #2: particulate matter (PM)
comparing official and low-cost sensors

luftdaten.info (LDI) import & worldmap panel

official low-cost
e.g. Grimm EDM180 e.g. Nova SDS011
Photo official station: CC BY SA Dschwen

VMM/IRCELINE (Belgium): SOS Import

combined overview of both networks

compare view across both networks

bias of laser-scatter sensors for PM

vapour-particles are detected, too

assumption: values need compensation at high humidities

obviously underestimates, too

common low-cost humidity-sensors



humidity data comparsion: offical with low-cost


let's use official humidity data

using PostGIS for meta-data due to nearest-neighbour-search

SELECT station_id FROM ldi_network WHERE sensor_type_name = 'SDS011' ORDER BY geopoint <-> 'POINT($irceline_station_lon $irceline_station_lat)' LIMIT $limit;

actual compensation done in InfluxDB/flux-lang

import "math"

PM2.5 = from(bucket:"luftdaten_info")
  |> range(start:-7d)
  |> filter(fn: (r) =>
    r._measurement == "ldi_readings" and
    r._field == "pm-2-5" and
    r.sta_name == "$ldi_id"
  |> aggregateWindow(every: 1h, fn: mean)

humidity = from(bucket:"vmm")
  |> range(start:-7d)
  |> filter(fn: (r) =>
    r._measurement == "irceline_readings" and
    r._field == "humidity" and
    r.sta_name == "$irceline_id"
  |> aggregateWindow(every: 1h, fn: mean)

join(tables: {pm: PM2.5, hum: humidity}, on: ["_time"])
  |> map(fn: (r) => ({
    _time: r._time,
    _value:  r._value_pm / math.pow(x: 1.0-(r._value_hum*0.01), y: -0.3),
    _field: "PM2.5 (luftdaten.info), humidity-corrected with Hänel-formula"

expert-view with humidty-compensation

ideas & wishes


The Hiveeyes Project

Matthias Mehldau


image credits
  • https://unsplash.com/photos/jv9ATyWT0Bw
  • https://www.pexels.com/de-de/foto/bienenwabe-biene-gestalten-bienen-56876/
  • https://unsplash.com/photos/c3RWaj8L3M8