# SNOO credentials (Happiest Baby account) SNOO_USERNAME=you@example.com SNOO_PASSWORD=your-snoo-password # Huckleberry credentials HUCKLEBERRY_EMAIL=you@example.com HUCKLEBERRY_PASSWORD=your-huckleberry-password HUCKLEBERRY_TIMEZONE=America/New_York # Optional: hard-code child UIDs; auto-detected from first child if unset # SNOO_BABY_ID= # HUCKLEBERRY_CHILD_UID= # Optional: sleep location category tag to assign in Huckleberry # Choices: car, nursing, wornOrHeld, stroller, coSleep, nextToCarer, onOwnInBed, bottle, swing # HUCKLEBERRY_SLEEP_LOCATION=onOwnInBed # How often to poll the SNOO device (minutes). # In SNOO_MODE=live this instead controls the heartbeat/dead-connection-detection # cadence (how often the persistent MQTT subscription is checked and resubscribed # if it died) - it is not a poll interval in that mode. INTERVAL_MINUTES=15 # Optional: discard sleep sessions shorter than this threshold (default is 1 minute) MIN_SESSION_MINUTES=5 # Optional: number of days of SNOO history to sync (default is 2) # Increase this (e.g. to 7 or 14) during first-time setup to backfill older data # Only used when SNOO_MODE=premium - the sessions/daily history endpoint requires a SNOO Premium subscription. HISTORY_DAYS=2 # Optional: buffer threshold (minutes) to keep active/in-progress sessions from syncing (default is 5) # Only used when SNOO_MODE=premium. IN_PROGRESS_BUFFER_MINUTES=5 # Which source to use for detecting completed sleep sessions: # live - (default, recommended) persistent AWS IoT MQTT push subscription, same # mechanism the official Home Assistant SNOO integration uses. Gives # minute-level asleep/soothing breakdown without needing SNOO Premium. # basic - polls device state every INTERVAL_MINUTES. Works without Premium, but only # total duration - no breakdown - and up to one poll interval of imprecision. # premium - fetches full session history from the sessions/daily endpoint. Requires an # active SNOO Premium subscription; without one this endpoint silently # returns no data every time. SNOO_MODE=live # Only affects SNOO_MODE=live (premium mode's notes format is unchanged). # summary - (default) compact: total session length, total soothing time with # an episode count, and a best-effort wake-reason line. # detailed - full breakdown: asleep/soothing totals, per-level totals, one line # per individual soothing episode with its time range, and the # wake-reason line (this was the only format before NOTES_DETAIL existed). NOTES_DETAIL=summary # Set to true to log intended writes without touching Huckleberry DRY_RUN=false # SQLite dedupe store path (mount a volume here in Docker; leave unset to use /data/dedupe.sqlite) # DB_PATH=./dedupe.sqlite