Engineered living habitat

System changelog

A public build log for the BioMekka controller: firmware evolution, weather systems, dashboard work and the occasional unnecessary amount of engineering for a glass box full of plants.

Latest build 1.8.49 43 published entries
1.8.49Added persistent habitat controls to the local controller Settings page.Storm system
BioMekka 1.8.49

- Added persistent habitat controls to the local controller Settings page.
- Editable day and night temperature targets.
- Editable mist ON/OFF humidity thresholds.
- Editable spray interval and duration.
- Editable automatic storm chance denominator and day/night humidity arming thresholds.
- Added controller-side validation and safe limits for every editable value.
- Added Restore habitat defaults action.
- Habitat changes apply immediately and are stored separately from credentials in ESP32 Preferences/NVS.
Download original text file ↓
1.8.48Removes personal Wi-Fi, OTA and MQTT credentials from the firmware source.Dashboard
BIOMEKKA 1.8.48 SECRETLESS PORTAL

- Removes personal Wi-Fi, OTA and MQTT credentials from the firmware source.
- Loads credentials from ESP32 NVS Preferences.
- Adds a BioMekka Setup access point when no Wi-Fi credentials exist.
- Enables the setup access point after 90 seconds if the saved network cannot be reached.
- Adds captive-portal routes, Wi-Fi scanning and persistent credential saving.
- Adds /settings for changing Wi-Fi, MQTT and controller/OTA credentials.
- Protects /settings on the normal LAN using HTTP Basic auth with the controller/OTA password.
- Keeps /status, /history, telemetry, MQTT, habitat control and OTA behaviour.

Passwords are not shown back in the web page or /status.

Compile fix:
- Shortened the C++ raw-string delimiter in controller_settings_html.h to stay within the 16-character language limit.
Download original text file ↓
1.8.46Changed the local mDNS and OTA hostname from *** to ***.Dashboard
BioMekka 1.8.46 Controller Portal
================================

- Changed the local mDNS and OTA hostname from *** to ***.
- Replaced the obsolete embedded public dashboard with a lightweight local controller portal.
- Kept /status and /history unchanged for existing integrations.
- Added Wi-Fi SSID and controller IP address to /status.
- Added visible placeholders for future first-boot Wi-Fi provisioning and validated habitat settings.
- OTA password remains unchanged.

This release does not yet change Wi-Fi credential storage or create a setup access point.
Download original text file ↓
1.8.45Added password-protected native ArduinoOTA flashing over the local Wi-Fi network.Firmware
BIOMEKKA 1.8.45 OTA

- Added password-protected native ArduinoOTA flashing over the local Wi-Fi network.
- OTA hostname: ***
- Added OTA ready/updating/hostname fields to /status JSON.
- OTA start forces rain, mist, spray, trickle and both heaters OFF.
- Main, small and demist fans remain running in a safe airflow state during upload.
- Successful OTA upload reboots normally; failed OTA resumes habitat control.
- Existing USB flashing remains available as the recovery route.
Download original text file ↓
1.8.44Removed the broken dashboard heatwave JSON additions entirely.Dashboard
Biomekka 1.8.44 - HEATWAVE FASTFIX

Fast fix after 1.8.43 compile failure:
- Removed the broken dashboard heatwave JSON additions entirely.
- No new Grafana payload fields are added.
- Removed heatwave state-change telemetry event posts so Grafana is not spammed by mode changes.
- Trickle still runs normal 5s/3min outside heatwave.
- Heatwave cooling still runs 10s trickle, then 10s mister, then 40s airflow-only each 60s above 28.0C.
- Trickle ON and OFF are now reasserted to Goblin every 0.5s during their respective states.
- Full Goblin output sync interval tightened from 5s to 1s.
Download original text file ↓
1.8.43Keeps 1.8.42 heatwave fan ramp, heater lockout, and LED/COB blackout above 28.0C.Storm system
Biomekka 1.8.43 - HEATWAVE TRICKLE+MIST

