Hi SmartThings Team,
When I refer the document : Capabilities Reference | SmartThings Developers
, and I want to use the capability of VideoStream, I did not see any information about video codec and audio codec.
I want to know :
Q1. Does smartThings support the rtsp streaming?
Q2. What kind of video codec and audio codec support in here ?
Q3. Does any example about the videostream capability?
Hi Nayelyz,
Thanks for your reply.
I want to use a witness spotlight cam from leedarson to connect to smarthThings.
This device’s capabilities is as follows:
2K QHD
2-Way Audio
400lm Spotlight
Alarm Alert
Human Detection
SpotlightNight Vision
2T2R
IP65
Smoke/CO Alarm and Sound Detection
10.Glass Break Detection
How is the motion detection working here? Does the plugin itself detect it based on video movement or is it expecting (onvif?) notifications from the camera?
what is the ‘addState’ command in Edge?
Can you explain the “InHomeURL” vs “OutHomeURL” ? In my case I would always be getting a stream IN from a video camera;so would I only use InHomeURL then?
is using this fixed device profile the only way to get video to work? Can I not define my own device just using the videoStream capability? (My first attempt yielded no video window)
As this capability is only listed in the device profile, you should send the capability event but I’m not sure how you would receive the event in the driver…I’ll talk to the engineering team about that
That command comes from the ST Schema SDK to send this new value to the capability in ST. In Edge, it would be device:emit_event.
Let me confirm this with the team.
Did you use the metadata in your profile and it still didn’t work?
If you only include the videoStream capability without the proper metadata, the plugin won’t be displayed
If I use the meta then yes, I get the expected presentation. However, I’m passing my RTSP URL in both the in and out elements but not getting anything: (I assume you’ve been meaning to say ‘RTSP’, rather than ‘RSTP’)
FYI, if I load just the ‘out’ URL, I eventually get an error message: “There was a problem streaming the video. Tap the refresh button.”. If I just load the ‘in’ URL, or both, it spins forever with no error.
I just realized something - most RTSP commands to an IP camera (DESCRIBE, SETUP, PLAY, TEARDOWN) are going to require authorization, yet there’s no way you described to even provide a user and password. So I’m not sure how this could even work??
OK, thanks for the info. I found this syntax for the URL, I don’t know if all the commands can use the “base” where the user and password are included:
rtsp://user:pass@192.168.0.6:554/streamurl
I need to gather more information from the team, the integration of videocamaras is not very common and the current ones from official partners are using Schema Connector.
It’s not 100% - I’m only getting video for a couple of my cameras, but it’s something. I’ve figured out that the OUT URL seems to be the right one to use. I can leave the IN URL empty.
No issue with starting/stopping the stream for some cameras - for others it’s just spinning indefinitely and I’m not getting any video.
I have the motion events working: that requires setting up event notifications with each camera according to ONVIF spec, which is all working (even if video is not).
@nayelyz I’ve run up against some pretty significant issues trying to implement an Edge video driver:
using the SmartThings-smartthings-c2c-ring-camera VID doesn’t appear to be a viable alternative, as it doesn’t allow me to have any device Settings. It’s probably because that VID was designed for a cloud-to-cloud implementation in mind. For Edge, I need device Settings defined to be able to have the user configure userID and password, and other configuration settings.
I’ve been able to make another approach work, which is to NOT use that VID and instead rely on creating a camera group. That allows me to get video streaming to work, however it doesn’t seem to be very reliable. But, the big issue here is SECURITY. When my driver provides the rtsp streaming URL to SmartThings when requested, it has to include the camera’s UserID and Password. This gets passed in the clear on the network, but even worse, it gets displayed in history!
So given these two issues, I am asking:
We need a more versatile video presentation that is more suited for Edge drivers. Would it be possible for someone to create a new presentation like SmartThings-smartthings-c2c-ring-camera, but that doesn’t preclude device Settings? Nirvana would be the ability to also add other capabilities in the presentation, but I can live with the fixed format if only Settings were supported.
We need a more secure way to provide authentication info with the stream URL. Developers also need more control over what gets displayed in history, like a flag parameter added to emit_event to exclude the state change from history. (I’ve pointed out the need for something like this previously in a separate topic)
It is true that the official integrations like the Ring camera are using a C2C connection and “settings” are not a “thing” there but still, I don’t know why the VID is preventing you to show settings.
This option was a workaround, not an official solution, sorry if I wasn’t clear about that part before.
I will create a feature request about the ability/options to integrate camera devices using your comments. However, it can take some time to be analyzed and implemented (if it gets approved). It depends on the team’s workload.
For now, that’s all the information I have, sorry.
What about the videoCamera capability? What exactly does that do? Is it only for camera controls, or does it include a video display element? I’ve not been able to get it to work, presumably because I don’t know what it requires to initialize. Is there any documentation or examples for the attribute called “settings”?
Name Description Type
settings The current state of the settings object