21af41ff66d896343e9407b1c6999d69db9379c2
Replaces check_server_reachable() (bare bool, GET /health) with fetch_frame_config(), which GETs the server's new /frame/config endpoint instead -- doubles as the reachability check (any completed HTTP response counts, same as before) and delivers the server-configured refresh_interval_s, used for the success-path deep sleep duration instead of the Kconfig-only default. Parses the tiny JSON response with a hand-rolled scalar extractor (json_extract_uint) rather than pulling in a JSON library -- cJSON isn't bundled in this ESP-IDF install, and a single flat integer field doesn't justify a new dependency. Verified standalone against exactly the JSON shape the server emits, including a missing-field fallback case. FRAME_SLEEP_INTERVAL_S (Kconfig) is now just the fallback used before the device has ever reached a configured server, or if the response is missing/unparseable -- documented as such in its help text.