Emergency heatwave cooling update:
- Keeps 1.8.42 heatwave fan ramp, heater lockout, and LED/COB blackout above 28.0C.
- Adds an aggressive evaporative cooling stage from 28.0C with 27.5C release hysteresis.
- Heatwave cooling cycle is 60 seconds total:
  - trickle ON for 10 seconds
  - mist ON for 10 seconds immediately after trickle stops
  - 40 seconds clear-air/exhaust time
- Normal trickle remains 5 seconds every 3 minutes when not in heatwave cooling mode.
- Mist pulse is skipped/stopped if humidity is 92%+ or if door/spray/rain/storm conflicts appear.
- No new Grafana fields are used for this mode.
Download original text file ↓
1.8.42Added emergency heatwave fan mode.Storm system
Biomekka 1.8.42 - Heatwave mode

Base: 1.8.41 TRICKLE 5S REASSERT.

Changes:
- Added emergency heatwave fan mode.
- Heatwave fan mode turns on at 27.0C air/water and releases only after air <= 26.5C and both water probes < 27.0C.
- Main fan is treated as circulation and ramps 60/80/100%.
- Small fan is treated as exhaust and ramps 35/60/85/100%.
- Front glass/demist fan is pushed to 90/95/100% during heatwave.
- Heatwave fan mode overrides mist wind lock and pre-storm fan behaviour because heat protection wins.
- Ceramic and back heaters are forced OFF while heatwave fan mode is active.
- Addressable LEDs and COB are blacked out from 28.0C worst air/water temp, with release at 27.5C.
- Added heatwave flags to dashboard JSON and serial status block.

Unchanged:
- Trickle schedule remains 5s ON every 3min with ON reassert.
- Goblin pin mapping unchanged.
- Storm timing/eligibility unchanged.
- Sensor addresses unchanged.
Download original text file ↓
1.8.41Kept trickle at 5 seconds ON every 3 minutes.Storm system
Biomekka 1.8.41 - Trickle 5s relay reassert

Changed:
- Kept trickle at 5 seconds ON every 3 minutes.
- Reduced trickle retry throttle from 5 seconds to 1 second.
- Added 1-second TRICKLE:ON reasserts during the 5-second ON window.
- This reduces missed Goblin/I2C parse/relay command events where the ESP logs the cycle but the physical relay does not move.

Unchanged:
- Main ESP still owns the schedule.
- Goblin still only switches D10 from TRICKLE:ON / TRICKLE:OFF.
- No humidity, storm, quiet-mode, door-open, lighting, rain, mist, spray, or manual-output lockouts.
Download original text file ↓
1.8.40Changed ESP-owned trickle bar pulse from 30 seconds to 5 seconds.Storm system
Biomekka 1.8.40 - Trickle 5s hard schedule

Changes:
- Changed ESP-owned trickle bar pulse from 30 seconds to 5 seconds.
- Kept the existing 3 minute cycle interval unchanged.
- Kept trickle scheduling unconditional: no humidity, storm, quiet-mode, door-open, lighting, rain, mist, spray, or manual-output lockouts can block it.
- Updated build/version strings, boot log, serial help, and auto-stop reason text so diagnostics match the actual behaviour.

Notes:
- Goblin firmware must still support TRICKLE:ON and TRICKLE:OFF on D10.
- Main ESP remains the schedule owner. Goblin only switches the relay.
Download original text file ↓
1.8.39Added ESP-owned trickle bar scheduler.Storm system
Biomekka 1.8.39 - Trickle hard schedule

Base: uploaded Biomekka 1.8.36 FIXED_RANDOM_STORM_1_LED_AUDIT.

Changes:
- Added ESP-owned trickle bar scheduler.
- ESP sends Goblin TRICKLE:ON for 30 seconds every 3 minutes.
- Scheduler runs unconditionally at the very start of loop().
- No humidity, storm, quiet-mode, door-open, lighting, rain, mist, spray, or manual-output lockouts can block trickle scheduling.
- Added serial commands: trickle, trickle on, trickle off, trickle status.
- syncGoblinState() now also re-sends the current TRICKLE state so Goblin relay state is refreshed during normal 5s syncs.

