I made some nice progress tinkering with my indoor cam, I was able to get the following configurable using the API, it’s pretty much everything that is configurable in app for the settings of the indoor camera. I can’t guarantee this works for all camera’s because I don’t know if the property IDs are the same or not.
- Status LED ON/OFF
- Camera ON/OFF
- Auto night vision ON/OFF
- Watermark (Off, timestamp, timestamp and logo)
- Motion detection ON/OFF
- Motion detection activity zones (clear, set) (This currently only takes coordinates, there is no UI to configure the zones)
- Motion detection types (Person/Pet/Other)
- Motion detection sensitivity (lowest-highest)
- Sound detection ON/OFF
- Sound detection type (crying/other)
- Sound detection sensitivity (lowest-highest)
- Pet command ON/OFF
- Pet command activity zones (this is the same as motion detection zones)
- Pet command auto respond (this is fidgety - you can’t create audio here but you can select the one to be played, but you need to know it’s ID which currently is only known when it’s currently selected)
- Continuous recording ON/OFF
- Continuous recording type (24/7 OR scheduled) (can’t configure the schedules)
- Video quality Streaming Quality (auto/high/medium/low)
- Video quality Recording quality (2k/1080p)
- Audio settings Microphone ON/OFF
- Audio settings Audio recording ON/OFF
- Audio settings speaker ON/OFF
- Audio settings speaker volume (0-100)
- Notification settings type (person/pet/other motion/crying/other sound) (switch each on/off)
- Notification settings interval time (configurable in minutes, although UI only shows 0-5)
- Notification settings content (most efficient/full effect/include thumbnail)
- Mounting settings Flip image 180 ON/OFF
I know it seems like a lot but it’s got a glaring issue with it all. The camera DOESN’T update when you change these settings. You do see the new config in the app (after a pull to refresh), but the camera doesn’t reflect these changes. This is clearly noticable with the status LED, it doesn’t turn on/off when you change it with the API, but it does with the app.
My hunch is that it makes the API request, then makes a request directly to the camera to tell it that new config is available and it should download it, then the camera does a GET from the API and applies the new config. Unfortunately, I have been unable to track any requests so if anyone with better knowledge on that front can intercept some messages between the app -> camera or the camera -> the internet, we could get a clearer picture of what is going on.
Until the above is figured out, the API isn’t that useful if you need to change something in the app anyway for it to take effect. But I still think this is good progress in the right direction!
If you want to take a look through my changes/have a play with it, here is the repo: