would you happen to have the jar file for this release?
Thnx⊠why did i not see that
Hi Michel!
As youâve already figured out, the API is responding with a quoted URI, as stated in latest Surveillance Station API documentation v.2.8. This behavior seems to cause random issues depending on browser / playback software. In fact, in bindingâs issue #26 youâve found an user had an issue with StmKey not being quoted.
As it is, Iâd rather leave the URI unchanged and hope for Synology to make it somehow⊠universal someday.
P.S. Just tested on my setup: both quoted and unquoted URIs were working in browser and VLC as well.
Your thoughts on this are welcome.
Best regards
Pav
Hi Pav,
as a workaround I created a new dummy item for the URL and then created a rule which does the string replacement. The basically does:
Cam_Dome_Snapshot_Live.postUpdate( Cam_Dome_Snapshot_Live_Uri_Mjpeg_Http.state.toString.replaceAll("\"", "" ) )
But later I also got the problem with leading 0 where this doesnât work anymore. So I was further searching for a solution and maybe found (script from here https://forum.iobroker.net/viewtopic.php?t=4101&start=20#p46159) some good one which maybe could also be applied to your solution. The idea is to have a php script which does the authentification inside so the url is somehow static.
<?php
// Configuration
$user = "display"; // Synology user
$pass = "somepassword"; // Password
$ip = "192.168.10.64";
$port = "5000";
$cameraID = $_GET["CamID"]; // ID for the camera
$cameraStream = $_GET["stream"];
// You can change the stream by adding ?stream=0/1/2 to the url. For example: www.yourdomain.com/snapshot.php?stream=2
// 0: Live stream | 1: Recording stream | 2: Mobile stream
// Default value is stream 0
if ($cameraStream == NULL) {
$cameraStream = "0";
}
// Authentification and get SID
$json = file_get_contents('http://'.$ip.':'.$port.'/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account='.$user.'&passwd='.$pass.'&session=SurveillanceStation&format=sid');
$obj = json_decode($json, true);
@$sid = $obj["data"]["sid"];
$Cam_Stream_URL = 'http://'.$ip.':'.$port.'/webapi/SurveillanceStation/videoStreaming.cgi?api=SYNO.SurveillanceStation.VideoStream&version=1&method=Stream&cameraId='.$cameraID.'&format=mjpeg&_sid='.$sid;
//set_time_limit(30);
ob_implicit_flush(1);
$fp = fopen($Cam_Stream_URL, "r");
foreach ($http_response_header as $header) {
header($header);
}
while($str = fgets($fp, 4096))
{
echo $str;
}
?>
Maybe itâs possible also for you to get the SID and deliver a static URL without the StrKey?
Regards,
Michel
Nice idea! As youâre already there, you might just try it yourself. With following replacement in your rule you would convert the static snapshot URI (Surveillance_Snapshot_Uri_Static
) into a new dummy item (Surveillance_Snapshot_Live_Uri_Static
):
Surveillance_Snapshot_Live_Uri_Static.postUpdate(
Surveillance_Snapshot_Uri_Static.state.toString.replace("entry.cgi", "SurveillanceStation/videoStreaming.cgi").replace(".Camera", ".VideoStream").replace("version=8", "version=1").replace("GetSnapshot", "Stream&format=mjpeg")
)
Iâm looking forward to your feedback.
In my openhab.log I see such message:
2018-11-04 11:41:38.276 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler SynoBridgeHandler of thing synologysurveillancestation:station:1630mqn415001 tried checking if channel homemode is linked although the handler was already disposed
Any idea what is causing this?
Glad it worked!
Your warning I havenât seen yet though. Is your HomeMode channel linked/enabled? If yes, is it functioning properly? Can you see anything wrong at all? When do you receive this message? Every X seconds/minutes, on every Binding/openHab start, on configuration change?
You have handler disposed in this thread:
https://community.openhab.org/t/handler-disposed/49168?u=tnemrap
/Mike
This binding works perfect! Nice job!
I added some cameraâs, but the cameraâs with PTZ are giving me an error, any ideas?
2018-11-22 09:48:32.707 [WARN ] [ome.core.thing.internal.ThingManager] - Initializing handler for thing âsynologysurveillancestation:camera:42f5d3bc:8â takes more than 5000ms.
2018-11-22 09:48:35.545 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method âThingHandler.initialize()â on âorg.openhab.binding.synologysurveillancestation.handler.SynoCameraHandler@4ec48â: null
java.lang.NullPointerException: null
at org.openhab.binding.synologysurveillancestation.handler.SynoCameraHandler.updatePatrols(SynoCameraHandler.java:339) [224:org.openhab.binding.synologysurveillancestation:2.4.0.a30]
at org.openhab.binding.synologysurveillancestation.handler.SynoCameraHandler.initialize(SynoCameraHandler.java:191) [224:org.openhab.binding.synologysurveillancestation:2.4.0.a30]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [101:org.eclipse.smarthome.core:0.10.0.oh230]
at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [101:org.eclipse.smarthome.core:0.10.0.oh230]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
at java.lang.Thread.run(Thread.java:748) [?:?]
What is your exact question? HomeMode can be used but is not mandatory for anything. Although there are some obscure warnings I couldnât reproduce, it still should work as intended.
@dafdegiraf could it be that you have no patrols defined? Please try to run this URL (using your IP and your camera ID as shown in camera properties in the binding):
http://your-DS:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.PTZ&method=ListPatrol&version=1&cameraId=1
If you have any patrols defined, you should see their list. If not, you will get an error with code 400 (execution failed). In that case you have to disable the corresponding channel for the binding to work.
Indeed, i have no patrols defined.
How do i disable the corresponding channel?
I tried it to unlink it in habmin, but it doesnât do anything
Actually it should⊠youâd need to unlink or delete altogether this âRun patrolâ item, so it doesnât there anymore. I would recommend using PaperUI, which is more user friendly in my opinion.
I was able to reproduce your issue: turning Run patrol on put the Thing offline, turning off brings it online back again.
In any case, the binding going down in this case is an obvious error and I thank you for pointing this out! Iâll try to make a hotfix today or this weekend.
Thanks for your quick response.
I was actually wondering if HomeMode is a Must and if not used if it could cause the âHandler disposedâ issue.
But obviously not - according to your response .
So, thanks again
@NCO @michelm_de @dafdegiraf
Iâve tried to address your issues, please check the latest release and its notes for more details.
Thanks for reporting, feedback is appreciated!
how long ago did you start this binding? a while now! Iâm still several versions back and rock solid.
Keep up the good work @Pavion