Notes:
- Goblin firmware must already support TRICKLE:ON and TRICKLE:OFF on D10.
- This patch does not change pin assignments, storm logic, lighting colours, cloud layer code, telemetry schema, dashboard layout, heaters, mist, rain, spray, or fan control.
Download original text file ↓
1.8.36Reverted the storm lottery target back to fixed roll 1.Storm system
Biomekka 1.8.36

Storm lottery rollback + LED flash audit.

Changed:
- Reverted the storm lottery target back to fixed roll 1.
- The chance roll still rolls against STORM_CHANCE_DENOM, but only roll 1 can trigger an automatic storm.
- /status still exposes storm_target_roll for dashboard compatibility; it now remains 1.
- Updated firmware version strings to 1.8.36.

Checked:
- Addressable LED rendering only calls FastLED.show() from the lighting module after a full buffer render/clear.
- Normal day/night lighting has moving cloud bands only; no random twinkle/star/sparkle effect is present.
- The intentional firmware-driven flash sources are storm lightning and pre-storm distant lightning.
- Row/index helpers clamp positions and the configured LED count remains 183.

No changes:
- No pins, relays, Goblin commands, sensors, MQTT topics, telemetry schema, dashboard layout, normal lighting colours, storm duration, pre-storm timing, Agent DVR, camera/proxy, SSH/Ubuntu/Nginx, or HA entity changes.
Download original text file ↓
1.8.35Added prestorm off / prestorm stop to cancel a running pre-storm build-up.Storm system
Biomekka 1.8.35

Serial storm control patch.

Changed:
- Added prestorm off / prestorm stop to cancel a running pre-storm build-up.
- storm off now also has storm stop as an alias.
- storm off / storm stop cancels pre-storm and active full storm.
- Added manual timed pre-storm command:
  prestorm <pre_seconds> <storm_seconds>
- Manual timed pre-storm uses the same pre_seconds value for post-storm recovery.
- Existing prestorm command still uses random 3-15 minute build-up and matching recovery.
- Existing storm <seconds> command still starts a full storm immediately.

Examples:
- prestorm 60 180 = 60s pre-storm, 180s storm, 60s recovery.
- prestorm off = cancel only pre-storm build-up.
- storm off = cancel pre-storm or active full storm.

No pin, relay, Goblin command, sensor, MQTT topic, dashboard layout, normal lighting colour, fog duty, humidity threshold, storm lottery, Agent DVR URL, SSH/Ubuntu/Nginx, or Home Assistant discovery changes.
Download original text file ↓
1.8.34Pre-storm build-up duration is now randomly selected from 3 to 15 minutes.Storm system
BioMekka 1.8.34
================

Storm atmosphere update based on 1.8.33.

Changed
-------
- Pre-storm build-up duration is now randomly selected from 3 to 15 minutes.
- The matching post-storm lighting recovery uses the exact same randomly selected duration.
- Full storm duration remains independently random from 3 to 15 minutes for automatic storms.
- Pre-storm fog changed from 20s ON / 40s OFF to 175s ON / 5s OFF while below the existing humidity target. This is deliberately nearly 3x the former fog duty cycle.
- Existing pre-storm humidity guards remain unchanged: target 78% RH and hard stop 82% RH.
- During pre-storm only, the main circulation fan now rises linearly from 10% to 55%.
- The small exhaust fan and demist fan remain OFF during pre-storm so the added fog is moved around the habitat rather than extracted.
- Dashboard JSON now exposes storm_transition_ms and prestorm_wind_pct.

Not changed
-----------
- Pins, relays, Goblin commands, MQTT topics, normal humidity control, storm rain timings, storm chance, full-storm wind randomness, normal lighting colours, quiet-night ban, dashboard layout, solar schedule, thermal controller, Agent DVR trigger timing, or networking.
Download original text file ↓
1.8.33Added Open Graph/Twitter/canonical metadata to the ESP dashboard HTML for nicer link previews when biomekka.co.uk is shared.Storm system
Biomekka 1.8.33

Dashboard/Open Graph and storm lottery target update.

