Homekit running thanks to RTSP

I have all 4 of my Wyze Cams in Apple HomeKit now thanks to RTSP support in the newest beta! Thanks Wyze Team.

10 Likes

how did you get this running? Are you running a Homekit server to bridge Wyzecam to Homekit?

Yes, running Homebridge on a spare MacBook Air that I no longer use for anything else but it can also run on a Raspberry Pi.

Hey! I wanted to thank you for posting your guide on Reddit. I’m ordering a spare Wyze Cam Pan to test this with, I’m truly excited to be able to do this.

You’re welcome! If you have any trouble setting it up on your Pan when it arrives, let me know. I’ll be glad to try and help!

What is “RTSP”?

RTSP is short for ‘Real Time Streaming Protocol’, something Wyze is adding to make themselves compatible with other systems:

how are motion events displayed on the app? and, where are the motion events saved, on the Mac Air?

thanks. very interested in this. Currently using SecuritySpy, but would love to do HomeKit.

As I presently have it configured there are no HomeKit notifications directly created by the RTSP stream to HomeKit. However, if you have an existing motion sensor configured in HomeKit then the Home app will automatically take a snapshot from the camera when a motion event is detected (by the motion sensor, not camera). These notifications are sent as push notifications from Apple’s servers so they aren’t really stored anywhere (not super useful). I’ve been tinkering with another homebridge plugin that is supposed to monitor RTSP streams and store picture/video locally (ie on Mac Air in my case). The project on GitHub is https://github.com/rxseger/homebridge-camera-motion/

If I manage to get that running as well, I’ll update you on it! :wink:

1 Like

What does your Homebridge config file look like? Any hints for the FFMpeg settings for best use?

Check this tread on reddit, there are also PDF Documents in this thread to explain how to to set it up. You need to install “homebridge-camera-ffmpeg” and “ffmpeg”, its all explained in the REDDIT thread and the PDFs

This is how the platforms section of config.json looks like (XXXXXX stands for username and password):

{
“platform”: “Camera-ffmpeg”,
“cameras”: [
{
“name”: “Front”,
“videoConfig”: {
“source”: “-re -i rtsp://XXXXXX:XXXXXX@10.0.1.90/live”,
“maxStreams”: 2,
“maxWidth”: 640,
“maxHeight”: 360,
“maxFPS”: 15
}
},
{
“name”: “Back”,
“videoConfig”: {
“source”: “-re -i rtsp://XXXXXX:XXXXXX@10.0.1.70/live”,
“maxStreams”: 2,
“maxWidth”: 640,
“maxHeight”: 360,
“maxFPS”: 15
}
}
]
},

Michael linked to my Reddit post above. The PDF has my homebridge config in it. I would recommend
“maxStreams”: 2,
“maxWidth”: 640,
“maxHeight”: 360,
“maxFPS”: 10 (can go up in FPS if you’re not experiencing lots of dropouts in stream)

Also, if you’re having frequent dropouts in HomeKit (stream stalking/lagging) then you can change quality in Wyze app (HD/SD/360p) and that will carry over to the RTSP stream sometimes that helps.

Hope that helps.

1 Like

Need help getting this added into my existing homebridge setup here is what I have but I cant get the config.json to validate. This is what i have except for passwords and account date that was between the “”

{
“description”: “JSON API”,
“platforms”: [{
“platform”: “homebridge-smartthings.SmartThings”,
“name”: “SmartThings”,
“app_url”: “https://graph-na02-useast1.api.smartthings.com:443/api/smartapps/installations/”,
“app_id”: “”,
“access_token”: “”
},
{
“platform”: “VesyncPlug”,
“name”: “VesyncPlug”,
“username”: “”,
“password”: “”
},
{
“platform”: “NeatoVacuumRobot”,
“email”: “”,
“password”: “”,
“refresh”: “120”,
“extraCareNavigation”: “true”
},
{
“platform”: “Camera-ffmpeg”,
“cameras”: [{
“name”: “Main Room”,
“videoConfig”: {
“source”: “-re -i rtsp://:@192.168.86.47/live”,
“maxStreams”: 2,
“maxWidth”: 640,
“maxHeight”: 360
“maxFPS”: 15
}
}]
}]

    ],
    "bridge": {
            "name": "Homebridge",
            "username": "AA:BB:CC:DD:EE:FF",
            "port": ,
            "pin": ""
    }

}

I got it working and the camera now shows up in homekit but now none of my smartthings devices show up? Not sure where to go to fix that? It doesnt see my homebridge any more as an accessory to add it just shows the camera.

Any thoughts on how to remedy this?

Can they be run at the same time or do they need to be run seperately

Sorry for not getting back to you sooner. We are out of town for the weekend. Would you mind sending your working config.json and I’ll take a look for you? I have SmartThings too and both can run at the same time in homebridge (at least on my Mac).

I sure will and thanks for your help

