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.
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.
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 ***.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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%.
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.
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.
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.
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.
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.
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.
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().
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.
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 layoutDownload original text file ↓
1.8.21Fresh daily solar updates now require both configured locations to fetch and pass sanity checks.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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 ↓