This is a fork from (https://github.com/indiefan/home_assistant_nanit) with added support for:
- Nanit's (now required) 2FA authentication.
- Send Custom Nanit Events (Sound/Light) through MQTT
While it is possible to build the image locally from the included Dockerfile, it is recommended to install and update by pulling the official image directly from Docker Hub. To pull the image manually without running the container, run:
docker pull combmag/nanit
Because Nanit requires 2FA authentication, before we can start we need to acquire a refresh token for your Nanit account, which can be done by running the included init-nanit.sh CLI tool, which will prompt you for required account information and the 2FA code which will be emailed during the process. The script will save this to a session.json file, where it will be updated automatically going forward. Note that the /data
volume provided to the script command must be the same used when running the primary container image later.
Run the bundled init-nanit.sh utility directly via the Docker command line to acquire the token (replace /path/to/data
with the local path you'd like the container to use for storing session data):
docker run -it -v /path/to/data:/data --entrypoint=/app/scripts/init-nanit.sh combmag/nanit
** Important Note regarding Security** The refresh token provides complete access to your Nanit account without requiring any additional account information, so be sure to protect your system from access by unauthorized parties, and proceed at your own risk.
Now that the initial authentication has been done, and the refresh token has been generated, it's time to start the container:
# Note: use your local IP, reachable from Cam (not 127.0.0.1 nor localhost)
docker run \
-d \
--name=nanit \
--restart unless-stopped \
-v /path/to/data:/data \
-e NANIT_RTMP_ADDR=xxx.xxx.xxx.xxx:1935 \
-e NANIT_LOG_LEVEL=trace \
-p 1935:1935 \
combmag/nanit
If this is your initial run, you may want to omit the -d
flag so you can observe the output to find your baby_uid
(which will be needed later if you plan on connecting anything to the feed, like Home Assistant). After getting the baby id (which won't change) you can stop the container and restart it with the -d
flag.
Once the server is running and mirroring the feed, you can then setup an entity in Home Assistant. Open your configuration.yaml
file and add the following:
camera:
- name: Nanit
platform: ffmpeg
input: rtmp://xxx.xxx.xxx.xxx:1935/local/[your_baby_uid]
Restart Home Assistant and you should now have a camera entity named Nanit for use in dashboards.
You can use MQTT to send events from it so that you can control light & whitenoise.
nanit/babies/light
This is used to turn on light/brightness and repeat
Parameter | Description | Type | Default Value |
---|---|---|---|
isLightOn | Turn on light | boolean | Required |
nightLightTimeout | Timer to set timeout | number | Optional. Values: 900, 1800, 3600, 0(infinite) |
Brightness | Camera light brightness | number | Optional. Values: 0 - 100 |
Example:
{
"isLightOn": true,
"nightLightTimeout": 0
}
nanit/babies/volume
Setup volume for playback
{
"volume": 30 // Value: 0 - 100
}
nanit/babies/playback
Used to start/stop whitenoise
interface Playback {
status: "Started" | "Stopped",
playbackType: "birds.wav" | "whitenoise.wav" | "waves.wav" | "wind.wav"
}
Start Playback:
{
"playback": {
"status": "STARTED",
"playbackType": "whitenoise.wav"
}
}
Stop Playback
{
"playback":{
"status":"STOPPED"
}
}