Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage]Skript zur Steuerung ONVIF Kameras

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Frage]Skript zur Steuerung ONVIF Kameras

    This topic has been deleted. Only users with topic management privileges can see it.
    • metaxa
      metaxa last edited by metaxa

      Hallo Pix,
      jetzt habe ich endlich verstanden, wofür man diese "zusätzlichen NPM-Module" im JS-Adapter benötigt, danke!

      Den alten, mit sudo händisch installierten, Ordner habe ich unbenannt, sodaß das Script nicht mehr funktionierte. Ich wollte es sauber installieren lt. deinen Angaben.
      Leider nein:

      javascript.0	2019-05-12 10:24:40.700	error	Cannot install node-onvif: 254
      javascript.0	2019-05-12 10:24:40.686	error	npm ERR! /home/iobroker/.npm/_logs/2019-05-12T08_24_40_586Z-debug.log
      javascript.0	2019-05-12 10:24:40.686	error	npm ERR! A complete log of this run can be found in:
      javascript.0	2019-05-12 10:24:40.685	error	
      javascript.0	2019-05-12 10:24:40.580	error	npm ERR! enoent
      javascript.0	2019-05-12 10:24:40.580	error	npm ERR! enoent This is related to npm not being able to find a file.
      javascript.0	2019-05-12 10:24:40.580	error	ERR! enoent ENOENT: no such file or directory, access '/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-onvif'
      javascript.0	2019-05-12 10:24:40.579	error	npm
      javascript.0	2019-05-12 10:24:40.576	error	npm ERR! syscall access
      javascript.0	2019-05-12 10:24:40.576	error	errno -2
      javascript.0	2019-05-12 10:24:40.576	error	npm ERR!
      javascript.0	2019-05-12 10:24:40.576	error	npm ERR! code ENOENT
      javascript.0	2019-05-12 10:24:40.576	error	ERR! path /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-onvif
      javascript.0	2019-05-12 10:24:40.574	error	npm
      javascript.0	2019-05-12 10:24:39.419	error	WARN checkPermissions Missing write access to /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-onvif
      javascript.0	2019-05-12 10:24:39.418	error	npm
      javascript.0	2019-05-12 10:24:22.753	info	npm install node-onvif --production --prefix "/opt/iobroker/node_modules/iobroker.javascript" (System call)
      

      Hier noch der Auszug aus dem angesprochenen Log:

      0 info it worked if it ends with ok
      1 verbose cli [ '/usr/bin/node',
      1 verbose cli   '/usr/bin/npm',
      1 verbose cli   'install',
      1 verbose cli   'node-onvif',
      1 verbose cli   '--production',
      1 verbose cli   '--prefix',
      1 verbose cli   '/opt/iobroker/node_modules/iobroker.javascript' ]
      2 info using npm@6.7.0
      3 info using node@v8.15.0
      4 verbose npm-session ca193bb86e340986
      5 silly install loadCurrentTree
      6 silly install readLocalPackageData
      7 http fetch GET 200 https://registry.npmjs.org/node-onvif 48ms (from cache)
      8 silly pacote range manifest for node-onvif@^0.1.7 fetched in 71ms
      9 timing stage:loadCurrentTree Completed in 4292ms
      10 silly install loadIdealTree
      11 silly install cloneCurrentTreeToIdealTree
      12 timing stage:loadIdealTree:cloneCurrentTree Completed in 30ms
      13 silly install loadShrinkwrap
      14 timing stage:loadIdealTree:loadShrinkwrap Completed in 2346ms
      15 silly install loadAllDepsIntoIdealTree
      16 silly resolveWithNewModule node-onvif@0.1.7 checking installable status
      17 silly removeObsoleteDep removing node-onvif@0.1.7 from the tree as its been replaced by a newer version or is no longer required
      18 silly removeObsoleteDep removing html@1.0.0 from the tree as its been replaced by a newer version or is no longer required
      19 silly removeObsoleteDep removing xml2js@0.4.19 from the tree as its been replaced by a newer version or is no longer required
      20 silly removeObsoleteDep removing sax@1.2.4 from the tree as its been replaced by a newer version or is no longer required
      21 silly removeObsoleteDep removing xmlbuilder@9.0.7 from the tree as its been replaced by a newer version or is no longer required
      22 http fetch GET 200 https://registry.npmjs.org/xml2js 22ms (from cache)
      23 http fetch GET 200 https://registry.npmjs.org/html 21ms (from cache)
      24 silly pacote range manifest for xml2js@>=0.4.17 fetched in 29ms
      25 silly resolveWithNewModule xml2js@0.4.19 checking installable status
      26 silly pacote range manifest for html@>=1.0.0 fetched in 30ms
      27 silly resolveWithNewModule html@1.0.0 checking installable status
      28 http fetch GET 200 https://registry.npmjs.org/sax 29ms (from cache)
      29 http fetch GET 200 https://registry.npmjs.org/xmlbuilder 30ms (from cache)
      30 silly pacote range manifest for sax@>=0.6.0 fetched in 39ms
      31 silly resolveWithNewModule sax@1.2.4 checking installable status
      32 silly pacote range manifest for xmlbuilder@~9.0.1 fetched in 41ms
      33 silly resolveWithNewModule xmlbuilder@9.0.7 checking installable status
      34 timing stage:loadIdealTree:loadAllDepsIntoIdealTree Completed in 3498ms
      35 timing stage:loadIdealTree Completed in 6921ms
      
      38 silly install generateActionsToTake
      39 silly diff-trees filtering actions: includeDev false includeProd true includeOpt true
      40 warn checkPermissions Missing write access to /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-onvif
      41 timing stage:rollbackFailedOptional Completed in 3ms
      42 timing stage:runTopLevelLifecycles Completed in 11485ms
      43 silly saveTree iobroker.javascript@4.1.12
      
      44 verbose stack Error: ENOENT: no such file or directory, access '/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-onvif'
      45 verbose cwd /
      46 verbose Linux 4.4.174-rockchip
      47 verbose argv "/usr/bin/node" "/usr/bin/npm" "install" "node-onvif" "--production" "--prefix" "/opt/iobroker/node_modules/iobroker.javascript"
      48 verbose node v8.15.0
      49 verbose npm  v6.7.0
      50 error path /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-onvif
      51 error code ENOENT
      52 error errno -2
      53 error syscall access
      54 error enoent ENOENT: no such file or directory, access '/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-onvif'
      55 error enoent This is related to npm not being able to find a file.
      56 verbose exit [ -2, true ]
      

      Sicherheitshalber habe ich - wie hier beschrieben - mt

      sudo chown -R iobroker:iobroker /opt/iobroker/node_modules/iobroker.javascript
      

      die Rechte wieder zurecht gerückt.

      Hast du eine Idee woran ich scheitere?

      LG, mxa

      1 Reply Last reply Reply Quote 0
      • lobomau
        lobomau @pix last edited by

        Ich habe das Script nochmal ausprobiert (nach 1,5 Jahren) mit gleicher Kamera. Hat sofort funktioniert. Klasse. Ich kann es nicht mehr nachvollziehen woran es lag.

        @pix welche widget nimmst du, um die Pfeile in VIS darzustellen?

        1 Reply Last reply Reply Quote 0
        • P
          pix last edited by

          Hallo,

          ich nehme die set-value-Widgets. Also bei Druck wird ein Wert in einen Datenpunkt geschrieben.

          Pix

          1 Reply Last reply Reply Quote 0
          • M
            melodoi last edited by

            Hi,
            kennt jemand auch eine einfachere Möglichkeit der PTZ Steuerung wie über http get (z.B. http//user:pw/192.168.1.15/onvif/steuerung/nach_links). Ich stelle mir das sicher zu einfach vor. Aber das wäre doch schön.
            Gruß
            Sylvio

            Glasfaser 1 Reply Last reply Reply Quote 0
            • smartboart
              smartboart last edited by smartboart

              Hi , habe das Script am Laufen mit ner Foscam FI9938P. funktioniert soweit alles , ausser der Zoom in beide Richtungen... Hat jremand ne Idee?
              Update: ist ein Firmware Fehler der Kamera...

              1 Reply Last reply Reply Quote 0
              • Glasfaser
                Glasfaser @melodoi last edited by

                @melodoi
                Kenne deine Kamera nicht bzw. wurde nicht angegeben .

                Bei meinen PTZ Hikvision habe ich es so, hier einige Beispiele:

                links:
                http://user:passwort@IPadresse/PTZ/channels/1/PTZControl?command=PAN_LEFT&speed=2&mode=start
                rechts:
                http://user:passwort@IPadresse//PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=2&mode=start
                stop:
                http://user:passwort@IPadresse//PTZ/channels/1/PTZControl?/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=1&mode=stop

                55555555555555555555555.JPG
                hier ein Widget davon :

                [{"tpl":"tplIconHttpGet","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"url":"http://user:passwort@IPadresse/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=1&mode=stop","text":"","src":"/vis.0/Wohnen/audio_stop.png"},"style":{"left":"110px","top":"261px","width":"86px","height":"58px","z-index":"5"},"widgetSet":"jqui"}]
                
                

                smartboart 1 Reply Last reply Reply Quote 0
                • smartboart
                  smartboart @Glasfaser last edited by

                  Hat das Script schonmal jemand erweitert um ptz Bewegung obenlinks, obenrechts, untenlinks, untenrechts, und die Funktion zum autonmatischen Abfahren der voreingestelleten Presetpositionen?

                  smartboart 1 Reply Last reply Reply Quote 0
                  • smartboart
                    smartboart @smartboart last edited by smartboart

                    Das sollte gehen am Beispiel hoch rechts..

                    das mit den verschiedenen presets abfahren wäre mittels skript auch kein problem..Die Kamera hat dies alerdings on board muesste also auch mittels onvif gehen oder..

                    const idHochRechts = pfad + 'hochrechts';
                    
                    createState(idHochRechts, false, fC, {def: false,name: 'Kamera 1 PTZ obenrechts',desc: 'Bewegung nach obenrechts',type: 'boolean',role: 'switch'});
                    
                    
                    
                    on(idHochRechts, function (obj) {
                       if (!obj.state.ack && obj.state.val) {
                          var stoppzeit = getState(idStoppzeit).val;
                          var speed = getState(idSpeed).val;
                          movePTZ(1 * speed , 0, 0, stoppzeit);
                          movePTZ(0, 1 * speed, 0, stoppzeit);
                          setStateDelayed(idHochRechts, false, 500);
                       }
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • smartboart
                      smartboart last edited by

                      noch ne Frage ..habe noch Probleme mit dem profiletoken.
                      habe davon 2 in der Kamera... prof0 und prof1.
                      die scheinen immer abwechselnd aktiv zu sein...Wenn die Presetfahrt nicht funktioniert muss ich im script den profiletoken wieder ändern dann gehts wieder.
                      Wenn es wieder nicht geht wieder zurück zum anderen...Jemand ne Idee wie ich das lösen kann?

                                 var ptz = device.services.ptz;
                                 if (ptz) {
                                     var params = {
                                         'ProfileToken': 'prof1',
                                         'PresetToken' : presetNumber.toString(),
                                         'Speed'       : {'x': 1, 'y': 1, 'z': 1}
                                     };
                      
                      Glasfaser 1 Reply Last reply Reply Quote 0
                      • Glasfaser
                        Glasfaser @smartboart last edited by

                        @smartboart

                        Leider kann ich dir dazu nicht weiterhelfen ….
                        Hatte es auch mal versucht es auf meine Hikvison PTZ Kameras umzustricken , aber bin mehr auf die Lösung zu den " http " Ansteuerungen umgeschwenkt . ( siehe oben )

                        Es ist nur eine einmalige Sache gewesen die Buttons dazu zu belegen .
                        Rechts - Links - Unten - Oben
                        Oben links - oben rechts
                        unten links - unten rechts
                        Stop
                        Zoom in - Zoom out
                        4 x PTZ Anfahrten

                        smartboart 1 Reply Last reply Reply Quote 0
                        • smartboart
                          smartboart @Glasfaser last edited by

                          @Glasfaser danke, das funktioniert mit meiner cam leider nicht so...

                          1 Reply Last reply Reply Quote 0
                          • D
                            dare last edited by

                            Hi,
                            Hat da bitte wer eine Ahnung wo ich bei erfolgreicher installation des ONVIF Adapter die Status bzw. Steuerobjekte für die PTZ Cam finde ?
                            Bei den Objekten sehe ich ledglich den Ordner ONVIV 0 und den Unterordner mit der IP der CAM -> connection = true
                            Die Cam ist eine H.VIEW HV-PTZ500. Mit dem Onfiv Device Manager kann ich die Cam steuern liveBild sehen usw...
                            Was mache ich hier falsch bzw. braucht man zur Steuerung der Cam noch zusätzlich zu dem Onvif Adapter etwas

                            BG dare

                            1 Reply Last reply Reply Quote 0
                            • A
                              Alexxx2005 last edited by

                              @pix

                              ist es möglich die 5MP Dome Kamera von YoLuke einzubinden ?

                              Habe es versucht mit deinem Skript , auch dem Port auf 80
                              geändert aber er meldet mir :

                              javascript.0
                              2020-01-13 20:37:49.336
                              info
                              (9808) script.js.common.PTZ_Kamera: [ERROR] Failed to initialize the device: Error: 404 Not Found
                              javascript.0
                              2020-01-13 20:37:48.309
                              info
                              (9808) script.js.common.PTZ_Kamera: [ERROR] Failed to initialize the device: Error: 404 Not Found
                              javascript.0
                              2020-01-13 20:37:24.672
                              info
                              (9808) script.js.common.PTZ_Kamera: registered 15 subscriptions and 0 schedules 
                              

                              Beim Aufruf im Browser : http://192.168.86.34:80/onvif/device_service

                              meldet er mir :

                              Error 404: Not Found
                              File not found
                              
                              

                              Grüße Alex

                              Glasfaser 1 Reply Last reply Reply Quote 0
                              • Glasfaser
                                Glasfaser @Alexxx2005 last edited by

                                @Alexxx2005

                                Hast du ONVIF in der Kamera freigegeben !?

                                Hiermit kannst du es testen , ob ein ONVIF im Netzwerk vorhanden ist .
                                Die Ausgabe erfolgt im LOG .

                                /// ONVIF Ausgabe ioBroker 01.01.2020 Glasfaser
                                
                                const onvif = require('node-onvif');// 
                                
                                console.log('Start the discovery process.');
                                // Find the ONVIF network cameras.
                                // It will take about 3 seconds.
                                onvif.startProbe().then((device_info_list) => {
                                 console.log(device_info_list.length + ' devices were found.');
                                 // Show the device name and the URL of the end point.
                                 device_info_list.forEach((info) => {
                                   console.log('- ' + info.urn);
                                   console.log('  - ' + info.name);
                                   console.log('  - ' + info.xaddrs[0]);
                                 });
                                }).catch((error) => {
                                 console.error(error);
                                });
                                
                                

                                A 1 Reply Last reply Reply Quote 0
                                • A
                                  Alexxx2005 @Glasfaser last edited by Alexxx2005

                                  @Glasfaser

                                  tolles Skript von dir , ja er meldet bei mir das er etwas findet allerdings unter 8080

                                  javascript.0
                                  2020-01-13 21:04:04.629
                                  info
                                  (9808) script.js.common.Onvif_testen: - http://192.168.86.34:8080/onvif/device_service 
                                  javascript.0
                                  2020-01-13 21:04:04.629
                                  info
                                  (9808) script.js.common.Onvif_testen: - IPCAM 
                                  

                                  Habe jetzt mal das WebInterface der Kamera geöffnet wenn ich dann die
                                  Kamera im VIS bewege , bewegt sie sich auch im WebInterface , ich verstehe
                                  nur nicht warum das Widget kein Bild anzeigt , als Quelle wird hier auf :

                                  {javascript.0.Xeoma.Kamera.1.IP} verwiesen , benötige ich ein weiteres Skript
                                  zum Bild anzeigen ?

                                  Grüße Alex

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    Alexxx2005 last edited by

                                    Ich vermute das hat mit diesem hier noch zu tun :

                                    const dest_path = 'C:/Program Files/iobroker/SmartHome/iobroker-data/webcam/'; // OS X Pfad
                                    
                                    const pfad = 'javascript.' + instance + '.VIS.Kamera.1.PTZ.';
                                    

                                    hier meckert er noch das der Pfad auch nicht stimmt 😕

                                    Glasfaser 1 Reply Last reply Reply Quote 0
                                    • Glasfaser
                                      Glasfaser @Alexxx2005 last edited by Glasfaser

                                      @Alexxx2005

                                      Er hat doch Windows ... du nicht 😉
                                      Nimm das erstmal als Füller ... :

                                      const dest_path = '/opt/iobroker/iobroker-data/files/vis.0/snapsonvif.jpg';
                                      

                                      @Alexxx2005 sagte in [Frage]Skript zur Steuerung ONVIF Kameras:

                                      @Glasfaser
                                      Habe jetzt mal das WebInterface der Kamera geöffnet wenn ich dann die
                                      Kamera im VIS bewege , bewegt sie sich auch im WebInterface , ich verstehe
                                      nur nicht warum das Widget kein Bild anzeigt , als Quelle wird hier auf :
                                      {javascript.0.Xeoma.Kamera.1.IP} verwiesen , benötige ich ein weiteres Skript
                                      zum Bild anzeigen ?

                                      Meinst du das :
                                      Dort kannst du deine URL auch eingeben (Snapshot )

                                      http://user:passwort@.......

                                      1.JPG

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        Alexxx2005 last edited by

                                        @Glasfaser said in [Frage]Skript zur Steuerung ONVIF Kameras:

                                        snapsonvif.jpg';

                                        Okay ja ich benötige einen Windows Pfad da iobroker bei mir auf einem
                                        Nuc mit Windows läuft.

                                        Verstehe jetzt nur nicht ob die Klammern \ oder so / hin müssen normal ja :

                                        C:\Program Files\iobroker\SmartHome\iobroker-data\files\vis.0\snap.jpg
                                        

                                        Das nächste große Problem ist wie finde ich die Snapshot URL heraus
                                        da es sich um eine Kamera handelt die nicht so gängig ist (5MP YoLuke
                                        PTZ) , habe ich mit dem Programm Ispy64 hunderte URL`s ermittelt aber
                                        die wo ich mal getestet haben gehen nicht :

                                        rtsp://admin:admin@192.168.86.34:554/1
                                        rtsp://192.168.86.34/12:
                                        http://admin:admin@192.168.86.34/snap.jpg?JpegCam=0
                                        

                                        Kennst du zufällig Möglichkeiten oder gibt es ein Skript sowas auszulesen ?

                                        Danke, Grüße Alex

                                        Glasfaser 1 Reply Last reply Reply Quote 0
                                        • Glasfaser
                                          Glasfaser @Alexxx2005 last edited by

                                          @Alexxx2005

                                          Mit dem Windows Pfad kann ich dir nicht helfen ….

                                          Kennst du zufällig Möglichkeiten oder gibt es ein Skript sowas auszulesen ?

                                          Von Jey Cee der Adapter onvif v0.1.x , ist sehr gut !

                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            Alexxx2005 last edited by

                                            @Glasfaser

                                            habe nun festgestellt das nach einem Iobroker neustart die URL

                                            http://<IP>/web/tmpfs/snap.jpg
                                            http://Name:PW@<IP>/snap.jpg?JpegCam=1
                                            

                                            funktioniert.

                                            Was noch nicht funktioniert ist der PTZ Present ist es möglich diese
                                            Steuerung im Skript anzupassen ?

                                            Nach Stundenlangen Googeln kam ich auf diesen Pfad was durch ändern
                                            der Number=1 die verschiedenen Postionen anfährt.

                                            http://<IP>/cgi-bin/hi3510/param.cgi?cmd=preset&-act=goto&-status=1&-number=2
                                            

                                            Grüße Alex

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            459
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            27
                                            79
                                            22962
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo