Owlet Smart Sock
Auto-log pulse ox, heart rate, and motion from your baby's Smart Sock
NestMate connects directly to the Owlet cloud using the same credentials as your official Owlet app. Once linked, every session is automatically pulled into your NestMate timeline — no manual entry required.
Compatible devices: Owlet Smart Sock 3 and Dream Sock. The older Smart Sock 2 is not supported by the Owlet cloud API.
Requirements
- An active Owlet account (the same one used with the official Owlet app)
- Owlet Smart Sock 3 or Dream Sock paired and working in the Owlet app
- NestMate account with a baby profile created
Setup
-
Open Settings in NestMate
Tap the profile icon in the top-right corner of the home screen, then select Settings → Integrations.
-
Tap "Connect Owlet"
Find the Owlet card and tap Connect. You'll be prompted to enter your Owlet account credentials.
-
Enter your Owlet email and password
Use the same email and password you use to sign in to the official Owlet app. NestMate stores these securely using the device's encrypted keychain — they are never sent to NestMate's servers.
-
Select your device
NestMate will fetch the Owlet devices linked to your account. Select the Smart Sock paired to your baby.
-
Link to a baby profile
Choose which NestMate baby profile this Owlet device belongs to. Data will be tagged to that baby going forward.
-
Done — data starts flowing
NestMate will start syncing Owlet session data automatically. Live readings appear on your home screen when the Sock is active. Historical sessions from the past 30 days are imported on first connect.
Tip: Keep both the Owlet app and NestMate installed. The Owlet app is still required to configure the Sock's alert settings. NestMate reads the data; the Owlet app manages device settings.
What Gets Synced
| Data point | Sync frequency | Notes |
|---|---|---|
| O₂ saturation (%) | Live (when app is open) | Displayed on home screen |
| Heart rate (bpm) | Live (when app is open) | Displayed on home screen |
| Movement / motion | Live (when app is open) | Used in sleep session correlation |
| Session start / end | On sync (background) | Auto-creates sleep entries |
| Historical sessions | First connection (30 days) | One-time historical import |
Snoo Smart Bassinet
Sync Snoo sleep sessions automatically into NestMate's sleep tracking
The Snoo is one of the most data-rich baby products ever made — but that data was locked inside the Happiest Baby app. NestMate connects directly to the Snoo API so every session, level change, and soothing event appears in your unified sleep timeline alongside your manual logs.
Requirements
- A Snoo smart bassinet (any generation)
- An active Happiest Baby account (same login used with the SNOO app)
- The Snoo paired and set up in the official SNOO app
- NestMate account with a baby profile created
Setup
-
Open Settings in NestMate
Tap your profile icon → Settings → Integrations.
-
Tap "Connect Snoo"
Find the Snoo card and tap Connect.
-
Sign in with your Happiest Baby credentials
Enter the email and password you use to sign in to the SNOO app. Credentials are stored securely in your device's encrypted keychain.
-
Link to a baby profile
NestMate will detect the babies in your Snoo account. Match each one to the corresponding NestMate baby profile.
-
Choose your sync start date
Select how far back you want to import historical data. NestMate can import Snoo sessions, feeding journals, and pumping logs from any date.
-
Tap "Start Sync"
NestMate will import your history and continue syncing new sessions automatically. Depending on how much history you import, the first sync may take a minute.
Session refresh rate: Snoo sessions are pulled on a schedule and whenever you open the app. Live real-time streaming is not supported by the Snoo API. Expect sessions to appear in NestMate within a few minutes of your baby waking.
Tip: Once connected, NestMate's AI sleep insights will start correlating your Snoo session levels with other tracked data — feeding timing, diaper changes, and weather — to surface patterns you can actually act on.
What Gets Synced
| Data type | Direction | Details |
|---|---|---|
| Sleep sessions | Snoo → NestMate | Start time, end time, total duration |
| Soothe levels | Snoo → NestMate | Level progression within each session |
| Feeding journals | Snoo → NestMate | Breast, bottle, solid food entries |
| Pumping logs | Snoo → NestMate | Volume and session duration |
| Historical data | One-time import | Any date you choose, up to your account start |
Home Assistant
Trigger NestMate logging from HA automations, dashboards, and voice commands
NestMate connects deeply with Home Assistant — log events from automations and dashboards, read your baby's live status as an HA sensor, drive smart devices like a Hatch sound machine using Owlet sleep data, and use Google Home to log diapers and feeds by voice. A guided setup script handles the entire configuration in minutes.
Home Assistant 2023.6+ required. The rest_command integration used below has been available since HA Core. Make sure your instance is up to date before starting.
Requirements
- Home Assistant Core 2023.6 or later
- A NestMate account with a baby profile already created
- Access to your NestMate integration token and Baby ID
- Permission to edit
configuration.yamlor your HA dashboard automations
Step 1 — Generate an Integration Token
-
Open NestMate → Settings → Owlet Smart Sock → scroll to Home Assistant
You'll find the Home Assistant integration section at the bottom of the Owlet settings screen.
-
Tap "Generate Token"
NestMate will create a unique bearer token tied to your account. Each caregiver in a family can have their own token — entries logged via HA will be attributed to the token's owner.
-
Copy your Bearer token and Event Logging URL
NestMate will display your unique Bearer token and two endpoint URLs. Copy the Event Logging URL (labeled "Event Logging URL (rest_commands)") — you'll paste it into the YAML below. Keep the token secret; it grants write access to your NestMate data.
Step 2 — Quick Setup (Recommended)
Run the NestMate setup script from your Home Assistant Terminal add-on (or any Mac/Linux shell that can reach your HA config directory). It will ask for your token and Baby ID, then generate and install all the YAML files for you — no manual editing required.
bash <(curl -fsSL https://nestmatebaby.com/tools/nestmate_ha_setup.sh)
The script walks you through each step interactively. It will ask if you have an Owlet sock or Hatch sound machine, then generate pre-filled YAML snippets and optionally copy them straight into your HA config directory. A connection test at the end confirms everything is working before you restart Home Assistant.
Prefer to review the files first? Pass --output-dir ~/Desktop/nestmate-ha to generate the YAML to your Desktop instead of copying it directly. You can inspect and merge the files manually before restarting HA.
What does the script do? It generates three YAML files (nestmate_rest_command.yaml, nestmate_automations.yaml, nestmate_scripts.yaml) pre-filled with your token and Baby ID. It does not install anything, does not require root, and will never overwrite existing HA files without asking first.
Manual Setup (Advanced)
If you prefer to configure Home Assistant by hand, add the following to your configuration.yaml. Replace YOUR_ENDPOINT_URL with the Event Logging URL you copied from the app, YOUR_NESTMATE_TOKEN with your Bearer token, and YOUR_BABY_ID with your baby's ID (see note below).
Where is my Baby ID? Open NestMate → Settings → tap the ⋮ menu on your baby's card → Copy Baby ID. It looks like abc123xyz. Paste it in place of YOUR_BABY_ID in every line below.
# configuration.yaml
rest_command:
# Log the start of a sleep session
nestmate_sleep_start:
url: "YOUR_ENDPOINT_URL"
method: POST
headers:
Authorization: "Bearer YOUR_NESTMATE_TOKEN"
Content-Type: "application/json"
payload: '{"action":"sleep_start","babyId":"YOUR_BABY_ID"}'
# Log the end of a sleep session
nestmate_sleep_stop:
url: "YOUR_ENDPOINT_URL"
method: POST
headers:
Authorization: "Bearer YOUR_NESTMATE_TOKEN"
Content-Type: "application/json"
payload: '{"action":"sleep_stop","babyId":"YOUR_BABY_ID"}'
# Log a diaper change (type: wet | dirty | mixed)
nestmate_diaper:
url: "YOUR_ENDPOINT_URL"
method: POST
headers:
Authorization: "Bearer YOUR_NESTMATE_TOKEN"
Content-Type: "application/json"
payload: '{"action":"diaper","babyId":"YOUR_BABY_ID","type":"wet"}'
# Log the start of a feeding (feedType: breast | bottle | solid)
nestmate_feed_start:
url: "YOUR_ENDPOINT_URL"
method: POST
headers:
Authorization: "Bearer YOUR_NESTMATE_TOKEN"
Content-Type: "application/json"
payload: '{"action":"feed_start","babyId":"YOUR_BABY_ID","feedType":"breast"}'
# Log the end of a feeding
nestmate_feed_end:
url: "YOUR_ENDPOINT_URL"
method: POST
headers:
Authorization: "Bearer YOUR_NESTMATE_TOKEN"
Content-Type: "application/json"
payload: '{"action":"feed_end","babyId":"YOUR_BABY_ID"}'
After editing configuration.yaml, reload Home Assistant (Settings → System → Restart → Quick reload) or call the homeassistant.reload_all service.
Step 3 — Example Automations
Dashboard button
Add a tap-to-log button to any Lovelace dashboard:
# Lovelace button card
type: button
name: "🛌 Sleep Start"
tap_action:
action: call-service
service: rest_command.nestmate_sleep_start
Presence-based sleep detection
Automatically log a sleep entry when your nursery presence sensor detects the room is quiet:
# automation.yaml
- alias: "NestMate — auto-log sleep start"
trigger:
- platform: state
entity_id: binary_sensor.nursery_motion
to: "off"
for: "00:05:00" # 5 min no motion
action:
- service: rest_command.nestmate_sleep_start
- alias: "NestMate — auto-log sleep end"
trigger:
- platform: state
entity_id: binary_sensor.nursery_motion
to: "on"
action:
- service: rest_command.nestmate_sleep_stop
Google Home & voice commands
No custom Actions or developer account needed. Because Google Home already integrates natively with HA, expose NestMate scripts to Google Assistant and trigger them by voice:
# configuration.yaml — the setup script generates these automatically
script:
nestmate_log_diaper:
alias: "Log diaper change" # Google triggers on this alias
sequence:
- service: rest_command.log_nestmate_event
data:
nestmate_payload: '{"type":"nestmate_event","event_type":"diaper","data":{"babyId":"YOUR_BABY_ID","startedAt":"{{ now().isoformat() }}","diaperType":"wet","source":"home_assistant"}}'
nestmate_start_sleep:
alias: "Start baby sleep"
sequence:
- service: rest_command.log_nestmate_event
data:
nestmate_payload: '{"type":"nestmate_event","event_type":"sleep","data":{"babyId":"YOUR_BABY_ID","startedAt":"{{ now().isoformat() }}","source":"home_assistant"}}'
# In Google Home, expose these scripts, then say:
# "Hey Google, turn on Log diaper change"
# "Hey Google, turn on Start baby sleep"
HA Assist (local voice): If you use a local voice assistant via Home Assistant Assist (e.g. a voice satellite or the companion app mic), the same scripts work there too — no cloud required.
Siri Shortcuts: On iPhone, create a Shortcut using Get Contents of URL to call the NestMate API directly — no Home Assistant needed. POST your token as a header and paste the JSON payload. Add it to Siri with "Hey Siri, wet diaper".
Owlet users: If your Owlet sock is on, sleep start and end are detected automatically from biometrics — you don't need a voice command for sleep at all. The voice commands are most useful for diaper changes, bottle feeds, and events that happen when you don't have your phone handy.
Read Your Baby's Status in Home Assistant
NestMate exposes a live status endpoint you can poll as a Home Assistant REST sensor. Once added, attributes like lastFeed.minutesAgo, currentlySleeping, and lastDiaper.minutesAgo are available to any HA automation or dashboard card.
# configuration.yaml — add NestMate as a REST sensor
sensor:
- platform: rest
name: "NestMate Baby Status"
resource: "https://us-central1-baby-tracker-beta.cloudfunctions.net/getBabyStatus?babyId=YOUR_BABY_ID"
headers:
Authorization: "Bearer YOUR_NESTMATE_TOKEN"
scan_interval: 300 # poll every 5 minutes
value_template: "{{ value_json.currentlySleeping }}"
json_attributes:
- lastFeed
- lastDiaper
- lastSleep
- lastOwletSample
With this sensor in place, you can build automations using your baby's actual data. Here are some ideas — but the sensor is yours to use however makes sense for your family:
- Dim the nursery lights automatically when
currentlySleepingbecomestrue - Turn on a soft nightlight when
lastFeed.minutesAgo > 180between midnight and 6 am - Announce on a speaker: "Baby last fed 2 hours ago" when you ask Google
- Show last diaper time and last feed time on a Lovelace dashboard card
- Alert on your phone when
lastDiaper.minutesAgo > 240(possible overdue change)
The lastOwletSample attribute (SpO₂, heart rate, sock connected state) is only populated when the Owlet sock is actively on your baby. It will be null when the sock is off or between sessions.
Owlet + Smart Devices — Closed-Loop Automation
Because NestMate already processes Owlet biometrics into sleep stages, HA can use that sleep state to drive other smart nursery devices — and log what happened back to NestMate so you have a record of every automated action.
Example — Hatch sound machine: When Owlet detects your baby has entered deep sleep, HA lowers the Hatch volume to 20% so the sound doesn't wake them. When deep sleep ends, volume restores to 60%. Both events appear in your NestMate timeline as System entries so you can see exactly when and why your Hatch changed.
The setup script handles this automatically. If you select "Yes" when asked about Owlet and Hatch during setup, the script generates these automations pre-filled with your entity names and token. No YAML editing needed.
The same pattern works for any HA-controllable device — lights, thermostats, white noise speakers, projectors. The key is that the Owlet sock must be on your baby for sleep state detection to work. Without the sock, use manual sleep start/stop triggers instead.
What gets logged to NestMate? Each automation logs a System event to your NestMate timeline: the device that was controlled, the action taken, and why it triggered. These appear distinctly from your hand-logged events so your care history stays clean.
Stream Owlet Sock Data via Home Assistant
If you already have your Owlet Smart Sock connected to Home Assistant (via the Owlet HA integration), you can push live biometric data directly to NestMate — even with the NestMate app closed. NestMate's backend will automatically detect sleep and wake periods from the sensor readings.
This is separate from the rest_commands above. The Owlet biometric endpoint accepts raw sensor readings (heart rate, SpO₂, movement) and derives sleep state automatically. Use this if you want richer sleep analytics beyond a simple start/stop timestamp.
Step 1 — Copy your Owlet Biometric URL
In NestMate → Settings → Owlet Smart Sock → scroll to Home Assistant, tap View Token and copy the Owlet Biometric URL (labeled "Owlet Biometric URL (raw sensor data)"). This is a different URL from the event logging endpoint.
Step 2 — Add an HA automation to forward Owlet data
Add the following to your Home Assistant automation.yaml. This sends a biometric sample to NestMate every time the Owlet sock updates its readings (typically every 1–5 seconds).
# automation.yaml — forward Owlet readings to NestMate
- alias: "NestMate — stream Owlet biometrics"
trigger:
- platform: state
entity_id: sensor.owlet_heart_rate # adjust to your entity name
action:
- service: rest_command.nestmate_owlet_ingest
And in configuration.yaml, add the REST command that builds the sensor payload:
# configuration.yaml
rest_command:
nestmate_owlet_ingest:
url: "YOUR_BIOMETRIC_ENDPOINT_URL"
method: POST
headers:
Authorization: "Bearer YOUR_NESTMATE_TOKEN"
Content-Type: "application/json"
payload: '{"babyId":"YOUR_BABY_ID","samples":[{"ts":"{{ now().isoformat() }}","heartRateBpm":{{ states("sensor.owlet_heart_rate") | int(0) }},"spo2Percent":{{ states("sensor.owlet_oxygen_level") | int(0) }},"movement":{{ states("sensor.owlet_movement") | int(0) }},"sockConnected":{{ states("binary_sensor.owlet_sock_connected") == "on" }}}]}'
Adjust entity IDs to match your setup. Owlet entity names vary depending on your HA integration version. Common names: sensor.owlet_heart_rate, sensor.owlet_oxygen_level, binary_sensor.owlet_sock_connected. Check your HA Developer Tools → States for exact names.
Once running, NestMate will automatically build sleep sessions in the background from the biometric stream — no manual sleep_start/stop needed for Owlet users.
Frequently Asked Questions
--output-dir ~/Desktop/nestmate-ha to save them locally instead.
NestMate