Changed:
- Added Open Graph/Twitter/canonical metadata to the ESP dashboard HTML for nicer link previews when biomekka.co.uk is shared.
- Storm lottery target is no longer fixed to 1.
- A fresh storm target roll is selected every time the paludarium becomes storm eligible after the dry/humidity arm period.
- Storm chance hit logic now triggers when the roll matches the current target.
- /status now exposes storm_target_roll for the dashboard.
- Dashboard storm dice text now displays the current target number instead of hard-coded target 1/Nat 1 wording.

Not changed:
- No pin, relay, Goblin command, sensor, MQTT topic, telemetry endpoint, lighting colour, storm duration, pre-storm, quiet mode, camera/proxy, YouTube, or Nginx changes.
Download original text file ↓
1.8.32Replaced inline SVG header mark with externally hosted official Biomekka logo from https://biomekka.co.uk/assets/biomekka-logo.png.Storm system
Biomekka 1.8.32

Dashboard-only asset/live-stream update.

Changed:
- Replaced inline SVG header mark with externally hosted official Biomekka logo from https://biomekka.co.uk/assets/biomekka-logo.png.
- Replaced separate go2rtc top/bottom dashboard camera iframes with a single embedded Ubuntu-hosted live page at https://biomekka.co.uk/live/.
- Reworked storm dice styling to use externally hosted Biomekka D20 image from https://biomekka.co.uk/assets/biomekka-d20.png while preserving existing dice roll number/animation logic.

Not changed:
- No pin, relay, Goblin, sensor, MQTT, telemetry, storm timing, lighting phase, temperature control, humidity control, persistence, Agent DVR, or safety logic changes.
Download original text file ↓
1.8.30 · Quiet Night PatchQuiet mode no longer dims the whole lighting system to 10%.Storm system
Biomekka 1.8.30 quiet-night patch

Changed:
- Quiet mode no longer dims the whole lighting system to 10%.
- When quiet mode is ON and local time is 20:00-10:00, RGB LEDs are forced black.
- During that same quiet-night window, COB target PWM is forced to 0.
- Normal lighting phases, fades, transitions, schedule maths, and state updates still continue underneath the blackout.
- Quiet mode during daytime no longer blocks normal lighting or storm lottery behaviour.
- Storms/pre-storms are blocked during quiet-night mode.
- Any storm already running when quiet-night mode becomes active is stopped.
- HA storm override is rejected during quiet-night mode.
- Serial storm/prestorm commands are rejected during quiet-night mode.
- Door-open COB override is also forced to 0 during quiet-night mode.
- Added dashboard JSON field: quiet_night_active.

Not changed:
- No pin changes.
- No Goblin command changes.
- No sensor changes.
- No normal day/night colour tuning changes.
- No humidity, fan, heater, spray, mist, rain, MQTT topic, or dashboard layout changes.

Important:
- Quiet-night window depends on the ESP having sane local time/NTP.
Download original text file ↓
1.8.30ESP-side Agent DVR storm clip trigger.Storm system
Biomekka 1.8.30
================

Base
----
Built from Biomekka 1.8.29.

Added
-----
- ESP-side Agent DVR storm clip trigger.
- Fires only after 60 seconds of the full storm phase.
- Does not fire during pre-storm.
- Calls the Ubuntu wrapper endpoint:
  http://***:8099/biomekka/storm-record?camera=top&seconds=30
- Intended behaviour: wrapper records the Agent DVR top camera for 30 seconds.
- Top camera only; no bottom camera support added.
- Trigger is one-shot per storm.
- If WiFi is down at the 60 second point, it retries every 15 seconds until the storm ends or it sends the request.
- HTTP timeout kept short at 1.8 seconds so the controller is not stuck waiting around.
- Feature can be disabled with AGENT_STORM_RECORDING_ENABLED.

Changed files
-------------
- biomekka_1_8_30.ino
- CHANGELOG_BIOMEKKA_1_8_30.txt

