{"id":6670,"date":"2025-02-01T15:44:12","date_gmt":"2025-02-01T14:44:12","guid":{"rendered":"https:\/\/olivier.hoarau.site\/?p=6670"},"modified":"2025-02-01T16:55:02","modified_gmt":"2025-02-01T15:55:02","slug":"videosurveillance-avec-zoneminder-la-suite","status":"publish","type":"post","link":"https:\/\/olivier.hoarau.org\/?p=6670","title":{"rendered":"Vid\u00e9osurveillance avec Zoneminder la suite"},"content":{"rendered":"\n<p>J&rsquo;ai \u00e9toff\u00e9 mon syst\u00e8me de vid\u00e9osurveillance avec maintenant trois cam\u00e9ras ext\u00e9rieures au total, c&rsquo;est ma configuration a priori d\u00e9finitive. Comme j&rsquo;\u00e9tais plut\u00f4t satisfait de la cam\u00e9ra <strong>Annke C500 I51DL<\/strong> avec une bonne compatibilit\u00e9 sous Linux j&rsquo;en ai prise une deuxi\u00e8me, pour la derni\u00e8re cam\u00e9ra c&rsquo;est toujours une <strong>Annke<\/strong>, un mod\u00e8le d\u00f4me commandable \u00e0 distance <strong>WPT500 I51CP<\/strong> qui marche \u00e9galement parfaitement sous <strong>Linux<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.funix.org\/fr\/linux\/images\/video\/videosurveillance\/annke-C500-i51dl.jpg?w=474&#038;ssl=1\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Annke C500 I51DL<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.funix.org\/fr\/linux\/images\/video\/videosurveillance\/annke-wpt500-i51cp.jpg?w=474&#038;ssl=1\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Annke WPT500 I51CP<\/figcaption><\/figure>\n\n\n\n<p>Pour finaliser mon dispositif, je souhaite \u00e9galement placer une cam\u00e9ra \u00e0 l&rsquo;int\u00e9rieur. Sans vouloir y mettre le prix j&rsquo;ai test\u00e9 une cam\u00e9ra <strong>Annke Crater Pro I81CG<\/strong> qui m&rsquo;a co\u00fbt\u00e9 gu\u00e8re plus d&rsquo;une vingtaine d&rsquo;euros.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/annke-crater-pro.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"457\" src=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/annke-crater-pro.jpg?resize=474%2C457&#038;ssl=1\" alt=\"\" class=\"wp-image-6671\" srcset=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/annke-crater-pro.jpg?w=1000&amp;ssl=1 1000w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/annke-crater-pro.jpg?resize=300%2C290&amp;ssl=1 300w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/annke-crater-pro.jpg?resize=768%2C741&amp;ssl=1 768w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/annke-crater-pro.jpg?w=948&amp;ssl=1 948w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><figcaption class=\"wp-element-caption\">Annke Crater Pro<\/figcaption><\/figure>\n\n\n\n<!--more-->\n\n\n\n<p>Il faudra installer le logiciel <strong>Myannke<\/strong> sous un mobile sous <strong>Android<\/strong> et pas n&rsquo;importe quelle version, mais la version <strong>v10.6.1.2306271600<\/strong> qui fournit une fonctionnalit\u00e9 <strong>Onvif<\/strong> qu&rsquo;on activera.  La cam\u00e9ra est ensuite accessible avec une adresse <strong>rtsp<\/strong> qui va ressembler \u00e0 \u00e7a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>rtsp:\/\/admin:password@192.168.2.134:554\/live\/1jfiegbrziwpq_p3_FVGPXEBUISWI<\/strong><\/code><\/pre>\n\n\n\n<p>Sauf que la cha\u00eene de caract\u00e8re \u00e0 la fin varie r\u00e9guli\u00e8rement. J&rsquo;ai cherch\u00e9 \u00e0 identifier une adresse <strong>rtsp<\/strong> fixe et de fil en aiguille \u00e7a m&rsquo;a permis de d\u00e9couvrir le protocole <strong>Onvif<\/strong>. <a href=\"https:\/\/www.onvif.org\/\">Onvif<\/a> pour <strong>Open Network Video Interface Forum<\/strong> est un protocole de communication pour les p\u00e9riph\u00e9riques connect\u00e9s en r\u00e9seau IP destin\u00e9s \u00e0 la vid\u00e9osurveillance (cam\u00e9ra, enregistreur). Sous Linux il existe une librairie <a href=\"https:\/\/github.com\/sr99622\/libonvif\/releases\">libonvif<\/a> qui fournit quelques utilitaires en ligne bien utiles. La commande <strong>onvif-util -a <\/strong>va lister les p\u00e9riph\u00e9riques visibles sur le r\u00e9seau :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Found 5 cameras on interface 192.168.2.14\n192.168.2.152 IPCAM(IPCAM)\n192.168.2.113 localhost(I51DL)\n192.168.2.139 GZ(IPC IPC-model)\n192.168.2.111 localhost(I51DL)\n192.168.2.134 IPCAM(IPCAM)<\/code><\/pre>\n\n\n\n<p>Elle permet \u00e9galement de se connecter \u00e0 une cam\u00e9ra <strong>onvif-util -u &lsquo;admin&rsquo; -p &lsquo;password&rsquo; 192.168.2.113 <\/strong>voil\u00e0 le r\u00e9sultat<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> found host: 192.168.2.113\n  successfully connected to host\n    name:   I51DL\n    serial: I51DL20240529AAWRFF0235068\n\nI51DL><\/code><\/pre>\n\n\n\n<p>Il suffit ensuite de taper <strong>help<\/strong> pour avoir acc\u00e8s des commandes diverses pour visualiser et modifier la configuration. La commande <strong>onvif-cli -u &lsquo;admin&rsquo; -a &lsquo;password&rsquo; &#8211;host &lsquo;192.168.2.134&rsquo;<\/strong> permettra \u00e9galement d&rsquo;obtenir des informations en ligne de commande, voici un exemple au prompt <strong>ONVIF &gt;&gt;&gt; <\/strong>avec quelques commandes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ONVIF &gt;&gt;&gt; cmd media GetVideoSources\nTrue: &#91;OrderedDict(&#91;('Framerate', 25.0), ('Resolution', OrderedDict(&#91;('Width', 1280), ('Height', 720)])), ('Imaging', None), ('Extension', None), ('token', 'video_source_token'), ('_attr_1', OrderedDict())])]\n\nONVIF &gt;&gt;&gt; cmd devicemgmt GetHostname\nTrue: OrderedDict(&#91;('FromDHCP', False), ('Name', 'IPCAM'), ('Extension', None), ('_attr_1', None)])\n\nONVIF &gt;&gt;&gt; cmd devicemgmt GetDeviceInformation\nTrue: OrderedDict(&#91;('Manufacturer', 'IPCAM'), ('Model', 'IPC'), ('FirmwareVersion', 'v5.3.1.1811211102'), ('SerialNumber', 'gm8135_v2'), ('HardwareId', 'v4.8.1.1708141702')])\n\nONVIF &gt;&gt;&gt; cmd media GetProfiles\nTrue: &#91;OrderedDict(&#91;('Name', 'MainProfile'), ('VideoSourceConfiguration', OrderedDict(&#91;('Name', 'video_source_cfg'), ('UseCount', 2), ('SourceToken', 'video_source_token'), ('Bounds', OrderedDict(&#91;('x', 0), ('y', 0), ('width', 2560), ('height', 1440)])), ('_value_1', None), ('Extension', None), ('token', 'video_source_cfg_token'), ('ViewMode', None), ('_attr_1', OrderedDict())])), ('AudioSourceConfiguration', OrderedDict(&#91;('Name', 'audio_source_cfg'), ('UseCount', 2), ('SourceToken', 'audio_source_token'), ('_value_1', None), ('token', 'audio_source_cfg_token'), ('_attr_1', OrderedDict())])), ('VideoEncoderConfiguration', OrderedDict(&#91;('Name', 'main_video_encoder_cfg'), ('UseCount', 1), ('Encoding', 'H264'), ('Resolution', OrderedDict(&#91;('Width', 2560), ('Height', 1440)])), ('Quality', 30.0), ('RateControl', OrderedDict(&#91;('FrameRateLimit', 15), ('EncodingInterval', 50), ('BitrateLimit', 2097)])), ('MPEG4', None), ('H264', OrderedDict(&#91;('GovLength', 45), ('H264Profile', 'Baseline')])), ('Multicast', OrderedDict(&#91;('Address', OrderedDict(&#91;('Type', 'IPv4'), ('IPv4Address', '0.0.0.0'), ('IPv6Address', None)])), ('Port', 0), ('TTL', 3), ('AutoStart', False), ('_value_1', None), ('_attr_1', None)])), ('SessionTimeout', datetime.timedelta(microseconds=10000)), ('_value_1', None), ('token', 'main_video_encoder_cfg_token'), ('GuaranteedFrameRate', None), ('_attr_1', OrderedDict())])), ('AudioEncoderConfiguration', OrderedDict(&#91;('Name', 'AAC_audio_encoder_cfg'), ('UseCount', 2), ('Encoding', 'AAC'), ('Bitrate', 128), ('SampleRate', 16), ('Multicast', OrderedDict(&#91;('Address', OrderedDict(&#91;('Type', 'IPv4'), ('IPv4Address', '0.0.0.0'), ('IPv6Address', None)])), ('Port', 0), ('TTL', 120), ('AutoStart', False), ('_value_1', None), ('_attr_1', None)])), ('SessionTimeout', datetime.timedelta(seconds=720)), ('_value_1', None), ('token', 'AAC_audio_encoder_cfg_token'), ('_attr_1', OrderedDict())])), ('VideoAnalyticsConfiguration', OrderedDict(&#91;('Name', 'analytics_cfg'), ('UseCount', 2), ('AnalyticsEngineConfiguration', OrderedDict(&#91;('AnalyticsModule', &#91;OrderedDict(&#91;('Parameters', OrderedDict(&#91;('SimpleItem', &#91;OrderedDict(&#91;('Name', 'Sensitivity'), ('Value', '4')])]), ('ElementItem', &#91;OrderedDict(&#91;('_value_1', ), ('Name', 'Layout')])]), ('Extension', None), ('_attr_1', None)])), ('Name', 'tt:CellMotionEngine'), ('Type', 'tt:CellMotionEngine')]), OrderedDict(&#91;('Parameters', OrderedDict(&#91;('SimpleItem', &#91;OrderedDict(&#91;('Name', 'Sensitivity'), ('Value', '4')])]), ('ElementItem', &#91;OrderedDict(&#91;('_value_1', ), ('Name', 'Field')]), OrderedDict(&#91;('_value_1', ), ('Name', 'Transform')])]), ('Extension', None), ('_attr_1', None)])), ('Name', 'tt:TamperEngine'), ('Type', 'tt:TamperEngine')])]), ('Extension', None), ('_attr_1', None)])), ('RuleEngineConfiguration', OrderedDict(&#91;('Rule', &#91;OrderedDict(&#91;('Parameters', OrderedDict(&#91;('SimpleItem', &#91;OrderedDict(&#91;('Name', 'ActiveCells'), ('Value', 'zwA')]), OrderedDict(&#91;('Name', 'AlarmOffDelay'), ('Value', '1000')]), OrderedDict(&#91;('Name', 'AlarmOnDelay'), ('Value', '1000')]), OrderedDict(&#91;('Name', 'MinCount'), ('Value', '4')])]), ('ElementItem', &#91;]), ('Extension', None), ('_attr_1', None)])), ('Name', 'tt:CellMotionDetector'), ('Type', 'tt:CellMotionDetector')]), OrderedDict(&#91;('Parameters', OrderedDict(&#91;('SimpleItem', &#91;]), ('ElementItem', &#91;OrderedDict(&#91;('_value_1', ), ('Name', 'Field')])]), ('Extension', None), ('_attr_1', None)])), ('Name', 'tt:TamperDetector'), ('Type', 'tt:TamperDetector')])]), ('Extension', None), ('_attr_1', None)])), ('_value_1', None), ('token', 'analytics_cfg_token'), ('_attr_1', OrderedDict())])), ('PTZConfiguration', OrderedDict(&#91;('Name', 'ptzcfg'), ('UseCount', 0), ('NodeToken', 'ptzNodeToken'), ('DefaultAbsolutePantTiltPositionSpace', None), ('DefaultAbsoluteZoomPositionSpace', None), ('DefaultRelativePanTiltTranslationSpace', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/TranslationGenericSpace'), ('DefaultRelativeZoomTranslationSpace', None), ('DefaultContinuousPanTiltVelocitySpace', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/VelocityGenericSpace'), ('DefaultContinuousZoomVelocitySpace', None), ('DefaultPTZSpeed', OrderedDict(&#91;('PanTilt', OrderedDict(&#91;('x', 1.0), ('y', 1.0), ('space', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/GenericSpeedSpace')])), ('Zoom', None)])), ('DefaultPTZTimeout', datetime.timedelta(seconds=60)), ('PanTiltLimits', OrderedDict(&#91;('Range', OrderedDict(&#91;('URI', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/PositionGenericSpace'), ('XRange', OrderedDict(&#91;('Min', -1.0), ('Max', 1.0)])), ('YRange', OrderedDict(&#91;('Min', -1.0), ('Max', 1.0)]))]))])), ('ZoomLimits', None), ('Extension', None), ('token', 'ptzToken'), ('MoveRamp', None), ('PresetRamp', None), ('PresetTourRamp', None), ('_attr_1', OrderedDict())])), ('MetadataConfiguration', None), ('Extension', None), ('token', 'MainProfileToken'), ('fixed', True), ('_attr_1', OrderedDict())]), OrderedDict(&#91;('Name', 'SubProfile'), ('VideoSourceConfiguration', OrderedDict(&#91;('Name', 'video_source_cfg'), ('UseCount', 2), ('SourceToken', 'video_source_token'), ('Bounds', OrderedDict(&#91;('x', 0), ('y', 0), ('width', 640), ('height', 360)])), ('_value_1', None), ('Extension', None), ('token', 'video_source_cfg_token'), ('ViewMode', None), ('_attr_1', OrderedDict())])), ('AudioSourceConfiguration', OrderedDict(&#91;('Name', 'audio_source_cfg'), ('UseCount', 2), ('SourceToken', 'audio_source_token'), ('_value_1', None), ('token', 'audio_source_cfg_token'), ('_attr_1', OrderedDict())])), ('VideoEncoderConfiguration', OrderedDict(&#91;('Name', 'sub_video_encoder_cfg'), ('UseCount', 1), ('Encoding', 'H264'), ('Resolution', OrderedDict(&#91;('Width', 640), ('Height', 360)])), ('Quality', 30.0), ('RateControl', OrderedDict(&#91;('FrameRateLimit', 15), ('EncodingInterval', 50), ('BitrateLimit', 1024)])), ('MPEG4', None), ('H264', OrderedDict(&#91;('GovLength', 60), ('H264Profile', 'Baseline')])), ('Multicast', OrderedDict(&#91;('Address', OrderedDict(&#91;('Type', 'IPv4'), ('IPv4Address', '0.0.0.0'), ('IPv6Address', None)])), ('Port', 0), ('TTL', 3), ('AutoStart', False), ('_value_1', None), ('_attr_1', None)])), ('SessionTimeout', datetime.timedelta(microseconds=10000)), ('_value_1', None), ('token', 'sub_video_encoder_cfg_token'), ('GuaranteedFrameRate', None), ('_attr_1', OrderedDict())])), ('AudioEncoderConfiguration', OrderedDict(&#91;('Name', 'AAC_audio_encoder_cfg'), ('UseCount', 2), ('Encoding', 'AAC'), ('Bitrate', 128), ('SampleRate', 16), ('Multicast', OrderedDict(&#91;('Address', OrderedDict(&#91;('Type', 'IPv4'), ('IPv4Address', '0.0.0.0'), ('IPv6Address', None)])), ('Port', 0), ('TTL', 120), ('AutoStart', False), ('_value_1', None), ('_attr_1', None)])), ('SessionTimeout', datetime.timedelta(seconds=720)), ('_value_1', None), ('token', 'AAC_audio_encoder_cfg_token'), ('_attr_1', OrderedDict())])), ('VideoAnalyticsConfiguration', OrderedDict(&#91;('Name', 'analytics_cfg'), ('UseCount', 2), ('AnalyticsEngineConfiguration', OrderedDict(&#91;('AnalyticsModule', &#91;OrderedDict(&#91;('Parameters', OrderedDict(&#91;('SimpleItem', &#91;OrderedDict(&#91;('Name', 'Sensitivity'), ('Value', '4')])]), ('ElementItem', &#91;OrderedDict(&#91;('_value_1', ), ('Name', 'Layout')])]), ('Extension', None), ('_attr_1', None)])), ('Name', 'tt:CellMotionEngine'), ('Type', 'tt:CellMotionEngine')]), OrderedDict(&#91;('Parameters', OrderedDict(&#91;('SimpleItem', &#91;OrderedDict(&#91;('Name', 'Sensitivity'), ('Value', '4')])]), ('ElementItem', &#91;OrderedDict(&#91;('_value_1', ), ('Name', 'Field')]), OrderedDict(&#91;('_value_1', ), ('Name', 'Transform')])]), ('Extension', None), ('_attr_1', None)])), ('Name', 'tt:TamperEngine'), ('Type', 'tt:TamperEngine')])]), ('Extension', None), ('_attr_1', None)])), ('RuleEngineConfiguration', OrderedDict(&#91;('Rule', &#91;OrderedDict(&#91;('Parameters', OrderedDict(&#91;('SimpleItem', &#91;OrderedDict(&#91;('Name', 'ActiveCells'), ('Value', 'zwA')]), OrderedDict(&#91;('Name', 'AlarmOffDelay'), ('Value', '1000')]), OrderedDict(&#91;('Name', 'AlarmOnDelay'), ('Value', '1000')]), OrderedDict(&#91;('Name', 'MinCount'), ('Value', '4')])]), ('ElementItem', &#91;]), ('Extension', None), ('_attr_1', None)])), ('Name', 'tt:CellMotionDetector'), ('Type', 'tt:CellMotionDetector')]), OrderedDict(&#91;('Parameters', OrderedDict(&#91;('SimpleItem', &#91;]), ('ElementItem', &#91;OrderedDict(&#91;('_value_1', ), ('Name', 'Field')])]), ('Extension', None), ('_attr_1', None)])), ('Name', 'tt:TamperDetector'), ('Type', 'tt:TamperDetector')])]), ('Extension', None), ('_attr_1', None)])), ('_value_1', None), ('token', 'analytics_cfg_token'), ('_attr_1', OrderedDict())])), ('PTZConfiguration', OrderedDict(&#91;('Name', 'ptzcfg'), ('UseCount', 0), ('NodeToken', 'ptzNodeToken'), ('DefaultAbsolutePantTiltPositionSpace', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/PositionGenericSpace'), ('DefaultAbsoluteZoomPositionSpace', 'http:\/\/www.onvif.org\/ver10\/tptz\/ZoomSpaces\/PositionGenericSpace'), ('DefaultRelativePanTiltTranslationSpace', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/TranslationGenericSpace'), ('DefaultRelativeZoomTranslationSpace', 'http:\/\/www.onvif.org\/ver10\/tptz\/ZoomSpaces\/TranslationGenericSpace'), ('DefaultContinuousPanTiltVelocitySpace', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/VelocityGenericSpace'), ('DefaultContinuousZoomVelocitySpace', 'http:\/\/www.onvif.org\/ver10\/tptz\/ZoomSpaces\/VelocityGenericSpace'), ('DefaultPTZSpeed', OrderedDict(&#91;('PanTilt', OrderedDict(&#91;('x', 1.0), ('y', 1.0), ('space', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/GenericSpeedSpace')])), ('Zoom', OrderedDict(&#91;('x', 1.0), ('space', 'http:\/\/www.onvif.org\/ver10\/tptz\/ZoomSpaces\/ZoomGenericSpeedSpace')]))])), ('DefaultPTZTimeout', datetime.timedelta(seconds=60)), ('PanTiltLimits', OrderedDict(&#91;('Range', OrderedDict(&#91;('URI', 'http:\/\/www.onvif.org\/ver10\/tptz\/PanTiltSpaces\/PositionGenericSpace'), ('XRange', OrderedDict(&#91;('Min', -1.0), ('Max', 1.0)])), ('YRange', OrderedDict(&#91;('Min', -1.0), ('Max', 1.0)]))]))])), ('ZoomLimits', OrderedDict(&#91;('Range', OrderedDict(&#91;('URI', 'http:\/\/www.onvif.org\/ver10\/tptz\/ZoomSpaces\/ZoomGenericSpeedSpace'), ('XRange', OrderedDict(&#91;('Min', -1.0), ('Max', 1.0)]))]))])), ('Extension', None), ('token', 'ptzToken'), ('MoveRamp', None), ('PresetRamp', None), ('PresetTourRamp', None), ('_attr_1', OrderedDict())])), ('MetadataConfiguration', None), ('Extension', None), ('token', 'SubProfileToken'), ('fixed', True), ('_attr_1', OrderedDict())])]\nONVIF &gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>Ca donne un r\u00e9sultat pas forc\u00e9ment tr\u00e8s lisible. Pour avoir la liste des commandes possibles, il faudra se r\u00e9f\u00e9rer aux sp\u00e9cifications <a href=\"https:\/\/www.onvif.org\/profiles-add-ons-specifications\/\">Onvif<\/a>. On y retrouve<a href=\"https:\/\/www.onvif.org\/profiles\/specifications\/\"> une rubrique<\/a> sur les interfaces r\u00e9seau, on y retrouve par exemple la rubrique <a href=\"https:\/\/www.onvif.org\/ver10\/media\/wsdl\/media.wsdl\">media<\/a> \u00e9voqu\u00e9e plus haut au prompt <strong>ONVIF<\/strong>, c&rsquo;est l\u00e0 qu&rsquo;on peut rajouter les commandes avec la syntaxe <strong>cmd media commande<\/strong>. L&rsquo;autre rubrique utile est <a href=\"https:\/\/www.onvif.org\/ver10\/device\/wsdl\/devicemgmt.wsdl\">device<\/a> appel\u00e9e avec la commande <strong>cmd devicemgmt commande<\/strong>.<\/p>\n\n\n\n<p>Autre moyen d&rsquo;obtenir des informations de la cam\u00e9ra avec la commande <strong>curl<\/strong>, gr\u00e2ce \u00e0 ce script appel\u00e9 <strong>onvif-list<\/strong> :<\/p>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"sh\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">#!\/bin\/bash\ncurl --anyauth --digest -u \"admin\" --location 'http:\/\/192.168.2.134:80\/onvif\/device_service' \\\n--header 'Content-Type: application\/xml' \\\n--data '&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?>\n&lt;soap:Envelope xmlns:soap=\"http:\/\/www.w3.org\/2003\/05\/soap-envelope\"\nxmlns:trt=\"http:\/\/www.onvif.org\/ver10\/media\/wsdl\">\n   &lt;soap:Body>\n      &lt;trt:GetProfiles\/>\n   &lt;\/soap:Body>\n&lt;\/soap:Envelope>'<\/pre><\/div>\n\n\n\n<p>Cela va g\u00e9n\u00e9rer un fichier <strong>xml<\/strong> qu&rsquo;on va remettre en forme gr\u00e2ce aux commandes successives :<\/p>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"php\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">onvif-list > result.xml\nxmllint --format result.xml > onvif-result.xml<\/pre><\/div>\n\n\n\n<p>Cela va donner un fichier <strong>xml<\/strong> bien format\u00e9 et bien plus lisible que la version qu&rsquo;on a obtenu plus haut. Il en reste pas moins que cette d\u00e9couverte de <strong>Onvif<\/strong> ne m&rsquo;a pas permis de d\u00e9couvrir une adresse <strong>rtsp<\/strong> fixe pour ma cam\u00e9ra <strong>Crater Pro<\/strong>, je pense que je vais devoir \u00e9crire un programme qui fera l&rsquo;interface avec <strong>zoneminder<\/strong> pour avoir une adresse fixe.<\/p>\n\n\n\n<p>C\u00f4t\u00e9 logiciel j&rsquo;ai enfin r\u00e9ussi \u00e0 compiler <strong>zoneminder<\/strong>, j&rsquo;utilise donc maintenant la derni\u00e8re version stable 1.36.35. En revanche j&rsquo;ai encore beaucoup de soucis pour trouver les bons r\u00e9glages, de temps \u00e0 autre <strong>zoneminder<\/strong> et <strong>ZMES<\/strong> le serveur d&rsquo;identification, explosent la charge CPU+RAM et font litt\u00e9ralement tomber mon serveur, ce n&rsquo;est pas acceptable. Par exemple, lorsqu&rsquo;il pleut, j&rsquo;ai un afflux d&rsquo;\u00e9v\u00e8nements non d\u00e9sir\u00e9s qui polluent le syst\u00e8me. Je continue donc \u00e0 t\u00e2tonner pour trouver les r\u00e9glages id\u00e9aux, il me reste \u00e9galement \u00e0 voir comment piloter sous zoneminder la cam\u00e9ra d\u00f4me <strong>WPT500<\/strong>.<\/p>\n\n\n\n<p>N\u00e9anmoins j&rsquo;ai mis \u00e0 jour ma page sur la vid\u00e9osurveillance sur mon site <a href=\"https:\/\/www.funix.org\">Funix<\/a> qu&rsquo;on peut retrouver <a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=videosurveillance\">ici<\/a>.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>J&rsquo;ai \u00e9toff\u00e9 mon syst\u00e8me de vid\u00e9osurveillance avec maintenant trois cam\u00e9ras ext\u00e9rieures au total, c&rsquo;est ma configuration a priori d\u00e9finitive. Comme j&rsquo;\u00e9tais plut\u00f4t satisfait de la cam\u00e9ra Annke C500 I51DL avec une bonne compatibilit\u00e9 sous Linux j&rsquo;en ai prise une deuxi\u00e8me, pour la derni\u00e8re cam\u00e9ra c&rsquo;est toujours une Annke, un mod\u00e8le d\u00f4me commandable \u00e0 distance WPT500 &hellip; <a href=\"https:\/\/olivier.hoarau.org\/?p=6670\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Vid\u00e9osurveillance avec Zoneminder la suite<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false,"_share_on_mastodon":"0"},"categories":[5,12],"tags":[109],"class_list":["post-6670","post","type-post","status-publish","format-standard","hentry","category-logiciels-libres","category-vie-de-funix","tag-videosurveillance"],"share_on_mastodon":{"url":"https:\/\/mastodon.social\/@funix\/113929162164745545","error":""},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/peOjJ-1JA","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/6670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6670"}],"version-history":[{"count":3,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/6670\/revisions"}],"predecessor-version":[{"id":6674,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/6670\/revisions\/6674"}],"wp:attachment":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}