{
“description”: “JSON API”,
“platforms”: [{
“platform”: “homebridge-smartthings.SmartThings”,
“name”: “SmartThings”,
“app_url”: “https://graph-na02-useast1.api.smartthings.com:443/api/smartapps/installations/”,
“app_id”: “”,
“access_token”: “”
},
{
“platform”: “VesyncPlug”,
“name”: “VesyncPlug”,
“username”: “",
“password”: “*****************”
},
{
“platform”: “NeatoVacuumRobot”,
“email”: "
",
“password”: "
",
“refresh”: “120”,
“extraCareNavigation”: “true”
},
{
“platform”: “Camera-ffmpeg”,
“cameras”: [{
“name”: “Living Room”,
“videoConfig”: {
“source”: "-re -i rtsp://
******************/live”,
“maxStreams”: 2,
“maxWidth”: 640,
“maxHeight”: 360,
“maxFPS”: 15
}
}]
}
],
“bridge”: {
“name”: “Homebridge”,
“username”: “AA:BB:CC:DD:EE:FF”,
“port”: 51826,
“pin”: “123-45-678”
}
}

Just wanted to let you know I got it working without any issues. I just decided to start from scratch so I formatted my raspberry pi and reloaded it. Reinstalled homebridge and this time I installed tonesto7’s version where previously I had the pdlove. Now I just need to add my other cameras any tips for adding multiple cameras?

Thanks again for the great guide to making this work.

https://github.com/tonesto7/homebridge-smartthings-tonesto7/blob/master/README.md

You’re welcome! Glad it helped. Here is my config with multiple cameras…

{
"bridge": {
"name": "Homebridge",
"username": "98:32:D5:D7:C1:8C",
"pin": "518-42-987"
},
"platforms": [
{
  "platform": "Nest",
  "username": "email@gmail.com",
  "password": "password",
  "clientId": "TOKEN",
  "clientSecret": "TOKEN",
  "code": "TOKEN",
  "token": "TOKEN"
},
{
  "platform": "Flic",
  "name": "Flic",
  "controllers": [
    {
      "host": "localhost",
      "port": 5551,
      "buttons": [
        "80:e4:da:73:7e:c0",
        "80:e4:da:73:55:fb",
        "80:e4:da:73:5c:19"
        ],
      "client": {
        "_events": {},
        "_eventsCount": 4
      },
      "scanner": {
        "_events": {},
        "_eventsCount": 1
      }
    }
  ]
},
{
  "platform": "Hue",
  "name": "Hue",
  "users": {
    "001788FFFE20CCEC": "TOKEN"
  },
  "heartrate": 2,
  "timeout": 5,
  "lights": true,
  "nativepasswordSensors": false,
  "nativepasswordLights": true,
  "groups": false,
  "group0": false,
  "rooms": false,
  "sensors": true,
  "excludeSensorTypes": [
    "Daylight",
    "CLIP",
    "ZLLSwitch"
  ],
  "schedules": false,
  "rules": false
},
{
  "platform": "Camera-ffmpeg",
  "cameras": [
    {
      "name": "WyzeCamTV",
      "videoConfig": {
        "source": "-re -i rtsp://username:password@10.0.1.113/live",
        "audio": true,
        "maxStreams": 2,
        "maxWidth": 640,
        "maxHeight": 360,
        "maxFPS": 10
      }
    }
  ]
},
{
  "platform": "Camera-ffmpeg",
  "cameras": [
    {
      "name": "WyzeCamPan",
      "videoConfig": {
        "source": "-re -i rtsp://username:password@10.0.1.62/live",
        "audio": true,
        "maxStreams": 2,
        "maxWidth": 640,
        "maxHeight": 360,
        "maxFPS": 10
      }
    }
 ]
},
{
  "platform": "Camera-ffmpeg",
  "cameras": [
    {
      "name": "WyzeCamLR",
      "videoConfig": {
        "source": "-re -i rtsp://username:password@10.0.1.57/live",
        "audio": true,
        "maxStreams": 2,
        "maxWidth": 640,
        "maxHeight": 360,
        "maxFPS": 10
      }
    }
  ]
},
{
  "platform": "Camera-ffmpeg",
  "cameras": [
    {
      "name": "WyzeCamPatio",
      "videoConfig": {
        "source": "-re -i rtsp://username:password@10.0.1.27/live",
        "audio": true,
        "maxStreams": 2,
        "maxWidth": 640,
        "maxHeight": 360,
        "maxFPS": 10
      }
    }
  ]
},
{
  "platform": "LiftMaster2",
  "username": "email@gmail.com",
  "password": "password",
  "openDuration": 15,
  "closeDuration": 25,
  "polling": true,
  "longPoll": 300,
  "shortPoll": 5,
  "shortPollDuration": 120
},
{
  "platform": "BelkinWeMo",
  "name": "WeMo Platform"
}
]
}

Thanks