Not changed
-----------
- Lighting colours
- Storm lightning colours
- Storm timing / eligibility
- Pre-storm humidity ramp
- Pins
- Relays
- Goblin commands
- Sensors
- MQTT topics
- Telemetry schema
- Dashboard layout
- Solar logic
- HA logic
- Ubuntu/Nginx/server code

Notes
-----
This only adds the ESP trigger. The Ubuntu wrapper endpoint still needs to exist and handle start/stop recording in Agent DVR.
Download original text file ↓
1.8.29Storm lightning colour retuned to pure white instead of blue-white.Storm system
Biomekka 1.8.29

Base: rolled back to uploaded Biomekka 1.8.27, not the temporary 1.8.28 lighting-preview branch.

Changed:
- Storm lightning colour retuned to pure white instead of blue-white.
- Lightning glow/tail/outer scales increased for much brighter storm flashes.
- Adjacent row spill strengthened.
- Added a low-level full-strip white ambient flash during active storm strikes only, so lightning feels much brighter without changing normal lighting colours.

Not changed:
- No pins, relays, Goblin commands, sensors, MQTT, telemetry schema, dashboard layout, solar logic, storm timing/eligibility, SSH, Ubuntu/Nginx, or HA changes.
Download original text file ↓
1.8.27Made the storm dice slightly larger.Storm system
Biomekka 1.8.27

Dashboard-only storm dice final polish.

Changes:
- Made the storm dice slightly larger.
- Increased the storm dice panel height/padding to avoid crowding.
- Strengthened visible outer/facet edge lines around the dice.
- Lightened and enlarged the centre polygon plate so the roll number reads more clearly.
- Kept the existing roll animation and random upright wonk/offset behaviour.

Unchanged:
- No sensor, pin, relay, Goblin command, MQTT topic, telemetry schema, solar logic, storm logic, lighting engine, camera/feed, SSH, Ubuntu/Nginx, or Home Assistant changes.
Download original text file ↓
1.8.26Changed the storm dice number from raw text inside the dice div to a dedicated span.Storm system
Biomekka 1.8.26
================

Built from Biomekka 1.8.25.

Dashboard-only dice readability fix:
- Changed the storm dice number from raw text inside the dice div to a dedicated span.
- Added a smaller matching centre polygon/plate over the dice facet lines.
- Kept the facet/edge lines visible around the centre.
- Kept the existing roll animation.
- Kept the random final dice wonk/offset, limited to a small upright angle.
- Updated JavaScript so roll animation writes to the dice number span instead of replacing the whole dice element contents.

No changes to:
- Pins
- Sensors
- Relays
- Goblin commands
- Storm logic
- Solar logic
- Lighting engine behaviour
- MQTT topics
- Telemetry schema
- Camera/feed config
- SSH / Ubuntu / Nginx
- Home Assistant

Next TODO added separately:
- Temporary 3-minute full-day lighting preview on boot for colour tuning, easy to disable/remove once colours are sorted.
Download original text file ↓
1.8.25Moved the ESP dashboard HTML/JavaScript raw string out of the .ino file into dashboard_html.h.Storm system
Biomekka 1.8.25

Fix-only build from 1.8.24.

Changed:
- Moved the ESP dashboard HTML/JavaScript raw string out of the .ino file into dashboard_html.h.
- This avoids Arduino's .ino pre-processor mistaking JavaScript function declarations for C++ functions.
- Kept the 1.8.24 dice polish, uptime formatting, storm lighting ramp, solar self-heal, and dashboard behaviour unchanged.

Not changed:
- No sensor, pin, relay, Goblin command, MQTT topic, telemetry schema, solar logic, storm logic, camera/feed, SSH, Ubuntu/Nginx, or Home Assistant changes.
Download original text file ↓
1.8.24Restyled the storm dice so it has visible polyhedral-style edge/facet lines.Storm system
Biomekka 1.8.24

Dashboard-only storm dice polish.

Changed:
- Restyled the storm dice so it has visible polyhedral-style edge/facet lines.
- Slightly darkened and toughened the dice appearance so it looks less like a mint jelly blob.
- Kept the existing dice roll animation.
- Added a small random final dice angle/offset on each new storm roll.
- The final angle is limited to roughly -7 to +7 degrees so the number stays upright, just slightly wonky.

