{"service":"kapok-gateway","git_sha":"c4a20cf2e924","deployed_at":"ea4e101c-6e3e-4a66-9fc6-68db4a19c49d","cache_age_s":1178,"env":{"DATABASE_URL":true,"VRM_TOKEN":true,"VRM_EMAIL":true,"LODGIFY_API_KEY":true},"grid_and_soc":{"papaya":{"connected":true,"last_update":"a few seconds ago","stale":false,"grid":{"status":"on_battery","grid_w":32,"note":"grid draw ~32 W (now)","grid_present":true},"soc":{"status":"moving","value":100.0,"source":"bms","note":"SOC=100.0% (src=bms), last changed 0.7h ago"}},"guava":{"connected":true,"last_update":"a few seconds ago","stale":false,"grid":{"status":"on_battery","grid_w":0,"note":"grid draw ~0 W (now)","grid_present":true},"soc":{"status":"moving","value":73.0,"source":"bms","note":"SOC=73.0% (src=bms), last changed 0.0h ago"}},"mango":{"connected":true,"last_update":"a few seconds ago","stale":false,"grid":{"status":"on_battery","grid_w":0,"note":"grid draw ~0 W (now)","grid_present":true},"soc":{"status":"moving","value":66.0,"source":"bms","note":"SOC=66.0% (src=bms), last changed 0.0h ago"}},"sugar_apple":{"connected":true,"last_update":"a few seconds ago","stale":false,"grid":{"status":"on_battery","grid_w":0,"note":"grid draw ~0 W (now)","grid_present":true},"soc":{"status":"moving","value":97.0,"source":"system","note":"SOC=97.0% (src=system), last changed 0.7h ago"}}},"fleet_outage":{"state":"grid_up","grid_present":4,"grid_absent":0,"total":4},"live":{"papaya":{"pv_w":470,"pv_by_inst":{"277":470,"278":0},"load_w":473,"batt_w":-27,"soc":100.0,"soc_src":"bms","runtime":{"hours":99.0,"label":">36h","state":"ok","output_dead":false},"ages":{"pv_w":0,"batt_w":0,"load_w":0,"soc":2},"stale":false,"feed_state":"live","feed_age_s":0,"updated_utc":"2026-07-17T17:20:12.150629+00:00","shared_live":false},"guava":{"pv_w":5761,"pv_by_inst":{"278":2935,"279":2826},"load_w":1584,"batt_w":2600,"soc":73.0,"soc_src":"bms","runtime":{"hours":99.0,"label":">36h","state":"ok","output_dead":false},"ages":{"pv_w":0,"batt_w":0,"load_w":0,"soc":1},"stale":false,"feed_state":"live","feed_age_s":0,"updated_utc":"2026-07-17T17:20:11.818754+00:00","shared_live":true},"mango":{"pv_w":2906,"pv_by_inst":{"278":0,"279":2906},"load_w":null,"batt_w":null,"soc":66.0,"soc_src":"bms","runtime":{"hours":99.0,"label":">36h","state":"ok","output_dead":false},"ages":{"pv_w":0,"soc":2},"stale":false,"feed_state":"live","feed_age_s":0,"updated_utc":"2026-07-17T17:20:11.901410+00:00","shared_live":false},"sugar_apple":{"pv_w":71,"pv_by_inst":{"278":0,"279":71},"load_w":9,"batt_w":5,"soc":97.0,"soc_src":"system","runtime":{"hours":99.0,"label":">36h","state":"ok","output_dead":false},"ages":{"pv_w":0,"batt_w":2,"load_w":1,"soc":3},"stale":false,"feed_state":"live","feed_age_s":0,"updated_utc":"2026-07-17T17:20:12.016692+00:00","shared_live":false}},"weather":{"temp_f":80,"label":"Clear","emoji":"☀️"},"actuals_archive":{"thread_alive":true,"last_capture_date":"2026-07-17","yield_rows":192,"ghi_rows":96},"overload_capture":{"connected":true,"events":1,"samples_seen":35431,"last_event":"2026-07-17T16:56:56.379092+00:00","started_at":"2026-07-17T16:36:50.121635+00:00","host":"mqtt42.victronenergy.com","thread_alive":true,"stored_events":552},"overload_analysis":{"n":551,"shape_pct":{"plateau>3s":97,"short1-3s":1,"spike<1s":2},"by_unit_leg":{"guava/L1":{"n":9,"peak_w":{"p50":903,"p90":1795,"max":1795},"imbalance":{"p50":0.5,"p90":1.5,"max":1.5},"pf_p50":0.96,"load_mix":{"resistive":9}},"guava/L2":{"n":225,"peak_w":{"p50":2685,"p90":3333,"max":4235},"imbalance":{"p50":2.5,"p90":11.2,"max":27.9},"pf_p50":0.96,"load_mix":{"resistive":209,"motor":5}},"mango/L1":{"n":49,"peak_w":{"p50":1666,"p90":2568,"max":3721},"imbalance":{"p50":3.0,"p90":21.7,"max":41.3},"pf_p50":0.93,"load_mix":{"resistive":34,"motor":14}},"mango/L2":{"n":26,"peak_w":{"p50":1796,"p90":2650,"max":2700},"imbalance":{"p50":2.4,"p90":17.2,"max":21.3},"pf_p50":0.92,"load_mix":{"resistive":19,"motor":6}},"papaya/L1":{"n":59,"peak_w":{"p50":1581,"p90":2608,"max":3455},"imbalance":{"p50":1.5,"p90":2.8,"max":9.8},"pf_p50":0.97,"load_mix":{"resistive":57,"motor":2}},"papaya/L2":{"n":95,"peak_w":{"p50":1917,"p90":2822,"max":3570},"imbalance":{"p50":3.3,"p90":10.8,"max":22.1},"pf_p50":0.95,"load_mix":{"resistive":93,"motor":1}},"sugar_apple/L1":{"n":83,"peak_w":{"p50":2391,"p90":2917,"max":3569},"imbalance":{"p50":16.2,"p90":32.1,"max":98.0},"pf_p50":0.92,"load_mix":{"resistive":77,"motor":5}},"sugar_apple/L2":{"n":5,"peak_w":{"p50":2586,"p90":3411,"max":3411},"imbalance":{"p50":3.0,"p90":8.5,"max":8.5},"pf_p50":0.96,"load_mix":{"resistive":5}}},"peak_dc_v":{"p95":53.6,"max":57.8},"interpretation":"97% are SUSTAINED plateaus (not inrush) → software leg-balancing / higher leg limit is the primary lever, not a soft-starter; severe leg imbalance at trip on mango/L1, papaya/L2, sugar_apple/L1, sugar_apple/L2 → an autotransformer (or moving the hot-leg load) directly targets these"},"appliance_register":{"thread_alive":true,"detector_ok":true,"last_capture_date":"2026-07-17","snapshot_days":23,"device_rows":6023},"episode_archive":{"runs":1,"last_run":"2026-07-17T16:37:32.695574+00:00","last_written":279,"total_written":279,"last_error":null,"thread_alive":true,"banked_episodes":3673,"units":4,"span":"2026-07-05 11:19:05.833377+00:00 → 2026-07-17 16:29:22.961710+00:00"},"finding_promoter":{"runs":1,"last_run":"2026-07-17T16:36:58.721690+00:00","open_findings":0,"last_error":null,"thread_alive":true,"anomaly_held_h":{"sugar_apple":null,"papaya":null,"guava":5.0,"mango":null}},"hires_logger":{"connected":true,"buffered":31,"written":29943,"started_at":"2026-07-17T16:36:50.254423+00:00","thread_alive":true,"rows":10799979,"span_hours":168.0,"span_is":"data extent (persists across restarts), not uptime"},"detect_job":{"runs":1,"last_run":1784307185.5251899,"last_error":null,"last_devices":24},"shade_archiver":{"runs":1,"last_run":1784307304.404845,"last_error":null,"result":{"baseline_am_mid":0.583,"house1":{"guava":{"unit":"guava","n_clean_days":3,"ready":true,"array_am_mid":0.496,"baseline_am_mid":0.583,"morning_deficit_pct":15,"lost_kwh_day":0.6,"lost_usd_yr":94,"note":"morning runs 85% of the unshaded baseline → ~0.6 kWh/day lost to shade (~$94/yr)"},"mango":{"unit":"mango","n_clean_days":1,"ready":false,"note":"need ≥3 clean (occupied, non-curtailed) House-1 days to quantify shade"}}},"always_on":{"sugar_apple":{"floor_median_w":253,"floor_min_w":7,"floor_p10_w":8,"night_floor_w":212,"flat_cv":1.04,"legs":[{"leg":"L1","typical_floor_w":142,"lowest_floor_w":4,"on_fraction":0.468,"ever_dropped":true,"substantial":false,"verdict":"minimal (fridge/standby)"},{"leg":"L2","typical_floor_w":72,"lowest_floor_w":3,"on_fraction":0.37,"ever_dropped":true,"substantial":false,"verdict":"minimal (fridge/standby)"}],"n":1732375},"papaya":{"floor_median_w":1223,"floor_min_w":0,"floor_p10_w":290,"night_floor_w":1381,"flat_cv":0.68,"legs":[{"leg":"L1","typical_floor_w":279,"lowest_floor_w":0,"on_fraction":0.927,"ever_dropped":false,"substantial":true,"verdict":"runs 93% of the time (rarely off) — near-continuous, consistent with a heating element that mostly can't reach setpoint"},{"leg":"L2","typical_floor_w":464,"lowest_floor_w":0,"on_fraction":0.838,"ever_dropped":true,"substantial":true,"verdict":"runs 84% of the time — cycles off regularly (a normally-behaving or human-toggled load)"}],"n":3392759},"guava":{"floor_median_w":1696,"floor_min_w":0,"floor_p10_w":783,"night_floor_w":927,"flat_cv":0.5,"legs":[{"leg":"L1","typical_floor_w":244,"lowest_floor_w":4,"on_fraction":0.698,"ever_dropped":true,"substantial":false,"verdict":"minimal (fridge/standby)"},{"leg":"L2","typical_floor_w":959,"lowest_floor_w":3,"on_fraction":0.952,"ever_dropped":false,"substantial":true,"verdict":"runs 95% of the time (rarely off) — near-continuous, consistent with a heating element that mostly can't reach setpoint"}],"n":2734931},"mango":{"floor_median_w":224,"floor_min_w":7,"floor_p10_w":104,"night_floor_w":137,"flat_cv":1.12,"legs":[{"leg":"L1","typical_floor_w":120,"lowest_floor_w":32,"on_fraction":0.435,"ever_dropped":true,"substantial":false,"verdict":"minimal (fridge/standby)"},{"leg":"L2","typical_floor_w":74,"lowest_floor_w":9,"on_fraction":0.115,"ever_dropped":true,"substantial":false,"verdict":"minimal (fridge/standby)"}],"n":2946889}}},"solar_dark_detector":{"polls":1,"last_poll":"2026-07-17T16:38:51.926379+00:00","opened":1,"resolved":0,"last_error":null,"thread_alive":true,"dark_streaks":{"sugar_apple#278":1,"mango#278":1}},"stale_feed_detector":{"polls":9,"last_poll":"2026-07-17T17:19:24.957606+00:00","opened":0,"resolved":0,"last_error":null,"thread_alive":true,"threshold_min":30},"alarm_ingester":{"polls":33,"last_poll":"2026-07-17T17:19:46.772293+00:00","opened":35,"resolved":0,"last_error":null,"thread_alive":true,"active_now":["papaya:battery:ChargeBlocked=1"]},"blackout_detector":{"polls":41,"last_poll":"2026-07-17T17:19:41.273894+00:00","opened":0,"resolved":0,"escalated":0,"last_error":null,"thread_alive":true,"streaks":{}},"overload_nearmiss_detector":{"polls":21,"last_poll":"2026-07-17T17:20:06.690071+00:00","opened":0,"suppressed":0,"last_error":null,"thread_alive":true,"dc_trip_floors_v":{"sugar_apple":52.3,"papaya":52.2,"guava":51.1,"mango":52.3}},"bms_module_detector":{"polls":42,"last_poll":"2026-07-17T17:19:21.532298+00:00","changes":0,"last_error":null,"thread_alive":true,"last_counts":{"papaya":3,"guava":2,"mango":3}},"can_health_monitor":{"connected":true,"host":"mqtt42.victronenergy.com","started_at":"2026-07-17T16:36:50.233649+00:00","msgs":5338502,"events":0,"last_error":null,"thread_alive":true,"bms_iface":{"mango":"can1","guava":"can0","papaya":"can1"},"last_counts":{"mango/can1":{"state":"ERROR-ACTIVE","rx":0,"bus_off":0,"restarts":0},"mango/can0":{"state":"ERROR-PASSIVE","rx":0,"bus_off":0,"restarts":0},"sugar_apple/vecan0":{"state":"ERROR-PASSIVE","rx":0,"bus_off":0,"restarts":0},"sugar_apple/vecan1":{"state":"ERROR-PASSIVE","rx":135,"bus_off":0,"restarts":0},"papaya/can0":{"state":"ERROR-PASSIVE","rx":135,"bus_off":0,"restarts":0},"papaya/can1":{"state":"ERROR-ACTIVE","rx":0,"bus_off":0,"restarts":0},"guava/can0":{"state":"ERROR-ACTIVE","rx":0,"bus_off":0,"restarts":0}}},"ess_reconciler":{"ticks":44,"last_tick":"2026-07-17T17:19:56.308734+00:00","restored":0,"alarms":0,"last_error":null,"thread_alive":true,"started":true},"grid_logger":{"backfilled":true,"backfill_n":0,"live_open":false,"last_check":"2026-07-17T17:20:01.414086+00:00","thread_alive":true,"min_outage_min":5,"logged_outages":16,"ongoing":0},"firmware_health":{"polls":1,"changes":0,"last_poll":"2026-07-17T16:36:52.797820+00:00","last_change":null,"divergence_flagged":false,"thread_alive":true,"snapshot":{"guava":{"ve_bus":"560","gx":"v3.75","mppt":"v3.18","auto_update":"On"},"mango":{"ve_bus":"560","gx":"v3.73","mppt":"v1.74,v3.18","auto_update":"Check"},"papaya":{"ve_bus":"560","gx":"v3.75","mppt":"v3.18","auto_update":"Check"},"sugar_apple":{"ve_bus":"560","gx":"v3.75","mppt":"v3.18","auto_update":"Check"}}},"config_health":{"polls":1,"changes":0,"last_poll":"2026-07-17T16:36:54.191222+00:00","last_change":null,"thread_alive":true,"watched":18,"snapshot_rows":72,"snapshot_units":4},"events":{"total":72,"open":12,"critical":3},"janitor":{"last_run":"2026-07-17T16:36:52.617623+00:00","last_deleted":{"hires_power":{"time":491,"cap":0}},"runs":1,"thread_alive":true,"row_counts":{"hires_power":10799979,"hires_rollup_1m":644672,"overload_event":179822,"appliance_register":6023,"grid_outage":16,"system_event":72,"appliance_episode":3673,"appliance_daily_kwh":379}},"solar_health":{"sugar_apple":{"summary":"⚠ 1 of 2 arrays DARK — last produced 2026-06-07","controllers":[{"instance":278,"hotswap":true,"serial":"HQ2427XXQKR","status":"DARK","pv_w":0.0,"yield_today_kwh":0.0,"yield_yesterday_kwh":0.0,"mppt_state":"Off","off_reason":"No input power (1)","error":"No error","last_produced":"2026-06-07"},{"instance":279,"hotswap":false,"serial":"HQ2427X2DRP","status":"producing","pv_w":59.0,"yield_today_kwh":0.85,"yield_yesterday_kwh":13.5,"mppt_state":"Voltage or current limited","off_reason":" (0)","error":"No error"}]},"papaya":{"summary":"ok — 1 producing now, 1 idle (night/cloud)","controllers":[{"instance":277,"hotswap":false,"serial":"HQ2441M4WJN","status":"producing","pv_w":356.0,"yield_today_kwh":5.11,"yield_yesterday_kwh":8.1,"mppt_state":"Voltage or current limited","off_reason":" (0)","error":"No error"},{"instance":278,"hotswap":true,"serial":"HQ2441PJUR7","status":"idle_ok","pv_w":0.0,"yield_today_kwh":4.58,"yield_yesterday_kwh":5.46,"mppt_state":"Voltage or current limited","off_reason":" (0)","error":"No error"}]},"guava":{"summary":"ok — 2 producing now, 0 idle (night/cloud)","controllers":[{"instance":278,"hotswap":false,"serial":"HQ2507FRY7J","status":"producing","pv_w":2324.0,"yield_today_kwh":4.12,"yield_yesterday_kwh":10.24,"mppt_state":"MPPT active","off_reason":" (0)","error":"No error"},{"instance":279,"hotswap":true,"serial":"HQ2427UA6EN","status":"producing","pv_w":2387.0,"yield_today_kwh":1.21,"yield_yesterday_kwh":12.23,"mppt_state":"MPPT active","off_reason":" (0)","error":"No error"}]},"mango":{"summary":"⚠ 1 of 2 arrays DARK — last produced 2026-07-14","controllers":[{"instance":278,"hotswap":true,"serial":"HQ2524WM4N4","status":"DARK","pv_w":0.0,"yield_today_kwh":0.0,"yield_yesterday_kwh":0.0,"mppt_state":"Off","off_reason":"No input power (1)","error":"No error","last_produced":"2026-07-14"},{"instance":279,"hotswap":false,"serial":"HQ1844IF9PI","status":"producing","pv_w":3050.0,"yield_today_kwh":8.79,"yield_yesterday_kwh":15.9,"mppt_state":"MPPT active","off_reason":" (0)","error":"No error"}]}},"bms_health":{"sugar_apple":{"status":"no_bms","summary":"no BMS comms (inverter-estimate SOC) — expected until CAN wired"},"papaya":{"status":"ok","summary":"ok — 3 of 3 modules online","modules_online":3,"modules_offline":0,"modules_expected":3,"soc":100.0,"soh":100.0,"cell_spread_mv":200,"temp_c":35.0,"charge_blocked":true,"alarms_active":[],"firmware":"v86.1"},"guava":{"status":"MODULE_MISSING","summary":"⚠ only 2 of 3 modules online (a battery dropped out)","modules_online":2,"modules_offline":0,"modules_expected":3,"soc":70.0,"soh":100.0,"cell_spread_mv":10,"temp_c":35.0,"charge_blocked":false,"alarms_active":[],"firmware":"v86.1"},"mango":{"status":"ok","summary":"ok — 3 of 3 modules online","modules_online":3,"modules_offline":0,"modules_expected":3,"soc":64.0,"soh":100.0,"cell_spread_mv":20,"temp_c":34.0,"charge_blocked":false,"alarms_active":[],"firmware":"v86.1"}},"overload_health":{"sugar_apple":{"status":"occasional","summary":"1 overload(s) in 14d (L1:0, L2:1)","events_by_leg":{"L1":0,"L2":1},"window_days":14},"papaya":{"status":"occasional","summary":"8 overload(s) in 14d (L1:2, L2:6)","events_by_leg":{"L1":2,"L2":6},"window_days":14},"guava":{"status":"CHRONIC","summary":"⚠ L2 13 overloads/14d — a circuit is chronically tripping (source-level fix)","events_by_leg":{"L1":0,"L2":13},"window_days":14},"mango":{"status":"occasional","summary":"5 overload(s) in 14d (L1:3, L2:2)","events_by_leg":{"L1":3,"L2":2},"window_days":14}},"forecast_archive":{"thread_alive":true,"last_capture_date":null,"capture_hour_ast":14,"vrm_token_set":true,"db_available":true,"rows_total":16512,"rows_by_source":{"open_meteo":5568,"vrm":10944},"run_date_range":["2026-06-23","2026-07-16"]},"grid_energy_24h":{"sugar_apple":{"kwh_24h":0.0,"cost_24h_usd":0.0},"papaya":{"kwh_24h":52.21,"cost_24h_usd":22.45},"guava":{"kwh_24h":22.15,"cost_24h_usd":9.52},"mango":{"kwh_24h":0.4,"cost_24h_usd":0.17}}}