Working HTTP binding for Motorola Baby Monitor

If anyone is interested, here are some item configurations for managing a Motorola Baby Monitor in OpenHAB in stead of Hubble. Tested with a MBP854CONNECT. It requires a static IP address (which in turn requires a DHCP reservation).

Still to figure out:

2 Likes

I have now found a solution for the motion detection. It will however ditch the motion detection feature of the Motorola camera itself, and instead let TinyCam Monitor Pro detect motion in the feed from the camera. You need:

  1. An available Android device. I’ve got those as wall controllers for my system, so I just picked one of them.
  2. TinyCam Monitor Pro with a custom_vendor.xml file defining the controls for the camera. I will post this once it is compelte. You will need the Pro version for Tasker support and motion detection.
  3. Tasker, to receive motion detection events from TinyCAM Monitor Pro (profile -> plugin -> TinyCam Monitor).
  4. RESTask, to send the events to OpenHAB (task -> plugin -> RESTask).



I also turned a couple of other Android devices into Webcams, using IP Webcam Pro which integrates smoothly into TinyCam Monitor Pro. That gives both motion detection capabilities directly (IP Webcam Pro -> Tasker), and through TinyCam Monitor using the same indirect motion detection feature as the Motorola.

Both the Motorola camera and IP Webcam Pro offers audio/video streams that you can integrate into a web page and serve through your sitemap.

And while Tasker is now in my Android terminals, as a bonus I can also use it to locate the whereabouts of people, cats, dogs and things using TrackR devices and Tasker Bluetooth Near detection.

Here is the custom_vendors.xml for the Motorola camera:

<?xml version="1.0" encoding="UTF-8"?>
<vendors>
  <vendor name="Motorola Baby Cam">
    <model name="MBP845CONNECT" defaultPort="80" defaultRtspPort="6667">
      <request name="Snap">/cgi/jpg/image.cgi</request>
      <request name="RTSP">/blinkhd</request>
      <request name="PtzMoveHome">/?action=command&amp;command=set_h_cruise&amp;value=90</request>
      <request name="PtzMoveRelLeft">/?action=command&amp;command=move_left9.9</request>
      <request name="PtzMoveRelRight">/?action=command&amp;command=move_right9.9</request>
      <request name="PtzMoveRelUp">/?action=command&amp;command=move_backward9.9</request>
      <request name="PtzMoveRelDown">/?action=command&amp;command=move_forward9.9</request>
      <request name="PtzMoveStop">/?action=command&amp;command=lr_stop</request>
      <request name="Brightness" min="1" max="8">/?action=command&amp;command=set_brightness&amp;value=%VALUE%</request>
      <request custom="Stop vertical move">/?action=command&amp;command=fb_stop</request>
      <request custom="Vertical center">/?action=command&amp;command=set_h_cruise&amp;value=90</request>
      <request custom="Resolution 320p">/?action=command&amp;command=set_resolution&amp;value=320p</request>
      <request custom="Resolution 480p">/?action=command&amp;command=set_resolution&amp;value=480p</request>
      <request custom="Resolution 720p">/?action=command&amp;command=set_resolution&amp;value=720p</request>
      <request custom="Stop playing lullaby">/?action=command&amp;command=melodystop</request>
      <request custom="Play lullaby 1">/?action=command&amp;command=melody1</request>
      <request custom="Play lullaby 2">/?action=command&amp;command=melody2</request>
      <request custom="Play lullaby 3">/?action=command&amp;command=melody3</request>
      <request custom="Play lullaby 4">/?action=command&amp;command=melody4</request>
      <request custom="Play lullaby 5">/?action=command&amp;command=melody5</request>
      <request custom="No beep">/?action=command&amp;command=beeper_dis</request>
      <request custom="Long beep">/?action=command&amp;command=beeper_en&amp;setup=1000100000000000</request>
      <request custom="Short beep">/?action=command&amp;command=beeper_en&amp;setup=1111111111111111</request>
    </model>
  </vendor>
</vendors>

Note: A side effect is that the move_left and move_right commands move almost the whole way around when used in a browser or OpenHAB, but they work much better in TinyCam (they only move a couple of degrees) - although they are using the exact same URL. The move_up and move_down commands still behave bad no matter where you trigger them (except in the Hubble app).

TinyCam has support for center and stop moving commands - but the camera does not. The camera has support for vertical / horizontal equivalents, but TinyCam does not. I have rules for that in OpenHAB, and a REST call would solve the problem, but there’s no way in custom_vendors.xml to get TinyCam to send anything to any other IP than the camera. So the file above only has support for vertical center / stop moving.

Edit: Added vertical center / stop moving as custom buttons. A bit more cumbersome, but at least the center one is nice to have.

Hi Patrik,

Just bought this camera the other day and tried to get the temperatur out.
I tried with your item:

Number temp_baby “Baby cam temperature [%.1f°C]” (babycam) {http="<[http://10.0.0.50/?action=command&command=value_temperature:60000:REGEX(.: ([0-9.]))]"}

Did i misunderstand anything here? Is there any part of sytax i should also remove?

Hi Everyone,

I have Motorola Focus73 and access to my camera through commands decribes above.
Do you have any idea about the command to activate Day night vission because without Hubble, the day night vision is not activated.

Best regards,
Rémi

Hi Tommy

Your line lacks a couple of characters (the stars *).

Number temp_baby "Baby cam temperature [%.1f°C]" <temperature> (babycam) {http="<[http://ip.ad.re.ss/?action=command&command=value_temperature:60000:REGEX(.*: ([0-9.]*))]"}

Regards
/P

Hi,

Still nothing. I can read values in tinycam with your xml file tho.
Just to be sure im not doing something stupid i will try to show how i do it.

My item:

Number 	temp_baby "Baby cam temperature [%.1f°C]" <temperature> (babycam) {http="<[http://10.0.0.153/?action=command&command=value_temperature:60000:REGEX(.*: ([0-9.]*))]"}

My sitemap

Text item=temp_baby	 label="Temp kamera [%.1f °C]" icon="climate"

Looks good to me.

It’s been a while since I did it though - so if you are running a newer firmware, they might have changed things.

Tip: I reverse-engineered the protocol by going into the web pages that reside on the camera, and just run a simple inspect in Chrome to see what happened when I loaded pages or clicked on buttons. Since you are running OpenHAB, you’re probably tech savvy enough to pull that off too.

Hi. @Pal Have you been able to use the monitor sound detection to trigger anything? I would like to both put the video / picture on a habpanel dashboard (which I think I can do using what you’ve posted) but would also like it to trigger something if sound is detected. Have you done anything similar?

Hi Patrick,
can I ask you where did you found the commands urls of this bay monitor ? some manual?
Thanks !

Scootash Fraser: Sorry for late (and negative) answer. I have not fiddled with that. I’ve since bought other cameras.

Villarob: I just used the same URL commands as are used in their own web pages on the camera.

If anyone is interested I have written a binding that can turn a $60 Amcrest IP camera into a baby monitor. I have working PTZ movement, movement and audio alarms including an adjustable threshold so the audio alarm does not go off when using white noise in the room, or the baby is only lightly stirring. Openhab then allows any number of cool features like push alert messages to your mobile phone through myopenhab.org and sending messages to my TV and controlling night lights.

Thanks Patrik for the information.

I’m able to get values from the Motorola Focus68… investigating more for aditionnal features that I can retrieve or set.

Merci.