Not changed:
- No sensor, pin, relay, Goblin command, MQTT topic, telemetry schema, solar logic, storm logic, camera/feed, or HA changes.
Download original text file ↓
1.8.23Dashboard uptime display now uses Days:Hours:Minutes:Seconds via uptimeClock().Storm system
Biomekka 1.8.23

- Dashboard uptime display now uses Days:Hours:Minutes:Seconds via uptimeClock().
- Storm dice dashboard widget restyled into a DnD/polyhedral-style dice using CSS clip-path/faceted gradients.
- Storm roll text now shows roll, dN denominator, and winning target more clearly.
- No sensor, pin, relay, Goblin command, MQTT topic, telemetry schema, storm logic, solar logic, or camera/feed changes.
Download original text file ↓
1.8.22Daytime pre-storm now ramps lighting down across the full 15-minute pre-storm build-up.Storm system
Biomekka 1.8.22

TODO item completed: storm lighting ramp behaviour.

Changes:
- Daytime pre-storm now ramps lighting down across the full 15-minute pre-storm build-up.
- Pre-storm ramp affects both RGB storm atmosphere and COB target PWM.
- Daytime storm now enters full storm lighting immediately after the pre-storm ramp, instead of doing a separate sudden storm dim.
- Daytime post-storm now ramps lighting back to normal over 15 minutes.
- Night/dusk storms do not darken the habitat; they keep the existing moody/night lighting and add lightning only.
- Manual storm stop cancels recovery ramp, so "storm off" behaves like an immediate stop.

Files changed:
- lighting.cpp
- lighting.h
- biomekka_1_8_22.ino

No changes made to:
- pins
- Goblin command mapping
- relays
- sensor addresses
- telemetry schema
- MQTT topics
- storm eligibility logic
- pre-storm humidity timing
- dashboard layout
Download original text file ↓
1.8.21Fresh daily solar updates now require both configured locations to fetch and pass sanity checks.Storm system
Biomekka 1.8.21

Solar fallback/self-heal refinement:
- Fresh daily solar updates now require both configured locations to fetch and pass sanity checks.
- If either fetch fails, Biomekka keeps using the last known good solar schedule instead of switching to a fixed schedule or half-trusting one location.
- Last known good solar schedule is stored in ESP32 Preferences/NVS after a successful fresh update, so it survives reboot/power loss.
- On boot, Biomekka loads the stored last-good schedule first and marks it as fallback until fresh API data succeeds.
- Fixed schedule is now only the dead-man fallback if no stored last-good schedule exists yet.
- Self-heal retry continues while fallback/sanity warning is active.
- Daily refresh failure no longer hammers the API every loop after 02:05; it falls back to the self-heal retry interval.
- Dashboard /status now exposes solar_active_date so fallback date/source can be checked.

Safety notes:
- Preferences writes are only attempted when a fresh valid schedule differs from the stored copy, avoiding constant flash writes.
- No pin, relay, heater, fan, storm, mist, spray, rain, MQTT, Grafana database, or LED index changes.
Download original text file ↓
1.8.20Added solar schedule sanity/self-heal logic.Storm system
Biomekka 1.8.20
- Added solar schedule sanity/self-heal logic.
- Keeps a safe fixed schedule available immediately, so temp targets do not fall back to zero-minute solar data if the API is unavailable.
- Solar parsing now rejects malformed or implausible sunrise/sunset/day-length data.
- During the UK long-day season, refuses to switch away from Bulford if a non-UK source appears to beat it due to bad API/parse data.
- Self-heal retries run every 5 minutes after a solar sanity warning, and normal fallback retries run every 30 minutes.
- Dashboard /status JSON now exposes solar_using_fallback, solar_sanity_warning, solar_self_heal_count, and solar_last_problem.
- Updated folder and .ino name to biomekka_1_8_20.
- No pin, relay, camera, go2rtc, Nginx, telemetry schema, MQTT topic, or storm actuation changes.
Download original text file ↓
1.8.19Moved Humidity Control chart beside Heaters by removing the full-width layout from the control timeline.Storm system
Biomekka 1.8.19
- Moved Humidity Control chart beside Heaters by removing the full-width layout from the control timeline.
- Matched Humidity Control chart height to the normal graph cards so the pair sits cleanly as a two-wide row.
- Fixed dashboard history JSON to include storm_eligible for the Humidity Control graph.
- Updated folder and .ino name to biomekka_1_8_19.
- No pin, relay, camera, go2rtc, Nginx, or storm actuation logic changed.
Download original text file ↓
1.8.18Night/dusk storms now keep the normal dark lighting base and add lightning only.Storm system
Biomekka 1.8.18
- Night/dusk storms now keep the normal dark lighting base and add lightning only.
- Storm start now latches the current scheduled COB level instead of relying on an old boot-time value.
- Added sparse, dim pre-storm lightning during the 15-minute pre-storm humidity build-up.
- Added lightingSetPreStormActive() so the main sketch can enable/disable pre-storm visual effects cleanly.
- Folder and .ino are both named biomekka_1_8_18.
- No pin, relay, camera, go2rtc, Nginx, telemetry schema, or MQTT topic changes.
Download original text file ↓
1.8.17Timelapse card now shows buttons only.Dashboard
Biomekka 1.8.17
- Timelapse card now shows buttons only.
- Clicking a timelapse opens a centred popup video player.
- Popup closes via Close button, outside click, or Escape.
- No camera/go2rtc/Nginx/control logic changes.
Download original text file ↓
1.8.16Changed the camera RTC mask into a small Biomekka badge.Dashboard
Biomekka 1.8.16

- Changed the camera RTC mask into a small Biomekka badge.
- Badge has a 1px white border and white BIOMEKKA text.
- No camera/go2rtc/Nginx/control logic changes.
Download original text file ↓
1.8.15Added Humidity Control on/off timeline graph for spray, mist, rain, storm active and storm eligible.Storm system
Biomekka 1.8.15
- Added Humidity Control on/off timeline graph for spray, mist, rain, storm active and storm eligible.
- Updated day length wording to public-friendly source label, e.g. Day length source: UK.
- Clarified that the dashboard sources real-world sunrise, sunset and daylight duration data.
- Reduced timelapse/storm panel vertical footprint.
- Folder and INO names match version.
Download original text file ↓
1.8.13Fixed storm eligible since timer so it starts from the point lottery becomes eligible, not from dry timer start.Storm system
Biomekka 1.8.13
- Fixed storm eligible since timer so it starts from the point lottery becomes eligible, not from dry timer start.
- Storm dice text now clearly states the winning roll is 1.
- Folder and INO naming kept matched for Arduino IDE.
Download original text file ↓
1.8.12Renamed main sketch for Arduino folder/sketch matching: biomekka_1_8_12/biomekka_1_8_12.ino.Storm system
Biomekka 1.8.12

- Renamed main sketch for Arduino folder/sketch matching: biomekka_1_8_12/biomekka_1_8_12.ino.
- Changed dashboard main light card from raw PWM (/255) to percentage.
- Changed dashboard main light history graph and tooltip from raw PWM (/255) to percentage.
- Added explicit cob_pct to /status and /history while keeping cob_pwm for compatibility.
- Added storm countdown/timer/roll values to /status so the storm window has real data.
- Reworked storm dice animation so it rapidly rolls numbers before settling on the actual roll.
- No pin, relay, camera, go2rtc, Nginx, sensor, MQTT, Home Assistant, or telemetry endpoint changes.
Download original text file ↓
1.8.11Added a dedicated Storm window beside the timelapse panel.Storm system
Biomekka 1.8.11
- Added a dedicated Storm window beside the timelapse panel.
- Storm window shows eligibility status, eligible countdown/since timer, pre-storm countdown, active storm remaining timer, and latest storm lottery roll.
- Added dice animation when a new storm chance roll is observed.
- Timelapse/player area made smaller to share space cleanly with the storm panel.
- No camera, go2rtc, Nginx, pin, relay, or control logic changes.
Download original text file ↓
1.8.10Added a CSS overlay mask on live camera frames to hide the go2rtc RTC badge.Dashboard
Biomekka 1.8.10
- Added a CSS overlay mask on live camera frames to hide the go2rtc RTC badge.
- No go2rtc, Nginx, relay, pin, sensor, telemetry, or control logic changes.
Download original text file ↓
1.8.9Removed the old CSS iframe rotation hack for the top camera.Storm system
Biomekka 1.8.9

- Removed the old CSS iframe rotation hack for the top camera.
- Top camera now displays as a normal portrait iframe because rotation is handled by go2rtc server-side.
- Video controls should now remain at the bottom instead of appearing on the side.
- No go2rtc, Nginx, sensor, relay, pin, telemetry, MQTT, or storm logic changes.
Download original text file ↓
1.8.8Changed timelapse player to be narrower/thinner instead of reducing its height.Dashboard
Biomekka 1.8.8
- Changed timelapse player to be narrower/thinner instead of reducing its height.
- Player is centered with max width 560px and natural video height.
- No camera/go2rtc/Nginx/control logic changes.
Download original text file ↓
1.8.7Changed top camera CSS sizing so the rotated portrait feed is roughly full card width.Dashboard
Biomekka 1.8.7

- Changed top camera CSS sizing so the rotated portrait feed is roughly full card width.
- Top camera frame now uses aspect ratio 8:9, making it exactly twice the height of the 16:9 bottom camera frame at the same card width.
- Rotation remains CSS-only; no go2rtc, RTSP, Nginx, sensor, relay, telemetry, MQTT, or pin changes.
- Reduced timelapse player max height to 280px to stop it eating the page.
Download original text file ↓
1.8.6Timelapse list now sorts videos oldest-first using the timestamp in the filename where available.Storm system
Biomekka 1.8.6
- Timelapse list now sorts videos oldest-first using the timestamp in the filename where available.
- The newest timelapse is excluded because it may still be incomplete.
- The page displays the oldest four remaining timelapses with clean date/time labels only.
- No camera, go2rtc, Nginx, pin, relay, sensor, telemetry, storm, or control logic changes.
Download original text file ↓
1.8.5Dashboard Air card now shows Left and Right on separate lines.Storm system
Biomekka 1.8.5
- Dashboard Air card now shows Left and Right on separate lines.
- Dashboard Water card now shows Left and Right on separate lines.
- /status JSON now includes water_right, mapped to the existing right water probe value.
- No relay, pin, sensor-read, storm, go2rtc, Nginx, MQTT, Grafana, or telemetry-post changes.
Download original text file ↓
1.8.4Dashboard graph tooltips now show clock time instead of relative age labels.Dashboard
- Dashboard graph tooltips now show clock time instead of relative age labels.
- No relay, pin, camera, go2rtc, Nginx, telemetry, or control logic changes.
Download original text file ↓
1.8.2Added fancy hover/touch tooltips to dashboard history graphs.Dashboard
Biomekka 1.8.2

- Added fancy hover/touch tooltips to dashboard history graphs.
- Tooltips show nearest sample and values for each graph line.
- CSS-only/JS-only dashboard change; no pins, sensors, relays, telemetry schema, MQTT, go2rtc, or Nginx changes.
Download original text file ↓
1.8.1Main dashboard/info area now uses roughly two thirds of desktop width.Storm system
Biomekka 1.8.1

Created from Biomekka 1.7.

Dashboard layout changes:
- Main dashboard/info area now uses roughly two thirds of desktop width.
- Live camera rail sits on the right using roughly one third of desktop width.
- Top and bottom camera feeds are stacked vertically.
- Top camera is visually rotated 90 degrees anti-clockwise in CSS, without changing go2rtc/RTSP config.
- Responsive fallback stacks the layout on narrower screens.

No sensor, relay, pin, storm, telemetry, MQTT, Grafana, go2rtc config, or credential changes.
Download original text file ↓